tyt-api-nest/src/patients/c-patients/c-patients.controller.ts

56 lines
1.9 KiB
TypeScript

import { Controller, Get, UseGuards } from '@nestjs/common';
import {
ApiBearerAuth,
ApiExtraModels,
ApiOkResponse,
ApiOperation,
ApiTags,
} from '@nestjs/swagger';
import { CurrentFamilyActor } from '../../auth/current-family-actor.decorator.js';
import { FamilyAccessTokenGuard } from '../../auth/family-access/family-access.guard.js';
import type { FamilyActorContext } from '../../common/family-actor-context.js';
import { CPatientMeResponseDto } from '../dto/c-patient-me-response.dto.js';
import {
CPatientLifecycleResponseDto,
PATIENT_LIFECYCLE_SWAGGER_MODELS,
} from '../dto/patient-lifecycle-response.dto.js';
import { CPatientsService } from './c-patients.service.js';
/**
* C 端患者控制器:患者本人按登录手机号查询自己的档案与生命周期。
*/
@ApiTags('患者管理(C端)')
@ApiBearerAuth('bearer')
@Controller('c/patients')
@UseGuards(FamilyAccessTokenGuard)
export class CPatientsController {
constructor(private readonly patientsService: CPatientsService) {}
/**
* 读取当前登录患者的基础信息。
*/
@Get('me')
@ApiOperation({ summary: '获取当前登录患者信息' })
@ApiOkResponse({
description: '返回当前 C 端登录账号绑定的患者档案与账号信息',
type: CPatientMeResponseDto,
})
me(@CurrentFamilyActor() actor: FamilyActorContext) {
return this.patientsService.getMeByAccount(actor.id);
}
/**
* 根据当前登录手机号查询单患者生命周期。
*/
@Get('my-lifecycle')
@ApiOperation({ summary: '按当前登录手机号查询患者生命周期' })
@ApiExtraModels(...PATIENT_LIFECYCLE_SWAGGER_MODELS)
@ApiOkResponse({
description: '按当前登录手机号返回唯一患者的生命周期数据',
type: CPatientLifecycleResponseDto,
})
getMyLifecycle(@CurrentFamilyActor() actor: FamilyActorContext) {
return this.patientsService.getFamilyLifecycleByAccount(actor.id);
}
}