Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Anpheros 증상 엔진: 방법론
모든 언어의 자유 텍스트 증상이 WHO ICD-10 및 ICD-11 개념으로 변환되는 방식: AI 정규화기, 존재 및 경험자 감지, WHO 검증 어휘, 평가 결과, 유사 사례 일치 및 제한.
Anpheros 증상 엔진은 사람이 자신의 말과 언어로 느끼는 바를 국제 임상 개념으로 변환합니다. 안정적인 Anpheros 식별자, WHO ICD-10 코드, WHO ICD-11 코드 및 신체 시스템과 함께 증상의 존재 여부, 해결 여부, 가상 여부 또는 타인에 대한 것인지 여부를 포함합니다. Anpheros Daily 뒤에서 프로덕션으로 실행되며, Anpheros Platform에서 HL7 FHIR R4 Observations로 결과를 게시하고, REST 및 FHIR API를 통해 모든 애플리케이션에 동일한 용어를 노출합니다. 이 페이지에서는 작동 방식, 검증 방식, 측정 기준 및 한계에 대해 설명합니다.
개요
| 개념 | 274개 (증상 197개, 소견 77개), 식별자 SYM-0001…, 재사용 불가 |
| 분류 | WHO ICD-10 (2019년 버전) 및 WHO ICD-11 MMS (2025-01), 각 매핑의 동등성 포함 |
| 신체 시스템 | 13개, ICD-11 챕터 21 블록 (신경계, 소화계, 호흡계, 피부계 등)에서 가져옴 |
| 언어 | 20개 언어로 된 이름; 개인의 언어로 된 자유 텍스트 |
| 경고 징후 | 32개, 14개 개념에 대해 CDC 및 NIDDK에서 그대로 인용 |
| 정규화기 평가 | 5개 언어 (루마니아어, 영어, 스페인어, 독일어, 프랑스어): 기본 코드 97.5–100%, 존재 및 주체 92.5–98%, 부재로 보고된 증상이 모든 언어에서 0%로 보고됨 |
| 임상 검토 | 아직 없음: 모든 응답에 clinical_review: false |
| 표준 | HL7 FHIR R4 (CodeSystem, ValueSet, ConceptMap, Observation), ICD-10, ICD-11, 검사 결과용 LOINC |
1. 파이프라인
증상은 네 단계를 거칩니다. 사용자의 텍스트는 변경되지 않으며, 각 단계는 텍스트 옆에 데이터를 추가합니다.
- 캡처. 원시 입력은 기록된 시점, 휴대폰 시간대, 언어, 그리고 선택적으로 강도(1-10), 시작 및 종료와 함께 그대로 저장됩니다. 다운스트림에서 이를 다시 작성하지 않습니다.
- 정규화 (AI). 대규모 언어 모델 (Vertex AI의 Google Gemini)이 텍스트를 읽고 언급된 각 증상에 대해 다음을 반환합니다: 기본 ICD-10 코드, 선택적 보조 코드, 짧은 레이블, 그리고 두 가지 속성인 주장(존재, 부재, 해결됨, 가상, 불확실) 및 주체(본인 또는 타인). 모델은 Anpheros 어휘에서만 코드를 선택할 수 있습니다. 다른 답변, 누락된 항목 또는 유효하지 않은 기본 코드는 실패한 시도로 간주되며 "알 수 없는 증상"으로 간주되지 않습니다.
- 개념 매핑 (결정론적). ICD-10 코드는 Anpheros 개념으로, 그리고 거기서부터 ICD-11 및 신체 시스템으로 매핑됩니다. 이 단계는 AI가 아닌 고정 테이블을 사용하므로 동일한 코드는 항상 동일한 개념을 제공합니다.
- 게시. 존재하고 본인에 관한 증상만이 정규화에 성공한 후에만 FHIR Observations로 해당 개인의 기록에 포함됩니다. 나중에 편집 또는 재정규화로 인해 변경되면 해당 Observation은 철회되며, 버전 기록은 유지됩니다.
2. 존재, 시간 및 경험자
임상 텍스트는 종종 환자가 가지고 있지 않은 증상을 언급합니다. 임상 자연어 처리는 이를 부정(negation), 시간성(temporality) 및 경험자(experiencer) 탐지라고 부릅니다 (NegEx 및 ConText 계열 방법). 엔진은 모델의 assertion 및 subject 속성을 사용하여 동일한 세 가지 질문을 처리합니다.
| 작성된 내용 | Assertion / subject | 환자의 증상으로 게시됨? |
|---|---|---|
| "I've had a headache since Tuesday" | present / self | yes |
| "my head doesn't hurt any more" | resolved / self | no |
| "I might get a fever tomorrow" | hypothetical / self | no |
| "my mother has a cough" | present / other | no |
가족의 불만은 자동으로 가족력으로 전환되지 않습니다.
3. 어휘 및 검증 방법
이 어휘는 ICD-10 챕터 XVIII(R00–R94, 2026.10.3 릴리스부터는 R06.0 호흡곤란과 같은 잔여 하위 범주 제외)와 WHO가 다른 챕터에 증상을 분류하는 경우 WHO 코드(변비 K59.0, 이명 H93.1, 복시 H53.2, 흐릿한 시야 H53.8, 가려움증 L29.9, 관절통 M25.5, 요통 M54, 수면 문제 G47)를 포함합니다.
- ICD-10. 모든 코드와 영어 제목은 WHO ICD-10 버전 2019 브라우저를 통해 검증되었으며, 각 코드의 포함 및 제외 사항도 포함되었습니다. 제외 사항으로 인해 증상이 다른 곳으로 이동된 경우(예: R19.4는 변비를 제외함), 어휘는 WHO를 따랐습니다.
- ICD-11. 모든 개념은 WHO Simple Tabulation에서 가져온 ICD-11 MMS 2025-01 코드로 매핑되며, 공식 WHO ICD-10 → ICD-11 매핑 테이블과 비교되었습니다. 엔진은 질병 코드(예: 두통 → MB4D, 8A8Z "두통 장애" 아님) 대신 챕터 21의 증상 코드를 사용합니다. WHO 통계 테이블에서 벗어난 21가지 항목 각각은 릴리스 파일에 사유와 함께 나열됩니다. 67개의 매핑은 동등하며, 나머지는 더 넓거나, 더 좁거나, 부정확한 것으로 표시됩니다.
- 문서화된 선택. 사람이 작성한 "편두통"은 두통(R51)으로 코딩되며, 불특정 설사는 R19로 코딩됩니다. 이는 대안적인 WHO 코드(G43, A09)가 진단이기 때문입니다. 엔진은 진단이 아닌 보고된 증상을 기록합니다.
- 번역. 영어 이름은 WHO 제목입니다. 18개 언어의 이름은 기계 번역되었으며, AI 지원을 통해 WHO 제목과 대조하여 용어별로 검토되었습니다(
review: ai_reviewed). 5개 언어에서는 의미가 코드와 일치하지 않아 모든 언어에서 다시 작성되었습니다. 아직 전문 의료 번역가가 검토하지는 않았습니다. - 경고 신호. CDC(뇌졸중, 심장마비) 및 NIDDK(설사, 변비)의 공개 도메인 페이지에서 그대로 인용되었으며, 각 항목에는 출처, 라이선스 및 진단이 아니라는 메모가 포함되어 있습니다. 인용문에 9-1-1이 언급된 경우, 유럽의 112가 추가되었습니다.
4. 평가
정규화기는 루마니아어(현재 대부분의 사용자가 사용하는 언어)로 작성된 100개의 합성 사례 고정 세트에서 평가되며, 각 사례에는 예상되는 기본 코드, 어설션 및 주체가 포함됩니다. 32개의 사례는 의도적으로 누락되었습니다. 즉, 부정, 해결, 가설, 불확실 또는 다른 사람에 관한 것입니다. 현재 프롬프트(버전 3, 2026년 10월 15일) 결과:
| 메트릭 | 결과 | 목표 |
|---|---|---|
| 기본 코드 정확 | 100 % | ≥ 85 % |
| 어설션 및 주체 모두 정확 | 98 % | — |
| 부정된 증상이 존재한다고 보고됨 | 0 % | ≤ 3 % |
두 가지 오류는 행정 항목("심장 전문의와의 화요일 약속", "5kg 감량하고 싶습니다")으로, 존재한다고 보고된 것이 아니라 가설로 분류되었습니다. 둘 다 증상이 아닙니다. 테스트 세트는 임상의가 검토하지 않았으므로 점수는 참고용입니다.
기타 언어(2026년 10월 16일). 모든 범주를 포함하는 40개의 사례가 영어, 스페인어, 독일어 및 프랑스어로 번역되었으며 동일한 예상 답변이 제공되었습니다. 비공식적인 사례는 각 언어의 고유한 비공식 스타일로 다시 작성되었습니다. 모델에 대한 지침은 동일하게 유지되었습니다.
| 언어 | 사례 | 기본 코드 | 존재 및 주체 | 부정된 것이 존재한다고 보고됨 |
|---|---|---|---|---|
| 루마니아어 | 100 | 100 % | 98 % | 0 % |
| 영어 | 40 | 100 % | 97.5 % | 0 % |
| 스페인어 | 40 | 97.5 % | 92.5 % | 0 % |
| 독일어 | 40 | 100 % | 97.5 % | 0 % |
| 프랑스어 | 40 | 100 % | 95 % | 0 % |
나머지 오류의 대부분은 동일한 행정 항목("화요일 심장 전문의 약속", "건강 검진, 모두 괜찮음") 또는 두 가지 존재하지 않는 상태 간의 선택("오늘 열 없음"을 부재가 아닌 해결됨으로 처리)입니다. 이 중 어느 것도 증상을 게시하지 않습니다. 유일한 코딩 차이는 스페인어 "escalofríos y malestar"(오한 및 불편감)가 오한(R68)을 보조 코드로 하는 불편감(R53)으로 코딩된 것이 아니라 그 반대였습니다.
사람들에게 표시되는 이름은 해당 언어를 따릅니다. 앱은 사용자의 언어로 된 개념 이름(먼저 일반 용어)과 앱의 20개 언어로 된 존재 참고 사항("해결됨", "다른 사람")을 표시합니다.
운영 중(2026년 10월 16일), WHO와 어휘를 대조 확인한 후 저장된 모든 증상이 다시 정규화되었습니다. 실제 사용자의 기록에서: 모든 증상이 정규화되었고, 0개의 현재 증상이 "불분명"으로 남았으며, 존재하지 않는 0개의 증상이 해당 개인의 것으로 게시되었습니다(게시된 관찰에 대한 독립 감사).
5. 유사 사례 (개발 중)
다음 구성 요소는 사람들의 증상 및 비정상적인 검사 결과를 비교하여, 명시적인 동의가 있는 경우에만 매우 유사한 사람들을 제안합니다.
- 프로필. Anpheros 개념에 따른 지난 90일간의 자가 보고 증상과, 실험실에서 인쇄한 참조 범위를 벗어난 지난 180일간의 LOINC 코드별 검사 결과. 프로필은 언어 및 국가와 무관합니다. 루마니아어 실험실 보고서와 영어 보고서는 동일한 LOINC 코드로 매핑됩니다.
- 점수. 가중 Jaccard 지수: 공유된 징후를 두 사람의 모든 징후로 나눈 값. 매우 흔한 증상(두통, 복통, 피로, 발열, 기침, 현기증 등)은 0.25, 특정 증상은 1, 비정상적인 검사 결과는 1.5의 가중치를 갖습니다. 50명의 참가자로부터, 가중치는 인구 집단에서 징후의 희귀성(역문서 빈도)에 따라 조정됩니다. 동일한 신체 시스템 내의 두 가지 다른 징후는 부분 점수를 얻습니다.
- 규칙. 최소 세 가지 공유된 특정 증상, 또는 두 가지 공유된 특정 증상과 하나의 공유된 비정상적인 검사 결과가 있을 때만 쌍으로 간주됩니다. 흔한 불만만으로는 두 사람이 "유사하다"고 간주되지 않습니다. 0.70의 점수부터 초대가 제공되며, 0.80부터 유사 사례를 볼 수 있습니다.
- 개인 정보 보호. 성인 계정 보유자만 해당, 명시적 동의(GDPR 제9조), 언제든지 즉시 삭제 가능. 개인은 공유된 징후와 개수만 볼 수 있으며, 다른 사람이 누구인지는 절대 알 수 없습니다.
진단이나 질병을 제안하지 않습니다.
6. 애플리케이션 사용 방법
- Anpheros Daily (iOS, Android, Mac, web): 사용자가 기록하는 모든 증상은 위 파이프라인을 거치며, 사용자는 결과를 확인하고 수정할 수 있습니다.
- Anpheros Platform: 증상은 FHIR
Observation로 저장되며, 카테고리urn:anpheros:observation-category|symptom에는 코드와 사용자의 텍스트가 모두 포함됩니다. 사용자의 동의가 있는 모든 애플리케이션에서 이를 읽을 수 있습니다. - 귀하의 애플리케이션:
GET /v1/terminology/symptoms으로 개념을 검색하고, FHIRValueSet을 확장하며,ConceptMap의 코드를 ICD-10 및 ICD-11로 번역하고,anpheros-symptom프로필에 대해 Observations를 검증합니다. 요청 및 응답에 대해서는 Symptom data API를 참조하십시오. - AI 어시스턴트 및 에이전트: 자유 텍스트 대신 Context API를 통해 동일한 구조화된 데이터를 읽으므로, 답변에서 코드를 인용할 수 있습니다.
7. 제한 사항
- 엔진은 증상을 이름 짓고 코드를 부여하지만, 진단을 내리거나 원인의 순위를 매기거나 증상을 질병과 연결하지는 않습니다.
- 아직 임상의가 어휘, 번역 또는 경고 징후를 검토하지 않았습니다.
- 평가 세트는 합성 데이터이며, 20개 언어 중 15개 언어에는 아직 평가 세트가 없습니다.
- ICD-11은 WHO의 CC BY-ND 3.0 IGO 라이선스 하에 있으며, 코드는 변경 없이 그대로 복제됩니다.
관련 자료
- Symptom data API: 개념, FHIR 용어 및 환자 보고 증상
- Anpheros Search: 동일한 증상과 함께 질병 및 치료법을 하나의 공개 카탈로그에서 제공하며, 각 항목에는 출처가 포함됩니다.
- FHIR 코드 시스템
- Longitudinal patient data API
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card