Skip to content

Commit c72d0b1

Browse files
committed
Merge branch 'main' of https://github.com/ansforge/interop-IG-document-core into ML-Entrees
2 parents 52c5182 + 1ac1ab6 commit c72d0b1

5 files changed

Lines changed: 208 additions & 3 deletions

File tree

input/fsh/RessourcesFHIRCorps/aliases.fsh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// Extensions
2+
Alias: $data-absent-reason = http://hl7.org/fhir/StructureDefinition/data-absent-reason
23
Alias: $ihe-ext-medication-productname = https://profiles.ihe.net/PHARM/MPD/StructureDefinition/ihe-ext-medication-productname
34
Alias: $ihe-ext-medication-classification = https://profiles.ihe.net/PHARM/MPD/StructureDefinition/ihe-ext-medication-classification
45
Alias: $ihe-ext-medication-characteristic = https://profiles.ihe.net/PHARM/MPD/StructureDefinition/ihe-ext-medication-characteristic
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
Instance: example-allergy-intolerance-data-absent-reason
2+
InstanceOf: FRAllergyIntoleranceDocument
3+
Title: "Example - AllergyIntolerance avec Data Absent Reason"
4+
Description: """Exemple illustrant l'usage de l'extension `data-absent-reason` sur les éléments
5+
obligatoires de la ressource AllergyIntolerance dont la valeur est inconnue ou
6+
temporairement indisponible.
7+
8+
Cas d'usage illustrés :
9+
- `code` : l'agent allergique est inconnu → code `unknown`
10+
- `reaction.manifestation` : la manifestation clinique est inconnue → code `unknown`"""
11+
Usage: #example
12+
13+
// Identifiant de l'allergie ou de l'intolérance
14+
* identifier.value = "urn:uuid:7f0e9c1a-3b2d-4e5f-8a6b-1c2d3e4f5a6b"
15+
* identifier.system = "urn:ietf:rfc:3986"
16+
17+
// Statut clinique et de vérification
18+
* clinicalStatus = http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical#active "Active"
19+
* verificationStatus = http://terminology.hl7.org/CodeSystem/allergyintolerance-verification#unconfirmed "Unconfirmed"
20+
21+
// Agent allergique (1..1)
22+
// L'agent allergique est inconnu → extension data-absent-reason avec code "unknown"
23+
* code.text = "Agent allergique inconnu"
24+
* code.extension.url = "http://hl7.org/fhir/StructureDefinition/data-absent-reason"
25+
* code.extension.valueCode = #unknown
26+
27+
// Patient
28+
* patient.reference = "Patient/exemple-patient"
29+
* patient.display = "Exemple Patient"
30+
31+
// Date de début d'identification de l'allergie ou de l'intolérance
32+
* onsetPeriod.start = "2021-12-04"
33+
34+
// Réaction (reaction.manifestation obligatoire 1..*)
35+
// La manifestation clinique est inconnue → extension data-absent-reason avec code "unknown"
36+
* reaction[+].manifestation[+].text = "Manifestation clinique inconnue"
37+
* reaction[=].manifestation[=].extension.url = "http://hl7.org/fhir/StructureDefinition/data-absent-reason"
38+
* reaction[=].manifestation[=].extension.valueCode = #unknown
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
Instance: example-procedure-data-absent-reason
2+
InstanceOf: FRProcedureDocument
3+
Title: "Example - Procedure avec Data Absent Reason"
4+
Description: """Exemple illustrant l'usage de l'extension `data-absent-reason` sur les éléments
5+
obligatoires de la ressource Procedure dont la valeur est inconnue ou temporairement indisponible.
6+
7+
Cas d'usage illustrés :
8+
- `code` : l'acte est inconnu → extension `data-absent-reason` avec code `unknown`
9+
(liaison extensible → l'extension peut se substituer au codage)
10+
- `performedDateTime` : la date de l'acte est temporairement indisponible → extension `data-absent-reason` avec code `temp-unknown`
11+
- `status` : le statut est inconnu → code d'exception `unknown` du ValueSet `event-status`
12+
(liaison required → on utilise directement le code d'exception du ValueSet, pas l'extension)"""
13+
Usage: #example
14+
15+
// Identification
16+
* identifier.value = "urn:uuid:a1b2c3d4-e5f6-7890-abcd-ef1234567890"
17+
* identifier.system = "urn:ietf:rfc:3986"
18+
19+
// Statut (liaison required)
20+
// Le statut est inconnu → code d'exception "unknown" du ValueSet event-status
21+
// VS required interdit l'usage de data-absent-reason ; on utilise le code d'exception natif sauf en cas d'indisponibilité dans le VS.
22+
* status = #unknown
23+
24+
// Patient
25+
* subject.reference = "Patient/exemple-patient"
26+
* subject.display = "Exemple Patient"
27+
28+
// Code de l'acte (liaison extensible)
29+
// L'acte réalisé est inconnu → extension data-absent-reason avec code "unknown"
30+
// La liaison extensible autorise l'usage de data-absent-reason en l'absence de code applicable.
31+
* code.text = "Acte réalisé inconnu : utilisation de l'extension data-absent-reason avec code 'unknown'"
32+
* code.extension.url = "http://hl7.org/fhir/StructureDefinition/data-absent-reason"
33+
* code.extension.valueCode = #unknown
34+
35+
// Date de l'acte (performedDateTime)
36+
// La date est temporairement indisponible → extension data-absent-reason avec code "temp-unknown"
37+
* performedDateTime.extension.url = "http://hl7.org/fhir/StructureDefinition/data-absent-reason"
38+
* performedDateTime.extension.valueCode = #temp-unknown

input/fsh/RessourcesFHIRCorps/profils/FRAllergyIntoleranceDocument.fsh

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ Description: "FRAllergyIntoleranceDocument est un profil utilisé pourdécrire u
1212
* type MS
1313
* type ^short = "Type d'allergie ou d'intolérance"
1414
* type from FRValueSetAllergyInoleranceTypeDocument (required)
15-
* type MS
16-
* type ^short = "Type d'allergie ou d'intolérance"
17-
* type from FRValueSetAllergyInoleranceTypeDocument (required)
1815
* code 1..1 MS
1916
* code ^short = "agent allergique"
2017
* code from FRValueSetAllergyCodeDocument (extensible)

input/pagecontent/ressourcesFHIR-struc-gen.md

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,137 @@ La norme FHIR permet d’indiquer de façon optionnelle le rattachement d'une se
152152
Chaque entrée d'un document peut avoir un **subject**. Si l'entrée ne contient pas de subject, l’entrée concerne la personne indiquée dans l'élément **Composition.section.focus** de la section. Si la section ne contient pas d'élément **Composition.section.focus**, la section concerne la personne indiquée dans l'élément **subject** du document.
153153
C’est le principe de propagation du contexte et qui part du document vers les sections, sous-sections, entrées et sous-entrées emboitées.
154154

155+
#### Gestion des sections vides (pas d'information) :
156+
157+
En FHIR, l'élément **section.emptyReason** permet d'indiquer la raison pour laquelle une section est vide, c'est-à-dire qu'elle ne contient aucune entrée structurée. Son utilisation est conditionnée par le caractère obligatoire de la section dans le modèle de document.
158+
159+
##### Sections obligatoires
160+
161+
Pour les sections obligatoires (ex : Allergies et intolérances, Problèmes, Traitements), lorsqu'aucune entrée structurée n'est fournie, l'élément **section.emptyReason** **DOIT** être renseigné avec une valeur issue du JDV [list-empty-reason](http://hl7.org/fhir/ValueSet/list-empty-reason).
162+
163+
| Code | Libellé | Définition |
164+
|------|---------|------------|
165+
| `nilknown` | Pas d'élément connu | Constatation clinique d'un professionnel de santé concluant, après investigation, à l'absence d'éléments connus pour cette donnée. **Cette valeur ne peut pas être fournie par défaut par un SIS en l'absence d'informations.** <br><br>Exemples :<br>- *Allergies* : le patient ou son représentant a déclaré n'avoir connaissance d'aucune allergie.<br>- *Médicaments* : le patient déclare ne prendre aucun médicament.<br>- *Diagnostics / problèmes* : le patient déclare qu'aucun événement connu ne doit être enregistré. |
166+
| `notasked` | Non demandé | Aucune investigation n'a été menée pour déterminer s'il existe des éléments pour cette liste. |
167+
| `withheld` | Non divulgué | Aucune information n'est fournie pour des raisons de confidentialité. Cela ne signifie pas nécessairement que le contenu est sensible ; il peut s'agir d'une décision personnelle du patient. |
168+
| `unavailable` | Indisponible | L'information est indisponible au moment de la production du document (ex : patient inconscient). |
169+
| `notstarted` | Non démarré | Les actions permettant d'obtenir cette information n'ont pas encore démarré. |
170+
| `closed` | Fermé | Cette liste est désormais fermée ou n'est plus pertinente ni utile. |
171+
172+
##### Sections facultatives
173+
174+
Lorsqu'aucune donnée n'est disponible pour une section facultative, **le producteur ne doit pas créer la section**. L'élément **section.emptyReason** ne s'applique pas aux sections facultatives absentes.
175+
176+
> **En résumé** : *section.emptyReason* s'applique uniquement aux **sections obligatoires vides**. Pour les sections facultatives, l'absence de données se traduit simplement par l'absence de la section dans le document.
177+
178+
179+
#### Gestion de l'absence de données au niveau des éléments (données manquantes)
180+
181+
En FHIR, l'absence d'une valeur dans un élément doit être gérée de manière explicite lorsque cela est **requis**. Les règles diffèrent selon la cardinalité de l'élément et selon que la donnée est codée ou non.
182+
183+
##### Données optionnelles
184+
185+
*(cardinalité `0..1` ou `0..*`)*
186+
187+
Si l'information n'est pas disponible, quelle que soit la raison, **ne pas créer l'élément**. L'absence de l'élément dans la ressource est suffisante pour exprimer l'indisponibilité.
188+
189+
##### Données obligatoires
190+
191+
*(cardinalité `1..1` ou `1..*`)*
192+
193+
Si l'information n'est pas disponible, **le motif de l'absence DOIT être précisé** via les mécanismes décrits ci-dessous.
194+
195+
###### Données obligatoires non codées
196+
197+
Utiliser l'extension [**Data Absent Reason**](http://hl7.org/fhir/StructureDefinition/data-absent-reason) avec :
198+
199+
* `"url"` : `"http://hl7.org/fhir/StructureDefinition/data-absent-reason"`
200+
* `"valueCode"` : valeur issue du ValueSet [data-absent-reason](https://hl7.org/fhir/R4/valueset-data-absent-reason.html)
201+
202+
Le ValueSet [data-absent-reason](https://hl7.org/fhir/R4/valueset-data-absent-reason.html) contient les valeurs suivantes :
203+
204+
| Lvl | Code | Libellé | Définition |
205+
|-----|------|---------|------------|
206+
| 0 | `unknown` | Inconnu | Valeur inconnue. |
207+
| 1 | `asked-unknown` | Demandé - inconnu | Valeur demandée mais non connue. |
208+
| 1 | `temp-unknown` | Temporairement indisponible | Temporairement indisponible (mais pourrait ultérieurement être connue). |
209+
| 1 | `not-asked` | Non demandé | Valeur non demandée. |
210+
| 1 | `asked-declined` | Demandé - refus de réponse | Valeur demandée / refus de réponse. |
211+
| 0 | `masked` | Masqué | Valeur non disponible pour des raisons de sécurité, de confidentialité ou autres. |
212+
| 0 | `not-applicable` | Non applicable | Pas de valeur appropriée pour cet élément (par exemple, la date des dernières règles pour un homme). |
213+
| 0 | `unsupported` | Non supporté | Le système source ne gère pas cet élément. |
214+
| 0 | `as-text` | Voir narratif | Valeur fournie dans la partie narrative. |
215+
| 0 | `error` | Erreur | Valeur indisponible due à une erreur système ou de processus. |
216+
| 1 | `not-a-number` | Non numérique | La valeur numérique est indéfinie ou non représentable en raison d'une erreur de traitement des nombres à virgule flottante. |
217+
| 1 | `negative-infinity` | Borne inférieure infinie | La valeur numérique est excessivement basse et non représentable. |
218+
| 1 | `positive-infinity` | Borne supérieure infinie | La valeur numérique est excessivement élevée et non représentable. |
219+
| 0 | `not-performed` | Non effectué | La valeur n'est pas disponible car la procédure d'observation n'a pas été effectuée. |
220+
| 0 | `not-permitted` | Non autorisé | Cette valeur n'est pas autorisée dans ce contexte (par exemple, en raison des profils ou des types de données de base). |
221+
222+
**Exemple** : dans une ressource `Procedure`, lorsque la date d'exécution (`performed[x]`) est inconnue :
223+
224+
```json
225+
{
226+
"resourceType": "Procedure",
227+
...
228+
"_performedDateTime": {
229+
"extension": [
230+
{
231+
"url": "http://hl7.org/fhir/StructureDefinition/data-absent-reason",
232+
"valueCode": "unknown"
233+
}
234+
]
235+
},
236+
...
237+
}
238+
```
239+
240+
###### Données obligatoires codées
241+
242+
1. **Données codées à partir d'un codeSystem/valueSet non obligatoire** (`example`, `preferred` ou `extensible`)
243+
244+
Si l'information n'est pas connue et qu'il existe dans la terminologie ou le ValueSet associé **un code d'exception spécifique**, utiliser ce code en priorité.
245+
246+
> Exemple : code SNOMED CT `1287211007`*"No information available"*.
247+
248+
Dans les autres cas, utiliser l'extension [**Data Absent Reason**](http://hl7.org/fhir/StructureDefinition/data-absent-reason) avec la syntaxe suivante :
249+
250+
```json
251+
{
252+
"resourceType": "Observation",
253+
...
254+
"code": {
255+
"coding": [
256+
{
257+
"system": "http://terminology.hl7.org/CodeSystem/data-absent-reason",
258+
"code": "masked"
259+
}
260+
]
261+
},
262+
...
263+
}
264+
```
265+
266+
2. **Données codées à partir d'un codeSystem/valueSet obligatoire** (`required`)
267+
268+
> **Règle** : lorsqu'une donnée est absente, **utiliser le code d'exception du ValueSet ou de la terminologie associée**. C'est la règle de référence pour une liaison `required`.
269+
270+
En pratique, de nombreux ValueSets ou terminologies ne prévoient pas de code d'exception. Dans ce cas, faute de code applicable, **utiliser l'extension [Data Absent Reason](http://hl7.org/fhir/StructureDefinition/data-absent-reason)** comme mécanisme de repli.
271+
272+
| Situation | Traitement |
273+
|---|---|
274+
| Le VS/terminologie contient un code d'exception (ex : `unknown` dans `event-status`) | Utiliser ce code d'exception |
275+
| Le VS/terminologie ne contient **aucun** code d'exception | Utiliser l'extension `data-absent-reason` |
276+
277+
278+
> **Exemples d'instances : Allergies et Procédures** :
279+
>
280+
> - L'instance [example-allergy-intolerance-data-absent-reason](AllergyIntolerance-example-allergy-intolerance-data-absent-reason.html) illustre l'usage de l'extension `data-absent-reason` sur les éléments obligatoires du profil [FRAllergyIntoleranceDocument](StructureDefinition-fr-allergie-intolerance-document.html) lorsque la valeur est inconnue ou temporairement indisponible.
281+
> - L'instance [example-procedure-data-absent-reason](Procedure-example-procedure-data-absent-reason.html) illustre les deux cas de figure sur le profil [FRProcedureDocument](StructureDefinition-fr-procedure-document.html) :
282+
> - **`extension data-absent-reason`** pour les données codées à partir d'un codeSystem/valueSet non obligatoire (`example`, `preferred` ou `extensible`) : éléments `code`, `performedDateTime`
283+
> - **`code d'exception natif`** du ValueSet `event-status`(`unknown`) pour les données codées à partir d'un codeSystem/valueSet obligatoire (`required`) : élément `status`
284+
285+
155286
### Conformité des documents FHIR
156287

157288
Les documents au format FHIR définis dans le CI-SIS doivent être conformes :

0 commit comments

Comments
 (0)