AllergyIntolerance — Allergies et intolérances
La ressource qui porte le drapeau rouge clinique : tout EHR doit afficher AllergyIntolerance avant chaque prescription, et l'ordonnance doit la considérer.
Objet de la ressource
AllergyIntolerance est la ressource FHIR qui enregistre, pour un patient, la propension connue à réagir défavorablement à une substance — qu'il s'agisse d'une vraie allergie (réaction immunologique de type I avec IgE), d'une intolérance non immunologique (lactose, gluten), d'une réaction pseudo-allergique (aspirine) ou d'un effet indésirable médicamenteux récurrent.
La ressource est utilisée par les CDSS (Clinical Decision Support Systems) pour détecter les contre-indications avant émission d'une MedicationRequest. Elle est également centrale en pharmacie hospitalière pour la dispensation et en anesthésie pré-opératoire. Modèle pré-coordination des codes RxNorm / SNOMED CT pour identifier précisément la substance ou la classe de substances en cause.
Champs clés
| Champ | Type | Cardinalité | Rôle |
|---|---|---|---|
identifier | Identifier[] | 0..* | Identifiant métier local. |
clinicalStatus | CodeableConcept | 0..1 | active, inactive, resolved. |
verificationStatus | CodeableConcept | 0..1 | unconfirmed, presumed, confirmed, refuted, entered-in-error. |
type | CodeableConcept | 0..1 | allergy ou intolerance. |
category | code[] | 0..* | food, medication, environment, biologic. |
criticality | code | 0..1 | low, high, unable-to-assess. Pas la sévérité de l'épisode, mais le risque de réaction sévère future. |
code | CodeableConcept | 0..1 | Code de la substance / classe. SNOMED CT, RxNorm, classe ATC, allergène codé. |
patient | Reference(Patient) | 1..1 | Sujet (obligatoire). |
encounter | Reference(Encounter) | 0..1 | Visite de découverte / documentation. |
onset[x] | dateTime | Age | Period | Range | string | 0..1 | Date / âge de première manifestation. |
recordedDate | dateTime | 0..1 | Date de saisie de la donnée. |
recorder | Reference(Practitioner | PractitionerRole | Patient | RelatedPerson) | 0..1 | Qui a documenté. |
asserter | Reference(Patient | RelatedPerson | Practitioner | PractitionerRole) | 0..1 | Qui a affirmé l'allergie (souvent le patient). |
lastOccurrence | dateTime | 0..1 | Dernière manifestation connue. |
reaction | BackboneElement[] | 0..* | Détail des épisodes : substance exacte, manifestation, sévérité, voie d'exposition. |
note | Annotation[] | 0..* | Notes libres complémentaires. |
Statuts cliniques et de vérification
Deux dimensions de statut s'articulent :
clinicalStatus— état clinique de l'allergie.active= en cours, à surveiller.inactive= pas une menace immédiate (rémission).resolved= guérie (dé-sensibilisation prouvée, par exemple).verificationStatus— fiabilité de la donnée.confirmed= certifié par test ou par épisode authentifié.presumed= présumé sur la base d'éléments cliniques.unconfirmed= déclaré mais non vérifié.refuted= explicitement réfuté après investigation.entered-in-error= saisi par erreur.
Cette dualité est cruciale : un patient qui déclare une « allergie à la
pénicilline » a souvent eu en réalité une réaction cutanée bénigne d'enfance.
Une investigation allergologique passe le statut de unconfirmed à
confirmed ou refuted.
Exemple JSON
Allergie pénicilline (SNOMED CT) confirmée, criticality haute, avec un épisode documenté de réaction urticarienne après prise orale d'aspirine :
{
"resourceType": "AllergyIntolerance",
"id": "penicillin",
"clinicalStatus": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical",
"code": "active",
"display": "Active"
}]
},
"verificationStatus": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification",
"code": "confirmed",
"display": "Confirmed"
}]
},
"type": {
"coding": [{
"system": "http://hl7.org/fhir/allergy-intolerance-type",
"code": "allergy"
}]
},
"category": ["medication"],
"criticality": "high",
"code": {
"coding": [{
"system": "http://snomed.info/sct",
"code": "373270004",
"display": "Substance with penicillin structure and antibacterial mechanism of action"
}]
},
"patient": { "reference": "Patient/example" },
"onsetDateTime": "2018-04-22",
"recordedDate": "2019-01-15T11:00:00+01:00",
"recorder": { "reference": "Practitioner/dr-jones" },
"reaction": [{
"substance": {
"coding": [{
"system": "http://www.nlm.nih.gov/research/umls/rxnorm",
"code": "1191",
"display": "Aspirin"
}]
},
"manifestation": [{
"concept": {
"coding": [{
"system": "http://snomed.info/sct",
"code": "247472004",
"display": "Hives"
}]
}
}],
"severity": "moderate",
"exposureRoute": {
"coding": [{
"system": "http://snomed.info/sct",
"code": "26643006",
"display": "Oral route"
}]
}
}]
} clinicalStatus=active+verificationStatus=confirmed— drapeau rouge actif et certifié.criticality=high— risque de réaction sévère lors d'une exposition future.category=["medication"]— la classe de la substance déclenchante.codeSNOMED CT373270004= substances de structure pénicilline. C'est la classe, pas un médicament précis.reaction[0]décrit un épisode avec aspirine (RxNorm 1191) qui a déclenché de l'urticaire (SNOMED CT 247472004).
API REST
GET /AllergyIntolerance?patient=Patient/example— toutes les allergies d'un patient.GET /AllergyIntolerance?patient=Patient/example&clinical-status=active&verification-status=confirmed— uniquement les actives confirmées.GET /AllergyIntolerance?patient=Patient/example&category=medication&criticality=high— médicaments à risque élevé.POST /AllergyIntolerance— créer après documentation par praticien.PUT /AllergyIntolerance/penicillin— mettre à jour le statut.GET /Patient/example/$everything?_type=AllergyIntolerance,MedicationRequest— opération composite pour récupérer allergies + prescriptions pour CDSS.
Profils nationaux
| Profil | Régulateur | Restrictions |
|---|---|---|
| US Core AllergyIntolerance | HL7 US Realm — ONC EHR | Doit porter clinicalStatus, verificationStatus, code (RxNorm, SNOMED CT, ou UNII), patient. |
| IPS AllergyIntolerance | HL7 + CEN/TC 251 | Pour résumé patient international (Patient Summary). |
| FR Core AllergyIntolerance | ANS | Slicing sur code, contraint à CIM-10 ou SNOMED CT FR. |
| UK Core AllergyIntolerance | NHS Digital | Aligné sur le Care Connect. |
| AU Core AllergyIntolerance | HL7 Australia | Pour My Health Record et eMedicines. |
Pièges courants
- Criticality vs reaction.severity —
criticalityest un risque futur (haut / bas),reaction.severityest la sévérité historique d'un épisode passé. Ne pas les confondre. - Allergie à un médicament précis vs classe — pour la pénicilline, préférer le code SNOMED CT de la classe (« Substances de structure pénicilline ») plutôt qu'un RxNorm d'une marque, pour que le CDSS bloque toute la classe.
- Oubli du
verificationStatus— un EHR qui affiche toutes les AllergyIntolerance sans distinguerunconfirmedetconfirmedsur-alerte le prescripteur et provoque la fatigue d'alerte. - Pas de
onset[x]— l'âge de la première manifestation est essentiel pour l'évaluation (allergie d'enfance vs allergie adulte récente). - « NKA » — l'absence d'allergie connue ne se code pas par l'absence d'AllergyIntolerance. Utiliser une
AllergyIntoleranceaveccode = "No known allergies"(SNOMED CT 716186003) pour le rendre explicite, sinon le récepteur ne peut pas distinguer « pas documenté » de « documenté comme absent ». - Reaction sans manifestation — un épisode
reactionsans au moins unemanifestationest inexploitable cliniquement.
Ressources liées
- MedicationRequest — toute prescription doit vérifier AllergyIntolerance avant émission.
- Condition — pour les diagnostics qui ne sont pas des allergies (asthme, eczéma).
- Observation — pour les résultats de tests allergologiques (IgE spécifiques, prick-test).
- AdverseEvent — événement indésirable réel (effet secondaire constaté), distinct de l'allergie présumée.
- Patient — sujet via
patient. - HL7 v2 AL1 / IAM — équivalents legacy.