Data Management with FHIR
0.1.0 - ci-build
Data Management with FHIR - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
| Draft as of 2025-10-23 |
<StructureMap xmlns="http://hl7.org/fhir">
<id value="CorePhysical2FHIR"/>
<text>
<status value="generated"/>
<div xmlns="http://www.w3.org/1999/xhtml"><p class="res-header-id"><b>Narratif généré : StructureMap CorePhysical2FHIR</b></p><a name="CorePhysical2FHIR"> </a><a name="hcCorePhysical2FHIR"> </a><pre class="fml">
<b>map</b><span style="color: navy"> "</span>https://interop.aphp.fr/ig/fhir/dm/StructureMap/CorePhysical2FHIR<span style="color: navy">" = "</span>CorePhysical2FHIR<span style="color: navy">"
</span><span style="color: navy">// </span><span style="color: green">Alignement de l''usage Core du modèle physique du DPI vers les ressources FHIR</span>
<b>uses</b><span style="color: navy"> "</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreDataSet<span style="color: navy">" </span><b>alias </b>DataSet <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> "</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CorePatient<span style="color: navy">" </span><b>alias </b>PatientTable <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> "</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreSejour<span style="color: navy">" </span><b>alias </b>SejourTable <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> "</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreBiology<span style="color: navy">" </span><b>alias </b>BiologyTable <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> "</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreClinical<span style="color: navy">" </span><b>alias </b>ClinicalTable <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> "</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreDiag<span style="color: navy">" </span><b>alias </b>DiagTable <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> "</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreActe<span style="color: navy">" </span><b>alias </b>ActeTable <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> "</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreAddress<span style="color: navy">" </span><b>alias </b>AddressTable <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> "</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreMedicationAdm<span style="color: navy">" </span><b>alias </b>MedicationAdmTable <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> "</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreMedicationPre<span style="color: navy">" </span><b>alias </b>MedicationPreTable <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> "</span><a href="http://hl7.org/fhir/R4/bundle.html" title="Bundle">http://hl7.org/fhir/StructureDefinition/Bundle</a><span style="color: navy">" </span><b>alias </b>FHIRBundle <b>as </b><b>target</b>
<b>uses</b><span style="color: navy"> "</span><a href="http://hl7.org/fhir/R4/patient.html" title="Patient">http://hl7.org/fhir/StructureDefinition/Patient</a><span style="color: navy">" </span><b>alias </b>FHIRPatient <b>as </b><b>target</b>
<b>uses</b><span style="color: navy"> "</span><a href="http://hl7.org/fhir/R4/encounter.html" title="Encounter">http://hl7.org/fhir/StructureDefinition/Encounter</a><span style="color: navy">" </span><b>alias </b>FHIREncounter <b>as </b><b>target</b>
<b>uses</b><span style="color: navy"> "</span><a href="http://hl7.org/fhir/R4/observation.html" title="Observation">http://hl7.org/fhir/StructureDefinition/Observation</a><span style="color: navy">" </span><b>alias </b>FHIRObservation <b>as </b><b>target</b>
<b>uses</b><span style="color: navy"> "</span><a href="http://hl7.org/fhir/R4/datatypes.html#Meta" title="Meta">http://hl7.org/fhir/StructureDefinition/Meta</a><span style="color: navy">" </span><b>alias </b>FHIRMeta <b>as </b><b>target</b>
<b>uses</b><span style="color: navy"> "</span><a href="http://hl7.org/fhir/R4/procedure.html" title="Procedure">http://hl7.org/fhir/StructureDefinition/Procedure</a><span style="color: navy">" </span><b>alias </b>FHIRProcedure <b>as </b><b>target</b>
<b>uses</b><span style="color: navy"> "</span><a href="http://hl7.org/fhir/R4/condition.html" title="Condition">http://hl7.org/fhir/StructureDefinition/Condition</a><span style="color: navy">" </span><b>alias </b>FHIRCondition <b>as </b><b>target</b>
<b>group </b>dataSet<span style="color: navy">(</span><b>source</b> <span style="color: maroon">srcDataSet</span><span style="color: navy"> : </span>DataSet, <b>target</b> <span style="color: maroon">tgtBundle</span><span style="color: navy"> : </span>FHIRBundle<span style="color: navy">)</span><b> <<types>></b><span style="color: navy"> {
</span> srcDataSet<span style="color: navy"><b> -> </b></span>tgtBundle.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>"setId"</i><span style="color: navy">;</span>
srcDataSet<span style="color: navy"><b> -> </b></span>tgtBundle.type = <span style="color: blue">'transaction'</span> <i>"setType"</i><span style="color: navy">;</span>
srcDataSet.patient<b> as </b><span style="color: maroon">srcPatient</span><span style="color: navy"><b> -> </b></span> tgtBundle.entry<b> as </b><span style="color: maroon">tgtPatientEntry</span><span style="color: navy">, </span> tgtPatientEntry.resource = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Patient'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">newPatient</span><b> then</b><span style="color: navy"> {
</span> srcPatient<b> then </b>patient<span style="color: navy">(</span><span style="color: maroon">srcPatient</span><span style="color: navy">, </span><span style="color: maroon">newPatient</span><span style="color: navy">)</span> <i>"setPatient"</i><span style="color: navy">;</span>
srcPatient<b> then </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><span style="color: maroon">newPatient</span><span style="color: navy">, </span><span style="color: maroon">tgtPatientEntry</span><span style="color: navy">)</span> <i>"setRequestAndFullUrl"</i><span style="color: navy">;</span>
srcDataSet.address<b> as </b><span style="color: maroon">srcAddress</span><b> where </b>patientNi.reference = ('PatientCore/' + %srcPatient.patientNi.toString())<b> then </b>patientAddress<span style="color: navy">(</span><span style="color: maroon">srcAddress</span><span style="color: navy">, </span><span style="color: maroon">newPatient</span><span style="color: navy">)</span> <i>"addPatientAddress"</i><span style="color: navy">;</span>
srcDataSet.sejour<b> as </b><span style="color: maroon">srcSejour</span><b> where </b>patientNi.reference = ('PatientCore/' + %srcPatient.patientNi.toString())<span style="color: navy"><b> -> </b></span> tgtBundle.entry<b> as </b><span style="color: maroon">tgtEncounterEntry</span><span style="color: navy">, </span> tgtEncounterEntry.resource = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Encounter'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">newEncounter</span><b> then</b><span style="color: navy"> {
</span> srcSejour<b> then </b>encounter<span style="color: navy">(</span><span style="color: maroon">srcSejour</span><span style="color: navy">, </span><span style="color: maroon">newPatient</span><span style="color: navy">, </span><span style="color: maroon">newEncounter</span><span style="color: navy">)</span> <i>"setEncounter"</i><span style="color: navy">;</span>
srcSejour<b> then </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><span style="color: maroon">newEncounter</span><span style="color: navy">, </span><span style="color: maroon">tgtEncounterEntry</span><span style="color: navy">)</span> <i>"setRequestAndFullUrl"</i><span style="color: navy">;</span>
srcDataSet.acte<b> as </b><span style="color: maroon">srcActe</span><b> where </b>sejourNi.reference = ('SejourCore/' + %srcSejour.sejourNi.toString())<span style="color: navy"><b> -> </b></span> tgtBundle.entry<b> as </b><span style="color: maroon">tgtProcedureEntry</span><span style="color: navy">, </span> tgtProcedureEntry.resource = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Procedure'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">newProcedure</span><b> then</b><span style="color: navy"> {
</span> srcActe<b> then </b>procedure<span style="color: navy">(</span><span style="color: maroon">srcActe</span><span style="color: navy">, </span><span style="color: maroon">newPatient</span><span style="color: navy">, </span><span style="color: maroon">newEncounter</span><span style="color: navy">, </span><span style="color: maroon">newProcedure</span><span style="color: navy">)</span> <i>"setProcedure"</i><span style="color: navy">;</span>
srcActe<b> then </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><span style="color: maroon">newProcedure</span><span style="color: navy">, </span><span style="color: maroon">tgtProcedureEntry</span><span style="color: navy">)</span> <i>"setRequestAndFullUrl"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"createProcedure"</i><span style="color: navy">;</span>
srcDataSet.diag<b> as </b><span style="color: maroon">srcDiag</span><b> where </b>sejourNi.reference = ('SejourCore/' + %srcSejour.sejourNi.toString())<span style="color: navy"><b> -> </b></span> tgtBundle.entry<b> as </b><span style="color: maroon">tgtConditionEntry</span><span style="color: navy">, </span> tgtConditionEntry.resource = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Condition'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">newCondition</span><b> then</b><span style="color: navy"> {
</span> srcDiag<b> then </b>condition<span style="color: navy">(</span><span style="color: maroon">srcDiag</span><span style="color: navy">, </span><span style="color: maroon">newPatient</span><span style="color: navy">, </span><span style="color: maroon">newEncounter</span><span style="color: navy">, </span><span style="color: maroon">newCondition</span><span style="color: navy">)</span> <i>"setCondition"</i><span style="color: navy">;</span>
srcDiag<b> then </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><span style="color: maroon">newCondition</span><span style="color: navy">, </span><span style="color: maroon">tgtConditionEntry</span><span style="color: navy">)</span> <i>"setRequestAndFullUrl"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"createProcedure"</i><span style="color: navy">;</span>
srcDataSet.biology<b> as </b><span style="color: maroon">srcBiology</span><b> where </b>sejourNi.reference = ('SejourCore/' + %srcSejour.sejourNi.toString())<span style="color: navy"><b> -> </b></span> tgtBundle.entry<b> as </b><span style="color: maroon">tgtBiologyEntry</span><span style="color: navy">, </span> tgtBiologyEntry.resource = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Observation'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">newObservation</span><b> then</b><span style="color: navy"> {
</span> srcBiology<b> then </b>observationBiol<span style="color: navy">(</span><span style="color: maroon">srcBiology</span><span style="color: navy">, </span><span style="color: maroon">newPatient</span><span style="color: navy">, </span><span style="color: maroon">newEncounter</span><span style="color: navy">, </span><span style="color: maroon">newObservation</span><span style="color: navy">)</span> <i>"setBiology"</i><span style="color: navy">;</span>
srcBiology<b> then </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><span style="color: maroon">newObservation</span><span style="color: navy">, </span><span style="color: maroon">tgtBiologyEntry</span><span style="color: navy">)</span> <i>"setRequestAndFullUrl"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"createObservation"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"createEncounter"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"createPatient"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><b>group </b>patient<span style="color: navy">(</span><b>source</b> <span style="color: maroon">srcPatient</span><span style="color: navy"> : </span>PatientTable, <b>target</b> <span style="color: maroon">tgtPatient</span><span style="color: navy"> : </span>FHIRPatient<span style="color: navy">)</span><span style="color: navy"> {
</span> srcPatient<span style="color: navy"><b> -> </b></span>tgtPatient.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>"setId"</i><span style="color: navy">;</span>
srcPatient.patientNi<b> as </b><span style="color: maroon">srcNi</span><span style="color: navy"><b> -> </b></span>tgtPatient.meta<b> as </b><span style="color: maroon">tgtMeta</span><b> then </b>setPatientMeta<span style="color: navy">(</span><span style="color: maroon">srcNi</span><span style="color: navy">, </span><span style="color: maroon">tgtMeta</span><span style="color: navy">)</span> <i>"setMeta"</i><span style="color: navy">;</span> <span style="color: navy">// </span><span style="color: green">copie la valeur du champ patientNi de la table Patient dans l'élément id de la ressource FHIR Patient</span>
srcPatient<span style="color: navy"><b> -> </b></span>tgtPatient.name<b> as </b><span style="color: maroon">tgtPatientName</span><b> then </b>setHumainName<span style="color: navy">(</span><span style="color: maroon">srcPatient</span><span style="color: navy">, </span><span style="color: maroon">tgtPatientName</span><span style="color: navy">)</span> <i>"setHumainName"</i><span style="color: navy">;</span>
srcPatient<span style="color: navy"><b> -> </b></span>tgtPatient.identifier<b> as </b><span style="color: maroon">tgtPatientIdentifier</span><b> then </b>setHumainNir<span style="color: navy">(</span><span style="color: maroon">srcPatient</span><span style="color: navy">, </span><span style="color: maroon">tgtPatientIdentifier</span><span style="color: navy">)</span> <i>"setHumainNir"</i><span style="color: navy">;</span>
srcPatient.gender<b> as </b><span style="color: maroon">srcPatientGender</span><span style="color: navy"><b> -> </b></span>tgtPatient.gender = <b>translate</b><span style="color: navy">(</span><span style="color: maroon">srcPatientGender</span><span style="color: navy">, </span><span style="color: blue">'https://interop.aphp.fr/ig/fhir/dm/ConceptMap/DpiGender2Hl7Gender'</span><span style="color: navy">, </span><span style="color: blue">'code'</span><span style="color: navy">)</span> <i>"setGender"</i><span style="color: navy">;</span> <span style="color: navy">// </span><span style="color: green">traduit la valeur du champ gender de la table Patient dans l'élément gender de la ressource FHIR Patient</span>
srcPatient.birthDate<b> as </b><span style="color: maroon">srcPatientBirthDate</span><span style="color: navy"><b> -> </b></span>tgtPatient.birthDate = <span style="color: maroon">srcPatientBirthDate</span> <i>"setBirthDate"</i><span style="color: navy">;</span> <span style="color: navy">// </span><span style="color: green">copie la valeur du champ birthDate de la table Patient dans l'élément birthDate de la ressource FHIR Patient</span>
<span style="color: navy">}
</span><b>group </b>setPatientMeta<span style="color: navy">(</span><b>source</b> <span style="color: maroon">srcNi</span>, <b>target</b> <span style="color: maroon">tgtMeta</span><span style="color: navy"> : </span>FHIRMeta<span style="color: navy">)</span><span style="color: navy"> {
</span> srcNi<span style="color: navy"><b> -> </b></span>tgtMeta.source = <span style="color: navy">(</span>'https://aphp.fr/fhir/Endpoint/dpi/PatientTable' + '/' + %srcNi.toString()<span style="color: navy">)</span> <i>"setSource"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><b>group </b>setHumainName<span style="color: navy">(</span><b>source</b> <span style="color: maroon">srcPatient</span><span style="color: navy"> : </span>PatientTable, <b>target</b> <span style="color: maroon">tgtPatientName</span><span style="color: navy">)</span><span style="color: navy"> {
</span> srcPatient<span style="color: navy"><b> -> </b></span>tgtPatientName.use = <span style="color: blue">'usual'</span> <i>"setUse"</i><span style="color: navy">;</span>
<span style="color: #b36b00" title="Cet élément nétait pas défini avant R5">// srcPatient -> tgtPatientName.text = (%srcPatient.firstName + ' ' + %srcPatient.name) "setText";</span>
<span style="color: #b36b00" title="Cet élément nétait pas défini avant R5">// srcPatient.name as srcPatientName -> tgtPatientName.family = srcPatientName "setName";</span>
<span style="color: #b36b00" title="Cet élément nétait pas défini avant R5">// srcPatient.firstName as srcPatientFirstName -> tgtPatientName.given = srcPatientFirstName "setFirstName";</span>
<span style="color: navy">// </span><span style="color: green">les trois lignes précédentes marchent dans matchbox mais génèrent une erreur au QA. La solution ci dessous marche dans matchbox et ne génère pas d'erreur au QA.</span>
srcPatient.name<b> as </b><span style="color: maroon">srcPatientName</span><span style="color: navy"><b> -> </b></span>tgtPatientName.family = <span style="color: maroon">srcPatientName</span><b> then</b><span style="color: navy"> {
</span> srcPatient.firstName<b> as </b><span style="color: maroon">srcPatientFirstName</span><span style="color: navy"><b> -> </b></span> tgtPatientName.given = <span style="color: maroon">srcPatientFirstName</span><span style="color: navy">, </span> tgtPatientName.text = <span style="color: navy">(</span>%srcPatientFirstName + ' ' + %srcPatientName<span style="color: navy">)</span> <i>"setFirstNameAndText"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"setName"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><b>group </b>setHumainNir<span style="color: navy">(</span><b>source</b> <span style="color: maroon">srcPatient</span><span style="color: navy"> : </span>PatientTable, <b>target</b> <span style="color: maroon">tgtPatientIdentifier</span><span style="color: navy">)</span><span style="color: navy"> {
</span> srcPatient.nir<b> as </b><span style="color: maroon">srcPatientNir</span><span style="color: navy"><b> -> </b></span> tgtPatientIdentifier.use = <span style="color: blue">'official'</span><span style="color: navy">, </span> tgtPatientIdentifier.type = <b>cc</b><span style="color: navy">(</span><span style="color: blue">'https://hl7.fr/ig/fhir/core/CodeSystem/fr-core-cs-v2-0203'</span><span style="color: navy">, </span><span style="color: blue">'INS-NIR'</span><span style="color: navy">)</span><span style="color: navy">, </span> tgtPatientIdentifier.system = <span style="color: blue">'urn:oid:1.2.250.1.213.1.4.8'</span><span style="color: navy">, </span> tgtPatientIdentifier.value = <span style="color: maroon">srcPatientNir</span> <i>"setNir"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><b>group </b>patientAddress<span style="color: navy">(</span><b>source</b> <span style="color: maroon">srcAddress</span><span style="color: navy"> : </span>AddressTable, <b>target</b> <span style="color: maroon">tgtPatient</span><span style="color: navy"> : </span>FHIRPatient<span style="color: navy">)</span><span style="color: navy"> {
</span> srcAddress<span style="color: navy"><b> -> </b></span>tgtPatient.address = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Address'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">newAddress</span><b> then</b><span style="color: navy"> {
</span> srcAddress.zipCode<b> as </b><span style="color: maroon">srczip</span><span style="color: navy"><b> -> </b></span>newAddress.postalCode = <span style="color: maroon">srczip</span> <i>"setZip"</i><span style="color: navy">;</span>
srcAddress.city<b> as </b><span style="color: maroon">srcCity</span><span style="color: navy"><b> -> </b></span>newAddress.city = <span style="color: maroon">srcCity</span> <i>"setCity"</i><span style="color: navy">;</span>
srcAddress.country<b> as </b><span style="color: maroon">srcCountry</span><span style="color: navy"><b> -> </b></span>newAddress.country = <span style="color: maroon">srcCountry</span> <i>"setCountry"</i><span style="color: navy">;</span>
srcAddress.address<b> as </b><span style="color: maroon">srcAddressText</span><span style="color: navy"><b> -> </b></span>newAddress.text = <span style="color: maroon">srcAddressText</span> <i>"setText"</i><span style="color: navy">;</span>
srcAddress<b> where </b>current = true<span style="color: navy"><b> -> </b></span>newAddress.use = <span style="color: blue">'home'</span> <i>"setUseHome"</i><span style="color: navy">;</span>
srcAddress<b> where </b>current = false<span style="color: navy"><b> -> </b></span>newAddress.use = <span style="color: blue">'old'</span> <i>"setUseOld"</i><span style="color: navy">;</span>
srcAddress<b> where </b>latitude.exists() or longitude.exists()<span style="color: navy"><b> -> </b></span>newAddress.extension = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Extension'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">firstLevelExtension</span><b> then</b><span style="color: navy"> {
</span> srcAddress<span style="color: navy"><b> -> </b></span>firstLevelExtension.url = <span style="color: navy">(</span>'http://hl7.org/fhir/StructureDefinition/geolocation'<span style="color: navy">)</span><b> then</b><span style="color: navy"> {
</span> srcAddress.latitude<b> as </b><span style="color: maroon">srcLat</span><span style="color: navy"><b> -> </b></span>firstLevelExtension.extension = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Extension'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">latExtension</span><b> then</b><span style="color: navy"> {
</span> srcLat<span style="color: navy"><b> -> </b></span> latExtension.url = <span style="color: navy">(</span>'latitude'<span style="color: navy">)</span><span style="color: navy">, </span> latExtension.value = <span style="color: maroon">srcLat</span> <i>"setLat"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"setLatExt"</i><span style="color: navy">;</span>
srcAddress.longitude<b> as </b><span style="color: maroon">srcLong</span><span style="color: navy"><b> -> </b></span>firstLevelExtension.extension = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Extension'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">longExtension</span><b> then</b><span style="color: navy"> {
</span> srcLong<span style="color: navy"><b> -> </b></span> longExtension.url = <span style="color: navy">(</span>'longitude'<span style="color: navy">)</span><span style="color: navy">, </span> longExtension.value = <span style="color: maroon">srcLong</span> <i>"setLong"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"setLongExt"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"setflext"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"setCoordinatesExtension"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"setAddress"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><b>group </b>encounter<span style="color: navy">(</span><b>source</b> <span style="color: maroon">srcSejour</span><span style="color: navy"> : </span>SejourTable, <b>source</b> <span style="color: maroon">srcPatient</span><span style="color: navy"> : </span>FHIRPatient, <b>target</b> <span style="color: maroon">tgtEncounter</span><span style="color: navy"> : </span>FHIREncounter<span style="color: navy">)</span><span style="color: navy"> {
</span> srcSejour<span style="color: navy"><b> -> </b></span>tgtEncounter.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>"setId"</i><span style="color: navy">;</span>
srcSejour.sejourNi<b> as </b><span style="color: maroon">srcNi</span><span style="color: navy"><b> -> </b></span>tgtEncounter.meta<b> as </b><span style="color: maroon">tgtMeta</span><b> then </b>setEncounterMeta<span style="color: navy">(</span><span style="color: maroon">srcNi</span><span style="color: navy">, </span><span style="color: maroon">tgtMeta</span><span style="color: navy">)</span> <i>"setMeta"</i><span style="color: navy">;</span> <span style="color: navy">// </span><span style="color: green">copie la valeur du champ patientNi de la table Patient dans l'élément id de la ressource FHIR Patient</span>
srcSejour<span style="color: navy"><b> -> </b></span>tgtEncounter.status = <span style="color: blue">'finished'</span> <i>"setStatus"</i><span style="color: navy">;</span>
srcSejour.sejourType<b> as </b><span style="color: maroon">srcSejourType</span><span style="color: navy"><b> -> </b></span>tgtEncounter.class = <b>translate</b><span style="color: navy">(</span><span style="color: maroon">srcSejourType</span><span style="color: navy">, </span><span style="color: blue">'https://interop.aphp.fr/ig/fhir/dm/ConceptMap/DpiEncounterType2SemanticLayerEncounterClass'</span><span style="color: navy">, </span><span style="color: blue">'Coding'</span><span style="color: navy">)</span> <i>"setEncounterClass"</i><span style="color: navy">;</span>
srcPatient.id<b> as </b><span style="color: maroon">patientId</span><span style="color: navy"><b> -> </b></span>tgtEncounter.subject = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Reference'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">newSubject</span><b> then </b>setSubjectReference<span style="color: navy">(</span><span style="color: maroon">patientId</span><span style="color: navy">, </span><span style="color: maroon">newSubject</span><span style="color: navy">)</span> <i>"setSubjectReference"</i><span style="color: navy">;</span>
srcSejour.patientNi<span style="color: navy">;</span> <span style="color: navy">// </span><span style="color: green">fk vers le patient à conserver pour la construction auto du périmètre final</span>
srcSejour<span style="color: navy"><b> -> </b></span>tgtEncounter.period = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Period'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">newActualPeriod</span><b> then</b><span style="color: navy"> {
</span> srcSejour.sejourStart<b> as </b><span style="color: maroon">srcPeriodStart</span><span style="color: navy"><b> -> </b></span>newActualPeriod.start = <span style="color: maroon">srcPeriodStart</span> <i>"setStart"</i><span style="color: navy">;</span>
srcSejour.sejourEnd<b> as </b><span style="color: maroon">srcPeriodEnd</span><span style="color: navy"><b> -> </b></span>newActualPeriod.end = <span style="color: maroon">srcPeriodEnd</span> <i>"setEnd"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"setPeriod"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><b>group </b>setEncounterMeta<span style="color: navy">(</span><b>source</b> <span style="color: maroon">srcNi</span>, <b>target</b> <span style="color: maroon">tgtMeta</span><span style="color: navy"> : </span>FHIRMeta<span style="color: navy">)</span><span style="color: navy"> {
</span> srcNi<span style="color: navy"><b> -> </b></span>tgtMeta.source = <span style="color: navy">(</span>'https://aphp.fr/fhir/Endpoint/dpi/SejourTable' + '/' + %srcNi.toString()<span style="color: navy">)</span> <i>"setSource"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><b>group </b>setSubjectReference<span style="color: navy">(</span><b>source</b> <span style="color: maroon">srcPatientId</span>, <b>target</b> <span style="color: maroon">newSubject</span><span style="color: navy">)</span><span style="color: navy"> {
</span> srcPatientId<span style="color: navy"><b> -> </b></span>newSubject.reference = <span style="color: navy">(</span>'Patient/' + %srcPatientId.toString()<span style="color: navy">)</span> <i>"setReference"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><b>group </b>procedure<span style="color: navy">(</span><b>source</b> <span style="color: maroon">srcActe</span><span style="color: navy"> : </span>ActeTable, <b>source</b> <span style="color: maroon">srcPatient</span><span style="color: navy"> : </span>FHIRPatient, <b>source</b> <span style="color: maroon">srcEncounter</span><span style="color: navy"> : </span>FHIREncounter, <b>target</b> <span style="color: maroon">tgtProcedure</span><span style="color: navy"> : </span>FHIRProcedure<span style="color: navy">)</span><span style="color: navy"> {
</span> srcActe<span style="color: navy"><b> -> </b></span>tgtProcedure.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>"setId"</i><span style="color: navy">;</span>
srcActe.acteNi<b> as </b><span style="color: maroon">srcNi</span><span style="color: navy"><b> -> </b></span>tgtProcedure.meta<b> as </b><span style="color: maroon">tgtMeta</span><b> then </b>setProcedureMeta<span style="color: navy">(</span><span style="color: maroon">srcNi</span><span style="color: navy">, </span><span style="color: maroon">tgtMeta</span><span style="color: navy">)</span> <i>"setMeta"</i><span style="color: navy">;</span>
srcPatient.id<b> as </b><span style="color: maroon">patientId</span><span style="color: navy"><b> -> </b></span>tgtProcedure.subject = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Reference'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">newSubject</span><b> then </b>setSubjectReference<span style="color: navy">(</span><span style="color: maroon">patientId</span><span style="color: navy">, </span><span style="color: maroon">newSubject</span><span style="color: navy">)</span> <i>"setSubjectReference"</i><span style="color: navy">;</span>
srcEncounter.id<b> as </b><span style="color: maroon">encounterId</span><span style="color: navy"><b> -> </b></span>tgtProcedure.encounter = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Reference'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">newEncounter</span><b> then </b>setEncounterReference<span style="color: navy">(</span><span style="color: maroon">encounterId</span><span style="color: navy">, </span><span style="color: maroon">newEncounter</span><span style="color: navy">)</span> <i>"setEncounterReference"</i><span style="color: navy">;</span>
srcActe<span style="color: navy"><b> -> </b></span>tgtProcedure.status = <span style="color: blue">'completed'</span> <i>"setStatus"</i><span style="color: navy">;</span>
srcActe<b> where </b>dateStart.exists() or dateEnd.exists<span style="color: navy"><b> -> </b></span>tgtProcedure.performed = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Period'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">tgtProcedurePeriod</span><b> then</b><span style="color: navy"> {
</span> srcActe.dateStart<b> as </b><span style="color: maroon">srcActeStart</span><span style="color: navy"><b> -> </b></span>tgtProcedurePeriod.start = <span style="color: maroon">srcActeStart</span> <i>"setActeStart"</i><span style="color: navy">;</span>
srcActe.dateEnd<b> as </b><span style="color: maroon">srcActeEnd</span><span style="color: navy"><b> -> </b></span>tgtProcedurePeriod.end = <span style="color: maroon">srcActeEnd</span> <i>"setActeEnd"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"setDate"</i><span style="color: navy">;</span>
srcActe.code<b> as </b><span style="color: maroon">acteCode</span><span style="color: navy"><b> -> </b></span>tgtProcedure.code = <b>cc</b><span style="color: navy">(</span><span style="color: blue">'https://smt.esante.gouv.fr/terminologie-ccam'</span><span style="color: navy">, </span><span style="color: maroon">acteCode</span><span style="color: navy">)</span> <i>"setCode"</i><span style="color: navy">;</span> <span style="color: navy">// </span><span style="color: green">C'est le code de la CCAM facturante</span>
<span style="color: navy">}
</span><b>group </b>setProcedureMeta<span style="color: navy">(</span><b>source</b> <span style="color: maroon">srcNi</span>, <b>target</b> <span style="color: maroon">tgtMeta</span><span style="color: navy"> : </span>FHIRMeta<span style="color: navy">)</span><span style="color: navy"> {
</span> srcNi<span style="color: navy"><b> -> </b></span>tgtMeta.source = <span style="color: navy">(</span>'https://aphp.fr/fhir/Endpoint/dpi/ActeTable' + '/' + %srcNi.toString()<span style="color: navy">)</span> <i>"setSource"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><b>group </b>setEncounterReference<span style="color: navy">(</span><b>source</b> <span style="color: maroon">srcEncounterId</span>, <b>target</b> <span style="color: maroon">newEncounter</span><span style="color: navy">)</span><span style="color: navy"> {
</span> srcEncounterId<span style="color: navy"><b> -> </b></span>newEncounter.reference = <span style="color: navy">(</span>'Encounter/' + %srcEncounterId.toString()<span style="color: navy">)</span> <i>"setReference"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><b>group </b>condition<span style="color: navy">(</span><b>source</b> <span style="color: maroon">srcDiag</span><span style="color: navy"> : </span>DiagTable, <b>source</b> <span style="color: maroon">srcPatient</span><span style="color: navy"> : </span>FHIRPatient, <b>source</b> <span style="color: maroon">srcEncounter</span><span style="color: navy"> : </span>FHIREncounter, <b>target</b> <span style="color: maroon">tgtCondition</span><span style="color: navy"> : </span>FHIRCondition<span style="color: navy">)</span><span style="color: navy"> {
</span> srcDiag<span style="color: navy"><b> -> </b></span>tgtCondition.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>"setId"</i><span style="color: navy">;</span>
srcDiag.diagNi<b> as </b><span style="color: maroon">srcNi</span><span style="color: navy"><b> -> </b></span>tgtCondition.meta<b> as </b><span style="color: maroon">tgtMeta</span><b> then </b>setConditionMeta<span style="color: navy">(</span><span style="color: maroon">srcNi</span><span style="color: navy">, </span><span style="color: maroon">tgtMeta</span><span style="color: navy">)</span> <i>"setMeta"</i><span style="color: navy">;</span>
srcPatient.id<b> as </b><span style="color: maroon">patientId</span><span style="color: navy"><b> -> </b></span>tgtCondition.subject = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Reference'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">newSubject</span><b> then </b>setSubjectReference<span style="color: navy">(</span><span style="color: maroon">patientId</span><span style="color: navy">, </span><span style="color: maroon">newSubject</span><span style="color: navy">)</span> <i>"setSubjectReference"</i><span style="color: navy">;</span>
srcEncounter.id<b> as </b><span style="color: maroon">encounterId</span><span style="color: navy"><b> -> </b></span>tgtCondition.encounter = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Reference'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">newEncounter</span><b> then </b>setEncounterReference<span style="color: navy">(</span><span style="color: maroon">encounterId</span><span style="color: navy">, </span><span style="color: maroon">newEncounter</span><span style="color: navy">)</span> <i>"setEncounterReference"</i><span style="color: navy">;</span>
srcDiag<span style="color: navy"><b> -> </b></span>tgtCondition.verificationStatus = <span style="color: blue">'confirmed'</span> <i>"setVerificationStatus"</i><span style="color: navy">;</span>
srcDiag<span style="color: navy"><b> -> </b></span>tgtCondition.category = <b>cc</b><span style="color: navy">(</span><span style="color: blue">'http://terminology.hl7.org/CodeSystem/condition-category'</span><span style="color: navy">, </span><span style="color: blue">'encounter-diagnosis'</span><span style="color: navy">)</span> <i>"setCategory"</i><span style="color: navy">;</span>
srcDiag.code<b> as </b><span style="color: maroon">diagCode</span><span style="color: navy"><b> -> </b></span>tgtCondition.code = <b>cc</b><span style="color: navy">(</span><span style="color: blue">'http://hl7.org/fhir/sid/icd-10'</span><span style="color: navy">, </span><span style="color: maroon">diagCode</span><span style="color: navy">)</span> <i>"setCode"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><b>group </b>setConditionMeta<span style="color: navy">(</span><b>source</b> <span style="color: maroon">srcNi</span>, <b>target</b> <span style="color: maroon">tgtMeta</span><span style="color: navy"> : </span>FHIRMeta<span style="color: navy">)</span><span style="color: navy"> {
</span> srcNi<span style="color: navy"><b> -> </b></span>tgtMeta.source = <span style="color: navy">(</span>'https://aphp.fr/fhir/Endpoint/dpi/DiagTable' + '/' + %srcNi.toString()<span style="color: navy">)</span> <i>"setSource"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><b>group </b>observationBiol<span style="color: navy">(</span><b>source</b> <span style="color: maroon">srcBiology</span><span style="color: navy"> : </span>BiologyTable, <b>source</b> <span style="color: maroon">srcPatient</span><span style="color: navy"> : </span>FHIRPatient, <b>source</b> <span style="color: maroon">srcEncounter</span><span style="color: navy"> : </span>FHIREncounter, <b>target</b> <span style="color: maroon">tgtObservation</span><span style="color: navy"> : </span>FHIRObservation<span style="color: navy">)</span><span style="color: navy"> {
</span> srcBiology<span style="color: navy"><b> -> </b></span>tgtObservation.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>"setId"</i><span style="color: navy">;</span>
srcBiology.biologyNi<b> as </b><span style="color: maroon">srcNi</span><span style="color: navy"><b> -> </b></span>tgtObservation.meta<b> as </b><span style="color: maroon">tgtMeta</span><b> then </b>setBiologyMeta<span style="color: navy">(</span><span style="color: maroon">srcNi</span><span style="color: navy">, </span><span style="color: maroon">tgtMeta</span><span style="color: navy">)</span> <i>"setMeta"</i><span style="color: navy">;</span>
srcPatient.id<b> as </b><span style="color: maroon">patientId</span><span style="color: navy"><b> -> </b></span>tgtObservation.subject = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Reference'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">newSubject</span><b> then </b>setSubjectReference<span style="color: navy">(</span><span style="color: maroon">patientId</span><span style="color: navy">, </span><span style="color: maroon">newSubject</span><span style="color: navy">)</span> <i>"setSubjectReference"</i><span style="color: navy">;</span>
srcEncounter.id<b> as </b><span style="color: maroon">encounterId</span><span style="color: navy"><b> -> </b></span>tgtObservation.encounter = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Reference'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">newEncounter</span><b> then </b>setEncounterReference<span style="color: navy">(</span><span style="color: maroon">encounterId</span><span style="color: navy">, </span><span style="color: maroon">newEncounter</span><span style="color: navy">)</span> <i>"setEncounterReference"</i><span style="color: navy">;</span>
srcBiology<span style="color: navy"><b> -> </b></span>tgtObservation.status = <span style="color: blue">'final'</span> <i>"setStatus"</i><span style="color: navy">;</span>
srcBiology<span style="color: navy"><b> -> </b></span>tgtObservation.category = <b>cc</b><span style="color: navy">(</span><span style="color: blue">'http://terminology.hl7.org/CodeSystem/observation-category'</span><span style="color: navy">, </span><span style="color: blue">'vital-signs'</span><span style="color: navy">)</span> <i>"setCategory"</i><span style="color: navy">;</span>
srcBiology.biologyDatePrel<b> as </b><span style="color: maroon">biologyDatePrel</span><span style="color: navy"><b> -> </b></span>tgtObservation.effective = <span style="color: maroon">biologyDatePrel</span> <i>"setDate"</i><span style="color: navy">;</span>
srcBiology.biologyCode<b> as </b><span style="color: maroon">biologyCode</span><span style="color: navy"><b> -> </b></span>tgtObservation.code = <b>cc</b><span style="color: navy">(</span><span style="color: blue">'http://loinc.org'</span><span style="color: navy">, </span><span style="color: maroon">biologyCode</span><span style="color: navy">)</span> <i>"setCode"</i><span style="color: navy">;</span>
srcBiology.biologyValue<span style="color: navy"><b> -> </b></span>tgtObservation.value = <b>create</b><span style="color: navy">(</span><span style="color: blue">'Quantity'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">tgtObsQuantity</span><b> then</b><span style="color: navy"> {
</span> srcBiology.biologyValue<b> as </b><span style="color: maroon">biologyValue</span><span style="color: navy"><b> -> </b></span>tgtObsQuantity.value = <span style="color: maroon">biologyValue</span> <i>"setValue"</i><span style="color: navy">;</span>
srcBiology.biologyUnit<b> as </b><span style="color: maroon">biologyUnit</span><span style="color: navy"><b> -> </b></span> tgtObsQuantity.code = <span style="color: maroon">biologyUnit</span><span style="color: navy">, </span> tgtObsQuantity.unit = <span style="color: maroon">biologyUnit</span><span style="color: navy">, </span> tgtObsQuantity.system = <span style="color: blue">'http://unitsofmeasure.org'</span> <i>"setUnit"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"setQuantity"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><b>group </b>setBiologyMeta<span style="color: navy">(</span><b>source</b> <span style="color: maroon">srcNi</span>, <b>target</b> <span style="color: maroon">tgtMeta</span><span style="color: navy"> : </span>FHIRMeta<span style="color: navy">)</span><span style="color: navy"> {
</span> srcNi<span style="color: navy"><b> -> </b></span>tgtMeta.source = <span style="color: navy">(</span>'https://aphp.fr/fhir/Endpoint/dpi/BiologyTable' + '/' + %srcNi.toString()<span style="color: navy">)</span> <i>"setSource"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><b>group </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><b>source</b> <span style="color: maroon">newRes</span>, <b>target</b> <span style="color: maroon">tgtEntry</span><span style="color: navy">)</span><span style="color: navy"> {
</span> newRes.id<b> as </b><span style="color: maroon">newResId</span><b> then</b><span style="color: navy"> {
</span> newResId<span style="color: navy"><b> -> </b></span>tgtEntry.fullUrl = <span style="color: navy">(</span>'https://aphp.fr/' + %newRes.type().name + '/' + %newResId<span style="color: navy">)</span> <i>"setFullUrl"</i><span style="color: navy">;</span>
newResId<span style="color: navy"><b> -> </b></span> tgtEntry.request<b> as </b><span style="color: maroon">tgtEntryRequest</span><span style="color: navy">, </span> tgtEntryRequest.method = <span style="color: blue">'POST'</span><span style="color: navy">, </span> tgtEntryRequest.url = <span style="color: navy">(</span>%newRes.type().name + '/' + %newResId<span style="color: navy">)</span> <i>"setRequest"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"setResourceType"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span></pre></div>
</text>
<url
value="https://interop.aphp.fr/ig/fhir/dm/StructureMap/CorePhysical2FHIR"/>
<version value="0.1.0"/>
<name value="CorePhysical2FHIR"/>
<title
value="Alignement de l''usage Core du modèle physique du DPI vers les ressources FHIR"/>
<status value="draft"/>
<date value="2025-10-23T20:49:03+00:00"/>
<publisher value="AP-HP"/>
<contact>
<name value="AP-HP"/>
<telecom>
<system value="url"/>
<value value="https://aphp.fr"/>
</telecom>
</contact>
<description
value="Alignement de l''usage Core du modèle physique du DPI vers les ressources FHIR"/>
<jurisdiction>
<coding>
<system value="urn:iso:std:iso:3166"/>
<code value="FR"/>
<display value="France"/>
</coding>
</jurisdiction>
<structure>
<url
value="https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreDataSet"/>
<mode value="source"/>
<alias value="DataSet"/>
</structure>
<structure>
<url
value="https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CorePatient"/>
<mode value="source"/>
<alias value="PatientTable"/>
</structure>
<structure>
<url
value="https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreSejour"/>
<mode value="source"/>
<alias value="SejourTable"/>
</structure>
<structure>
<url
value="https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreBiology"/>
<mode value="source"/>
<alias value="BiologyTable"/>
</structure>
<structure>
<url
value="https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreClinical"/>
<mode value="source"/>
<alias value="ClinicalTable"/>
</structure>
<structure>
<url
value="https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreDiag"/>
<mode value="source"/>
<alias value="DiagTable"/>
</structure>
<structure>
<url
value="https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreActe"/>
<mode value="source"/>
<alias value="ActeTable"/>
</structure>
<structure>
<url
value="https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreAddress"/>
<mode value="source"/>
<alias value="AddressTable"/>
</structure>
<structure>
<url
value="https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreMedicationAdm"/>
<mode value="source"/>
<alias value="MedicationAdmTable"/>
</structure>
<structure>
<url
value="https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreMedicationPre"/>
<mode value="source"/>
<alias value="MedicationPreTable"/>
</structure>
<structure>
<url value="http://hl7.org/fhir/StructureDefinition/Bundle"/>
<mode value="target"/>
<alias value="FHIRBundle"/>
</structure>
<structure>
<url value="http://hl7.org/fhir/StructureDefinition/Patient"/>
<mode value="target"/>
<alias value="FHIRPatient"/>
</structure>
<structure>
<url value="http://hl7.org/fhir/StructureDefinition/Encounter"/>
<mode value="target"/>
<alias value="FHIREncounter"/>
</structure>
<structure>
<url value="http://hl7.org/fhir/StructureDefinition/Observation"/>
<mode value="target"/>
<alias value="FHIRObservation"/>
</structure>
<structure>
<url value="http://hl7.org/fhir/StructureDefinition/Meta"/>
<mode value="target"/>
<alias value="FHIRMeta"/>
</structure>
<structure>
<url value="http://hl7.org/fhir/StructureDefinition/Procedure"/>
<mode value="target"/>
<alias value="FHIRProcedure"/>
</structure>
<structure>
<url value="http://hl7.org/fhir/StructureDefinition/Condition"/>
<mode value="target"/>
<alias value="FHIRCondition"/>
</structure>
<group>
<name value="dataSet"/>
<typeMode value="types"/>
<input>
<name value="srcDataSet"/>
<type value="DataSet"/>
<mode value="source"/>
</input>
<input>
<name value="tgtBundle"/>
<type value="FHIRBundle"/>
<mode value="target"/>
</input>
<rule>
<name value="setId"/>
<source>
<context value="srcDataSet"/>
</source>
<target>
<context value="tgtBundle"/>
<contextType value="variable"/>
<element value="id"/>
<transform value="uuid"/>
</target>
</rule>
<rule>
<name value="setType"/>
<source>
<context value="srcDataSet"/>
</source>
<target>
<context value="tgtBundle"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="copy"/>
<parameter>
<valueString value="transaction"/>
</parameter>
</target>
</rule>
<rule>
<name value="createPatient"/>
<source>
<context value="srcDataSet"/>
<element value="patient"/>
<variable value="srcPatient"/>
</source>
<target>
<context value="tgtBundle"/>
<contextType value="variable"/>
<element value="entry"/>
<variable value="tgtPatientEntry"/>
</target>
<target>
<context value="tgtPatientEntry"/>
<contextType value="variable"/>
<element value="resource"/>
<variable value="newPatient"/>
<transform value="create"/>
<parameter>
<valueString value="Patient"/>
</parameter>
</target>
<rule>
<name value="setPatient"/>
<source>
<context value="srcPatient"/>
</source>
<dependent>
<name value="patient"/>
<variable value="srcPatient"/>
<variable value="newPatient"/>
</dependent>
</rule>
<rule>
<name value="setRequestAndFullUrl"/>
<source>
<context value="srcPatient"/>
</source>
<dependent>
<name value="setEntryRequestAndFullUrl"/>
<variable value="newPatient"/>
<variable value="tgtPatientEntry"/>
</dependent>
</rule>
<rule>
<name value="addPatientAddress"/>
<source>
<context value="srcDataSet"/>
<element value="address"/>
<variable value="srcAddress"/>
<condition
value="patientNi.reference = ('PatientCore/' + %srcPatient.patientNi.toString())"/>
</source>
<dependent>
<name value="patientAddress"/>
<variable value="srcAddress"/>
<variable value="newPatient"/>
</dependent>
</rule>
<rule>
<name value="createEncounter"/>
<source>
<context value="srcDataSet"/>
<element value="sejour"/>
<variable value="srcSejour"/>
<condition
value="patientNi.reference = ('PatientCore/' + %srcPatient.patientNi.toString())"/>
</source>
<target>
<context value="tgtBundle"/>
<contextType value="variable"/>
<element value="entry"/>
<variable value="tgtEncounterEntry"/>
</target>
<target>
<context value="tgtEncounterEntry"/>
<contextType value="variable"/>
<element value="resource"/>
<variable value="newEncounter"/>
<transform value="create"/>
<parameter>
<valueString value="Encounter"/>
</parameter>
</target>
<rule>
<name value="setEncounter"/>
<source>
<context value="srcSejour"/>
</source>
<dependent>
<name value="encounter"/>
<variable value="srcSejour"/>
<variable value="newPatient"/>
<variable value="newEncounter"/>
</dependent>
</rule>
<rule>
<name value="setRequestAndFullUrl"/>
<source>
<context value="srcSejour"/>
</source>
<dependent>
<name value="setEntryRequestAndFullUrl"/>
<variable value="newEncounter"/>
<variable value="tgtEncounterEntry"/>
</dependent>
</rule>
<rule>
<name value="createProcedure"/>
<source>
<context value="srcDataSet"/>
<element value="acte"/>
<variable value="srcActe"/>
<condition
value="sejourNi.reference = ('SejourCore/' + %srcSejour.sejourNi.toString())"/>
</source>
<target>
<context value="tgtBundle"/>
<contextType value="variable"/>
<element value="entry"/>
<variable value="tgtProcedureEntry"/>
</target>
<target>
<context value="tgtProcedureEntry"/>
<contextType value="variable"/>
<element value="resource"/>
<variable value="newProcedure"/>
<transform value="create"/>
<parameter>
<valueString value="Procedure"/>
</parameter>
</target>
<rule>
<name value="setProcedure"/>
<source>
<context value="srcActe"/>
</source>
<dependent>
<name value="procedure"/>
<variable value="srcActe"/>
<variable value="newPatient"/>
<variable value="newEncounter"/>
<variable value="newProcedure"/>
</dependent>
</rule>
<rule>
<name value="setRequestAndFullUrl"/>
<source>
<context value="srcActe"/>
</source>
<dependent>
<name value="setEntryRequestAndFullUrl"/>
<variable value="newProcedure"/>
<variable value="tgtProcedureEntry"/>
</dependent>
</rule>
</rule>
<rule>
<name value="createProcedure"/>
<source>
<context value="srcDataSet"/>
<element value="diag"/>
<variable value="srcDiag"/>
<condition
value="sejourNi.reference = ('SejourCore/' + %srcSejour.sejourNi.toString())"/>
</source>
<target>
<context value="tgtBundle"/>
<contextType value="variable"/>
<element value="entry"/>
<variable value="tgtConditionEntry"/>
</target>
<target>
<context value="tgtConditionEntry"/>
<contextType value="variable"/>
<element value="resource"/>
<variable value="newCondition"/>
<transform value="create"/>
<parameter>
<valueString value="Condition"/>
</parameter>
</target>
<rule>
<name value="setCondition"/>
<source>
<context value="srcDiag"/>
</source>
<dependent>
<name value="condition"/>
<variable value="srcDiag"/>
<variable value="newPatient"/>
<variable value="newEncounter"/>
<variable value="newCondition"/>
</dependent>
</rule>
<rule>
<name value="setRequestAndFullUrl"/>
<source>
<context value="srcDiag"/>
</source>
<dependent>
<name value="setEntryRequestAndFullUrl"/>
<variable value="newCondition"/>
<variable value="tgtConditionEntry"/>
</dependent>
</rule>
</rule>
<rule>
<name value="createObservation"/>
<source>
<context value="srcDataSet"/>
<element value="biology"/>
<variable value="srcBiology"/>
<condition
value="sejourNi.reference = ('SejourCore/' + %srcSejour.sejourNi.toString())"/>
</source>
<target>
<context value="tgtBundle"/>
<contextType value="variable"/>
<element value="entry"/>
<variable value="tgtBiologyEntry"/>
</target>
<target>
<context value="tgtBiologyEntry"/>
<contextType value="variable"/>
<element value="resource"/>
<variable value="newObservation"/>
<transform value="create"/>
<parameter>
<valueString value="Observation"/>
</parameter>
</target>
<rule>
<name value="setBiology"/>
<source>
<context value="srcBiology"/>
</source>
<dependent>
<name value="observationBiol"/>
<variable value="srcBiology"/>
<variable value="newPatient"/>
<variable value="newEncounter"/>
<variable value="newObservation"/>
</dependent>
</rule>
<rule>
<name value="setRequestAndFullUrl"/>
<source>
<context value="srcBiology"/>
</source>
<dependent>
<name value="setEntryRequestAndFullUrl"/>
<variable value="newObservation"/>
<variable value="tgtBiologyEntry"/>
</dependent>
</rule>
</rule>
</rule>
</rule>
</group>
<group>
<name value="patient"/>
<typeMode value="none"/>
<input>
<name value="srcPatient"/>
<type value="PatientTable"/>
<mode value="source"/>
</input>
<input>
<name value="tgtPatient"/>
<type value="FHIRPatient"/>
<mode value="target"/>
</input>
<rule>
<name value="setId"/>
<source>
<context value="srcPatient"/>
</source>
<target>
<context value="tgtPatient"/>
<contextType value="variable"/>
<element value="id"/>
<transform value="uuid"/>
</target>
</rule>
<rule>
<name value="setMeta"/>
<source>
<context value="srcPatient"/>
<element value="patientNi"/>
<variable value="srcNi"/>
</source>
<target>
<context value="tgtPatient"/>
<contextType value="variable"/>
<element value="meta"/>
<variable value="tgtMeta"/>
</target>
<dependent>
<name value="setPatientMeta"/>
<variable value="srcNi"/>
<variable value="tgtMeta"/>
</dependent>
<documentation
value="copie la valeur du champ patientNi de la table Patient dans l'élément id de la ressource FHIR Patient"/>
</rule>
<rule>
<name value="setHumainName"/>
<source>
<context value="srcPatient"/>
</source>
<target>
<context value="tgtPatient"/>
<contextType value="variable"/>
<element value="name"/>
<variable value="tgtPatientName"/>
</target>
<dependent>
<name value="setHumainName"/>
<variable value="srcPatient"/>
<variable value="tgtPatientName"/>
</dependent>
</rule>
<rule>
<name value="setHumainNir"/>
<source>
<context value="srcPatient"/>
</source>
<target>
<context value="tgtPatient"/>
<contextType value="variable"/>
<element value="identifier"/>
<variable value="tgtPatientIdentifier"/>
</target>
<dependent>
<name value="setHumainNir"/>
<variable value="srcPatient"/>
<variable value="tgtPatientIdentifier"/>
</dependent>
</rule>
<rule>
<name value="setGender"/>
<source>
<context value="srcPatient"/>
<element value="gender"/>
<variable value="srcPatientGender"/>
</source>
<target>
<context value="tgtPatient"/>
<contextType value="variable"/>
<element value="gender"/>
<transform value="translate"/>
<parameter>
<valueId value="srcPatientGender"/>
</parameter>
<parameter>
<valueString
value="https://interop.aphp.fr/ig/fhir/dm/ConceptMap/DpiGender2Hl7Gender"/>
</parameter>
<parameter>
<valueString value="code"/>
</parameter>
</target>
<documentation
value="traduit la valeur du champ gender de la table Patient dans l'élément gender de la ressource FHIR Patient"/>
</rule>
<rule>
<name value="setBirthDate"/>
<source>
<context value="srcPatient"/>
<element value="birthDate"/>
<variable value="srcPatientBirthDate"/>
</source>
<target>
<context value="tgtPatient"/>
<contextType value="variable"/>
<element value="birthDate"/>
<transform value="copy"/>
<parameter>
<valueId value="srcPatientBirthDate"/>
</parameter>
</target>
<documentation
value="copie la valeur du champ birthDate de la table Patient dans l'élément birthDate de la ressource FHIR Patient"/>
</rule>
</group>
<group>
<name value="setPatientMeta"/>
<typeMode value="none"/>
<input>
<name value="srcNi"/>
<mode value="source"/>
</input>
<input>
<name value="tgtMeta"/>
<type value="FHIRMeta"/>
<mode value="target"/>
</input>
<rule>
<name value="setSource"/>
<source>
<context value="srcNi"/>
</source>
<target>
<context value="tgtMeta"/>
<contextType value="variable"/>
<element value="source"/>
<transform value="evaluate"/>
<parameter>
<valueString
value="'https://aphp.fr/fhir/Endpoint/dpi/PatientTable' + '/' + %srcNi.toString()"/>
</parameter>
</target>
</rule>
</group>
<group>
<name value="setHumainName"/>
<typeMode value="none"/>
<input>
<name value="srcPatient"/>
<type value="PatientTable"/>
<mode value="source"/>
</input>
<input>
<name value="tgtPatientName"/>
<mode value="target"/>
</input>
<rule>
<name value="setUse"/>
<source>
<context value="srcPatient"/>
</source>
<target>
<context value="tgtPatientName"/>
<contextType value="variable"/>
<element value="use"/>
<transform value="copy"/>
<parameter>
<valueString value="usual"/>
</parameter>
</target>
</rule>
<rule>
<name value="setName"/>
<source>
<context value="srcPatient"/>
<element value="name"/>
<variable value="srcPatientName"/>
</source>
<target>
<context value="tgtPatientName"/>
<contextType value="variable"/>
<element value="family"/>
<transform value="copy"/>
<parameter>
<valueId value="srcPatientName"/>
</parameter>
</target>
<rule>
<name value="setFirstNameAndText"/>
<source>
<context value="srcPatient"/>
<element value="firstName"/>
<variable value="srcPatientFirstName"/>
</source>
<target>
<context value="tgtPatientName"/>
<contextType value="variable"/>
<element value="given"/>
<transform value="copy"/>
<parameter>
<valueId value="srcPatientFirstName"/>
</parameter>
</target>
<target>
<context value="tgtPatientName"/>
<contextType value="variable"/>
<element value="text"/>
<transform value="evaluate"/>
<parameter>
<valueString
value="%srcPatientFirstName + ' ' + %srcPatientName"/>
</parameter>
</target>
</rule>
</rule>
</group>
<group>
<name value="setHumainNir"/>
<typeMode value="none"/>
<input>
<name value="srcPatient"/>
<type value="PatientTable"/>
<mode value="source"/>
</input>
<input>
<name value="tgtPatientIdentifier"/>
<mode value="target"/>
</input>
<rule>
<name value="setNir"/>
<source>
<context value="srcPatient"/>
<element value="nir"/>
<variable value="srcPatientNir"/>
</source>
<target>
<context value="tgtPatientIdentifier"/>
<contextType value="variable"/>
<element value="use"/>
<transform value="copy"/>
<parameter>
<valueString value="official"/>
</parameter>
</target>
<target>
<context value="tgtPatientIdentifier"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="cc"/>
<parameter>
<valueString
value="https://hl7.fr/ig/fhir/core/CodeSystem/fr-core-cs-v2-0203"/>
</parameter>
<parameter>
<valueString value="INS-NIR"/>
</parameter>
</target>
<target>
<context value="tgtPatientIdentifier"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="urn:oid:1.2.250.1.213.1.4.8"/>
</parameter>
</target>
<target>
<context value="tgtPatientIdentifier"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="srcPatientNir"/>
</parameter>
</target>
</rule>
</group>
<group>
<name value="patientAddress"/>
<typeMode value="none"/>
<input>
<name value="srcAddress"/>
<type value="AddressTable"/>
<mode value="source"/>
</input>
<input>
<name value="tgtPatient"/>
<type value="FHIRPatient"/>
<mode value="target"/>
</input>
<rule>
<name value="setAddress"/>
<source>
<context value="srcAddress"/>
</source>
<target>
<context value="tgtPatient"/>
<contextType value="variable"/>
<element value="address"/>
<variable value="newAddress"/>
<transform value="create"/>
<parameter>
<valueString value="Address"/>
</parameter>
</target>
<rule>
<name value="setZip"/>
<source>
<context value="srcAddress"/>
<element value="zipCode"/>
<variable value="srczip"/>
</source>
<target>
<context value="newAddress"/>
<contextType value="variable"/>
<element value="postalCode"/>
<transform value="copy"/>
<parameter>
<valueId value="srczip"/>
</parameter>
</target>
</rule>
<rule>
<name value="setCity"/>
<source>
<context value="srcAddress"/>
<element value="city"/>
<variable value="srcCity"/>
</source>
<target>
<context value="newAddress"/>
<contextType value="variable"/>
<element value="city"/>
<transform value="copy"/>
<parameter>
<valueId value="srcCity"/>
</parameter>
</target>
</rule>
<rule>
<name value="setCountry"/>
<source>
<context value="srcAddress"/>
<element value="country"/>
<variable value="srcCountry"/>
</source>
<target>
<context value="newAddress"/>
<contextType value="variable"/>
<element value="country"/>
<transform value="copy"/>
<parameter>
<valueId value="srcCountry"/>
</parameter>
</target>
</rule>
<rule>
<name value="setText"/>
<source>
<context value="srcAddress"/>
<element value="address"/>
<variable value="srcAddressText"/>
</source>
<target>
<context value="newAddress"/>
<contextType value="variable"/>
<element value="text"/>
<transform value="copy"/>
<parameter>
<valueId value="srcAddressText"/>
</parameter>
</target>
</rule>
<rule>
<name value="setUseHome"/>
<source>
<context value="srcAddress"/>
<condition value="current = true"/>
</source>
<target>
<context value="newAddress"/>
<contextType value="variable"/>
<element value="use"/>
<transform value="copy"/>
<parameter>
<valueString value="home"/>
</parameter>
</target>
</rule>
<rule>
<name value="setUseOld"/>
<source>
<context value="srcAddress"/>
<condition value="current = false"/>
</source>
<target>
<context value="newAddress"/>
<contextType value="variable"/>
<element value="use"/>
<transform value="copy"/>
<parameter>
<valueString value="old"/>
</parameter>
</target>
</rule>
<rule>
<name value="setCoordinatesExtension"/>
<source>
<context value="srcAddress"/>
<condition value="latitude.exists() or longitude.exists()"/>
</source>
<target>
<context value="newAddress"/>
<contextType value="variable"/>
<element value="extension"/>
<variable value="firstLevelExtension"/>
<transform value="create"/>
<parameter>
<valueString value="Extension"/>
</parameter>
</target>
<rule>
<name value="setflext"/>
<source>
<context value="srcAddress"/>
</source>
<target>
<context value="firstLevelExtension"/>
<contextType value="variable"/>
<element value="url"/>
<transform value="evaluate"/>
<parameter>
<valueString
value="'http://hl7.org/fhir/StructureDefinition/geolocation'"/>
</parameter>
</target>
<rule>
<name value="setLatExt"/>
<source>
<context value="srcAddress"/>
<element value="latitude"/>
<variable value="srcLat"/>
</source>
<target>
<context value="firstLevelExtension"/>
<contextType value="variable"/>
<element value="extension"/>
<variable value="latExtension"/>
<transform value="create"/>
<parameter>
<valueString value="Extension"/>
</parameter>
</target>
<rule>
<name value="setLat"/>
<source>
<context value="srcLat"/>
</source>
<target>
<context value="latExtension"/>
<contextType value="variable"/>
<element value="url"/>
<transform value="evaluate"/>
<parameter>
<valueString value="'latitude'"/>
</parameter>
</target>
<target>
<context value="latExtension"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="srcLat"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="setLongExt"/>
<source>
<context value="srcAddress"/>
<element value="longitude"/>
<variable value="srcLong"/>
</source>
<target>
<context value="firstLevelExtension"/>
<contextType value="variable"/>
<element value="extension"/>
<variable value="longExtension"/>
<transform value="create"/>
<parameter>
<valueString value="Extension"/>
</parameter>
</target>
<rule>
<name value="setLong"/>
<source>
<context value="srcLong"/>
</source>
<target>
<context value="longExtension"/>
<contextType value="variable"/>
<element value="url"/>
<transform value="evaluate"/>
<parameter>
<valueString value="'longitude'"/>
</parameter>
</target>
<target>
<context value="longExtension"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="srcLong"/>
</parameter>
</target>
</rule>
</rule>
</rule>
</rule>
</rule>
</group>
<group>
<name value="encounter"/>
<typeMode value="none"/>
<input>
<name value="srcSejour"/>
<type value="SejourTable"/>
<mode value="source"/>
</input>
<input>
<name value="srcPatient"/>
<type value="FHIRPatient"/>
<mode value="source"/>
</input>
<input>
<name value="tgtEncounter"/>
<type value="FHIREncounter"/>
<mode value="target"/>
</input>
<rule>
<name value="setId"/>
<source>
<context value="srcSejour"/>
</source>
<target>
<context value="tgtEncounter"/>
<contextType value="variable"/>
<element value="id"/>
<transform value="uuid"/>
</target>
</rule>
<rule>
<name value="setMeta"/>
<source>
<context value="srcSejour"/>
<element value="sejourNi"/>
<variable value="srcNi"/>
</source>
<target>
<context value="tgtEncounter"/>
<contextType value="variable"/>
<element value="meta"/>
<variable value="tgtMeta"/>
</target>
<dependent>
<name value="setEncounterMeta"/>
<variable value="srcNi"/>
<variable value="tgtMeta"/>
</dependent>
<documentation
value="copie la valeur du champ patientNi de la table Patient dans l'élément id de la ressource FHIR Patient"/>
</rule>
<rule>
<name value="setStatus"/>
<source>
<context value="srcSejour"/>
</source>
<target>
<context value="tgtEncounter"/>
<contextType value="variable"/>
<element value="status"/>
<transform value="copy"/>
<parameter>
<valueString value="finished"/>
</parameter>
</target>
</rule>
<rule>
<name value="setEncounterClass"/>
<source>
<context value="srcSejour"/>
<element value="sejourType"/>
<variable value="srcSejourType"/>
</source>
<target>
<context value="tgtEncounter"/>
<contextType value="variable"/>
<element value="class"/>
<transform value="translate"/>
<parameter>
<valueId value="srcSejourType"/>
</parameter>
<parameter>
<valueString
value="https://interop.aphp.fr/ig/fhir/dm/ConceptMap/DpiEncounterType2SemanticLayerEncounterClass"/>
</parameter>
<parameter>
<valueString value="Coding"/>
</parameter>
</target>
</rule>
<rule>
<name value="setSubjectReference"/>
<source>
<context value="srcPatient"/>
<element value="id"/>
<variable value="patientId"/>
</source>
<target>
<context value="tgtEncounter"/>
<contextType value="variable"/>
<element value="subject"/>
<variable value="newSubject"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<dependent>
<name value="setSubjectReference"/>
<variable value="patientId"/>
<variable value="newSubject"/>
</dependent>
</rule>
<rule>
<name value="patientNi"/>
<source>
<context value="srcSejour"/>
<element value="patientNi"/>
</source>
<documentation
value="fk vers le patient à conserver pour la construction auto du périmètre final"/>
</rule>
<rule>
<name value="setPeriod"/>
<source>
<context value="srcSejour"/>
</source>
<target>
<context value="tgtEncounter"/>
<contextType value="variable"/>
<element value="period"/>
<variable value="newActualPeriod"/>
<transform value="create"/>
<parameter>
<valueString value="Period"/>
</parameter>
</target>
<rule>
<name value="setStart"/>
<source>
<context value="srcSejour"/>
<element value="sejourStart"/>
<variable value="srcPeriodStart"/>
</source>
<target>
<context value="newActualPeriod"/>
<contextType value="variable"/>
<element value="start"/>
<transform value="copy"/>
<parameter>
<valueId value="srcPeriodStart"/>
</parameter>
</target>
</rule>
<rule>
<name value="setEnd"/>
<source>
<context value="srcSejour"/>
<element value="sejourEnd"/>
<variable value="srcPeriodEnd"/>
</source>
<target>
<context value="newActualPeriod"/>
<contextType value="variable"/>
<element value="end"/>
<transform value="copy"/>
<parameter>
<valueId value="srcPeriodEnd"/>
</parameter>
</target>
</rule>
</rule>
</group>
<group>
<name value="setEncounterMeta"/>
<typeMode value="none"/>
<input>
<name value="srcNi"/>
<mode value="source"/>
</input>
<input>
<name value="tgtMeta"/>
<type value="FHIRMeta"/>
<mode value="target"/>
</input>
<rule>
<name value="setSource"/>
<source>
<context value="srcNi"/>
</source>
<target>
<context value="tgtMeta"/>
<contextType value="variable"/>
<element value="source"/>
<transform value="evaluate"/>
<parameter>
<valueString
value="'https://aphp.fr/fhir/Endpoint/dpi/SejourTable' + '/' + %srcNi.toString()"/>
</parameter>
</target>
</rule>
</group>
<group>
<name value="setSubjectReference"/>
<typeMode value="none"/>
<input>
<name value="srcPatientId"/>
<mode value="source"/>
</input>
<input>
<name value="newSubject"/>
<mode value="target"/>
</input>
<rule>
<name value="setReference"/>
<source>
<context value="srcPatientId"/>
</source>
<target>
<context value="newSubject"/>
<contextType value="variable"/>
<element value="reference"/>
<transform value="evaluate"/>
<parameter>
<valueString value="'Patient/' + %srcPatientId.toString()"/>
</parameter>
</target>
</rule>
</group>
<group>
<name value="procedure"/>
<typeMode value="none"/>
<input>
<name value="srcActe"/>
<type value="ActeTable"/>
<mode value="source"/>
</input>
<input>
<name value="srcPatient"/>
<type value="FHIRPatient"/>
<mode value="source"/>
</input>
<input>
<name value="srcEncounter"/>
<type value="FHIREncounter"/>
<mode value="source"/>
</input>
<input>
<name value="tgtProcedure"/>
<type value="FHIRProcedure"/>
<mode value="target"/>
</input>
<rule>
<name value="setId"/>
<source>
<context value="srcActe"/>
</source>
<target>
<context value="tgtProcedure"/>
<contextType value="variable"/>
<element value="id"/>
<transform value="uuid"/>
</target>
</rule>
<rule>
<name value="setMeta"/>
<source>
<context value="srcActe"/>
<element value="acteNi"/>
<variable value="srcNi"/>
</source>
<target>
<context value="tgtProcedure"/>
<contextType value="variable"/>
<element value="meta"/>
<variable value="tgtMeta"/>
</target>
<dependent>
<name value="setProcedureMeta"/>
<variable value="srcNi"/>
<variable value="tgtMeta"/>
</dependent>
</rule>
<rule>
<name value="setSubjectReference"/>
<source>
<context value="srcPatient"/>
<element value="id"/>
<variable value="patientId"/>
</source>
<target>
<context value="tgtProcedure"/>
<contextType value="variable"/>
<element value="subject"/>
<variable value="newSubject"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<dependent>
<name value="setSubjectReference"/>
<variable value="patientId"/>
<variable value="newSubject"/>
</dependent>
</rule>
<rule>
<name value="setEncounterReference"/>
<source>
<context value="srcEncounter"/>
<element value="id"/>
<variable value="encounterId"/>
</source>
<target>
<context value="tgtProcedure"/>
<contextType value="variable"/>
<element value="encounter"/>
<variable value="newEncounter"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<dependent>
<name value="setEncounterReference"/>
<variable value="encounterId"/>
<variable value="newEncounter"/>
</dependent>
</rule>
<rule>
<name value="setStatus"/>
<source>
<context value="srcActe"/>
</source>
<target>
<context value="tgtProcedure"/>
<contextType value="variable"/>
<element value="status"/>
<transform value="copy"/>
<parameter>
<valueString value="completed"/>
</parameter>
</target>
</rule>
<rule>
<name value="setDate"/>
<source>
<context value="srcActe"/>
<condition value="dateStart.exists() or dateEnd.exists"/>
</source>
<target>
<context value="tgtProcedure"/>
<contextType value="variable"/>
<element value="performed"/>
<variable value="tgtProcedurePeriod"/>
<transform value="create"/>
<parameter>
<valueString value="Period"/>
</parameter>
</target>
<rule>
<name value="setActeStart"/>
<source>
<context value="srcActe"/>
<element value="dateStart"/>
<variable value="srcActeStart"/>
</source>
<target>
<context value="tgtProcedurePeriod"/>
<contextType value="variable"/>
<element value="start"/>
<transform value="copy"/>
<parameter>
<valueId value="srcActeStart"/>
</parameter>
</target>
</rule>
<rule>
<name value="setActeEnd"/>
<source>
<context value="srcActe"/>
<element value="dateEnd"/>
<variable value="srcActeEnd"/>
</source>
<target>
<context value="tgtProcedurePeriod"/>
<contextType value="variable"/>
<element value="end"/>
<transform value="copy"/>
<parameter>
<valueId value="srcActeEnd"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="setCode"/>
<source>
<context value="srcActe"/>
<element value="code"/>
<variable value="acteCode"/>
</source>
<target>
<context value="tgtProcedure"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="cc"/>
<parameter>
<valueString value="https://smt.esante.gouv.fr/terminologie-ccam"/>
</parameter>
<parameter>
<valueId value="acteCode"/>
</parameter>
</target>
<documentation value="C'est le code de la CCAM facturante"/>
</rule>
</group>
<group>
<name value="setProcedureMeta"/>
<typeMode value="none"/>
<input>
<name value="srcNi"/>
<mode value="source"/>
</input>
<input>
<name value="tgtMeta"/>
<type value="FHIRMeta"/>
<mode value="target"/>
</input>
<rule>
<name value="setSource"/>
<source>
<context value="srcNi"/>
</source>
<target>
<context value="tgtMeta"/>
<contextType value="variable"/>
<element value="source"/>
<transform value="evaluate"/>
<parameter>
<valueString
value="'https://aphp.fr/fhir/Endpoint/dpi/ActeTable' + '/' + %srcNi.toString()"/>
</parameter>
</target>
</rule>
</group>
<group>
<name value="setEncounterReference"/>
<typeMode value="none"/>
<input>
<name value="srcEncounterId"/>
<mode value="source"/>
</input>
<input>
<name value="newEncounter"/>
<mode value="target"/>
</input>
<rule>
<name value="setReference"/>
<source>
<context value="srcEncounterId"/>
</source>
<target>
<context value="newEncounter"/>
<contextType value="variable"/>
<element value="reference"/>
<transform value="evaluate"/>
<parameter>
<valueString value="'Encounter/' + %srcEncounterId.toString()"/>
</parameter>
</target>
</rule>
</group>
<group>
<name value="condition"/>
<typeMode value="none"/>
<input>
<name value="srcDiag"/>
<type value="DiagTable"/>
<mode value="source"/>
</input>
<input>
<name value="srcPatient"/>
<type value="FHIRPatient"/>
<mode value="source"/>
</input>
<input>
<name value="srcEncounter"/>
<type value="FHIREncounter"/>
<mode value="source"/>
</input>
<input>
<name value="tgtCondition"/>
<type value="FHIRCondition"/>
<mode value="target"/>
</input>
<rule>
<name value="setId"/>
<source>
<context value="srcDiag"/>
</source>
<target>
<context value="tgtCondition"/>
<contextType value="variable"/>
<element value="id"/>
<transform value="uuid"/>
</target>
</rule>
<rule>
<name value="setMeta"/>
<source>
<context value="srcDiag"/>
<element value="diagNi"/>
<variable value="srcNi"/>
</source>
<target>
<context value="tgtCondition"/>
<contextType value="variable"/>
<element value="meta"/>
<variable value="tgtMeta"/>
</target>
<dependent>
<name value="setConditionMeta"/>
<variable value="srcNi"/>
<variable value="tgtMeta"/>
</dependent>
</rule>
<rule>
<name value="setSubjectReference"/>
<source>
<context value="srcPatient"/>
<element value="id"/>
<variable value="patientId"/>
</source>
<target>
<context value="tgtCondition"/>
<contextType value="variable"/>
<element value="subject"/>
<variable value="newSubject"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<dependent>
<name value="setSubjectReference"/>
<variable value="patientId"/>
<variable value="newSubject"/>
</dependent>
</rule>
<rule>
<name value="setEncounterReference"/>
<source>
<context value="srcEncounter"/>
<element value="id"/>
<variable value="encounterId"/>
</source>
<target>
<context value="tgtCondition"/>
<contextType value="variable"/>
<element value="encounter"/>
<variable value="newEncounter"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<dependent>
<name value="setEncounterReference"/>
<variable value="encounterId"/>
<variable value="newEncounter"/>
</dependent>
</rule>
<rule>
<name value="setVerificationStatus"/>
<source>
<context value="srcDiag"/>
</source>
<target>
<context value="tgtCondition"/>
<contextType value="variable"/>
<element value="verificationStatus"/>
<transform value="copy"/>
<parameter>
<valueString value="confirmed"/>
</parameter>
</target>
</rule>
<rule>
<name value="setCategory"/>
<source>
<context value="srcDiag"/>
</source>
<target>
<context value="tgtCondition"/>
<contextType value="variable"/>
<element value="category"/>
<transform value="cc"/>
<parameter>
<valueString
value="http://terminology.hl7.org/CodeSystem/condition-category"/>
</parameter>
<parameter>
<valueString value="encounter-diagnosis"/>
</parameter>
</target>
</rule>
<rule>
<name value="setCode"/>
<source>
<context value="srcDiag"/>
<element value="code"/>
<variable value="diagCode"/>
</source>
<target>
<context value="tgtCondition"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="cc"/>
<parameter>
<valueString value="http://hl7.org/fhir/sid/icd-10"/>
</parameter>
<parameter>
<valueId value="diagCode"/>
</parameter>
</target>
</rule>
</group>
<group>
<name value="setConditionMeta"/>
<typeMode value="none"/>
<input>
<name value="srcNi"/>
<mode value="source"/>
</input>
<input>
<name value="tgtMeta"/>
<type value="FHIRMeta"/>
<mode value="target"/>
</input>
<rule>
<name value="setSource"/>
<source>
<context value="srcNi"/>
</source>
<target>
<context value="tgtMeta"/>
<contextType value="variable"/>
<element value="source"/>
<transform value="evaluate"/>
<parameter>
<valueString
value="'https://aphp.fr/fhir/Endpoint/dpi/DiagTable' + '/' + %srcNi.toString()"/>
</parameter>
</target>
</rule>
</group>
<group>
<name value="observationBiol"/>
<typeMode value="none"/>
<input>
<name value="srcBiology"/>
<type value="BiologyTable"/>
<mode value="source"/>
</input>
<input>
<name value="srcPatient"/>
<type value="FHIRPatient"/>
<mode value="source"/>
</input>
<input>
<name value="srcEncounter"/>
<type value="FHIREncounter"/>
<mode value="source"/>
</input>
<input>
<name value="tgtObservation"/>
<type value="FHIRObservation"/>
<mode value="target"/>
</input>
<rule>
<name value="setId"/>
<source>
<context value="srcBiology"/>
</source>
<target>
<context value="tgtObservation"/>
<contextType value="variable"/>
<element value="id"/>
<transform value="uuid"/>
</target>
</rule>
<rule>
<name value="setMeta"/>
<source>
<context value="srcBiology"/>
<element value="biologyNi"/>
<variable value="srcNi"/>
</source>
<target>
<context value="tgtObservation"/>
<contextType value="variable"/>
<element value="meta"/>
<variable value="tgtMeta"/>
</target>
<dependent>
<name value="setBiologyMeta"/>
<variable value="srcNi"/>
<variable value="tgtMeta"/>
</dependent>
</rule>
<rule>
<name value="setSubjectReference"/>
<source>
<context value="srcPatient"/>
<element value="id"/>
<variable value="patientId"/>
</source>
<target>
<context value="tgtObservation"/>
<contextType value="variable"/>
<element value="subject"/>
<variable value="newSubject"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<dependent>
<name value="setSubjectReference"/>
<variable value="patientId"/>
<variable value="newSubject"/>
</dependent>
</rule>
<rule>
<name value="setEncounterReference"/>
<source>
<context value="srcEncounter"/>
<element value="id"/>
<variable value="encounterId"/>
</source>
<target>
<context value="tgtObservation"/>
<contextType value="variable"/>
<element value="encounter"/>
<variable value="newEncounter"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<dependent>
<name value="setEncounterReference"/>
<variable value="encounterId"/>
<variable value="newEncounter"/>
</dependent>
</rule>
<rule>
<name value="setStatus"/>
<source>
<context value="srcBiology"/>
</source>
<target>
<context value="tgtObservation"/>
<contextType value="variable"/>
<element value="status"/>
<transform value="copy"/>
<parameter>
<valueString value="final"/>
</parameter>
</target>
</rule>
<rule>
<name value="setCategory"/>
<source>
<context value="srcBiology"/>
</source>
<target>
<context value="tgtObservation"/>
<contextType value="variable"/>
<element value="category"/>
<transform value="cc"/>
<parameter>
<valueString
value="http://terminology.hl7.org/CodeSystem/observation-category"/>
</parameter>
<parameter>
<valueString value="vital-signs"/>
</parameter>
</target>
</rule>
<rule>
<name value="setDate"/>
<source>
<context value="srcBiology"/>
<element value="biologyDatePrel"/>
<variable value="biologyDatePrel"/>
</source>
<target>
<context value="tgtObservation"/>
<contextType value="variable"/>
<element value="effective"/>
<transform value="copy"/>
<parameter>
<valueId value="biologyDatePrel"/>
</parameter>
</target>
</rule>
<rule>
<name value="setCode"/>
<source>
<context value="srcBiology"/>
<element value="biologyCode"/>
<variable value="biologyCode"/>
</source>
<target>
<context value="tgtObservation"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="cc"/>
<parameter>
<valueString value="http://loinc.org"/>
</parameter>
<parameter>
<valueId value="biologyCode"/>
</parameter>
</target>
</rule>
<rule>
<name value="setQuantity"/>
<source>
<context value="srcBiology"/>
<element value="biologyValue"/>
</source>
<target>
<context value="tgtObservation"/>
<contextType value="variable"/>
<element value="value"/>
<variable value="tgtObsQuantity"/>
<transform value="create"/>
<parameter>
<valueString value="Quantity"/>
</parameter>
</target>
<rule>
<name value="setValue"/>
<source>
<context value="srcBiology"/>
<element value="biologyValue"/>
<variable value="biologyValue"/>
</source>
<target>
<context value="tgtObsQuantity"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="biologyValue"/>
</parameter>
</target>
</rule>
<rule>
<name value="setUnit"/>
<source>
<context value="srcBiology"/>
<element value="biologyUnit"/>
<variable value="biologyUnit"/>
</source>
<target>
<context value="tgtObsQuantity"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueId value="biologyUnit"/>
</parameter>
</target>
<target>
<context value="tgtObsQuantity"/>
<contextType value="variable"/>
<element value="unit"/>
<transform value="copy"/>
<parameter>
<valueId value="biologyUnit"/>
</parameter>
</target>
<target>
<context value="tgtObsQuantity"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="http://unitsofmeasure.org"/>
</parameter>
</target>
</rule>
</rule>
</group>
<group>
<name value="setBiologyMeta"/>
<typeMode value="none"/>
<input>
<name value="srcNi"/>
<mode value="source"/>
</input>
<input>
<name value="tgtMeta"/>
<type value="FHIRMeta"/>
<mode value="target"/>
</input>
<rule>
<name value="setSource"/>
<source>
<context value="srcNi"/>
</source>
<target>
<context value="tgtMeta"/>
<contextType value="variable"/>
<element value="source"/>
<transform value="evaluate"/>
<parameter>
<valueString
value="'https://aphp.fr/fhir/Endpoint/dpi/BiologyTable' + '/' + %srcNi.toString()"/>
</parameter>
</target>
</rule>
</group>
<group>
<name value="setEntryRequestAndFullUrl"/>
<typeMode value="none"/>
<input>
<name value="newRes"/>
<mode value="source"/>
</input>
<input>
<name value="tgtEntry"/>
<mode value="target"/>
</input>
<rule>
<name value="setResourceType"/>
<source>
<context value="newRes"/>
<element value="id"/>
<variable value="newResId"/>
</source>
<rule>
<name value="setFullUrl"/>
<source>
<context value="newResId"/>
</source>
<target>
<context value="tgtEntry"/>
<contextType value="variable"/>
<element value="fullUrl"/>
<transform value="evaluate"/>
<parameter>
<valueString
value="'https://aphp.fr/' + %newRes.type().name + '/' + %newResId"/>
</parameter>
</target>
</rule>
<rule>
<name value="setRequest"/>
<source>
<context value="newResId"/>
</source>
<target>
<context value="tgtEntry"/>
<contextType value="variable"/>
<element value="request"/>
<variable value="tgtEntryRequest"/>
</target>
<target>
<context value="tgtEntryRequest"/>
<contextType value="variable"/>
<element value="method"/>
<transform value="copy"/>
<parameter>
<valueString value="POST"/>
</parameter>
</target>
<target>
<context value="tgtEntryRequest"/>
<contextType value="variable"/>
<element value="url"/>
<transform value="evaluate"/>
<parameter>
<valueString value="%newRes.type().name + '/' + %newResId"/>
</parameter>
</target>
</rule>
</rule>
</group>
</StructureMap>