/
opt
/
mawid
/
apps
/
api
/
src
/
patients
/
/opt/mawid/apps/api/src/patients
mkdir
upload
Name
Size
Mode
Actions
patients.controller.ts
1462
0644
edit
dl
rm
patients.gdpr.spec.ts
4139
0644
edit
dl
rm
patients.module.ts
269
0644
edit
dl
rm
patients.service.ts
4266
0644
edit
dl
rm
Edit:
/opt/mawid/apps/api/src/patients/patients.controller.ts
(1462B)
import { Body, Controller, Delete, Get, Param, Patch, Query } from '@nestjs/common'; import { updatePatientSchema, type UpdatePatientInput } from '@mawid/shared'; import { ClinicId, CurrentUser, type JwtUser } from '../auth/current-user.decorator'; import { ZodValidationPipe } from '../common/zod-validation.pipe'; import { PatientsService } from './patients.service'; @Controller('patients') export class PatientsController { constructor(private readonly patients: PatientsService) {} @Get() list(@ClinicId() clinicId: string, @Query('search') search?: string) { return this.patients.list(clinicId, search); } @Get(':id') get(@ClinicId() clinicId: string, @Param('id') id: string) { return this.patients.get(clinicId, id); } @Patch(':id') update( @ClinicId() clinicId: string, @Param('id') id: string, @Body(new ZodValidationPipe(updatePatientSchema)) body: UpdatePatientInput, ) { return this.patients.update(clinicId, id, body); } /** KVKK/GDPR: full data export for a patient request. */ @Get(':id/export') export(@ClinicId() clinicId: string, @Param('id') id: string) { return this.patients.exportData(clinicId, id); } /** KVKK/GDPR: delete-on-request — removes the patient and all their data. */ @Delete(':id') remove(@ClinicId() clinicId: string, @Param('id') id: string, @CurrentUser() user: JwtUser) { return this.patients.deleteData(clinicId, id, `owner:${user.sub}`); } }
Save
cmd:
run