Data Management with FHIR
0.1.0 - ci-build France flag

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

: Alignement de l''usage Core du modèle physique du DPI vers les ressources FHIR - XML Representation

Draft as of 2025-10-23

Raw xml | Download


<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"> &quot;</span>https://interop.aphp.fr/ig/fhir/dm/StructureMap/CorePhysical2FHIR<span style="color: navy">&quot; = &quot;</span>CorePhysical2FHIR<span style="color: navy">&quot;

</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"> &quot;</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreDataSet<span style="color: navy">&quot; </span><b>alias </b>DataSet <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> &quot;</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CorePatient<span style="color: navy">&quot; </span><b>alias </b>PatientTable <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> &quot;</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreSejour<span style="color: navy">&quot; </span><b>alias </b>SejourTable <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> &quot;</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreBiology<span style="color: navy">&quot; </span><b>alias </b>BiologyTable <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> &quot;</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreClinical<span style="color: navy">&quot; </span><b>alias </b>ClinicalTable <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> &quot;</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreDiag<span style="color: navy">&quot; </span><b>alias </b>DiagTable <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> &quot;</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreActe<span style="color: navy">&quot; </span><b>alias </b>ActeTable <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> &quot;</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreAddress<span style="color: navy">&quot; </span><b>alias </b>AddressTable <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> &quot;</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreMedicationAdm<span style="color: navy">&quot; </span><b>alias </b>MedicationAdmTable <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> &quot;</span>https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/CoreMedicationPre<span style="color: navy">&quot; </span><b>alias </b>MedicationPreTable <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> &quot;</span><a href="http://hl7.org/fhir/R4/bundle.html" title="Bundle">http://hl7.org/fhir/StructureDefinition/Bundle</a><span style="color: navy">&quot; </span><b>alias </b>FHIRBundle <b>as </b><b>target</b>
<b>uses</b><span style="color: navy"> &quot;</span><a href="http://hl7.org/fhir/R4/patient.html" title="Patient">http://hl7.org/fhir/StructureDefinition/Patient</a><span style="color: navy">&quot; </span><b>alias </b>FHIRPatient <b>as </b><b>target</b>
<b>uses</b><span style="color: navy"> &quot;</span><a href="http://hl7.org/fhir/R4/encounter.html" title="Encounter">http://hl7.org/fhir/StructureDefinition/Encounter</a><span style="color: navy">&quot; </span><b>alias </b>FHIREncounter <b>as </b><b>target</b>
<b>uses</b><span style="color: navy"> &quot;</span><a href="http://hl7.org/fhir/R4/observation.html" title="Observation">http://hl7.org/fhir/StructureDefinition/Observation</a><span style="color: navy">&quot; </span><b>alias </b>FHIRObservation <b>as </b><b>target</b>
<b>uses</b><span style="color: navy"> &quot;</span><a href="http://hl7.org/fhir/R4/datatypes.html#Meta" title="Meta">http://hl7.org/fhir/StructureDefinition/Meta</a><span style="color: navy">&quot; </span><b>alias </b>FHIRMeta <b>as </b><b>target</b>
<b>uses</b><span style="color: navy"> &quot;</span><a href="http://hl7.org/fhir/R4/procedure.html" title="Procedure">http://hl7.org/fhir/StructureDefinition/Procedure</a><span style="color: navy">&quot; </span><b>alias </b>FHIRProcedure <b>as </b><b>target</b>
<b>uses</b><span style="color: navy"> &quot;</span><a href="http://hl7.org/fhir/R4/condition.html" title="Condition">http://hl7.org/fhir/StructureDefinition/Condition</a><span style="color: navy">&quot; </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> &lt;&lt;types&gt;&gt;</b><span style="color: navy"> {
</span>  srcDataSet<span style="color: navy"><b> -&gt; </b></span>tgtBundle.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>&quot;setId&quot;</i><span style="color: navy">;</span>
  srcDataSet<span style="color: navy"><b> -&gt; </b></span>tgtBundle.type = <span style="color: blue">'transaction'</span> <i>&quot;setType&quot;</i><span style="color: navy">;</span>
  srcDataSet.patient<b> as </b><span style="color: maroon">srcPatient</span><span style="color: navy"><b> -&gt; </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>&quot;setPatient&quot;</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>&quot;setRequestAndFullUrl&quot;</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>&quot;addPatientAddress&quot;</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> -&gt; </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>&quot;setEncounter&quot;</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>&quot;setRequestAndFullUrl&quot;</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> -&gt; </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>&quot;setProcedure&quot;</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>&quot;setRequestAndFullUrl&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span> <i>&quot;createProcedure&quot;</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> -&gt; </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>&quot;setCondition&quot;</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>&quot;setRequestAndFullUrl&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span> <i>&quot;createProcedure&quot;</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> -&gt; </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>&quot;setBiology&quot;</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>&quot;setRequestAndFullUrl&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span> <i>&quot;createObservation&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;createEncounter&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;createPatient&quot;</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> -&gt; </b></span>tgtPatient.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>&quot;setId&quot;</i><span style="color: navy">;</span>
  srcPatient.patientNi<b> as </b><span style="color: maroon">srcNi</span><span style="color: navy"><b> -&gt; </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>&quot;setMeta&quot;</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> -&gt; </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>&quot;setHumainName&quot;</i><span style="color: navy">;</span>
  srcPatient<span style="color: navy"><b> -&gt; </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>&quot;setHumainNir&quot;</i><span style="color: navy">;</span>
  srcPatient.gender<b> as </b><span style="color: maroon">srcPatientGender</span><span style="color: navy"><b> -&gt; </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>&quot;setGender&quot;</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> -&gt; </b></span>tgtPatient.birthDate = <span style="color: maroon">srcPatientBirthDate</span> <i>&quot;setBirthDate&quot;</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> -&gt; </b></span>tgtMeta.source = <span style="color: navy">(</span>'https://aphp.fr/fhir/Endpoint/dpi/PatientTable' + '/' + %srcNi.toString()<span style="color: navy">)</span> <i>&quot;setSource&quot;</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> -&gt; </b></span>tgtPatientName.use = <span style="color: blue">'usual'</span> <i>&quot;setUse&quot;</i><span style="color: navy">;</span>
  <span style="color: #b36b00" title="Cet élément nétait pas défini avant R5">// srcPatient -&gt; tgtPatientName.text = (%srcPatient.firstName + ' ' + %srcPatient.name) &quot;setText&quot;;</span>
  <span style="color: #b36b00" title="Cet élément nétait pas défini avant R5">// srcPatient.name as srcPatientName -&gt; tgtPatientName.family = srcPatientName &quot;setName&quot;;</span>
  <span style="color: #b36b00" title="Cet élément nétait pas défini avant R5">// srcPatient.firstName as srcPatientFirstName -&gt; tgtPatientName.given = srcPatientFirstName &quot;setFirstName&quot;;</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> -&gt; </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> -&gt; </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>&quot;setFirstNameAndText&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;setName&quot;</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> -&gt; </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>&quot;setNir&quot;</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> -&gt; </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> -&gt; </b></span>newAddress.postalCode = <span style="color: maroon">srczip</span> <i>&quot;setZip&quot;</i><span style="color: navy">;</span>
    srcAddress.city<b> as </b><span style="color: maroon">srcCity</span><span style="color: navy"><b> -&gt; </b></span>newAddress.city = <span style="color: maroon">srcCity</span> <i>&quot;setCity&quot;</i><span style="color: navy">;</span>
    srcAddress.country<b> as </b><span style="color: maroon">srcCountry</span><span style="color: navy"><b> -&gt; </b></span>newAddress.country = <span style="color: maroon">srcCountry</span> <i>&quot;setCountry&quot;</i><span style="color: navy">;</span>
    srcAddress.address<b> as </b><span style="color: maroon">srcAddressText</span><span style="color: navy"><b> -&gt; </b></span>newAddress.text = <span style="color: maroon">srcAddressText</span> <i>&quot;setText&quot;</i><span style="color: navy">;</span>
    srcAddress<b> where </b>current = true<span style="color: navy"><b> -&gt; </b></span>newAddress.use = <span style="color: blue">'home'</span> <i>&quot;setUseHome&quot;</i><span style="color: navy">;</span>
    srcAddress<b> where </b>current = false<span style="color: navy"><b> -&gt; </b></span>newAddress.use = <span style="color: blue">'old'</span> <i>&quot;setUseOld&quot;</i><span style="color: navy">;</span>
    srcAddress<b> where </b>latitude.exists() or longitude.exists()<span style="color: navy"><b> -&gt; </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> -&gt; </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> -&gt; </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> -&gt; </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>&quot;setLat&quot;</i><span style="color: navy">;</span>
        <span style="color: navy">}</span> <i>&quot;setLatExt&quot;</i><span style="color: navy">;</span>
        srcAddress.longitude<b> as </b><span style="color: maroon">srcLong</span><span style="color: navy"><b> -&gt; </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> -&gt; </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>&quot;setLong&quot;</i><span style="color: navy">;</span>
        <span style="color: navy">}</span> <i>&quot;setLongExt&quot;</i><span style="color: navy">;</span>
      <span style="color: navy">}</span> <i>&quot;setflext&quot;</i><span style="color: navy">;</span>
    <span style="color: navy">}</span> <i>&quot;setCoordinatesExtension&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;setAddress&quot;</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> -&gt; </b></span>tgtEncounter.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>&quot;setId&quot;</i><span style="color: navy">;</span>
  srcSejour.sejourNi<b> as </b><span style="color: maroon">srcNi</span><span style="color: navy"><b> -&gt; </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>&quot;setMeta&quot;</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> -&gt; </b></span>tgtEncounter.status = <span style="color: blue">'finished'</span> <i>&quot;setStatus&quot;</i><span style="color: navy">;</span>
  srcSejour.sejourType<b> as </b><span style="color: maroon">srcSejourType</span><span style="color: navy"><b> -&gt; </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>&quot;setEncounterClass&quot;</i><span style="color: navy">;</span>
  srcPatient.id<b> as </b><span style="color: maroon">patientId</span><span style="color: navy"><b> -&gt; </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>&quot;setSubjectReference&quot;</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> -&gt; </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> -&gt; </b></span>newActualPeriod.start = <span style="color: maroon">srcPeriodStart</span> <i>&quot;setStart&quot;</i><span style="color: navy">;</span>
    srcSejour.sejourEnd<b> as </b><span style="color: maroon">srcPeriodEnd</span><span style="color: navy"><b> -&gt; </b></span>newActualPeriod.end = <span style="color: maroon">srcPeriodEnd</span> <i>&quot;setEnd&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;setPeriod&quot;</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> -&gt; </b></span>tgtMeta.source = <span style="color: navy">(</span>'https://aphp.fr/fhir/Endpoint/dpi/SejourTable' + '/' + %srcNi.toString()<span style="color: navy">)</span> <i>&quot;setSource&quot;</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> -&gt; </b></span>newSubject.reference = <span style="color: navy">(</span>'Patient/' + %srcPatientId.toString()<span style="color: navy">)</span> <i>&quot;setReference&quot;</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> -&gt; </b></span>tgtProcedure.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>&quot;setId&quot;</i><span style="color: navy">;</span>
  srcActe.acteNi<b> as </b><span style="color: maroon">srcNi</span><span style="color: navy"><b> -&gt; </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>&quot;setMeta&quot;</i><span style="color: navy">;</span>
  srcPatient.id<b> as </b><span style="color: maroon">patientId</span><span style="color: navy"><b> -&gt; </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>&quot;setSubjectReference&quot;</i><span style="color: navy">;</span>
  srcEncounter.id<b> as </b><span style="color: maroon">encounterId</span><span style="color: navy"><b> -&gt; </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>&quot;setEncounterReference&quot;</i><span style="color: navy">;</span>
  srcActe<span style="color: navy"><b> -&gt; </b></span>tgtProcedure.status = <span style="color: blue">'completed'</span> <i>&quot;setStatus&quot;</i><span style="color: navy">;</span>
  srcActe<b> where </b>dateStart.exists() or dateEnd.exists<span style="color: navy"><b> -&gt; </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> -&gt; </b></span>tgtProcedurePeriod.start = <span style="color: maroon">srcActeStart</span> <i>&quot;setActeStart&quot;</i><span style="color: navy">;</span>
    srcActe.dateEnd<b> as </b><span style="color: maroon">srcActeEnd</span><span style="color: navy"><b> -&gt; </b></span>tgtProcedurePeriod.end = <span style="color: maroon">srcActeEnd</span> <i>&quot;setActeEnd&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;setDate&quot;</i><span style="color: navy">;</span>
  srcActe.code<b> as </b><span style="color: maroon">acteCode</span><span style="color: navy"><b> -&gt; </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>&quot;setCode&quot;</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> -&gt; </b></span>tgtMeta.source = <span style="color: navy">(</span>'https://aphp.fr/fhir/Endpoint/dpi/ActeTable' + '/' + %srcNi.toString()<span style="color: navy">)</span> <i>&quot;setSource&quot;</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> -&gt; </b></span>newEncounter.reference = <span style="color: navy">(</span>'Encounter/' + %srcEncounterId.toString()<span style="color: navy">)</span> <i>&quot;setReference&quot;</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> -&gt; </b></span>tgtCondition.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>&quot;setId&quot;</i><span style="color: navy">;</span>
  srcDiag.diagNi<b> as </b><span style="color: maroon">srcNi</span><span style="color: navy"><b> -&gt; </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>&quot;setMeta&quot;</i><span style="color: navy">;</span>
  srcPatient.id<b> as </b><span style="color: maroon">patientId</span><span style="color: navy"><b> -&gt; </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>&quot;setSubjectReference&quot;</i><span style="color: navy">;</span>
  srcEncounter.id<b> as </b><span style="color: maroon">encounterId</span><span style="color: navy"><b> -&gt; </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>&quot;setEncounterReference&quot;</i><span style="color: navy">;</span>
  srcDiag<span style="color: navy"><b> -&gt; </b></span>tgtCondition.verificationStatus = <span style="color: blue">'confirmed'</span> <i>&quot;setVerificationStatus&quot;</i><span style="color: navy">;</span>
  srcDiag<span style="color: navy"><b> -&gt; </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>&quot;setCategory&quot;</i><span style="color: navy">;</span>
  srcDiag.code<b> as </b><span style="color: maroon">diagCode</span><span style="color: navy"><b> -&gt; </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>&quot;setCode&quot;</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> -&gt; </b></span>tgtMeta.source = <span style="color: navy">(</span>'https://aphp.fr/fhir/Endpoint/dpi/DiagTable' + '/' + %srcNi.toString()<span style="color: navy">)</span> <i>&quot;setSource&quot;</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> -&gt; </b></span>tgtObservation.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>&quot;setId&quot;</i><span style="color: navy">;</span>
  srcBiology.biologyNi<b> as </b><span style="color: maroon">srcNi</span><span style="color: navy"><b> -&gt; </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>&quot;setMeta&quot;</i><span style="color: navy">;</span>
  srcPatient.id<b> as </b><span style="color: maroon">patientId</span><span style="color: navy"><b> -&gt; </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>&quot;setSubjectReference&quot;</i><span style="color: navy">;</span>
  srcEncounter.id<b> as </b><span style="color: maroon">encounterId</span><span style="color: navy"><b> -&gt; </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>&quot;setEncounterReference&quot;</i><span style="color: navy">;</span>
  srcBiology<span style="color: navy"><b> -&gt; </b></span>tgtObservation.status = <span style="color: blue">'final'</span> <i>&quot;setStatus&quot;</i><span style="color: navy">;</span>
  srcBiology<span style="color: navy"><b> -&gt; </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>&quot;setCategory&quot;</i><span style="color: navy">;</span>
  srcBiology.biologyDatePrel<b> as </b><span style="color: maroon">biologyDatePrel</span><span style="color: navy"><b> -&gt; </b></span>tgtObservation.effective = <span style="color: maroon">biologyDatePrel</span> <i>&quot;setDate&quot;</i><span style="color: navy">;</span>
  srcBiology.biologyCode<b> as </b><span style="color: maroon">biologyCode</span><span style="color: navy"><b> -&gt; </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>&quot;setCode&quot;</i><span style="color: navy">;</span>
  srcBiology.biologyValue<span style="color: navy"><b> -&gt; </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> -&gt; </b></span>tgtObsQuantity.value = <span style="color: maroon">biologyValue</span> <i>&quot;setValue&quot;</i><span style="color: navy">;</span>
    srcBiology.biologyUnit<b> as </b><span style="color: maroon">biologyUnit</span><span style="color: navy"><b> -&gt; </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>&quot;setUnit&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;setQuantity&quot;</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> -&gt; </b></span>tgtMeta.source = <span style="color: navy">(</span>'https://aphp.fr/fhir/Endpoint/dpi/BiologyTable' + '/' + %srcNi.toString()<span style="color: navy">)</span> <i>&quot;setSource&quot;</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> -&gt; </b></span>tgtEntry.fullUrl = <span style="color: navy">(</span>'https://aphp.fr/' + %newRes.type().name + '/' + %newResId<span style="color: navy">)</span> <i>&quot;setFullUrl&quot;</i><span style="color: navy">;</span>
    newResId<span style="color: navy"><b> -&gt; </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>&quot;setRequest&quot;</i><span style="color: navy">;</span>
  <span style="color: navy">}</span> <i>&quot;setResourceType&quot;</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>