환자 메모 관리 API
참고: 이 문서에 설명된 모든 API는
dta-wi-mono모노레포의dta-wi-medi-api애플리케이션에 구현되어 있습니다.
개요
환자 메모 관리 API는 의료진이 환자에 대한 메모를 작성하고 업데이트하는 기능을 제공합니다.
주요 기능
- 환자 메모 업데이트: 환자 메모 생성 및 업데이트 (Upsert)
[PUT] /v1/user-management/app-users/{appUserId}/memo - 환자 메모 업데이트
환자 메모 업데이트
특정 환자의 메모를 생성하거나 업데이트합니다. 메모가 없으면 새로 생성하고, 이미 있으면 기존 메모를 업데이트합니다 (Upsert).
✅ 1.4 Migration 완료
⚠️ 변경 사항
주의: 이전 버전에서 다음 사항이 변경되었습니다. 클라이언트 코드 수정이 필요합니다.
엔드포인트 변경
- asis:
PUT /v1/patients/user-cycles/{userCycleId}/memo(Go API) - tobe:
PUT /v1/user-management/app-users/{appUserId}/memo(TypeScript API)
변경된 path 파라미터
| 항목 | Legacy | Current |
|---|---|---|
| Path Parameter | userCycleId (number) | userId (string UUID) |
| 식별 방식 | App User 의 UserCycle ID로 식별 | App User 의 User ID로 식별 (활성 UserCycle 자동 조회) |
- HTTP Method:
GET - 인증: 액세스 토큰 (
accessToken) 필요
Headers
| Header | Type | Description | Required |
|---|---|---|---|
| Authorization | Bearer {accessToken} | 사용자 인증을 통해 발급받은 액세스 토큰 입니다. | ✔ |
| Content-Type | application/json | 요청 본문 형식 | ✔ |
Path Parameters
| 필드 | 타입 | 설명 | Required |
|---|---|---|---|
| appUserId | string | 사용자 UUID | ✔ |
Request Body
| 필드 | 타입 | 설명 | Required |
|---|---|---|---|
| memo | string | 메모 내용 (최대 2000자) | ✔ |
Request Body 예시
{
"memo": "환자가 수면제 복용을 중단했습니다. 지속적인 관찰이 필요합니다."
}
Responses
| Http Status Code | 설명 | Error Code(s) |
|---|---|---|
200 OK | 메모 업데이트 성공 | - |
400 Bad Request | 잘못된 요청 | 1001 |
401 Unauthorized | 인증 실패 | 1080 |
403 Forbidden | 권한 없음 | 1081 |
404 Not Found | 환자 미발견 | 1040 |
500 Internal Server Error | 서버 내부 오류 | 1000 |
200 OK - 성공
{
"success": true
}
| 필드 | 타입 | 설명 |
|---|---|---|
| success | boolean | 성공 여부 |
Upsert 동작:
- 해당
userId, UserCycle에 대한 메모가 없으면 새로 생성 - 메모가 이미 있으면 기존 메모를 새로운 내용으로 업데이트
createdBy필드에 요청자(의료진) ID 자동 기록
400 Bad Request - 잘못된 요청
{
"status": 400,
"code": 1001,
"message": "Bad Request",
"detail": "요청한 정보가 유효하지 않습니다.",
"errors": [
{
"field": "memo",
"message": "memo must be less than 2000 characters"
}
]
}
발생 가능한 에러 메시지:
"memo is required"- memo 필드가 비어있거나 누락됨"memo must be less than 2000 characters"- 메모 길이 초과"Invalid userId format"- 유효하지 않은 userId UUID 형식
401 Unauthorized - 인증 실패
{
"statusCode": 401,
"code": 1080,
"message": "UNAUTHORIZED",
"detail": "인증되지 않은 요청입니다"
}
액세스 토큰이 유효하지 않거나 만료된 경우 발생합니다.
403 Forbidden - 권한 없음
{
"statusCode": 403,
"code": 1081,
"message": "FORBIDDEN",
"detail": "권한이 없습니다"
}
해당 요청에 대한 접근 권한이 없는 경우 발생합니다.
404 Not Found - 환자 미발견
{
"statusCode": 404,
"code": 1040,
"message": "NOT_FOUND",
"detail": "유효하지 않은 사용자입니다."
}
해당 userId에 해당하는 환자가 존재하지 않거나, 활성 UserCycle이 없는 경우 발생합니다.
500 Internal Server Error - 서버 내부 오류
{
"statusCode": 500,
"code": 1000,
"message": "Internal Server Error",
"detail": "서버 내부 오류가 발생했습니다."
}
사용 사례
메모 작성 예시
초기 진료 메모:
{
"memo": "초진 상담 완료. 환자는 만성 불면증을 호소하며, 수면제 복용 이력이 있습니다. CBT-i 프로그램 시작을 권장했습니다."
}
경과 관찰 메모:
{
"memo": "Day 15 진행 중. 수면 효율이 80%에서 90%로 개선되었습니다. 환자의 순응도가 높아 치료 진행이 원활합니다."
}
특이사항 메모:
{
"memo": "환자가 개인 사정으로 인해 1주일간 앱 사용을 중단했습니다. 재개 후 수면 패턴 변화를 면밀히 모니터링 필요."
}
권한 및 보안
- 접근 권한: 해당 환자를 담당하는 의료진 또는 관리자만 메모를 작성/수정할 수 있습니다.
- 개인정보 보호: 메모에는 민감한 의료 정보가 포함될 수 있으므로, GDPR 및 개인정보보호법을 준수해야 합니다.
- 감사 추적: 메모의 생성 및 수정 이력이 시스템에 기록됩니다.
메모 작성 가이드라인
- 객관적 기록: 관찰한 사실과 데이터를 객관적으로 기록합니다.
- 간결성: 핵심 내용을 간결하게 작성합니다.
- 날짜 명시: 특정 사건이나 관찰 내용에는 날짜를 명시합니다.
- 전문 용어 사용: 의학적으로 정확한 용어를 사용합니다.
- 개인정보 주의: 불필요한 개인 식별 정보는 기록하지 않습니다.