# API de données de symptômes : concepts, terminologie FHIR et symptômes rapportés par les patients

> Identifiants de symptômes stables mappés à ICD-10, servis en tant que REST et en tant que CodeSystem, ValueSet et ConceptMap FHIR ; à quoi ressemble un symptôme rapporté par le patient et comment en valider un.

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

**Anpheros attribue à chaque symptôme un identifiant stable (`SYM-0047` est mal de tête), le mappe à ICD-10 et sert la liste via un point de terminaison REST et en tant que terminologie FHIR R4 (`CodeSystem`, `ValueSet`, `ConceptMap`, `$lookup`). Les symptômes que les patients rapportent sont stockés sous forme d'`Observation` FHIR qui portent à la fois des codes, les propres mots de la personne, l'intensité et, lorsque connu, quand le symptôme a commencé et s'est terminé.** Cette page montre comment trouver un concept, à quoi ressemble un symptôme rapporté par le patient, comment vérifier celui que vous écrivez vous-même, et ce que les données ne contiennent délibérément pas.

## Ce conține versiunea

| | |
|---|---|
| Versiune | `2026.10.4` (fiecare răspuns indică care) |
| Concepte | 274: 197 simptome (ICD-10 R00–R69 și subcategoriile lor non-reziduale, cum ar fi R06.0 dispnee sau R43.0 anosmie, plus codul WHO unde WHO clasifică simptomul în altă parte: G47, H53.2, H53.8, H93.1, K59.0, L29.9, M25.5, M54) și 77 de constatări (R65, R70–R94) |
| Sistem de identificare | `https://anpheros.com/fhir/CodeSystem/symptom` |
| Coduri | verificate în raport cu WHO ICD-10 Versiunea 2019 (15 octombrie 2026), cu notele sale de includere și excludere; titlurile oficiale ICD-10 WHO nu sunt furnizate până când WHO confirmă licența (`icd10.display: null`), titlul oficial în limba engleză este cel din ICD-11 |
| ICD-11 | fiecare concept se mapează la un cod ICD-11 MMS 2025-01 (codul simptomului din capitolul 21) și la un sistem corporal |
| Etichete furnizate | titlul oficial WHO ICD-11 în limba engleză (`source`), etichetele în limba română și termenii de potrivire utilizați de Anpheros Daily (`in_use`), și etichete laice în încă 19 limbi (`ai_reviewed`: traduceri automate revizuite cu asistență AI, nu de un traducător medical profesionist); pentru cele 188 de concepte adăugate în 2026.10.3, numele în limba română este, de asemenea, o traducere AI |
| Revizuire clinică | `clinical_review: false` — niciun clinician nu a revizuit versiunea; nicio cauză sau asociere de condiții |
| Semne de avertizare | 32, pentru 14 concepte, citate cuvânt cu cuvânt de pe paginile CDC și NIDDK (`review: source_quoted`) |

Identificatorii nu sunt niciodată reutilizați. Un concept care este retras rămâne în listă cu `status: deprecated`.

## Trouver un concept (REST)

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

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

`q` correspond à l'identifiant du concept, aux codes ICD-10 et ICD-11, aux libellés et aux termes de correspondance. Autres paramètres : `icd10=R51` (le concept pour un code), `icd11=MB4D`, `body_system=nervous`, `kind=symptom|finding|all`, `lang=de` (la langue de `display` : le libellé préféré, sinon le libellé courant, sinon l'anglais), `limit` et `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` liste tous les libellés servis (20 langues ; abrégé ici). Un concept : `GET $API/terminology/symptoms/SYM-0047`.

## La même liste que la terminologie 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` (la version n'a pas été révisée par un clinicien) ; propriétés `kind`, `status`, `icd10` ; étiquettes roumaines, termes correspondants et étiquettes grand public comme `designation`.
- `ValueSet/anpheros-symptoms` — les symptômes actifs (findings exclus) ; `$expand` prend `filter`, `displayLanguage`, `count` et `offset`.
- `ConceptMap/anpheros-symptom-to-icd10` — `equivalent`, ou `wider` lorsque le code ICD-10 couvre plus que le concept (H53.8 "Autres troubles visuels" est plus large que la vision floue).
- Tous sont en lecture seule et listés dans le `CapabilityStatement` du serveur (`GET $BASE/metadata`).

## Un symptôme rapporté par le patient

Voici comment Anpheros Daily enregistre un symptôme qu'une personne a rapporté comme étant présent, la concernant :

```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` représente toujours les propres mots de la personne, dans sa langue (`Observation.language`) ; les codes se trouvent à côté.
- `effectivePeriod` est utilisé lorsque la personne a indiqué quand le symptôme a commencé ou s'est terminé ; sinon, `effectiveDateTime` représente le moment où elle l'a noté. Les heures conservent le décalage de l'appareil qui les a enregistrées.
- `valueQuantity` représente l'intensité sur une échelle de 1 à 10 ; en l'absence de cette information, il n'y a pas de valeur.
- Lorsqu'une personne modifie un symptôme, la même ressource reçoit une nouvelle version — lisez les versions précédentes avec `GET $BASE/Observation/{id}/_history`.
- Filtrez par catégorie avec `?category=symptom` ; les scopes de consentement tels que `patient/Observation.rs?category=symptom` fonctionnent de la même manière.

### Ce qui n'est jamais publié comme symptôme

Seuls les symptômes qui sont **présents** et **concernant le patient** deviennent des Observations, et ce, uniquement après que le texte libre a été normalisé. "Ma tête ne me fait plus mal", "peut-être de la fièvre demain", "ma mère a une toux" ou un texte que le normaliseur n'a pas pu lire ne deviennent pas un symptôme du patient ; si un symptôme publié est ultérieurement corrigé pour devenir l'un de ceux-ci, son Observation est retirée (suppression logique — l'historique est conservé). Les plaintes des proches ne sont pas automatiquement transformées en antécédents familiaux.

## Vérifier un symptôme que vous écrivez

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

Le profil `anpheros-symptom` (canonique `https://anpheros.com/fhir/StructureDefinition/anpheros-symptom-observation`) rapporte, en tant que `OperationOutcome` :

| Règle | Gravité |
|---|---|
| Catégorie `urn:anpheros:observation-category\|symptom` (le système HL7 `observation-category` n'a pas de code `symptom`) | error |
| `code.text` présent | error |
| Un concept Anpheros qui existe et correspond au code ICD-10 | error |
| `subject` est un Patient ; `status` final, amendé, corrigé ou entré par erreur ; `effective[x]` présent ; `effectivePeriod.end` pas avant `start` | error |
| Intensité en UCUM `{score}` entre 0 et 10 | error |
| Texte libre uniquement, pas de codes | information (toujours valide) |

Comme les autres profils, il rapporte et ne rejette pas les écritures. Un `meta.profile` que vous envoyez est conservé sur la ressource stockée.

## Limites

- La version n'a pas été examinée par un clinicien ; utilisez-la pour le codage et la recherche, pas pour des décisions médicales.
- Les signes d'alerte sont cités mot pour mot à partir de pages fédérales du domaine public américain (CDC : signes d'AVC et de crise cardiaque ; NIDDK : diarrhée et constipation) et ont été vérifiés par rapport à ces pages le 15 octobre 2026. Chaque élément porte l'en-tête propre à la source (`context`), son conseil (`quote`), le groupe auquel il s'applique (`applies_to`), la source avec licence et attribution, `review: source_verified` et la note qu'il ne s'agit pas d'un diagnostic et qu'il n'a pas été examiné par un clinicien. Les sources sont américaines : là où une citation mentionne le 9-1-1, la note ajoute que le numéro d'urgence en Europe est le 112.
- Aucune cause ou association de conditions n'est fournie : `associations` reste vide jusqu'à ce qu'un clinicien examine un élément. Une association est toujours "peut être associée à".
- Les codes SNOMED CT sont écrits uniquement lorsque la licence le permet (voir [Systèmes de codes FHIR](https://developers.anpheros.com/fr/guides/fhir-code-systems)).
- Les Observations de symptômes antérieures reçoivent le codage de concept Anpheros lors de leur prochaine mise à jour.

## Liens connexes

- [Moteur de symptômes Anpheros : méthodologie](https://developers.anpheros.com/fr/guides/symptom-engine) : comment les concepts sont assignés, vérifiés et évalués
- [Anpheros Search](https://developers.anpheros.com/fr/guides/anpheros-search) : une recherche unique sur les symptômes, les conditions et les traitements, avec les sources
- [Systèmes de codes FHIR](https://developers.anpheros.com/fr/guides/fhir-code-systems) : chaque système de codes par type de ressource
- [API de données patient longitudinales](https://developers.anpheros.com/fr/guides/longitudinal-patient-data-api)
- [Comment stocker des dossiers médicaux en utilisant FHIR R4](https://developers.anpheros.com/fr/guides/store-medical-records-fhir)
- [Plateforme FHIR](https://developers.anpheros.com/fr/guides/fhir)
