8000 Mapping CDA/FHIR by Haoura · Pull Request #26 · ansforge/IG-document-core · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Mapping CDA/FHIR #26

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

Merged
merged 26 commits into from
May 23, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
d05e661
Mapping CDA-FHIR
Haoura May 14, 2025
c4dcddd
Mapping CDA-FHIR
Haoura May 14, 2025
361fe9e
Update mappingCDA-FHIR-entete.md
Haoura May 20, 2025
db0fd4c
Update input/fsh/MappingCDA_FHIR_Entete/ModeleMetierCDAFHIR.fsh
Haoura May 21, 2025
fccd7dd
Update input/fsh/MappingCDA_FHIR_Entete/ModeleMetierCDAFHIR.fsh
Haoura May 21, 2025
d55e22c
Update input/fsh/MappingCDA_FHIR_Entete/ModeleMetierCDAFHIR.fsh
Haoura May 21, 2025
7ad846e
Update input/fsh/MappingCDA_FHIR_Entete/ModeleMetierCDAFHIR.fsh
Haoura May 21, 2025
9a3ce13
Update input/fsh/MappingCDA_FHIR_Entete/ModeleMetierCDAFHIR.fsh
Haoura May 21, 2025
4032b2b
Update input/fsh/MappingCDA_FHIR_Entete/ModeleMetierCDAFHIR.fsh
Haoura May 21, 2025
db9663f
Update input/fsh/MappingCDA_FHIR_Entete/ModeleMetierCDAFHIR.fsh
Haoura May 21, 2025
ead712b
Update input/fsh/MappingCDA_FHIR_Entete/ModeleMetierCDAFHIR.fsh
Haoura May 21, 2025
d0dca77
Update input/fsh/MappingCDA_FHIR_Entete/ModeleMetierCDAFHIR.fsh
Haoura May 21, 2025
8e9a956
Update input/fsh/MappingCDA_FHIR_Entete/ModeleMetierCDAFHIR.fsh
Haoura May 21, 2025
7b9a416
Update input/fsh/MappingCDA_FHIR_Entete/AssociationPrescriptionCDAFHI…
Haoura May 21, 2025
a609b39
Update input/fsh/MappingCDA_FHIR_Entete/AssociationPrescriptionCDAFHI…
Haoura May 21, 2025
c4faa0f
Update input/fsh/MappingCDA_FHIR_Entete/AssociationPrescriptionCDAFHI…
Haoura May 21, 2025
f476605
Update input/fsh/MappingCDA_FHIR_Entete/AssociationPrescriptionCDAFHI…
Haoura May 21, 2025
8000 ab80ed5
Update input/fsh/MappingCDA_FHIR_Entete/AssociationPrescriptionCDAFHI…
Haoura May 21, 2025
c032717
Update input/fsh/MappingCDA_FHIR_Entete/AssociationPrescriptionCDAFHI…
Haoura May 21, 2025
ea0c6b9
Update input/fsh/MappingCDA_FHIR_Entete/AssociationPrescriptionCDAFHI…
Haoura May 21, 2025
db6ef65
Update input/fsh/MappingCDA_FHIR_Entete/AssociationPriseEncharge.fsh
Haoura May 21, 2025
0cf49f0
Update input/fsh/MappingCDA_FHIR_Entete/AssociationPrescriptionCDAFHI…
Haoura May 21, 2025
2c32359
Update suite aux reviews
Haoura May 21, 2025
ed81009
Merge remote-tracking branch 'origin/main' into htr-Mapping-CDA-FHIR
Haoura May 21, 2025
ec271c5
Update suite aux reviews
Haoura May 23, 2025
48c659a
Update sushi-config.yaml
Haoura May 23, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions input/fsh/MappingCDA_FHIR_Entete/AuteurCDAFHIR.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
Instance: mappingAuteurCDAFHIR
InstanceOf: ConceptMap
Usage: #definition
Title: "Mapping Métier/CDA/FHIR : \"Auteur\""
Description: """Ce ConceptMap présente deux groupes de mapping :
- Mapping 1 : entre le modèle métier \"auteur\" et l'élément CDA \"author\"
- Mapping 2 : entre l'élément CDA \"author\" et l'élément FHIR \"Composition.author\" """

* name = "Mapping Métier/CDA/FHIR : \"Auteur\""
* status = #draft
* experimental = false

// Groupe Mapping 1 : modèle métier to CDA
* group[+].source = "https://interop.esante.gouv.fr/ig/document/core/StructureDefinition/Auteur"
* group[=].target = "https://interop.esante.gouv.fr/ig/document/core/StructureDefinition/fr-core-author"
* group[=].element[+].code = #Auteur
* group[=].element[=].target.code = #author
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #Auteur.roleFonctionnel
* group[=].element[=].target.code = #author.functionCode
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #Auteur.horodatageParticipation
* group[=].element[=].target.code = #author.time
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #Auteur.PersonneStructure
* group[=].element[=].target.code = #author.assignedAuthor
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[=].target.comment = "L'élément PersonneStructure est de type PersonneStructure."
* group[=].element[+].code = #Auteur.SystemeStructureAuteur
* group[=].element[=].target.code = #author.assignedAuthor
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[=].target.comment = "L'élément SystemeStructureAuteur est de type Systeme"

// Groupe Mapping 2 : CDA to FHIR
* group[+].source = "https://interop.esante.gouv.fr/ig/document/core/StructureDefinition/fr-core-author"
* group[=].target = "https://interop.esante.gouv.fr/ig/document/core/StructureDefinition/fr-composition-document"
* group[=].element[+].code = #author
* group[=].element[=].target.code = #Composition.author
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #author.time
* group[=].element[=].target.code = #Composition.author.extension:time
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #author.functionCode
* group[=].element[=].target.code = #Composition.author.PractitionerRole.code
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[=].target.comment = "Auteur du document est un professionnel et author.ofType(PractitionerRole)"
// Auteur : Professionnel ou Patient
* group[=].element[+].code = #author.assignedAuthor
* group[=].element[=].target.code = #Composition.author.Practitioner
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[=].target.comment = "Composition.author.resolve().ofType(Practitioner)"
* group[=].element[+].code = #author.assignedAuthor
* group[=].element[=].target.code = #Composition.author.Patient
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[=].target.comment = "Composition.author.resolve().ofType(Patient)"
// Auteur : Systeme
* group[=].element[+].code = #author.assignedAuthor
* group[=].element[=].target.code = #Composition.author.Device
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[=].target.comment = "Composition.author.resolve().ofType(Device)"
44 changes: 44 additions & 0 deletions input/fsh/MappingCDA_FHIR_Entete/ConsentementCDAFHIR.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
Instance: mappingConsentementCDAFHIR
InstanceOf: ConceptMap
Usage: #definition
Title: "Mapping Métier/CDA/FHIR : \"Consentement\""
Description: """Ce ConceptMap présente deux groupes de mapping :
- Mapping 1 : entre le modèle métier \"ConsentementAssocie\" et l'élément CDA \"authorization\"
- Mapping 2 : entre l'élément CDA \"authorization\" et l'extension FHIR \"ConsentExtension\" """

* name = "Mapping Métier/CDA/FHIR : \"Consentement\""
* status = #draft
* experimental = false

// Groupe Mapping 1 : modèle métier to CDA
* group[+].source = "https://interop.esante.gouv.fr/ig/document/core/StructureDefinition/Consentement"
* group[=].target = "https://interop.esante.gouv.fr/ig/document/core/StructureDefinition/fr-core-authorization"
* group[=].element[+].code = #Consentement
* group[=].element[=].target.code = #authorization
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #Consentement.identifiantConsentement
* group[=].element[=].target.code = #authorization.consent.id
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #Consentement.typeConsentement
* group[=].element[=].target.code = #authorization.consent.code
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #Consentement.statutConsentement
* group[=].element[=].target.code = #authorization.consent.statusCode="completed"
* group[=].element[=].target.equivalence = #equivalent

// Groupe Mapping 2 : CDA to FHIR
* group[+].source = "https://interop.esante.gouv.fr/ig/document/core/StructureDefinition/fr-core-authorization"
* group[=].target = "http://hl7.org/fhir/uv/fhir-clinical-document/StructureDefinition/consent-extension"
* group[=].element[+].code = #authorization
* group[=].element[=].target.code = #extension:ConsentExtension.ValueReference.Consent
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[=].target.comment = "ValueReference.resolve().ofType(Consent)"
* group[=].element[+].code = #authorization.consent.id
* group[=].element[=].target.code = #extension:ConsentExtension.ValueReference.Consent.identifier
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #authorization.consent.code
* group[=].element[=].target.code = #extension:ConsentExtension.ValueReference.Consent.category
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #authorization.consent.statusCode="completed"
* group[=].element[=].target.code = #extension:ConsentExtension.ValueReference.Consent.status:active
* group[=].element[=].target.equivalence = #equivalent
71 changes: 71 additions & 0 deletions input/fsh/MappingCDA_FHIR_Entete/DestinataireCDAFHIR.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
Instance: mappingDestinatairePrevuCDAFHIR
InstanceOf: ConceptMap
Usage: #definition
Title: "Mapping Métier/CDA/FHIR : \"Destinataire prévu\""
Description: """Ce ConceptMap présente deux groupes de mapping :
- Mapping 1 : entre le modèle métier \"destinataire\" et l'élément CDA \"informationRecipient\"
- Mapping 2 : entre l'élément CDA \"informationRecipient\" et l'extension FHIR \"InformationRecipientExtension\" """

* name = "Mapping Métier/CDA/FHIR : \"Destinataire prévu\""
* status = #draft
* experimental = false

// Groupe Mapping 1 : modèle métier to CDA
* group[+].source = "https://interop.esante.gouv.fr/ig/document/core/StructureDefinition/DestinatairePrevu"
* group[=].target = "https://interop.esante.gouv.fr/ig/document/core/StructureDefinition/fr-core-information-recipient"
* group[=].element[+].code = #DestinatairePrevu
* group[=].element[=].target.code = #informationRecipient
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #DestinatairePrevu.destinataire
* group[=].element[=].target.code = #informationRecipient.intendedRecipient
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[=].target.comment = "L'élément destinataire est de type PersonneStructure."

// Groupe Mapping 2 : CDA to FHIR
* group[+].source = "https://interop.esante.gouv.fr/ig/document/core/StructureDefinition/fr-core-information-recipient"
* group[=].target = "http://hl7.org/fhir/uv/fhir-clinical-document/StructureDefinition/information-recipient-extension"
* group[=].element[+].code = #informationRecipient
* group[=].element[=].target.code = #extension:InformationRecipientExtension
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #informationRecipient.intendedRecipient
* group[=].element[=].target.code = #extension:InformationRecipientExtension.extension:party.PractitionerRole
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #informationRecipient.intendedRecipient.id
* group[=].element[=].target.code = #extension:party.PractitionerRole.Practitioner.identifier
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #informationRecipient.intendedRecipient.addr
* group[=].element[=].target.code = #extension:party.PractitionerRole.Practitioner.address
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #informationRecipient.intendedRecipient.telecom
* group[=].element[=].target.code = #extension:party.PractitionerRole.Practitioner.telecom
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #informationRecipient.intendedRecipient.informationRecipient.name
* group[=].element[=].target.code = #extension:party.PractitionerRole.Practitioner.name
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #informationRecipient.intendedRecipient.informationRecipient.name.family
* group[=].element[=].target.code = #extension:party.PractitionerRole.Practitioner.name.family
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #informationRecipient.intendedRecipient.informationRecipient.name.given
* group[=].element[=].target.code = #extension:party.PractitionerRole.Practitioner.name.given
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #informationRecipient.intendedRecipient.informationRecipient.name.prefix
* group[=].element[=].target.code = #extension:party.PractitionerRole.Practitioner.name.prefix
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #informationRecipient.intendedRecipient.informationRecipient.name.suffix
* group[=].element[=].target.code = #extension:party.PractitionerRole.Practitioner.name.suffix
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #informationRecipient.intendedRecipient.informationRecipient.receivedOrganization
* group[=].element[=].target.code = #extension:party.PractitionerRole.Organization
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #informationRecipient.intendedRecipient.informationRecipient.receivedOrganization.id
* group[=].element[=].target.code = #extension:party.PractitionerRole.Organization.identifier
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #informationRecipient.intendedRecipient.informationRecipient.receivedOrganization.name
* group[=].element[=].target.code = #extension:party.PractitionerRole.Organization.name
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #informationRecipient.intendedRecipient.informationRecipient.receivedOrganization.telecom
* group[=].element[=].target.code = #extension:party.PractitionerRole.Organization.telecom
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #informationRecipient.intendedRecipient.informationRecipient.receivedOrganization.addr
* group[=].element[=].target.code = #extension:party.PractitionerRole.Organization.address
* group[=].element[=].target.equivalence = #equivalent
37 changes: 37 additions & 0 deletions input/fsh/MappingCDA_FHIR_Entete/DocumentDeReferenceCDAFHIR.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
Instance: mappingDocumentDeReferenceCDAFHIR
InstanceOf: ConceptMap
Usage: #definition
Title: "Mapping Métier/CDA/FHIR : \"DocumentDeReference\""
Description: """Ce ConceptMap présente deux groupes de mapping :
- Mapping 1 : entre le modèle métier \"documentDeReference\" et l'élément CDA \"relatedDocument\"
- Mapping 2 : entre l'élément CDA \"relatedDocument\" et l'élément FHIR \"Composition.relatesTo\" """

* name = "Mapping Métier/CDA/FHIR : \"DocumentDeReference\""
* status = #draft
* experimental = false

// Groupe Mapping 1 : modèle métier to CDA
* group[+].source = "https://interop.esante.gouv.fr/ig/document/core/StructureDefinition/DocumentDeReference"
* group[=].target = "https://interop.esante.gouv.fr/ig/document/core/StructureDefinition/fr-core-related-document"
* group[=].element[+].code = #DocumentDeReference
* group[=].element[=].target.code = #relatedDocument
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #DocumentDeReference.typeReference
* group[=].element[=].target.code = #relatedDocument@typeCode
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #DocumentDeReference.identifiantUniqueDocument
* group[=].element[=].target.code = #relatedDocument.parentDocument.id
* group[=].element[=].target.equivalence = #equivalent

// Groupe Mapping 2 : CDA to FHIR
* group[+].source = "https://interop.esante.gouv.fr/ig/document/core/StructureDefinition/fr-core-related-document"
* group[=].target = "https://interop.esante.gouv.fr/ig/document/core/StructureDefinition/fr-composition-document"
* group[=].element[+].code = #relatedDocument
* group[=].element[=].target.code = #Composition.relatesTo
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #relatedDocument@typeCode
* group[=].element[=].target.code = #Composition.relatesTo.code
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #relatedDocument.parentDocument.id
* group[=].element[=].target.code = #Composition.relatesTo.targetIdentifier
* group[=].element[=].target.equivalence = #equivalent
69 changes: 69 additions & 0 deletions input/fsh/MappingCDA_FHIR_Entete/EvenementCDAFHIR.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
Instance: mappingEvenementCDAFHIR
InstanceOf: ConceptMap
Usage: #definition
Title: "Mapping Métier/CDA/FHIR : \"Evènement documenté\""
Description: """Ce ConceptMap présente deux groupes de mapping :
- Mapping 1 :entre le modèle métier \"evenement\" et l'élément CDA \"documentationOf\"
- Mapping 2 : entre l'élément CDA \"documentationOf\" et l'élément FHIR \"Composition.event\" """

* name = "Mapping Métier/CDA/FHIR : \"Evènement documenté\""
* status = #draft
* experimental = false

// Groupe Mapping 1 : modèle métier to CDA
* group[+].source = "https://interop.esante.gouv.fr/ig/document/core/StructureDefinition/Evenement"
* group[=].target = "https://interop.esante.gouv.fr/ig/document/core/StructureDefinition/fr-core-documentation-of"
* group[=].element[+].code = #Evenement
* group[=].element[=].target.code = #documentationOf
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #Evenement.identifiantEvenement
* group[=].element[=].target.code = #documentationOf.serviceEvent.id
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #Evenement.codeEvenement
* group[=].element[=].target.code = #documentationOf.serviceEvent.code
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #Evenement.dateHeureEvenement
* group[=].element[=].target.code = #documentationOf.serviceEvent.effectiveTime
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #Evenement.executantEvenement
* group[=].element[=].target.code = #documentationOf.serviceEvent.performer@typeCode="PRF"
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #Evenement.executantEvenement.roleFonctionnel
* group[=].element[=].target.code = #documentationOf.serviceEvent.performer.functionCode
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #Evenement.executantEvenement.dateHeureParticipation
* group[=].element[=].target.code = #documentationOf.serviceEvent.performer.time
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #Evenement.executantEvenement.executant
* group[=].element[=].target.code = #documentationOf.serviceEvent.performer.assignedEntity
* group[=].element[=].target.equivalence = #equivalent

// Groupe Mapping 2 : CDA to FHIR
* group[+].source = "https://interop.esante.gouv.fr/ig/document/core/StructureDefinition/fr-core-documentation-of"
* group[=].target = "https://interop.esante.gouv.fr/ig/document/core/StructureDefinition/fr-composition-document"
* group[=].element[+].code = #documentationOf
* group[=].element[=].target.code = #Composition.event
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #documentationOf.serviceEvent.id
* group[=].element[=].target.equivalence = #unmatched
* group[=].element[=].target.comment = "Cette donnée est fournie dans un autre élément : Composition.relatesTo"
* group[=].element[+].code = #documentationOf.serviceEvent.code
* group[=].element[=].target.code = #Composition.event.code
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #documentationOf.serviceEvent.effectiveTime
* group[=].element[=].target.code = #Composition.event.period
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #documentationOf.serviceEvent.performer@typeCode="PRF"
* group[=].element[=].target.code = #Composition.event.extension:perfomer.PractitionerRole
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[=].target.comment = "Composition.event.extension:perfomer.ValueReference.resolve().ofType(FrPractitionerRoleDocument)"
* group[=].element[+].code = #documentationOf.serviceEvent.performer.functionCode
* group[=].element[=].target.code = #Composition.event.extension:perfomer.PractitionerRole.code
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[+].code = #documentationOf.serviceEvent.performer.time
* group[=].element[=].target.equivalence = #unmatched
* group[=].element[=].target.comment = "Mapped in Composition.event.period "
* group[=].element[+].code = #documentationOf.serviceEvent.performer.assignedEntity
* group[=].element[=].target.code = #Composition.event.extension:perfomer.PractitionerRole.Practitioner
* group[=].element[=].target.equivalence = #equivalent
* group[=].element[=].target.comment = "Composition.event.extension:perfomer.ValueReference.resolve().ofType(FrPractitionerRoleDocument).Practitioner.resolve()"
Loading
0