Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cp mdn #24

Merged
merged 15 commits into from
Feb 19, 2025
8 changes: 4 additions & 4 deletions .github/workflows/fhir-workflows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ jobs:
- uses: actions/checkout@v3
with:
path: igSource
- uses: ansforge/IG-workflows@v0.2.0
- uses: ansforge/IG-workflows@v0.4.0
with:
repo_ig: "./igSource"
github_page: "true"
github_page_token: ${{ secrets.GITHUB_TOKEN }}
bake: "true"
nos: "true"
validator_cli: "true"
bake: "false"
nos: "false"
validator_cli: "false"
generate_testscript: "false"
generate_plantuml : "false"
125 changes: 125 additions & 0 deletions input/images-source/bal-erreur.plantuml
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
@startuml
scale 1024*768

box "Emmetteur" #palegreen
actor "PS" as PSE
participant "DPI" as DPIE
participant "PFI" as PFIE
participant "BAL AP" as MSSE
end box

box "Support Editeur" #LightCoral

end box


box "Recepteur" #paleturquoise
participant "BAL AP" as MSSR
participant "PFI" as PFIR
participant "DPI" as DPIR
participant "BAL Perso/Service" as BALP
participant "BAL Gestion Erreur" as BALE
Actor "PS" as PSR
end box




group BAL AP à BAL ERREUR



group Demande d'integration via MSS
PSE->DPIE:1. Selection du CR à envoyer
activate DPIE

DPIE->PFIE:2. Demande d'integration du CR via MSS
activate PFIE

PFIE->DPIE:3.Acceptation de la demande
deactivate DPIE

PFIE->PFIE:4. Constitution du courriel (PDF + IHE_XDM.ZIP)

PFIE->MSSE:5.
activate MSSE
deactivate PFIE

MSSE->BALP:6. SMTP
activate BALP
deactivate MSSR
deactivate MSSE



end





group Accusé de reception MSS

BALP->MSSE:7. SMTP (DSN)
deactivate MSSR
activate MSSE


PFIE->MSSE:8. IMAP (recupération DSN)
activate PFIE
deactivate MSSE

PFIE->PFIE:9. Traitement du DSN


PFIE->DPIE:10. Acusé de reception ZAM
activate DPIE

DPIE->PFIE:11. ACK
deactivate DPIE
deactivate PFIE

end
group Traitement de la demande d'intégration

BALP->MSSR:6.BIS Transfert
activate MSSR
deactivate BALP

PFIR->MSSR:12. Recupération IHE_XDM.ZIP
activate PFIR
activate MSSR

PFIR->PFIR:13. Traitement de l'archive IHE_XDM.ZIP

PFIR->DPIR:14. Demande d'integration
activate DPIR


DPIR->PFIR:15. Retour de la demande d'integration
deactivate DPIR
end

group Gestion du courriel d'erreur


PFIR->PFIR:16. Constitution du courriel

PFIR->MSSR:17. Envoi du courriel
activate MSSR

MSSR->BALE:18. Envoi du courriel
activate BALE
end
end










@enduml
32 changes: 30 additions & 2 deletions input/pagecontent/cas-usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,20 @@ La Figure 3 illustre la gestion des erreurs par l’établissement destinataire

Le diagramme serait identique dans le cas d’une demande de remplacement ou de suppression du compte rendu.

<blockquote class="stu-note">
<p>
Dans le cas où un MDN (Message Disposition Notification) n'a pas été explicitement demandé par le destinataire (via l'entête `Disposition-Notification-To` dans le message d'origine), et que pour pouvoir gérer toutes les erreurs on souhaite utiliser une BAL dédiée, un courriel 'standard' peut être utlisé.
La structure du courriel est précisée <a href="struct-email-standard.html">ici</a>.

<div class="figure" style='text-align: center;'>
{%include bal-erreur.svg%}
<figcaption><b>Figure 3 bis: Réception d’un CR de biologie médicale - Gestion des erreurs vers une BAL dédiée</b></figcaption>
</div>
<br>
<b>Ce cas d'usage est hors périmètre de ce volet.</b>
</p>
</blockquote>

#### Transmission d’un document clinique d’un patient d’un établissement hospitalier vers un autre établissement hospitalier

**Cas d’usage :** Le Dr Jean Dupont exerce dans le service X de l’établissement-A. Il souhaite transférer un de ses patients dans le service Y de l’établissement B. Il demande à la secrétaire médicale du service X d’envoyer le compte rendu d’hospitalisation de son patient à l’équipe de soins du service Y de l’établissement-B.
Expand Down Expand Up @@ -100,7 +114,7 @@ La structure du MDN est précisée [ici](struct-msg-mdn.html).
</div>
<div class="figure" style='text-align: center;'>
<img src="image11.png" alt="Figure 4" title="Figure 4 : Transmission d’un document clinique d’un patient d’un CH vers un autre CH -Cas nominal" style="width:80%;">
<figcaption><b>Figure 4 : Transmission d’un document clinique d’un patient d’un CH vers un autre CH -Cas nominal</b></figcaption>
<figcaption><b>Figure 4 : Transmission d’un document clinique d’un patient d’un CH vers un autre CH - Cas nominal</b></figcaption>
</div>
<br>

Expand All @@ -116,11 +130,25 @@ La figure ci-dessous représente uniquement la partie basse de la figure précé

<div class="figure" style='text-align: center;'>
<img src="image12.png" alt="Figure 5" title="Figure 5 : Transmission d’un document clinique d’un patient d’un CH vers un autre CH -Gestion des erreurs" style="width:80%;">
<figcaption><b>Figure 5 : Transmission d’un document clinique d’un patient d’un CH vers un autre CH -Gestion des erreurs</b></figcaption>
<figcaption><b>Figure 5 : Transmission d’un document clinique d’un patient d’un CH vers un autre CH - Gestion des erreurs</b></figcaption>
</div>
<br>


La Figure 5 illustre la gestion des erreurs par l’établissement destinataire dans le cas d’une demande de transmission d’un compte rendu vers le DPI d’un autre établissement.

Le diagramme serait identique dans le cas d’une demande de remplacement ou de suppression du compte rendu.

<blockquote class="stu-note">
<p>
Dans le cas où un MDN (Message Disposition Notification) n'a pas été explicitement demandé par le destinataire (via l'entête `Disposition-Notification-To` dans le message d'origine), et que pour pouvoir gérer toutes les erreurs on souhaite utiliser une BAL dédiée, un courriel 'standard' peut être utlisé.
La structure du courriel est précisée <a href="struct-email-standard.html">ici</a>.

<div class="figure" style='text-align: center;'>
{%include bal-erreur.svg%}
<figcaption><b>Figure 5 bis: Transmission d’un document clinique d’un patient d’un CH vers un autre CH - Gestion des erreurs vers une BAL dédiée</b></figcaption>
</div>
<br>
<b>Ce cas d'usage est hors périmètre de ce volet.</b>
</p>
</blockquote>
102 changes: 102 additions & 0 deletions input/pagecontent/struct-email-standard.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
### Contexte

Dans le cas où un MDN (Message Disposition Notification) n'a pas été explicitement demandé par le destinataire (via l'entête `Disposition-Notification-To` dans le message d'origine), il n'est pas possible d'envoyer un MDN tel que défini par la [RFC 8098](https://datatracker.ietf.org/doc/html/rfc8098), car il suppose qu'un accusé de réception ou une notification d'état a été requis.

Le MDN ne peut pas être utilisé pour rediriger et traiter l'ensemble des erreurs.
Dans ce cas, pour retourner une notification similaire à celle d’un MDN, il faut utiliser un courriel "standard" avec une structure et un contenu adaptés.

Ce courriel doit
- Être compréhensible par l'humain
- Inclure toutes les informations nécessaires pour expliquer le problème afin de le traiter
- Être structuré conformément à la RFC 2822

### Contenu du courriel

Le courriel standart doit être composé de la façon suivante :

* Objet du message : il doit être précisé
de la façon suivante afin de faciliter la lecture et le traitement de la notification : `[KO Intégration système !][code erreur] XDM/1.0/DDM+<libellé> <NOM> <prénom> <date de naissance>`.
* Corps du message :
* La première partie contient du texte lisible par un être humain. Dans le contexte du présent volet, ce texte doit au moins contenir, en cas d’erreur, le code et le libellé de l’erreur retournés par le CONSOMMATEUR.
Par exemple : « Le message ci-dessous n’a pas pu être intégré automatiquement dans le DPI pour la raison suivante : <libellé de l’erreur> ».
* Inclusion du message d'origine : contient le corps du courriel d’origine.
* Pièces jointes :
* Les pièces jointes envoyées avec le courriel d’origine (IHE_XDM.ZIP et le pdf) doivent être remises en pièces jointes du courriel.
* Le contenu est encodé en Base64 pour respecter le standard MIME.

### Format du courriel

Le courriel doit respecter la [RFC 5322 'Internet Message Format'](https://datatracker.ietf.org/doc/html/rfc5322)


### Exemple de courriel

Exemple d'un courriel standard qui pourrait être envoyé comme notification manuelle. Le contenu est réorganisé pour être compréhensible par un humain, tout en respectant les principes des courriels standards avec des pièces jointes.
Cet exemple illustre le cas d'usage [Transmission d'un document clinique d'un patient d'un établissement hospitalier vers un autre établissement hospitalier](volume1.html#description-du-cas-dusage-en-erreur)


```
Date: Wed, 20 Feb 2024 00:19:00 -0400
From: [email protected]
To: [email protected]
Message-ID: <[email protected]>
Subject: [Erreur d’intégration !][902] XDM/1.0/DDM+ECHOGRAPHIE ABDOMINOPELVIENNE CORSE FIGATELLIX 12/10/1988
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="boundary12345"

--boundary12345
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit

Bonjour,

Le document envoyé n’a pas pu être intégré correctement dans le système.
Voici les détails de l’erreur rencontrée :

- Erreur détectée : Identifiant de patient inconnu
- Code d’erreur : 902


Vous trouverez en pièce jointe :
1. Le message original contenant le document soumis.
2. Les fichiers liés (archive ZIP et PDF associés au message original).

Veuillez vérifier les informations fournies et soumettre à nouveau les documents après correction.
Si le problème persiste, contactez notre service technique.

Cordialement,
L’équipe technique du service Y

--boundary12345
Content-Type: message/rfc822
Content-Disposition: attachment; filename="message_original.eml"

<Insérer ici le contenu du courriel MSSanté à l’origine et ses pièces jointes>

--boundary12345
Content-Type: application/zip; name="IHE_XDM.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="IHE_XDM.zip"

<Ici apparaît le fichier IHE_XDM.zip encodé en base64>

--boundary12345
Content-Type: application/pdf; name="20220531_CR_d_imagerie_medicale_CORSE_FIGATELLIX.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="20220531_CR_d_imagerie_medicale_CORSE_FIGATELLIX.pdf"

<Ici apparaît le fichier 20220531_CR_d_imagerie_medicale_CORSE_FIGATELLIX.pdf encodé en base64>

--boundary12345--
```

### Différences clés avec un MDN
Contrairement à un MDN :

Ce courriel standard est non-automatisé et non structuré pour un traitement machine. L'entête `Disposition` avec le format `processed/Error: ...` est spécifique aux MDN et n'est pas standard dans un courriel classique.

Le code erreur ne peut être véhiculé que :

* Dans l'objet du message
* Dans le corps du message
* ou en pièce jointe, pour conserver un format structuré qui pourrait être traité par un système.
14 changes: 7 additions & 7 deletions input/pagecontent/struct-msg-mdn.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
La RFC 8098 définit le type de contenu
La [RFC 8098](https://datatracker.ietf.org/doc/html/rfc8098) définit le type de contenu
« message/disposition-notification » propre au MDN (Message
Disposition Notification). Ce MDN est utilisé pour notifier
l'émetteur d'un courriel de tout traitement qui survient après la
livraison de ce courriel au niveau du récepteur. Conformément à la RFC
8098, ce MDN doit :
livraison de ce courriel au niveau du récepteur. Conformément à la [RFC
8098](https://datatracker.ietf.org/doc/html/rfc8098), ce MDN doit :

- Être lisible par un humain et par une machine,

Expand All @@ -12,23 +12,23 @@ livraison de ce courriel au niveau du récepteur. Conformément à la RFC
initialement envoyé et à l'adresse du récepteur initial au nom
duquel le MDN a été produit,

- Être structuré conformément à la RFC 2822 et la RFC 8098,
- Être structuré conformément à la [RFC 2822](https://datatracker.ietf.org/doc/html/rfc2822) et la [RFC 8098](https://datatracker.ietf.org/doc/html/rfc8098),

L'envoi du MDN à l'expéditeur du courriel initial est
conditionné par la présence d'un entête Disposition-Notification-To au
niveau du courriel expédié. D'autres informations peuvent également être
fournies en utilisant les entêtes Original-Recipient et
Disposition-Notification-Options.

La RFC 8098 précise qu'un MDN ne devrait pas être renvoyé
La R[FC 8098](https://datatracker.ietf.org/doc/html/rfc8098) précise qu'un MDN ne devrait pas être renvoyé
automatiquement par le récepteur du courriel dans le cas où l'entête
Disposition-Notification-To diffère de l'adresse précisée dans l'entête
returm-Path du courriel envoyé, ceci afin d'éviter une transmission de
messages en boucle. Dans ce cas l'envoi du MDN nécessite une
confirmation de l'utilisateur.

Dans le cas d'un MDN en erreur, l'objet du MDN doit être précisé
de la façon suivante : `[KO Intégration système ! ] XDM/1.0/DDM+<libellé> <NOM> <prénom> <date de naissance>`.
de la façon suivante : `[KO Intégration système !][code erreur] XDM/1.0/DDM+<libellé> <NOM> <prénom> <date de naissance>`.

Dans le cas contraire, l'objet du MDN est précisé par `XDM/1.0/DDM+<libellé> <NOM> <prénom> <date de naissance>`.

Expand Down Expand Up @@ -103,7 +103,7 @@ L'exemple suivant décrit le MDN (accusé de lecture négatif) généré dans le
Date: Wed, 20 Feb 2024 00:19:00 (EDT) -0400
From: [email protected]
Message-Id: <199509200019.12345>
Subject: [Erreur d’intégration !] XDM/1.0/DDM+ECHOGRAPHIE ABDOMINOPELVIENNE CORSE FIGATELLIX 12/10/1988
Subject: [KO Intégration système !][902] XDM/1.0/DDM+ECHOGRAPHIE ABDOMINOPELVIENNE CORSE FIGATELLIX 12/10/1988
To: [email protected]
MIME-Version: 1.0
Content-Type: multipart/report; report-type=disposition-notification; boundary="RAA14128.773615765"
Expand Down
3 changes: 3 additions & 0 deletions sushi-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ pages:
title: "Exemples de messages"
struct-msg-mdn.md:
title: "Structure du MDN (MSSanté)"
struct-email-standard.md:
title: "Structure d'un message de notification format courriel standard"
glossaire.md:
title: "Glossaire"
doc-ref.md:
Expand Down Expand Up @@ -69,6 +71,7 @@ menu:
"Codes erreurs de traitement du message HL7 MDM": error-codes.html
"Exemples de messages": exemples.html
"Structure du MDN (MSS)": struct-msg-mdn.html
"Structure d'un message de notification format courriel standard": struct-email-standard.html
"Glossaire": glossaire.html
"Documents de référence": doc-ref.html
Test: testplan.html
Expand Down
Loading