medicodeapp / backend /src /modules /codes /codes.controller.ts
Denisijcu's picture
upload files
c98875e
import { Controller, Get, Post, Body, Param, Query, UseGuards } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import { ApiTags, ApiBearerAuth, ApiOperation, ApiQuery } from '@nestjs/swagger';
import { CodesService, GlobalSearchResult } from './codes.service';
import { CreateDiagnosticCodeDto } from './dto/create-diagnostic-code.dto';
import { CreateProcedureCodeDto } from './dto/create-procedure-code.dto';
import { SearchCodesDto } from './dto/search-codes.dto';
@ApiTags('Codes')
@ApiBearerAuth()
@UseGuards(AuthGuard('jwt'))
@Controller('codes')
export class CodesController {
constructor(private codesService: CodesService) {}
// ─── Global ───────────────────────────────────────────────────────────────
@Get('search')
@ApiOperation({ summary: 'Search across ICD-10 and CPT codes' })
@ApiQuery({ name: 'q', required: true })
@ApiQuery({ name: 'limit', required: false })
globalSearch(
@Query('q') q: string,
@Query('limit') limit?: number,
): Promise<GlobalSearchResult> {
return this.codesService.globalSearch(q, limit);
}
// ─── ICD-10 ───────────────────────────────────────────────────────────────
@Get('icd10')
@ApiOperation({ summary: 'Search ICD-10 diagnostic codes' })
searchICD10(@Query() dto: SearchCodesDto) {
return this.codesService.searchICD10(dto);
}
@Get('icd10/categories')
@ApiOperation({ summary: 'Get ICD-10 categories' })
icd10Categories() {
return this.codesService.getICD10Categories();
}
@Get('icd10/:code')
@ApiOperation({ summary: 'Get ICD-10 code by code string' })
getICD10(@Param('code') code: string) {
return this.codesService.getICD10ByCode(code);
}
@Post('icd10')
@ApiOperation({ summary: 'Create ICD-10 code' })
createICD10(@Body() dto: CreateDiagnosticCodeDto) {
return this.codesService.createICD10(dto);
}
// ─── CPT ──────────────────────────────────────────────────────────────────
@Get('cpt')
@ApiOperation({ summary: 'Search CPT procedure codes' })
searchCPT(@Query() dto: SearchCodesDto) {
return this.codesService.searchCPT(dto);
}
@Get('cpt/categories')
@ApiOperation({ summary: 'Get CPT categories' })
cptCategories() {
return this.codesService.getCPTCategories();
}
@Get('cpt/:code')
@ApiOperation({ summary: 'Get CPT code by code string' })
getCPT(@Param('code') code: string) {
return this.codesService.getCPTByCode(code);
}
@Post('cpt')
@ApiOperation({ summary: 'Create CPT code' })
createCPT(@Body() dto: CreateProcedureCodeDto) {
return this.codesService.createCPT(dto);
}
}