# 증상 데이터 API: 개념, FHIR 용어 및 환자 보고 증상

> ICD-10에 매핑된 안정적인 증상 식별자, REST 및 FHIR CodeSystem, ValueSet, ConceptMap으로 제공; 환자가 보고한 증상 Observation의 모습과 유효성 검사 방법.

Source: https://developers.anpheros.com/ko/guides/symptom-data-api

**Anpheros는 모든 증상에 안정적인 식별자(`SYM-0047`은 두통)를 부여하고, 이를 ICD-10에 매핑하며, REST 엔드포인트와 FHIR R4 용어(`CodeSystem`, `ValueSet`, `ConceptMap`, `$lookup`)로 목록을 제공합니다. 환자가 보고한 증상은 코드, 환자 자신의 표현, 강도, 그리고 알려진 경우 증상 시작 및 종료 시점을 모두 포함하는 FHIR `Observation`으로 저장됩니다.** 이 페이지에서는 개념을 찾는 방법, 환자가 보고한 증상이 어떻게 보이는지, 직접 작성한 증상의 유효성을 확인하는 방법, 그리고 데이터에 의도적으로 포함되지 않는 내용에 대해 설명합니다.

## 릴리스 내용

| | |
|---|---|
| 릴리스 | `2026.10.4` (모든 응답에 표시됨) |
| 개념 | 274개: 197개 증상 (ICD-10 R00–R69 및 R06.0 호흡 곤란 또는 R43.0 후각 상실과 같은 잔여 하위 범주, WHO가 증상을 다른 곳에서 분류하는 경우 WHO 코드 포함: G47, H53.2, H53.8, H93.1, K59.0, L29.9, M25.5, M54) 및 77개 소견 (R65, R70–R94) |
| 식별자 시스템 | `https://anpheros.com/fhir/CodeSystem/symptom` |
| 코드 | WHO ICD-10 2019년 버전 (2026년 10월 15일) 및 포함/제외 참고 사항과 대조 확인됨; WHO가 라이선스를 확인할 때까지 WHO ICD-10 제목은 제공되지 않음 (`icd10.display: null`), 영어 공식 제목은 ICD-11 제목임 |
| ICD-11 | 모든 개념은 ICD-11 MMS 2025-01 코드 (21장 증상 코드) 및 신체 시스템에 매핑됨 |
| 제공되는 레이블 | WHO ICD-11 영어 제목 (`source`), Anpheros Daily에서 사용하는 루마니아어 레이블 및 일치 용어 (`in_use`), 그리고 19개 언어의 일반 용어 (`ai_reviewed`: 전문 의료 번역가가 아닌 AI 지원으로 검토된 기계 번역); 2026.10.3에 추가된 188개 개념의 루마니아어 이름도 AI 번역임 |
| 임상 검토 | `clinical_review: false` — 임상의가 릴리스를 검토하지 않았음; 원인 또는 상태 연관성 없음 |
| 경고 징후 | 14개 개념에 대해 32개, CDC 및 NIDDK 페이지에서 그대로 인용됨 (`review: source_quoted`) |

식별자는 절대 재사용되지 않습니다. 철회된 개념은 `status: deprecated`과 함께 목록에 유지됩니다.

## 개념 찾기 (REST)

```bash
export API=https://platform.anpheros.com/v1
export KEY=sk_test_…

curl "$API/terminology/symptoms?q=headache" -H "Authorization: Bearer $KEY"
```

`q`은 개념 ID, ICD-10 및 ICD-11 코드, 레이블 및 일치 용어와 일치합니다. 기타 매개변수: `icd10=R51` (코드 하나에 대한 개념), `icd11=MB4D`, `body_system=nervous`, `kind=symptom|finding|all`, `lang=de` (`display`의 언어: 선호하는 레이블, 없으면 일반 레이블, 없으면 영어), `limit` 및 `offset`.

```json
{
  "data": [{
    "concept_id": "SYM-0047",
    "system": "https://anpheros.com/fhir/CodeSystem/symptom",
    "kind": "symptom",
    "status": "active",
    "display": "Headache, not elsewhere classified",
    "display_lang": "en",
    "icd10": {"system": "http://hl7.org/fhir/sid/icd-10", "code": "R51", "display": null, "equivalence": "equivalent"},
    "icd11": {"system": "http://id.who.int/icd/release/11/mms", "code": "MB4D", "display": "Headache, not elsewhere classified", "equivalence": "equivalent"},
    "body_system": {"code": "nervous", "display": "Symptoms, signs or clinical findings of the nervous system", "icd11_block": "BlockL1-MB4"},
    "labels": [
      {"lang": "ro", "use": "preferred", "text": "Durere de cap (cefalee)", "review": "in_use"},
      {"lang": "de", "use": "lay", "text": "Kopfschmerzen", "review": "ai_reviewed"}
    ],
    "match_terms": [{"lang": "ro", "text": "durere de cap"}, {"lang": "ro", "text": "cefalee"}],
    "clinical_review": false,
    "release": "2026.10.2"
  }],
  "total": 1,
  "release": "2026.10.2"
}
```

`labels`은 제공되는 모든 레이블(20개 언어; 여기서는 축약됨)을 나열합니다. 하나의 개념: `GET $API/terminology/symptoms/SYM-0047`.

## FHIR 용어와 동일한 목록

```bash
export BASE=https://platform.anpheros.com/fhir/R4

curl "$BASE/CodeSystem/anpheros-symptom" -H "Authorization: Bearer $KEY"
curl "$BASE/CodeSystem/\$lookup?system=https://anpheros.com/fhir/CodeSystem/symptom&code=SYM-0047&displayLanguage=ro" -H "Authorization: Bearer $KEY"
curl "$BASE/ValueSet/\$expand?url=https://anpheros.com/fhir/ValueSet/anpheros-symptoms&filter=cough" -H "Authorization: Bearer $KEY"
curl "$BASE/ConceptMap/anpheros-symptom-to-icd10" -H "Authorization: Bearer $KEY"
curl "$BASE/ConceptMap/anpheros-symptom-to-icd11" -H "Authorization: Bearer $KEY"
```

- `CodeSystem/anpheros-symptom` — `content: complete`, `status: draft` (해당 릴리스는 임상의의 검토를 거치지 않았습니다); 속성 `kind`, `status`, `icd10`; 루마니아어 레이블, 용어 및 일반 레이블을 `designation`과 일치시킵니다.
- `ValueSet/anpheros-symptoms` — 활성 증상 (소견 제외); `$expand`은 `filter`, `displayLanguage`, `count` 및 `offset`을 사용합니다.
- `ConceptMap/anpheros-symptom-to-icd10` — `equivalent`, 또는 ICD-10 코드가 개념보다 더 넓은 경우 `wider` (H53.8 "기타 시각 장애"는 흐릿한 시야보다 더 넓습니다).
- 이 모든 항목은 읽기 전용이며 서버의 `CapabilityStatement` (`GET $BASE/metadata`)에 나열됩니다.

## 환자가 보고한 증상

Anpheros Daily에서 개인이 자신에 대해 현재 존재한다고 보고한 증상을 작성하는 방법은 다음과 같습니다.

```json
{
  "resourceType": "Observation",
  "status": "final",
  "meta": {"profile": ["https://anpheros.com/fhir/StructureDefinition/anpheros-symptom-observation"]},
  "category": [{"coding": [{"system": "urn:anpheros:observation-category", "code": "symptom"}]}],
  "code": {
    "text": "Mă doare capul de 3 zile",
    "coding": [
      {"system": "http://hl7.org/fhir/sid/icd-10", "code": "R51"},
      {"system": "https://anpheros.com/fhir/CodeSystem/symptom", "code": "SYM-0047", "display": "Headache"}
    ]
  },
  "subject": {"reference": "Patient/…"},
  "effectivePeriod": {"start": "2026-10-11T08:00:00+03:00", "end": "2026-10-14T18:00:00+03:00"},
  "valueQuantity": {"value": 6, "unit": "1-10", "system": "http://unitsofmeasure.org", "code": "{score}"}
}
```

- `code.text`은 항상 해당 언어(`Observation.language`)로 된 개인의 고유한 단어이며, 코드는 그 옆에 있습니다.
- `effectivePeriod`는 언제 시작되었거나 끝났는지 개인이 말했을 때 사용됩니다. 그렇지 않으면 `effectiveDateTime`은 기록한 순간입니다. 시간은 기록한 휴대폰의 오프셋을 유지합니다.
- `valueQuantity`는 1-10 척도의 강도입니다. 값이 없으면 유효하지 않습니다.
- 개인이 증상을 편집하면 동일한 리소스에 새 버전이 생성됩니다. 이전 버전은 `GET $BASE/Observation/{id}/_history`로 읽습니다.
- 카테고리로 필터링하려면 `?category=symptom`을 사용하십시오. `patient/Observation.rs?category=symptom`과 같은 동의 범위는 동일하게 작동합니다.

### 증상으로 게시되지 않는 것

**존재하는** **환자에 대한** 증상만 관찰(Observation)이 되며, 자유 텍스트가 정규화된 후에만 해당됩니다. "더 이상 머리가 아프지 않아요", "내일 열이 날지도 몰라요", "우리 엄마가 기침을 해요" 또는 정규화 프로그램이 읽을 수 없었던 텍스트는 환자의 증상이 되지 않습니다. 게시된 증상이 나중에 이러한 내용으로 수정되면 해당 관찰(Observation)은 철회됩니다(소프트 삭제 - 기록은 유지됨). 친척의 불만은 자동으로 가족력으로 전환되지 않습니다.

## 증상 확인

```bash
curl -X POST "$BASE/Observation/\$validate?profile=anpheros-symptom" -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/fhir+json" -d @symptom.json
```

`anpheros-symptom` 프로필(정식 `https://anpheros.com/fhir/StructureDefinition/anpheros-symptom-observation`)은 `OperationOutcome`로서 다음과 같이 보고합니다:

| 규칙 | 심각도 |
|---|---|
| 카테고리 `urn:anpheros:observation-category\|symptom` (HL7 `observation-category` 시스템에는 `symptom` 코드가 없음) | error |
| `code.text` 존재 | error |
| Anpheros 개념이 존재하고 ICD-10 코드와 일치 | error |
| `subject`는 환자; `status` 최종, 수정, 정정 또는 오류 입력; `effective[x]` 존재; `start` 이전이 아닌 `effectivePeriod.end` | error |
| UCUM `{score}`의 강도로 0에서 10 사이 | error |
| 무료 텍스트만, 코드 없음 | information (still valid) |

다른 프로필과 마찬가지로, 작성은 거부하지 않고 보고합니다. 전송한 `meta.profile`는 저장된 리소스에 유지됩니다.

## 제한 사항

- 본 릴리스는 임상의의 검토를 거치지 않았으므로, 의료 결정이 아닌 코딩 및 검색에 사용하십시오.
- 경고 표시는 공개 도메인 미국 연방 페이지(CDC: 뇌졸중 및 심장마비 증상; NIDDK: 설사 및 변비)에서 그대로 인용되었으며 2026년 10월 15일에 해당 페이지와 대조 확인되었습니다. 각 항목에는 출처의 자체 제목(`context`), 조언(`quote`), 적용 대상 그룹(`applies_to`), 라이선스 및 출처 표기가 포함된 출처(`review: source_verified`)가 있으며, 이는 진단이 아니며 임상의의 검토를 거치지 않았다는 내용이 포함됩니다. 출처는 미국 것이므로, 인용문에서 9-1-1이라고 언급하는 경우 유럽의 긴급 전화번호는 112라는 내용이 추가됩니다.
- 원인 또는 질환 연관성은 제공되지 않습니다: 임상의가 항목을 검토할 때까지 `associations`은 비어 있습니다. 연관성은 항상 "연관될 수 있음"입니다.
- SNOMED CT 코드는 라이선스가 허용하는 경우에만 작성됩니다( [FHIR 코드 시스템](https://developers.anpheros.com/ko/guides/fhir-code-systems) 참조).
- 이전 증상 관찰 항목은 다음 업데이트 시 Anpheros 개념 코딩을 받습니다.

## 관련 자료

- [Anpheros 증상 엔진: 방법론](https://developers.anpheros.com/ko/guides/symptom-engine): 개념이 할당, 확인 및 평가되는 방식
- [Anpheros 검색](https://developers.anpheros.com/ko/guides/anpheros-search): 증상, 질환 및 치료에 대한 단일 검색 (소스 포함)
- [FHIR 코드 시스템](https://developers.anpheros.com/ko/guides/fhir-code-systems): 리소스 유형별 모든 코드 시스템
- [Longitudinal patient data API](https://developers.anpheros.com/ko/guides/longitudinal-patient-data-api)
- [FHIR R4를 사용하여 의료 기록을 저장하는 방법](https://developers.anpheros.com/ko/guides/store-medical-records-fhir)
- [FHIR 플랫폼](https://developers.anpheros.com/ko/guides/fhir)
