Data Management with FHIR
0.1.0 - ci-build
Data Management with FHIR - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
| Draft as of 2025-10-23 |
<StructureMap xmlns="http://hl7.org/fhir">
<id value="EHR2FSL"/>
<text>
<status value="generated"/>
<div xmlns="http://www.w3.org/1999/xhtml"><p class="res-header-id"><b>Narratif généré : StructureMap EHR2FSL</b></p><a name="EHR2FSL"> </a><a name="hcEHR2FSL"> </a><pre class="fml">
<b>map</b><span style="color: navy"> "</span>https://interop.aphp.fr/ig/fhir/dm/StructureMap/EHR2FSL<span style="color: navy">" = "</span>EHR2FSL<span style="color: navy">"
</span><span style="color: navy">// </span><span style="color: green">Transforms EHR logical model data to FHIR Semantic Layer resources using Bundle as container</span>
<b>uses</b><span style="color: navy"> "</span><a href="StructureDefinition-ehr.html" title="Electronic Health Record Data Model">https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/ehr</a><span style="color: navy">" </span><b>alias </b>EHR <b>as </b><b>source</b>
<b>uses</b><span style="color: navy"> "</span><a href="http://hl7.org/fhir/R4/bundle.html" title="Bundle">http://hl7.org/fhir/StructureDefinition/Bundle</a><span style="color: navy">" </span><b>alias </b>Bundle <b>as </b><b>target</b>
<b>group </b>EHR2FSL<span style="color: navy">(</span><b>source</b> <span style="color: maroon">src</span><span style="color: navy"> : </span>EHR, <b>target</b> <span style="color: maroon">bundle</span><span style="color: navy"> : </span>Bundle<span style="color: navy">)</span><span style="color: navy"> {
</span> <span style="color: navy">// </span><span style="color: green">Initialize Bundle</span>
src<span style="color: navy"><b> -> </b></span>bundle.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>"bundleid"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>bundle.type = <span style="color: blue">'collection'</span> <i>"bundletype"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span><span style="color: navy">(</span>now()<span style="color: navy">)</span><b> as </b><span style="color: maroon">timestamp</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>bundle.timestamp = <span style="color: maroon">timestamp</span> <i>"affectTimestamp"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"setTimestamp"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Transform Patient</span>
src.patient<b> as </b><span style="color: maroon">patient</span><span style="color: navy"><b> -> </b></span>bundle.entry<b> as </b><span style="color: maroon">patientEntry</span><b> then</b><span style="color: navy"> {
</span> patient<span style="color: navy"><b> -> </b></span>patientEntry.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">dmPatient</span><b> then</b><span style="color: navy"> {
</span> patient<b> then </b>TransformPatient<span style="color: navy">(</span><span style="color: maroon">patient</span><span style="color: navy">, </span><span style="color: maroon">dmPatient</span><span style="color: navy">)</span> <i>"transformpatient"</i><span style="color: navy">;</span>
patient<b> then </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><span style="color: maroon">dmPatient</span><span style="color: navy">, </span><span style="color: maroon">patientEntry</span><span style="color: navy">)</span> <i>"setRequestAndFullUrl"</i><span style="color: navy">;</span>
src.patientAdresse<b> as </b><span style="color: maroon">patientAdresse</span><b> where </b>patientAdresse.patientId = %patient.patientId<b> then </b>setAddress<span style="color: navy">(</span><span style="color: maroon">patientAdresse</span><span style="color: navy">, </span><span style="color: maroon">dmPatient</span><span style="color: navy">)</span> <i>"transformpatientAdresse"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Transform PMSI Encounters</span>
src.donneesPmsi<b> as </b><span style="color: maroon">pmsi</span><b> where </b>pmsi.patientId = %patient.patientId<span style="color: navy"><b> -> </b></span>bundle.entry<b> as </b><span style="color: maroon">encounterEntry</span><b> then</b><span style="color: navy"> {
</span> pmsi<span style="color: navy"><b> -> </b></span>encounterEntry.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">dmEncounter</span><b> then</b><span style="color: navy"> {
</span> pmsi<b> then </b>TransformEncounter<span style="color: navy">(</span><span style="color: maroon">pmsi</span><span style="color: navy">, </span><span style="color: maroon">dmEncounter</span><span style="color: navy">, </span><span style="color: maroon">dmPatient</span><span style="color: navy">)</span> <i>"transformencounter"</i><span style="color: navy">;</span>
pmsi<b> then </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><span style="color: maroon">dmEncounter</span><span style="color: navy">, </span><span style="color: maroon">encounterEntry</span><span style="color: navy">)</span> <i>"setRequestAndFullUrl"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Transform Conditions (Diagnostics)</span>
src.diagnostics<b> as </b><span style="color: maroon">diag</span><b> where </b>(diag.patientId = %patient.patientId) and (diag.pmsiId = %pmsi.pmsiId)<span style="color: navy"><b> -> </b></span>bundle.entry<b> as </b><span style="color: maroon">conditionEntry</span><b> then</b><span style="color: navy"> {
</span> diag<span style="color: navy"><b> -> </b></span>conditionEntry.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">dmCondition</span><b> then</b><span style="color: navy"> {
</span> diag<b> then </b>TransformCondition<span style="color: navy">(</span><span style="color: maroon">diag</span><span style="color: navy">, </span><span style="color: maroon">dmCondition</span><span style="color: navy">, </span><span style="color: maroon">dmPatient</span><span style="color: navy">, </span><span style="color: maroon">dmEncounter</span><span style="color: navy">)</span> <i>"transformcondition"</i><span style="color: navy">;</span>
diag<b> then </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><span style="color: maroon">dmCondition</span><span style="color: navy">, </span><span style="color: maroon">conditionEntry</span><span style="color: navy">)</span> <i>"setRequestAndFullUrl"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"createcondition"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"conditionentries"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Transform Procedures (Actes)</span>
src.actes<b> as </b><span style="color: maroon">acte</span><b> where </b>(acte.patientId = %patient.patientId) and (acte.pmsiId = %pmsi.pmsiId)<span style="color: navy"><b> -> </b></span>bundle.entry<b> as </b><span style="color: maroon">procedureEntry</span><b> then</b><span style="color: navy"> {
</span> acte<span style="color: navy"><b> -> </b></span>procedureEntry.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">dmProcedure</span><b> then</b><span style="color: navy"> {
</span> acte<b> then </b>TransformProcedure<span style="color: navy">(</span><span style="color: maroon">acte</span><span style="color: navy">, </span><span style="color: maroon">dmProcedure</span><span style="color: navy">, </span><span style="color: maroon">dmPatient</span><span style="color: navy">, </span><span style="color: maroon">dmEncounter</span><span style="color: navy">)</span> <i>"transformprocedure"</i><span style="color: navy">;</span>
acte<b> then </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><span style="color: maroon">dmProcedure</span><span style="color: navy">, </span><span style="color: maroon">procedureEntry</span><span style="color: navy">)</span> <i>"setRequestAndFullUrl"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"createprocedure"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"procedureentries"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"createencounter"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"encounterentries"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Transform Laboratory Observations</span>
src.biologie<b> as </b><span style="color: maroon">lab</span><b> where </b>lab.patientId = %patient.patientId<span style="color: navy"><b> -> </b></span>bundle.entry<b> as </b><span style="color: maroon">labEntry</span><b> then</b><span style="color: navy"> {
</span> lab<span style="color: navy"><b> -> </b></span>labEntry.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">dmLab</span><b> then</b><span style="color: navy"> {
</span> lab<b> then </b>TransformLabObservation<span style="color: navy">(</span><span style="color: maroon">lab</span><span style="color: navy">, </span><span style="color: maroon">dmLab</span><span style="color: navy">, </span><span style="color: maroon">dmPatient</span><span style="color: navy">)</span> <i>"transformLabObs"</i><span style="color: navy">;</span>
lab<b> then </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><span style="color: maroon">dmLab</span><span style="color: navy">, </span><span style="color: maroon">labEntry</span><span style="color: navy">)</span> <i>"setRequestAndFullUrl"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"createlabobs"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"labentries"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Transform Medication Requests</span>
src.prescription<b> as </b><span style="color: maroon">pres</span><b> where </b>pres.patientId = %patient.patientId<span style="color: navy"><b> -> </b></span>bundle.entry<b> as </b><span style="color: maroon">medReqEntry</span><b> then</b><span style="color: navy"> {
</span> pres<span style="color: navy"><b> -> </b></span>medReqEntry.resource = <b>create</b><span style="color: navy">(</span><span style="color: blue">'MedicationRequest'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">dmMedReq</span><b> then</b><span style="color: navy"> {
</span> src<b> then </b>TransformMedicationRequest<span style="color: navy">(</span><span style="color: maroon">pres</span><span style="color: navy">, </span><span style="color: maroon">dmMedReq</span><span style="color: navy">, </span><span style="color: maroon">dmPatient</span><span style="color: navy">)</span> <i>"createmedrequest"</i><span style="color: navy">;</span>
pres<b> then </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><span style="color: maroon">dmMedReq</span><span style="color: navy">, </span><span style="color: maroon">medReqEntry</span><span style="color: navy">)</span> <i>"setRequestAndFullUrl"</i><span style="color: navy">;</span>
src.posologie<b> as </b><span style="color: maroon">poso</span><b> where </b>%poso.prescriptionId = %pres.prescriptionId<b> then </b>setPoso<span style="color: navy">(</span><span style="color: maroon">poso</span><span style="color: navy">, </span><span style="color: maroon">pres</span><span style="color: navy">, </span><span style="color: maroon">dmMedReq</span><span style="color: navy">)</span> <i>"transformPoso"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Transform Administration (W prescription)</span>
src.administration<b> as </b><span style="color: maroon">admin</span><b> where </b>(admin.patientId = %patient.patientId) and (admin.prescriptionId = pres.prescriptionId)<span style="color: navy"><b> -> </b></span>bundle.entry<b> as </b><span style="color: maroon">adminEntry</span><b> then</b><span style="color: navy"> {
</span> admin<span style="color: navy"><b> -> </b></span>adminEntry.resource = <b>create</b><span style="color: navy">(</span><span style="color: blue">'MedicationAdministration'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">dmAdmin</span><b> then</b><span style="color: navy"> {
</span> admin<b> then </b>TransformMedicationAdministrationWOrder<span style="color: navy">(</span><span style="color: maroon">admin</span><span style="color: navy">, </span><span style="color: maroon">dmAdmin</span><span style="color: navy">, </span><span style="color: maroon">dmPatient</span><span style="color: navy">, </span><span style="color: maroon">dmMedReq</span><span style="color: navy">)</span> <i>"createmedadmin"</i><span style="color: navy">;</span>
admin<b> then </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><span style="color: maroon">dmAdmin</span><span style="color: navy">, </span><span style="color: maroon">adminEntry</span><span style="color: navy">)</span> <i>"setRequestAndFullUrl"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"createmedadmin"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"administrationentries"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"createmedreq"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"medicationentries"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Transform Lifestyle Observations - separate observation for each lifestyle element</span>
src.styleVie<b> as </b><span style="color: maroon">lifestyle</span><b> where </b>lifestyle.patientId = %patient.patientId<b> then</b><span style="color: navy"> {
</span> <span style="color: navy">// </span><span style="color: green">Tobacco consumption observation</span>
lifestyle.consommationTabac<b> as </b><span style="color: maroon">tobacco</span><b> where </b>tobacco.exists()<span style="color: navy"><b> -> </b></span>bundle.entry<b> as </b><span style="color: maroon">tobaccoEntry</span><b> then</b><span style="color: navy"> {
</span> tobacco<span style="color: navy"><b> -> </b></span>tobaccoEntry.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">tobaccoObs</span><b> then</b><span style="color: navy"> {
</span> lifestyle<b> then </b>TransformTobaccoObservation<span style="color: navy">(</span><span style="color: maroon">lifestyle</span><span style="color: navy">, </span><span style="color: maroon">tobaccoObs</span><span style="color: navy">, </span><span style="color: maroon">dmPatient</span><span style="color: navy">)</span> <i>"createtobaccoobs"</i><span style="color: navy">;</span>
lifestyle<b> then </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><span style="color: maroon">tobaccoObs</span><span style="color: navy">, </span><span style="color: maroon">tobaccoEntry</span><span style="color: navy">)</span> <i>"setRequestAndFullUrl"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"createtobaccoobs"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"tobaccoentries"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Alcohol consumption observation</span>
lifestyle.consommationAlcool<b> as </b><span style="color: maroon">alcohol</span><b> where </b>alcohol.exists()<span style="color: navy"><b> -> </b></span>bundle.entry<b> as </b><span style="color: maroon">alcoholEntry</span><b> then</b><span style="color: navy"> {
</span> alcohol<span style="color: navy"><b> -> </b></span>alcoholEntry.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">alcoholObs</span><b> then</b><span style="color: navy"> {
</span> lifestyle<b> then </b>TransformAlcoholObservation<span style="color: navy">(</span><span style="color: maroon">lifestyle</span><span style="color: navy">, </span><span style="color: maroon">alcoholObs</span><span style="color: navy">, </span><span style="color: maroon">dmPatient</span><span style="color: navy">)</span> <i>"createalcoholobs"</i><span style="color: navy">;</span>
lifestyle<b> then </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><span style="color: maroon">alcoholObs</span><span style="color: navy">, </span><span style="color: maroon">alcoholEntry</span><span style="color: navy">)</span> <i>"setRequestAndFullUrl"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"createalcoholobs"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"alcoholentries"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Drug consumption observation</span>
lifestyle.consommationAutresDrogues<b> as </b><span style="color: maroon">drugs</span><b> where </b>drugs.exists()<span style="color: navy"><b> -> </b></span>bundle.entry<b> as </b><span style="color: maroon">drugEntry</span><b> then</b><span style="color: navy"> {
</span> drugs<span style="color: navy"><b> -> </b></span>drugEntry.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">drugObs</span><b> then</b><span style="color: navy"> {
</span> lifestyle<b> then </b>TransformDrugObservation<span style="color: navy">(</span><span style="color: maroon">lifestyle</span><span style="color: navy">, </span><span style="color: maroon">drugObs</span><span style="color: navy">, </span><span style="color: maroon">dmPatient</span><span style="color: navy">)</span> <i>"createdrugobs"</i><span style="color: navy">;</span>
lifestyle<b> then </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><span style="color: maroon">drugObs</span><span style="color: navy">, </span><span style="color: maroon">drugEntry</span><span style="color: navy">)</span> <i>"setRequestAndFullUrl"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"createdrugobs"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"drugentries"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Physical activity observation</span>
lifestyle.activitePhysique<b> as </b><span style="color: maroon">physical</span><b> where </b>physical.exists()<span style="color: navy"><b> -> </b></span>bundle.entry<b> as </b><span style="color: maroon">physicalEntry</span><b> then</b><span style="color: navy"> {
</span> physical<span style="color: navy"><b> -> </b></span>physicalEntry.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">physicalObs</span><b> then</b><span style="color: navy"> {
</span> lifestyle<b> then </b>TransformPhysicalActivityObservation<span style="color: navy">(</span><span style="color: maroon">lifestyle</span><span style="color: navy">, </span><span style="color: maroon">physicalObs</span><span style="color: navy">, </span><span style="color: maroon">dmPatient</span><span style="color: navy">)</span> <i>"createphysicalobs"</i><span style="color: navy">;</span>
lifestyle<b> then </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><span style="color: maroon">physicalObs</span><span style="color: navy">, </span><span style="color: maroon">physicalEntry</span><span style="color: navy">)</span> <i>"setRequestAndFullUrl"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"createphysicalobs"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"physicalentries"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"lifestyleentries"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Transform Care Observations (s)</span>
src.dossierSoins<b> as </b><span style="color: maroon">soin</span><b> where </b>soin.patientId = %patient.patientId<span style="color: navy"><b> -> </b></span>bundle.entry<b> as </b><span style="color: maroon">vitalEntry</span><b> then</b><span style="color: navy"> {
</span> soin<span style="color: navy"><b> -> </b></span>vitalEntry.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">dmObs</span><b> then</b><span style="color: navy"> {
</span> soin<b> then </b>TransformVitalSigns<span style="color: navy">(</span><span style="color: maroon">soin</span><span style="color: navy">, </span><span style="color: maroon">dmObs</span><span style="color: navy">, </span><span style="color: maroon">dmPatient</span><span style="color: navy">)</span> <i>"createmesureobs"</i><span style="color: navy">;</span>
soin<b> then </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><span style="color: maroon">dmObs</span><span style="color: navy">, </span><span style="color: maroon">vitalEntry</span><span style="color: navy">)</span> <i>"setRequestAndFullUrl"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"createmesureobs"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"vitalentries"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Transform Administration (WO prescription)</span>
src.administration<b> as </b><span style="color: maroon">admin</span><b> where </b>(admin.patientId = %patient.patientId) and admin.prescriptionId.empty()<span style="color: navy"><b> -> </b></span>bundle.entry<b> as </b><span style="color: maroon">adminEntry</span><b> then</b><span style="color: navy"> {
</span> admin<span style="color: navy"><b> -> </b></span>adminEntry.resource = <b>create</b><span style="color: navy">(</span><span style="color: blue">'MedicationAdministration'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">dmAdmin</span><b> then</b><span style="color: navy"> {
</span> admin<b> then </b>TransformMedicationAdministrationWOOrder<span style="color: navy">(</span><span style="color: maroon">admin</span><span style="color: navy">, </span><span style="color: maroon">dmAdmin</span><span style="color: navy">, </span><span style="color: maroon">dmPatient</span><span style="color: navy">)</span> <i>"createmedadmin"</i><span style="color: navy">;</span>
admin<b> then </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><span style="color: maroon">dmAdmin</span><span style="color: navy">, </span><span style="color: maroon">adminEntry</span><span style="color: navy">)</span> <i>"setRequestAndFullUrl"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"createmedadmin"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"administrationentries"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"createpatient"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"patiententry"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><span style="color: navy">// </span><span style="color: green">---------------------------------------------------------</span>
<span style="color: navy">// </span><span style="color: green">PATIENT TRANSFORMATION</span>
<span style="color: navy">// </span><span style="color: green">---------------------------------------------------------</span>
<b>group </b>TransformPatient<span style="color: navy">(</span><b>source</b> <span style="color: maroon">src</span>, <b>target</b> <span style="color: maroon">tgt</span><span style="color: navy"> : </span>Patient<span style="color: navy">)</span><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>tgt.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>"setId"</i><span style="color: navy">;</span>
<span style="color: #b36b00" title="Cet élément nétait pas défini avant R5">// src.patientId as id -> tgt.id = id "patient-id";</span>
<span style="color: navy">// </span><span style="color: green">Identifiers</span>
src.patientId<b> as </b><span style="color: maroon">pid</span><span style="color: navy"><b> -> </b></span>tgt.identifier<b> as </b><span style="color: maroon">identifier</span><b> then</b><span style="color: navy"> {
</span> pid<span style="color: navy"><b> -> </b></span>identifier.use = <span style="color: blue">'usual'</span> <i>"iduse"</i><span style="color: navy">;</span>
pid<span style="color: navy"><b> -> </b></span>identifier.type = <b>cc</b><span style="color: navy">(</span><span style="color: blue">'http://terminology.hl7.org/CodeSystem/v2-0203'</span><span style="color: navy">, </span><span style="color: blue">'PI'</span><span style="color: navy">, </span><span style="color: blue">'Patient Identifier'</span><span style="color: navy">)</span> <i>"idtype"</i><span style="color: navy">;</span>
pid<span style="color: navy"><b> -> </b></span>identifier.system = <span style="color: blue">'https://hospital.eu/ehr/patient-id'</span> <i>"idsystem"</i><span style="color: navy">;</span>
pid<span style="color: navy"><b> -> </b></span>identifier.value = <span style="color: maroon">pid</span> <i>"idvalue"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"patientidentifier"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">NIR identifier <- C'est pas terrible côté expression de besoin : qu'est ce qu'ils veulent quand ils disent NIR ? ça peut être le NSS, mais du coup c'est pas un identifier (un NSS peut correspondre à plusieurs ayant droits), et ce serait plutôt une info qui irait côté claim. ça peut aussi être l'ins-nir, mais du coup qu'est ce qu'ils attendent dans l'ins ? Bref, à mon avis, faut discuter cette variable au niveau du GT.</span>
<span style="color: #b36b00" title="Cet élément nétait pas défini avant R5">// src.nir as nir where nir.exists() -> tgt.identifier as insIdentifier then { nir -> insIdentifier.use = 'official' "ins-use"; nir -> insIdentifier.type = cc('http://hl7.fr/fhir/CodeSystem/fr-v2-0203', 'INS-NIR') "ins-type"; nir -> insIdentifier.system = 'urn:oid:1.2.250.1.213.1.4.8' "ins-system"; nir -> insIdentifier.value = nir "ins-value"; } "ins-identifier";</span>
<span style="color: navy">// </span><span style="color: green">Alternative INS from ins field</span>
src.ins<b> as </b><span style="color: maroon">ins</span><b> where </b>ins.exists()<span style="color: navy"><b> -> </b></span>tgt.identifier<b> as </b><span style="color: maroon">insIdentifier</span><b> then</b><span style="color: navy"> {
</span> ins<span style="color: navy"><b> -> </b></span>insIdentifier.use = <span style="color: blue">'official'</span> <i>"insuse"</i><span style="color: navy">;</span> <span style="color: navy">// </span><span style="color: green">On part du principe qu'on n'est pas sur un old.</span>
ins<span style="color: navy"><b> -> </b></span>insIdentifier.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: blue">'NIR définitif'</span><span style="color: navy">)</span> <i>"instype"</i><span style="color: navy">;</span>
ins<span style="color: navy"><b> -> </b></span>insIdentifier.system = <span style="color: blue">'urn:oid:1.2.250.1.213.1.4.8'</span> <i>"inssystem"</i><span style="color: navy">;</span>
ins<span style="color: navy"><b> -> </b></span>insIdentifier.value = <span style="color: maroon">ins</span> <i>"insvalue"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"insidentifier"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Name</span>
src<b> where </b>src.nom.exists() or src.prenom.exists()<span style="color: navy"><b> -> </b></span>tgt.name<b> as </b><span style="color: maroon">name</span><b> then</b><span style="color: navy"> {
</span> src.nom<b> as </b><span style="color: maroon">lastName</span><span style="color: navy"><b> -> </b></span>name.family = <span style="color: maroon">lastName</span> <i>"familyname"</i><span style="color: navy">;</span>
src.prenom<b> as </b><span style="color: maroon">firstName</span><span style="color: navy"><b> -> </b></span>name.given = <span style="color: maroon">firstName</span> <i>"givenname"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>name.use = <span style="color: blue">'official'</span> <i>"nameuse"</i><span style="color: navy">;</span> <span style="color: navy">// </span><span style="color: green">hypothèse un peu forte.</span>
<span style="color: navy">}</span> <i>"patientname"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Demographics On aurait pu faire plus élégant avec un ConceptMap</span>
src.dateNaissance<b> as </b><span style="color: maroon">birthDate</span><span style="color: navy"><b> -> </b></span>tgt.birthDate = <span style="color: maroon">birthDate</span> <i>"birthdate"</i><span style="color: navy">;</span>
src.sexe<b> as </b><span style="color: maroon">gender</span><b> where </b>gender = 'h'<span style="color: navy"><b> -> </b></span>tgt.gender = <span style="color: blue">'male'</span> <i>"gendermale"</i><span style="color: navy">;</span>
src.sexe<b> as </b><span style="color: maroon">gender</span><b> where </b>gender = 'f'<span style="color: navy"><b> -> </b></span>tgt.gender = <span style="color: blue">'female'</span> <i>"genderfemale"</i><span style="color: navy">;</span>
src.sexe<b> as </b><span style="color: maroon">gender</span><b> where </b>gender.exists() and (gender != 'h') and (gender != 'f')<span style="color: navy"><b> -> </b></span>tgt.gender = <span style="color: blue">'unknown'</span> <i>"genderunknown"</i><span style="color: navy">;</span> <span style="color: navy">// </span><span style="color: green">n'a pas grand sens en l'état des contraintes SQL</span>
<span style="color: navy">// </span><span style="color: green">Death information</span>
src.dateDeces<b> as </b><span style="color: maroon">deathDate</span><b> where </b>deathDate.exists()<span style="color: navy"><b> -> </b></span>tgt.deceased = <b>cast</b><span style="color: navy">(</span><span style="color: maroon">deathDate</span><span style="color: navy">, </span><span style="color: blue">'dateTime'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">deceasedDate</span><b> then</b><span style="color: navy"> {
</span> src.sourceDeces<b> as </b><span style="color: maroon">deathSource</span><b> where </b>deathSource.exists()<span style="color: navy"><b> -> </b></span>deceasedDate.extension<b> as </b><span style="color: maroon">DeathSourceExtension</span><b> then</b><span style="color: navy"> {
</span> deathSource<span style="color: navy"><b> -> </b></span>DeathSourceExtension.url = <span style="color: blue">'https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/DeathSource'</span> <i>"deathSourceUrl"</i><span style="color: navy">;</span>
deathSource<span style="color: navy"><b> -> </b></span>DeathSourceExtension.value = <b>cast</b><span style="color: navy">(</span><span style="color: maroon">deathSource</span><span style="color: navy">, </span><span style="color: blue">'code'</span><span style="color: navy">)</span> <i>"deathSourceValue"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"deathSource"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"deathDate"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Multiple birth</span>
src.rangGemellaire<b> as </b><span style="color: maroon">twin</span><b> where </b>twin.exists()<span style="color: navy"><b> -> </b></span>tgt.multipleBirth = <span style="color: maroon">twin</span> <i>"multiplebirth"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><span style="color: navy">// </span><span style="color: green">========================================================================</span>
<span style="color: navy">// </span><span style="color: green">PATIENT_LOCATION TRANSFORMATION</span>
<span style="color: navy">// </span><span style="color: green">========================================================================</span>
<b>group </b>setAddress<span style="color: navy">(</span><b>source</b> <span style="color: maroon">src</span>, <b>target</b> <span style="color: maroon">tgtPat</span><span style="color: navy"> : </span>Patient<span style="color: navy">)</span><span style="color: navy"> {
</span> src<b> where </b>src.latitude.exists() or src.longitude.exists() or src.codeIris.exists() or src.libelleIris.exists() or src.codeGeographiqueResidence.exists()<b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>tgtPat.address<b> as </b><span style="color: maroon">newAddress</span><b> then</b><span style="color: navy"> {
</span> src<b> where </b>src.latitude.exists() or src.longitude.exists()<span style="color: navy"><b> -> </b></span> newAddress.extension<b> as </b><span style="color: maroon">geolocationExtension</span><span style="color: navy">, </span> geolocationExtension.url = <span style="color: blue">'http://hl7.org/fhir/StructureDefinition/geolocation'</span><b> then</b><span style="color: navy"> {
</span> src.latitude<b> as </b><span style="color: maroon">srcLat</span><span style="color: navy"><b> -> </b></span> geolocationExtension.extension<b> as </b><span style="color: maroon">tgtLat</span><span style="color: navy">, </span> tgtLat.url = <span style="color: blue">'latitude'</span><span style="color: navy">, </span> tgtLat.value = <span style="color: maroon">srcLat</span> <i>"setLat"</i><span style="color: navy">;</span>
src.longitude<b> as </b><span style="color: maroon">srcLong</span><span style="color: navy"><b> -> </b></span> geolocationExtension.extension<b> as </b><span style="color: maroon">tgtLong</span><span style="color: navy">, </span> tgtLong.url = <span style="color: blue">'longitude'</span><span style="color: navy">, </span> tgtLong.value = <span style="color: maroon">srcLong</span> <i>"setLong"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"setCoordinates"</i><span style="color: navy">;</span>
src<b> where </b>src.codeIris.exists() or src.libelleIris.exists()<span style="color: navy"><b> -> </b></span> newAddress.line = <span style="color: navy">(</span>%src.libelleIris<span style="color: navy">)</span><b> as </b><span style="color: maroon">irisLine</span><span style="color: navy">, </span> irisLine.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">irisExtension</span><span style="color: navy">, </span> irisExtension.url = <span style="color: blue">'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-censusTract'</span><span style="color: navy">, </span> irisExtension.value = <span style="color: navy">(</span>%src.codeIris<span style="color: navy">)</span> <i>"setIris"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">src where src.codeIris.exists() or src.libelleIris.exists() -> newAddress.extension as irisExtension,</span>
<span style="color: navy">// </span><span style="color: green">irisExtension.url = 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-censusTract',</span>
<span style="color: navy">// </span><span style="color: green">irisExtension.value = (iif(%src.codeIris.exists() and %src.libelleIris.exists(), %src.codeIris & ' - ' & %src.libelleIris, %src.codeIris & %src.libelleIris)) "setIris";</span>
src.codeGeographiqueResidence<b> as </b><span style="color: maroon">srcCodeGeographiqueResidence</span><b> where </b>src.codeGeographiqueResidence.exists()<span style="color: navy"><b> -> </b></span> newAddress.extension<b> as </b><span style="color: maroon">residencePmsiExtension</span><span style="color: navy">, </span> residencePmsiExtension.url = <span style="color: blue">'https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/PmsiCodeGeo'</span><span style="color: navy">, </span> residencePmsiExtension.value = <b>cast</b><span style="color: navy">(</span><span style="color: maroon">srcCodeGeographiqueResidence</span><span style="color: navy">, </span><span style="color: blue">'code'</span><span style="color: navy">)</span> <i>"SetResidencePmsi"</i><span style="color: navy">;</span>
src.dateRecueil<b> as </b><span style="color: maroon">dateRecueil</span><span style="color: navy"><b> -> </b></span> newAddress.period<b> as </b><span style="color: maroon">newAddressPeriod</span><span style="color: navy">, </span> newAddressPeriod.start = <span style="color: maroon">dateRecueil</span> <i>"setDateRecueil"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"createAddress"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"checkSource"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><span style="color: navy">// </span><span style="color: green">========================================================================</span>
<span style="color: navy">// </span><span style="color: green">ENCOUNTER TRANSFORMATION</span>
<span style="color: navy">// </span><span style="color: green">========================================================================</span>
<b>group </b>TransformEncounter<span style="color: navy">(</span><b>source</b> <span style="color: maroon">src</span>, <b>target</b> <span style="color: maroon">tgtEnc</span><span style="color: navy"> : </span>Encounter, <b>source</b> <span style="color: maroon">patient</span><span style="color: navy">)</span><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>tgtEnc.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>"setId"</i><span style="color: navy">;</span>
<span style="color: #b36b00" title="Cet élément nétait pas défini avant R5">// src.pmsiId as id -> tgt.id = id "encounter-id";</span>
<span style="color: navy">// </span><span style="color: green">Identifier</span>
src<span style="color: navy"><b> -> </b></span>tgtEnc.identifier<b> as </b><span style="color: maroon">identifier</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>identifier.type = <b>cc</b><span style="color: navy">(</span><span style="color: blue">'https://hl7.fr/ig/fhir/core/CodeSystem/fr-core-cs-identifier-type'</span><span style="color: navy">, </span><span style="color: blue">'VN'</span><span style="color: navy">, </span><span style="color: blue">'Visit Number'</span><span style="color: navy">)</span> <i>"idtype"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>identifier.system = <span style="color: blue">'https://hospital.eu/ehr/pmsi-id'</span> <i>"encounteridsystem"</i><span style="color: navy">;</span>
src.pmsiId<b> as </b><span style="color: maroon">srcEncoutnerId</span><span style="color: navy"><b> -> </b></span>identifier.value = <span style="color: maroon">srcEncoutnerId</span> <i>"encounteridvalue"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"encounteridentifier"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Status - default to finished for historical data</span>
src<span style="color: navy"><b> -> </b></span>tgtEnc.status = <span style="color: blue">'finished'</span> <i>"encounterstatus"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Class - assume inpatient for PMSI data</span>
src<span style="color: navy"><b> -> </b></span>tgtEnc.class = <b>c</b><span style="color: navy">(</span><span style="color: blue">'http://terminology.hl7.org/CodeSystem/v3-ActCode'</span><span style="color: navy">, </span><span style="color: blue">'IMP'</span><span style="color: navy">, </span><span style="color: blue">'inpatient encounter'</span><span style="color: navy">)</span> <i>"encounterclass"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Reference patient</span>
src<span style="color: navy"><b> -> </b></span>tgtEnc.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">ref</span><b> then</b><span style="color: navy"> {
</span> patient.id<b> as </b><span style="color: maroon">patientId</span><span style="color: navy"><b> -> </b></span> ref.reference = <span style="color: navy">(</span>'Patient/' + %patientId<span style="color: navy">)</span><span style="color: navy">, </span> ref.type = <span style="color: blue">'Patient'</span> <i>"subjectreference"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"encountersubject"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Period</span>
src<b> where </b>src.dateDebutSejour.exists() or src.dateFinSejour.exists()<span style="color: navy"><b> -> </b></span>tgtEnc.period<b> as </b><span style="color: maroon">period</span><b> then</b><span style="color: navy"> {
</span> src.dateDebutSejour<b> as </b><span style="color: maroon">startDate</span><span style="color: navy"><b> -> </b></span>period.start = <span style="color: maroon">startDate</span> <i>"periodstart"</i><span style="color: navy">;</span>
src.dateFinSejour<b> as </b><span style="color: maroon">endDate</span><span style="color: navy"><b> -> </b></span>period.end = <span style="color: maroon">endDate</span> <i>"periodend"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"encounterperiod"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Désactivé dans le modèle physique // Duration src.dureeSejour as duration -> tgtEnc.length as length then { duration -> length.value = duration "length-value"; duration -> length.unit = 'd' "length-unit"; duration -> length.system = 'http://unitsofmeasure.org' "length-system"; duration -> length.code = 'd' "length-code"; } "encounter-length";</span>
<span style="color: navy">// </span><span style="color: green">Hospitalization</span>
src<b> where </b>src.modeEntree.exists() or src.modeSortie.exists()<span style="color: navy"><b> -> </b></span>tgtEnc.hospitalization<b> as </b><span style="color: maroon">hosp</span><b> then</b><span style="color: navy"> {
</span> src.modeEntree<b> as </b><span style="color: maroon">admitSource</span><span style="color: navy"><b> -> </b></span>hosp.admitSource<b> as </b><span style="color: maroon">admitSrc</span><b> then</b><span style="color: navy"> {
</span> admitSource<span style="color: navy"><b> -> </b></span>admitSrc.text = <span style="color: maroon">admitSource</span> <i>"admitsourcetext"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"admitsource"</i><span style="color: navy">;</span>
src.modeSortie<b> as </b><span style="color: maroon">dischargeDisp</span><span style="color: navy"><b> -> </b></span>hosp.dischargeDisposition<b> as </b><span style="color: maroon">dischargeDsp</span><b> then</b><span style="color: navy"> {
</span> dischargeDisp<span style="color: navy"><b> -> </b></span>dischargeDsp.text = <span style="color: maroon">dischargeDisp</span> <i>"dischargedisptext"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"dischargedisposition"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"encounterhospitalization"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Service Provider</span>
src<b> where </b>src.uniteFonctionnelle.exists() or src.service.exists() or src.etablissement.exists()<span style="color: navy"><b> -> </b></span>tgtEnc.serviceProvider<b> as </b><span style="color: maroon">provider</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>provider.display = <span style="color: navy">(</span>iif(%src.uniteFonctionnelle.exists(), %src.uniteFonctionnelle, iif(%src.service.exists(), %src.service, %src.etablissement))<span style="color: navy">)</span> <i>"providerdisplay"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"provider"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">// Location - On n'a pas de location à gérer à ce stade (établissement, service et UF, halluciné par l'IA, sont des Organization que j'ai du coup mi dans Provider. ) src.service as service -> tgt.location as location then { service -> location.location as loc then { service -> loc.display = service "location-display"; } "location-ref"; } "encounter-location";</span>
<span style="color: navy">}
</span><span style="color: navy">// </span><span style="color: green">========================================================================</span>
<span style="color: navy">// </span><span style="color: green">CONDITION TRANSFORMATION</span>
<span style="color: navy">// </span><span style="color: green">========================================================================</span>
<b>group </b>TransformCondition<span style="color: navy">(</span><b>source</b> <span style="color: maroon">src</span>, <b>target</b> <span style="color: maroon">tgtCond</span><span style="color: navy"> : </span>Condition, <b>source</b> <span style="color: maroon">patient</span>, <b>source</b> <span style="color: maroon">encounter</span><span style="color: navy">)</span><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>tgtCond.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>"setId"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Identifier</span>
src.diagnosticId<b> as </b><span style="color: maroon">diagId</span><span style="color: navy"><b> -> </b></span>tgtCond.identifier<b> as </b><span style="color: maroon">identifier</span><b> then</b><span style="color: navy"> {
</span> diagId<span style="color: navy"><b> -> </b></span>identifier.system = <span style="color: blue">'https://hospital.eu/ehr/diagnostic-id'</span> <i>"conditionidsystem"</i><span style="color: navy">;</span>
diagId<span style="color: navy"><b> -> </b></span>identifier.value = <span style="color: maroon">diagId</span> <i>"conditionidvalue"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"conditionidentifier"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Category</span>
<span style="color: navy">// </span><span style="color: green">Représentation des codes diagnostics du PMSI dans condition , plusieurs options :</span>
<span style="color: navy">// </span><span style="color: green">- ce sont des infos de claim, pas de condition</span>
<span style="color: navy">// </span><span style="color: green">- utiliser la catégorie 'encounter-diagnosis'</span>
<span style="color: navy">// </span><span style="color: green">- utiliser les catégories du PMSI : DP, DR, DAS, DAD</span>
<span style="color: navy">// </span><span style="color: green">- mettre les deux précédent <- j'ai fait ça.</span>
src<span style="color: navy"><b> -> </b></span>tgtCond.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><span style="color: blue">'Encounter Diagnosis'</span><span style="color: navy">)</span> <i>"categoryencounterDiag"</i><span style="color: navy">;</span>
src.typeDiagnostic<b> as </b><span style="color: maroon">diagType</span><span style="color: navy"><b> -> </b></span>tgtCond.category<b> as </b><span style="color: maroon">category</span><b> then</b><span style="color: navy"> {
</span> diagType<span style="color: navy"><b> -> </b></span>category.text = <span style="color: maroon">diagType</span> <i>"categorytext"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"conditioncategory"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Code (ICD-10)</span>
src.codeDiagnostic<b> as </b><span style="color: maroon">srcCode</span><span style="color: navy"><b> -> </b></span>tgtCond.code<b> as </b><span style="color: maroon">conditionCode</span><b> then</b><span style="color: navy"> {
</span> <span style="color: navy">// </span><span style="color: green">la fonction cc ne peuple pas le display...</span>
src.libelleDiagnostic<b> as </b><span style="color: maroon">label</span><span style="color: navy"><b> -> </b></span> conditionCode.coding<b> as </b><span style="color: maroon">tgtCoding</span><span style="color: navy">, </span> tgtCoding.system = <span style="color: blue">'http://hl7.org/fhir/sid/icd-10'</span><span style="color: navy">, </span> tgtCoding.code = <span style="color: maroon">srcCode</span> <i>"conditioncode"</i><span style="color: navy">;</span>
src.libelleDiagnostic<b> as </b><span style="color: maroon">text</span><span style="color: navy"><b> -> </b></span>conditionCode.text = <span style="color: maroon">text</span> <i>"codetext"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"varcode"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Subject</span>
src<span style="color: navy"><b> -> </b></span>tgtCond.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">ref</span><b> then</b><span style="color: navy"> {
</span> patient.id<b> as </b><span style="color: maroon">patientId</span><span style="color: navy"><b> -> </b></span> ref.reference = <span style="color: navy">(</span>'Patient/' + %patientId<span style="color: navy">)</span><span style="color: navy">, </span> ref.type = <span style="color: blue">'Patient'</span> <i>"subjectref"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"conditionsubject"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Encounter reference</span>
src<span style="color: navy"><b> -> </b></span>tgtCond.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">ref</span><b> then</b><span style="color: navy"> {
</span> encounter.id<b> as </b><span style="color: maroon">encounterId</span><span style="color: navy"><b> -> </b></span> ref.reference = <span style="color: navy">(</span>'Encounter/' + %encounterId<span style="color: navy">)</span><span style="color: navy">, </span> ref.type = <span style="color: blue">'Encounter'</span> <i>"encounterref"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"conditionencounter"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Recorded date</span>
src.dateRecueil<b> as </b><span style="color: maroon">entryDate</span><span style="color: navy"><b> -> </b></span>tgtCond.recordedDate = <span style="color: maroon">entryDate</span> <i>"conditionrecordeddate"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Clinical status - assume active for recorded diagnoses</span>
src<span style="color: navy"><b> -> </b></span>tgtCond.clinicalStatus = <b>cc</b><span style="color: navy">(</span><span style="color: blue">'http://terminology.hl7.org/CodeSystem/condition-clinical'</span><span style="color: navy">, </span><span style="color: blue">'active'</span><span style="color: navy">)</span> <i>"conditionclinicalstatus"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Verification status - assume confirmed for coded diagnoses</span>
src<span style="color: navy"><b> -> </b></span>tgtCond.verificationStatus = <b>cc</b><span style="color: navy">(</span><span style="color: blue">'http://terminology.hl7.org/CodeSystem/condition-ver-status'</span><span style="color: navy">, </span><span style="color: blue">'confirmed'</span><span style="color: navy">)</span> <i>"conditionverificationstatus"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><span style="color: navy">// </span><span style="color: green">========================================================================</span>
<span style="color: navy">// </span><span style="color: green">PROCEDURE TRANSFORMATION</span>
<span style="color: navy">// </span><span style="color: green">========================================================================</span>
<b>group </b>TransformProcedure<span style="color: navy">(</span><b>source</b> <span style="color: maroon">src</span>, <b>target</b> <span style="color: maroon">tgtProc</span><span style="color: navy"> : </span>Procedure, <b>source</b> <span style="color: maroon">patient</span>, <b>source</b> <span style="color: maroon">encounter</span><span style="color: navy">)</span><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>tgtProc.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>"setId"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Identifier</span>
src.acteId<b> as </b><span style="color: maroon">acteId</span><span style="color: navy"><b> -> </b></span>tgtProc.identifier<b> as </b><span style="color: maroon">identifier</span><b> then</b><span style="color: navy"> {
</span> acteId<span style="color: navy"><b> -> </b></span>identifier.system = <span style="color: blue">'https://hospital.eu/ehr/acte-id'</span> <i>"procedureidsystem"</i><span style="color: navy">;</span>
acteId<span style="color: navy"><b> -> </b></span>identifier.value = <span style="color: maroon">acteId</span> <i>"procedureidvalue"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"procedureidentifier"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Status - assume completed for historical data</span>
src<span style="color: navy"><b> -> </b></span>tgtProc.status = <span style="color: blue">'completed'</span> <i>"procedurestatus"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Code (CCAM)</span>
src.codeActe<b> as </b><span style="color: maroon">code</span><span style="color: navy"><b> -> </b></span>tgtProc.code<b> as </b><span style="color: maroon">procedureCode</span><b> then</b><span style="color: navy"> {
</span> code<span style="color: navy"><b> -> </b></span> procedureCode.coding<b> as </b><span style="color: maroon">coding</span><span style="color: navy">, </span> coding.system = <span style="color: blue">'https://interop.aphp.fr/ig/fhir/dm/CodeSystem/Ccam'</span><span style="color: navy">, </span> coding.code = <span style="color: maroon">code</span> <i>"procedurecoding"</i><span style="color: navy">;</span>
src.libelleActe<b> as </b><span style="color: maroon">text</span><span style="color: navy"><b> -> </b></span>procedureCode.text = <span style="color: maroon">text</span> <i>"codetext"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"procedurecode"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Subject</span>
src<span style="color: navy"><b> -> </b></span>tgtProc.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">ref</span><b> then</b><span style="color: navy"> {
</span> patient.id<b> as </b><span style="color: maroon">patientId</span><span style="color: navy"><b> -> </b></span> ref.reference = <span style="color: navy">(</span>'Patient/' + %patientId<span style="color: navy">)</span><span style="color: navy">, </span> ref.type = <span style="color: blue">'Patient'</span> <i>"subjectref"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"proceduresubject"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Encounter reference</span>
src<span style="color: navy"><b> -> </b></span>tgtProc.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">ref</span><b> then</b><span style="color: navy"> {
</span> encounter.id<b> as </b><span style="color: maroon">encounterId</span><span style="color: navy"><b> -> </b></span> ref.reference = <span style="color: navy">(</span>'Encounter/' + %encounterId<span style="color: navy">)</span><span style="color: navy">, </span> ref.type = <span style="color: blue">'Encounter'</span> <i>"encounterref"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"procedureencounter"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Performed date/time</span>
src.dateActe<b> as </b><span style="color: maroon">performedDate</span><b> where </b>%performedDate.exists()<span style="color: navy"><b> -> </b></span>tgtProc.performed = <span style="color: maroon">performedDate</span> <i>"procedureperformed"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Performer</span>
src.executant<b> as </b><span style="color: maroon">performer</span><span style="color: navy"><b> -> </b></span>tgtProc.performer<b> as </b><span style="color: maroon">perf</span><b> then</b><span style="color: navy"> {
</span> performer<span style="color: navy"><b> -> </b></span>perf.actor<b> as </b><span style="color: maroon">actor</span><b> then</b><span style="color: navy"> {
</span> performer<span style="color: navy"><b> -> </b></span>actor.display = <span style="color: maroon">performer</span> <i>"performerdisplay"</i><span style="color: navy">;</span>
performer<span style="color: navy"><b> -> </b></span>actor.type = <span style="color: blue">'Practitioner'</span> <i>"performerType"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"performeractor"</i><span style="color: navy">;</span>
performer<span style="color: navy"><b> -> </b></span> perf.function<b> as </b><span style="color: maroon">function</span><span style="color: navy">, </span> function.text = <span style="color: blue">'Exécutant'</span> <i>"performerFunction"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"procedureperformer"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><span style="color: navy">// </span><span style="color: green">========================================================================</span>
<span style="color: navy">// </span><span style="color: green">LABORATORY OBSERVATION TRANSFORMATION</span>
<span style="color: navy">// </span><span style="color: green">========================================================================</span>
<b>group </b>TransformLabObservation<span style="color: navy">(</span><b>source</b> <span style="color: maroon">src</span>, <b>target</b> <span style="color: maroon">tgtObs</span><span style="color: navy"> : </span>Observation, <b>source</b> <span style="color: maroon">patient</span><span style="color: navy">)</span><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>tgtObs.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>"setId"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Identifier</span>
src.biologieId<b> as </b><span style="color: maroon">bioId</span><span style="color: navy"><b> -> </b></span>tgtObs.identifier<b> as </b><span style="color: maroon">identifier</span><b> then</b><span style="color: navy"> {
</span> bioId<span style="color: navy"><b> -> </b></span>identifier.system = <span style="color: blue">'https://hospital.eu/ehr/biologie-id'</span> <i>"labidsystem"</i><span style="color: navy">;</span>
bioId<span style="color: navy"><b> -> </b></span>identifier.value = <span style="color: maroon">bioId</span> <i>"labidvalue"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"labidentifier"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Status - map validation status or default to final</span>
src.statutValidation<b> as </b><span style="color: maroon">validation</span><b> where </b>validation = 'VALIDE'<span style="color: navy"><b> -> </b></span>tgtObs.status = <span style="color: blue">'final'</span> <i>"statusvalidated"</i><span style="color: navy">;</span>
src<b> where </b>src.statutValidation.exists().not()<span style="color: navy"><b> -> </b></span>tgtObs.status = <span style="color: blue">'final'</span> <i>"statusdefault"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Category</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.category<b> as </b><span style="color: maroon">category</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>category.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>coding.system = <span style="color: blue">'http://terminology.hl7.org/CodeSystem/observation-category'</span> <i>"categorysystem"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>coding.code = <span style="color: blue">'laboratory'</span> <i>"categorycode"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>coding.display = <span style="color: blue">'Laboratory'</span> <i>"categorydisplay"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"categorycoding"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"labcategory"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Code (LOINC)</span>
src.codeLoinc<b> as </b><span style="color: maroon">loinc</span><span style="color: navy"><b> -> </b></span>tgtObs.code<b> as </b><span style="color: maroon">code</span><b> then</b><span style="color: navy"> {
</span> loinc<span style="color: navy"><b> -> </b></span>code.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span> loinc<span style="color: navy"><b> -> </b></span>coding.system = <span style="color: blue">'http://loinc.org'</span> <i>"codesystem"</i><span style="color: navy">;</span>
loinc<span style="color: navy"><b> -> </b></span>coding.code = <span style="color: maroon">loinc</span> <i>"codevalue"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"labcoding"</i><span style="color: navy">;</span>
src.libelleTest<b> as </b><span style="color: maroon">text</span><span style="color: navy"><b> -> </b></span>code.text = <span style="color: maroon">text</span> <i>"codetext"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"labcode"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Subject</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.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">ref</span><b> then</b><span style="color: navy"> {
</span> patient.id<b> as </b><span style="color: maroon">patientId</span><span style="color: navy"><b> -> </b></span> ref.reference = <span style="color: navy">(</span>'Patient/' + %patientId<span style="color: navy">)</span><span style="color: navy">, </span> ref.type = <span style="color: blue">'Patient'</span> <i>"subjectref"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"labsubject"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Effective date/time</span>
src.datePrelevement<b> as </b><span style="color: maroon">collectionDate</span><b> where </b>%collectionDate.exists()<span style="color: navy"><b> -> </b></span>tgtObs.effective = <b>cast</b><span style="color: navy">(</span><span style="color: maroon">collectionDate</span><span style="color: navy">, </span><span style="color: blue">'dateTime'</span><span style="color: navy">)</span> <i>"labeffective"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Value (numeric or text)</span>
src.valeur<b> as </b><span style="color: maroon">numValue</span><b> where </b>numValue.exists()<span style="color: navy"><b> -> </b></span>tgtObs.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">qty</span><b> then</b><span style="color: navy"> {
</span> numValue<span style="color: navy"><b> -> </b></span>qty.value = <span style="color: maroon">numValue</span> <i>"quantityvalue"</i><span style="color: navy">;</span>
src.unite<b> as </b><span style="color: maroon">unit</span><span style="color: navy"><b> -> </b></span>qty.unit = <span style="color: maroon">unit</span> <i>"quantityunit"</i><span style="color: navy">;</span>
src.unite<b> as </b><span style="color: maroon">unit</span><span style="color: navy"><b> -> </b></span>qty.code = <span style="color: maroon">unit</span> <i>"quantitycode"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>qty.system = <span style="color: blue">'http://unitsofmeasure.org'</span> <i>"quantitysystem"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"labvaluequantity"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">On n'a pas de résultats textuels de prévu</span>
<span style="color: #b36b00" title="Cet élément nétait pas défini avant R5">// src.valeurTexte as textValue where textValue.exists() and src.valeur.exists().not() -> tgtObs.value = textValue "lab-value-string";</span>
<span style="color: navy">// </span><span style="color: green">Reference range</span>
src<b> where </b>src.borneInfNormale.exists() or src.borneSupNormale.exists()<span style="color: navy"><b> -> </b></span>tgtObs.referenceRange<b> as </b><span style="color: maroon">range</span><b> then</b><span style="color: navy"> {
</span> src.borneInfNormale<b> as </b><span style="color: maroon">low</span><span style="color: navy"><b> -> </b></span>range.low<b> as </b><span style="color: maroon">lowQty</span><b> then</b><span style="color: navy"> {
</span> low<span style="color: navy"><b> -> </b></span>lowQty.value = <span style="color: maroon">low</span> <i>"reflowvalue"</i><span style="color: navy">;</span>
src.unite<b> as </b><span style="color: maroon">unit</span><span style="color: navy"><b> -> </b></span>lowQty.unit = <span style="color: maroon">unit</span> <i>"reflowunit"</i><span style="color: navy">;</span>
src.unite<b> as </b><span style="color: maroon">unit</span><span style="color: navy"><b> -> </b></span>lowQty.code = <span style="color: maroon">unit</span> <i>"reflowcode"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>lowQty.system = <span style="color: blue">'http://unitsofmeasure.org'</span> <i>"reflowsystem"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"referencelow"</i><span style="color: navy">;</span>
src.borneSupNormale<b> as </b><span style="color: maroon">high</span><span style="color: navy"><b> -> </b></span>range.high<b> as </b><span style="color: maroon">highQty</span><b> then</b><span style="color: navy"> {
</span> high<span style="color: navy"><b> -> </b></span>highQty.value = <span style="color: maroon">high</span> <i>"refhighvalue"</i><span style="color: navy">;</span>
src.unite<b> as </b><span style="color: maroon">unit</span><span style="color: navy"><b> -> </b></span>highQty.unit = <span style="color: maroon">unit</span> <i>"refhighunit"</i><span style="color: navy">;</span>
src.unite<b> as </b><span style="color: maroon">unit</span><span style="color: navy"><b> -> </b></span>highQty.code = <span style="color: maroon">unit</span> <i>"refhighcode"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>highQty.system = <span style="color: blue">'http://unitsofmeasure.org'</span> <i>"refhighsystem"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"referencehigh"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"labreferencerange"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Performer</span>
src.laboratoire<b> as </b><span style="color: maroon">lab</span><span style="color: navy"><b> -> </b></span>tgtObs.performer<b> as </b><span style="color: maroon">performer</span><b> then</b><span style="color: navy"> {
</span> lab<span style="color: navy"><b> -> </b></span>performer.display = <span style="color: maroon">lab</span> <i>"performerdisplay"</i><span style="color: navy">;</span>
lab<span style="color: navy"><b> -> </b></span>performer.type = <span style="color: blue">'Organization'</span> <i>"performerType"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"labperformer"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><span style="color: navy">// </span><span style="color: green">========================================================================</span>
<span style="color: navy">// </span><span style="color: green">MEDICATION REQUEST TRANSFORMATION</span>
<span style="color: navy">// </span><span style="color: green">========================================================================</span>
<b>group </b>TransformMedicationRequest<span style="color: navy">(</span><b>source</b> <span style="color: maroon">src</span>, <b>target</b> <span style="color: maroon">tgtMedReq</span><span style="color: navy"> : </span>MedicationRequest, <b>source</b> <span style="color: maroon">patient</span><span style="color: navy">)</span><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>tgtMedReq.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>"setId"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Identifier</span>
src.prescriptionId<b> as </b><span style="color: maroon">presId</span><span style="color: navy"><b> -> </b></span>tgtMedReq.identifier<b> as </b><span style="color: maroon">identifier</span><b> then</b><span style="color: navy"> {
</span> presId<span style="color: navy"><b> -> </b></span>identifier.system = <span style="color: blue">'https://hospital.eu/ehr/prescription-id'</span> <i>"medrequestidsystem"</i><span style="color: navy">;</span>
presId<span style="color: navy"><b> -> </b></span>identifier.value = <span style="color: maroon">presId</span> <i>"medrequestidvalue"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"medrequestidentifier"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Status - assume unknown for historical prescriptions</span>
src<span style="color: navy"><b> -> </b></span>tgtMedReq.status = <span style="color: blue">'unknown'</span> <i>"medrequeststatus"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Intent</span>
src<span style="color: navy"><b> -> </b></span>tgtMedReq.intent = <span style="color: blue">'order'</span> <i>"medrequestintent"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Subject</span>
src<span style="color: navy"><b> -> </b></span>tgtMedReq.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">ref</span><b> then</b><span style="color: navy"> {
</span> patient.id<b> as </b><span style="color: maroon">patientId</span><span style="color: navy"><b> -> </b></span> ref.reference = <span style="color: navy">(</span>'Patient/' + %patientId<span style="color: navy">)</span><span style="color: navy">, </span> ref.type = <span style="color: blue">'Patient'</span> <i>"subjectref"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"medrequestsubject"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Medication</span>
src.denomination<b> as </b><span style="color: maroon">denomination</span><span style="color: navy"><b> -> </b></span>tgtMedReq.medication = <b>create</b><span style="color: navy">(</span><span style="color: blue">'CodeableConcept'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">medication</span><b> then</b><span style="color: navy"> {
</span> denomination<b> as </b><span style="color: maroon">text</span><span style="color: navy"><b> -> </b></span>medication.text = <span style="color: maroon">text</span> <i>"medicationtext"</i><span style="color: navy">;</span>
src.codeAtc<b> as </b><span style="color: maroon">atc</span><span style="color: navy"><b> -> </b></span>medication.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span> atc<span style="color: navy"><b> -> </b></span>coding.system = <span style="color: blue">'http://www.whocc.no/atc'</span> <i>"atcsystem"</i><span style="color: navy">;</span>
atc<span style="color: navy"><b> -> </b></span>coding.code = <span style="color: maroon">atc</span> <i>"atccode"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"atccoding"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"medicationdenomination"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Authored date</span>
src.datePrescription<b> as </b><span style="color: maroon">prescDate</span><span style="color: navy"><b> -> </b></span>tgtMedReq.authoredOn = <span style="color: maroon">prescDate</span> <i>"medauthored"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Requester</span>
src.prescripteur<b> as </b><span style="color: maroon">prescriber</span><span style="color: navy"><b> -> </b></span>tgtMedReq.requester<b> as </b><span style="color: maroon">requesterRef</span><b> then</b><span style="color: navy"> {
</span> prescriber<span style="color: navy"><b> -> </b></span>requesterRef.display = <span style="color: maroon">prescriber</span> <i>"requesterdisplay"</i><span style="color: navy">;</span>
prescriber<span style="color: navy"><b> -> </b></span>requesterRef.type = <span style="color: blue">'Practitioner'</span> <i>"requesterType"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"medrequester"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><span style="color: navy">// </span><span style="color: green">========================================================================</span>
<span style="color: navy">// </span><span style="color: green">POSOLOGIE TRANSFORMATION</span>
<span style="color: navy">// </span><span style="color: green">========================================================================</span>
<b>group </b>setPoso<span style="color: navy">(</span><b>source</b> <span style="color: maroon">srcPoso</span>, <b>source</b> <span style="color: maroon">srcPres</span>, <b>target</b> <span style="color: maroon">tgtMedReq</span><span style="color: navy">)</span><span style="color: navy"> {
</span> srcPres<span style="color: navy"><b> -> </b></span>tgtMedReq.dosageInstruction<b> as </b><span style="color: maroon">dosageInstruction</span><b> then</b><span style="color: navy"> {
</span> <span style="color: navy">// </span><span style="color: green">Human-readable dosage text - construct from available fields</span>
srcPoso<span style="color: navy"><b> -> </b></span>dosageInstruction.text = <span style="color: navy">(</span>'Prendre' + iif(%srcPoso.quantite.exists(), ' ' + %srcPoso.quantite.toString(), '1') + iif(%srcPoso.uniteQuantite.exists(), ' ' + %srcPoso.uniteQuantite, ' comprimé') + iif(%srcPoso.nombrePrisesParJour.exists(), ' ' + %srcPoso.nombrePrisesParJour.toString() + ' fois par jour', ' selon prescription')<span style="color: navy">)</span> <i>"dosagetext"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Route of administration from prescription</span>
srcPres.voieAdministration<b> as </b><span style="color: maroon">route</span><span style="color: navy"><b> -> </b></span>dosageInstruction.route<b> as </b><span style="color: maroon">routeCC</span><b> then</b><span style="color: navy"> {
</span> route<span style="color: navy"><b> -> </b></span>routeCC.coding<b> as </b><span style="color: maroon">routeCoding</span><b> then</b><span style="color: navy"> {
</span> route<span style="color: navy"><b> -> </b></span>routeCoding.code = <span style="color: maroon">route</span> <i>"routecode"</i><span style="color: navy">;</span>
route<span style="color: navy"><b> -> </b></span>routeCoding.system = <span style="color: blue">'https://smt.esante.gouv.fr/terminologie-standardterms'</span> <i>"routesystem"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"routecoding"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"dosageroute"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Timing</span>
srcPoso<span style="color: navy"><b> -> </b></span>dosageInstruction.timing<b> as </b><span style="color: maroon">timing</span><b> then</b><span style="color: navy"> {
</span> srcPoso<span style="color: navy"><b> -> </b></span>timing.repeat<b> as </b><span style="color: maroon">timingRepeat</span><b> then</b><span style="color: navy"> {
</span> <span style="color: navy">// </span><span style="color: green">Set prescription period as bounds if available</span>
srcPres<b> where </b>srcPres.dateDebutPrescription.exists() or srcPres.dateFinPrescription.exists()<span style="color: navy"><b> -> </b></span>timingRepeat.bounds = <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">medReqPeriod</span><b> then</b><span style="color: navy"> {
</span> srcPres.dateDebutPrescription<b> as </b><span style="color: maroon">startDate</span><span style="color: navy"><b> -> </b></span>medReqPeriod.start = <span style="color: maroon">startDate</span> <i>"periodstart"</i><span style="color: navy">;</span>
srcPres.dateFinPrescription<b> as </b><span style="color: maroon">endDate</span><span style="color: navy"><b> -> </b></span>medReqPeriod.end = <span style="color: maroon">endDate</span> <i>"periodend"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"prescriptionperiod"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Frequency from posology</span>
srcPoso.nombrePrisesParJour<b> as </b><span style="color: maroon">frequency</span><span style="color: navy"><b> -> </b></span>timingRepeat.frequency = <span style="color: maroon">frequency</span> <i>"timingfrequency"</i><span style="color: navy">;</span>
srcPoso.nombrePrisesParJour<b> as </b><span style="color: maroon">frequency</span><span style="color: navy"><b> -> </b></span>timingRepeat.period = <span style="color: blue">'1'</span> <i>"timingperiod"</i><span style="color: navy">;</span>
srcPoso.nombrePrisesParJour<b> as </b><span style="color: maroon">frequency</span><span style="color: navy"><b> -> </b></span>timingRepeat.periodUnit = <span style="color: blue">'d'</span> <i>"timingperiodunit"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"timingrepeat"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"dosagetiming"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Dose and rate</span>
srcPoso.quantite<b> as </b><span style="color: maroon">quantity</span><span style="color: navy"><b> -> </b></span>dosageInstruction.doseAndRate<b> as </b><span style="color: maroon">doseRate</span><b> then</b><span style="color: navy"> {
</span> quantity<span style="color: navy"><b> -> </b></span>doseRate.dose = <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">doseQuantity</span><b> then</b><span style="color: navy"> {
</span> quantity<span style="color: navy"><b> -> </b></span>doseQuantity.value = <span style="color: maroon">quantity</span> <i>"dosevalue"</i><span style="color: navy">;</span>
srcPoso.uniteQuantite<b> as </b><span style="color: maroon">unit</span><span style="color: navy"><b> -> </b></span>doseQuantity.unit = <span style="color: maroon">unit</span> <i>"doseunit"</i><span style="color: navy">;</span>
srcPoso.uniteQuantite<b> as </b><span style="color: maroon">unit</span><span style="color: navy"><b> -> </b></span>doseQuantity.code = <span style="color: maroon">unit</span> <i>"dosecode"</i><span style="color: navy">;</span>
srcPoso<span style="color: navy"><b> -> </b></span>doseQuantity.system = <span style="color: blue">'http://unitsofmeasure.org'</span> <i>"dosesystem"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"dosequantity"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"doseandrate"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"dosageinstruction"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><span style="color: navy">// </span><span style="color: green">========================================================================</span>
<span style="color: navy">// </span><span style="color: green">VITAL SIGNS TRANSFORMATION</span>
<span style="color: navy">// </span><span style="color: green">========================================================================</span>
<b>group </b>TransformVitalSigns<span style="color: navy">(</span><b>source</b> <span style="color: maroon">src</span>, <b>target</b> <span style="color: maroon">tgtObs</span><span style="color: navy"> : </span>Observation, <b>source</b> <span style="color: maroon">patient</span><span style="color: navy">)</span><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>tgtObs.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>"setId"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Identifier</span>
src.soinId<b> as </b><span style="color: maroon">soinId</span><span style="color: navy"><b> -> </b></span>tgtObs.identifier<b> as </b><span style="color: maroon">identifier</span><b> then</b><span style="color: navy"> {
</span> soinId<span style="color: navy"><b> -> </b></span>identifier.system = <span style="color: blue">'https://hospital.eu/ehr/soin-id'</span> <i>"soinidsystem"</i><span style="color: navy">;</span>
soinId<span style="color: navy"><b> -> </b></span>identifier.value = <span style="color: maroon">soinId</span> <i>"soinidvalue"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"medrequestidentifier"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Status - assume final</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.status = <span style="color: blue">'final'</span> <i>"status"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Category - vital-signs</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.category<b> as </b><span style="color: maroon">category</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>category.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>coding.system = <span style="color: blue">'http://terminology.hl7.org/CodeSystem/observation-category'</span> <i>"categorysystem"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>coding.code = <span style="color: blue">'vital-signs'</span> <i>"categorycode"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"categorycoding"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"category"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">code (LOINC)</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.code<b> as </b><span style="color: maroon">code</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>code.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>coding.system = <span style="color: blue">'http://loinc.org'</span> <i>"codesystem"</i><span style="color: navy">;</span>
src.codeLoinc<b> as </b><span style="color: maroon">codeLoinc</span><span style="color: navy"><b> -> </b></span>coding.code = <span style="color: maroon">codeLoinc</span> <i>"codevalue"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"coding"</i><span style="color: navy">;</span>
src.libelleTest<b> as </b><span style="color: maroon">label</span><span style="color: navy"><b> -> </b></span>code.text = <span style="color: maroon">label</span> <i>"codetext"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"code"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Subject</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.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">ref</span><b> then</b><span style="color: navy"> {
</span> patient.id<b> as </b><span style="color: maroon">patientId</span><span style="color: navy"><b> -> </b></span> ref.reference = <span style="color: navy">(</span>'Patient/' + %patientId<span style="color: navy">)</span><span style="color: navy">, </span> ref.type = <span style="color: blue">'Patient'</span> <i>"subjectref"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"obssubject"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Date de l'observation</span>
src.dateMesure<b> as </b><span style="color: maroon">date</span><b> where </b>%date.exists()<span style="color: navy"><b> -> </b></span>tgtObs.effective = <b>cast</b><span style="color: navy">(</span><span style="color: maroon">date</span><span style="color: navy">, </span><span style="color: blue">'dateTime'</span><span style="color: navy">)</span> <i>"effective"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Valeur (quantitiative)</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.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">qty</span><b> then</b><span style="color: navy"> {
</span> src.valeur<b> as </b><span style="color: maroon">mesure</span><span style="color: navy"><b> -> </b></span>qty.value = <span style="color: maroon">mesure</span> <i>"value"</i><span style="color: navy">;</span>
src.unite<b> as </b><span style="color: maroon">unit</span><span style="color: navy"><b> -> </b></span>qty.unit = <span style="color: maroon">unit</span> <i>"unit"</i><span style="color: navy">;</span>
src.unite<b> as </b><span style="color: maroon">unit</span><span style="color: navy"><b> -> </b></span>qty.code = <span style="color: maroon">unit</span> <i>"code"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>qty.system = <span style="color: blue">'http://unitsofmeasure.org'</span> <i>"system"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"quantity"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Blood pressure observation - would need separate entry with components</span>
<span style="color: navy">}
</span><span style="color: navy">// </span><span style="color: green">========================================================================</span>
<span style="color: navy">// </span><span style="color: green">LIFESTYLE TRANSFORMATION - SEPARATE OBSERVATIONS</span>
<span style="color: navy">// </span><span style="color: green">========================================================================</span>
<b>group </b>TransformTobaccoObservation<span style="color: navy">(</span><b>source</b> <span style="color: maroon">src</span>, <b>target</b> <span style="color: maroon">tgtObs</span><span style="color: navy"> : </span>Observation, <b>source</b> <span style="color: maroon">patient</span><span style="color: navy">)</span><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>tgtObs.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>"setId"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Identifier</span>
src.styleVieId<b> as </b><span style="color: maroon">lsId</span><span style="color: navy"><b> -> </b></span>tgtObs.identifier<b> as </b><span style="color: maroon">identifier</span><b> then</b><span style="color: navy"> {
</span> lsId<span style="color: navy"><b> -> </b></span>identifier.system = <span style="color: blue">'https://hospital.eu/ehr/lifestyle-id'</span> <i>"lifestyleidsystem"</i><span style="color: navy">;</span>
lsId<span style="color: navy"><b> -> </b></span>identifier.value = <span style="color: navy">(</span>%lsId & '-tobacco'<span style="color: navy">)</span> <i>"lifestyleidvalue"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"lifestyleidentifier"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Status</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.status = <span style="color: blue">'final'</span> <i>"lifestylestatus"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Category - social-history</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.category<b> as </b><span style="color: maroon">category</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>category.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>coding.system = <span style="color: blue">'http://terminology.hl7.org/CodeSystem/observation-category'</span> <i>"categorysystem"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>coding.code = <span style="color: blue">'social-history'</span> <i>"categorycode"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>coding.display = <span style="color: blue">'Social History'</span> <i>"categorydisplay"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"categorycoding"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"lifestylecategory"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Code - tobacco use status</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.code<b> as </b><span style="color: maroon">code</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>code.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>coding.system = <span style="color: blue">'http://loinc.org'</span> <i>"codesystem"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>coding.code = <span style="color: blue">'72166-2'</span> <i>"codevalue"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>coding.display = <span style="color: blue">'Tobacco smoking status'</span> <i>"codedisplay"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"tobaccocoding"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"tobaccocode"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Subject</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.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">ref</span><b> then</b><span style="color: navy"> {
</span> patient.id<b> as </b><span style="color: maroon">patientId</span><span style="color: navy"><b> -> </b></span> ref.reference = <span style="color: navy">(</span>'Patient/' + %patientId<span style="color: navy">)</span><span style="color: navy">, </span> ref.type = <span style="color: blue">'Patient'</span> <i>"subjectref"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"lifestylesubject"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Effective date</span>
src.dateRecueil<b> as </b><span style="color: maroon">collectDate</span><b> where </b>%collectDate.exists()<span style="color: navy"><b> -> </b></span>tgtObs.effective = <b>cast</b><span style="color: navy">(</span><span style="color: maroon">collectDate</span><span style="color: navy">, </span><span style="color: blue">'dateTime'</span><span style="color: navy">)</span> <i>"lifestyleeffective"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Value</span>
src.consommationTabac<b> as </b><span style="color: maroon">tobacco</span><span style="color: navy"><b> -> </b></span>tgtObs.value = <b>create</b><span style="color: navy">(</span><span style="color: blue">'CodeableConcept'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">valueCC</span><b> then</b><span style="color: navy"> {
</span> tobacco<span style="color: navy"><b> -> </b></span>valueCC.text = <span style="color: maroon">tobacco</span> <i>"tobaccovaluetext"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"tobaccovalue"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><b>group </b>TransformAlcoholObservation<span style="color: navy">(</span><b>source</b> <span style="color: maroon">src</span>, <b>target</b> <span style="color: maroon">tgtObs</span><span style="color: navy"> : </span>Observation, <b>source</b> <span style="color: maroon">patient</span><span style="color: navy">)</span><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>tgtObs.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>"setId"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Identifier</span>
src.styleVieId<b> as </b><span style="color: maroon">lsId</span><span style="color: navy"><b> -> </b></span>tgtObs.identifier<b> as </b><span style="color: maroon">identifier</span><b> then</b><span style="color: navy"> {
</span> lsId<span style="color: navy"><b> -> </b></span>identifier.system = <span style="color: blue">'https://hospital.eu/ehr/lifestyle-id'</span> <i>"lifestyleidsystem"</i><span style="color: navy">;</span>
lsId<span style="color: navy"><b> -> </b></span>identifier.value = <span style="color: navy">(</span>%lsId & '-alcohol'<span style="color: navy">)</span> <i>"lifestyleidvalue"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"lifestyleidentifier"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Status</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.status = <span style="color: blue">'final'</span> <i>"lifestylestatus"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Category - social-history</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.category<b> as </b><span style="color: maroon">category</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>category.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>coding.system = <span style="color: blue">'http://terminology.hl7.org/CodeSystem/observation-category'</span> <i>"categorysystem"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>coding.code = <span style="color: blue">'social-history'</span> <i>"categorycode"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>coding.display = <span style="color: blue">'Social History'</span> <i>"categorydisplay"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"categorycoding"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"lifestylecategory"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Code - alcohol use</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.code<b> as </b><span style="color: maroon">code</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>code.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>coding.system = <span style="color: blue">'http://loinc.org'</span> <i>"codesystem"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>coding.code = <span style="color: blue">'11331-6'</span> <i>"codevalue"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>coding.display = <span style="color: blue">'History of alcohol use'</span> <i>"codedisplay"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"alcoholcoding"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"alcoholcode"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Subject</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.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">ref</span><b> then</b><span style="color: navy"> {
</span> patient.id<b> as </b><span style="color: maroon">patientId</span><span style="color: navy"><b> -> </b></span> ref.reference = <span style="color: navy">(</span>'Patient/' + %patientId<span style="color: navy">)</span><span style="color: navy">, </span> ref.type = <span style="color: blue">'Patient'</span> <i>"subjectref"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"lifestylesubject"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Effective date</span>
src.dateRecueil<b> as </b><span style="color: maroon">collectDate</span><b> where </b>%collectDate.exists()<span style="color: navy"><b> -> </b></span>tgtObs.effective = <b>cast</b><span style="color: navy">(</span><span style="color: maroon">collectDate</span><span style="color: navy">, </span><span style="color: blue">'dateTime'</span><span style="color: navy">)</span> <i>"lifestyleeffective"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Value</span>
src.consommationAlcool<b> as </b><span style="color: maroon">alcohol</span><span style="color: navy"><b> -> </b></span>tgtObs.value = <b>create</b><span style="color: navy">(</span><span style="color: blue">'CodeableConcept'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">valueCC</span><b> then</b><span style="color: navy"> {
</span> alcohol<span style="color: navy"><b> -> </b></span>valueCC.text = <span style="color: maroon">alcohol</span> <i>"alcoholvaluetext"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"alcoholvalue"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><b>group </b>TransformDrugObservation<span style="color: navy">(</span><b>source</b> <span style="color: maroon">src</span>, <b>target</b> <span style="color: maroon">tgtObs</span><span style="color: navy"> : </span>Observation, <b>source</b> <span style="color: maroon">patient</span><span style="color: navy">)</span><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>tgtObs.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>"setId"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Identifier</span>
src.styleVieId<b> as </b><span style="color: maroon">lsId</span><span style="color: navy"><b> -> </b></span>tgtObs.identifier<b> as </b><span style="color: maroon">identifier</span><b> then</b><span style="color: navy"> {
</span> lsId<span style="color: navy"><b> -> </b></span>identifier.system = <span style="color: blue">'https://hospital.eu/ehr/lifestyle-id'</span> <i>"lifestyleidsystem"</i><span style="color: navy">;</span>
lsId<span style="color: navy"><b> -> </b></span>identifier.value = <span style="color: navy">(</span>%lsId & '-drugs'<span style="color: navy">)</span> <i>"lifestyleidvalue"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"lifestyleidentifier"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Status</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.status = <span style="color: blue">'final'</span> <i>"lifestylestatus"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Category - social-history</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.category<b> as </b><span style="color: maroon">category</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>category.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>coding.system = <span style="color: blue">'http://terminology.hl7.org/CodeSystem/observation-category'</span> <i>"categorysystem"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>coding.code = <span style="color: blue">'social-history'</span> <i>"categorycode"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>coding.display = <span style="color: blue">'Social History'</span> <i>"categorydisplay"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"categorycoding"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"lifestylecategory"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Code - drug use</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.code<b> as </b><span style="color: maroon">code</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>code.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>coding.system = <span style="color: blue">'http://loinc.org'</span> <i>"codesystem"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>coding.code = <span style="color: blue">'11342-3'</span> <i>"codevalue"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>coding.display = <span style="color: blue">'History of drug use'</span> <i>"codedisplay"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"drugcoding"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"drugcode"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Subject</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.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">ref</span><b> then</b><span style="color: navy"> {
</span> patient.id<b> as </b><span style="color: maroon">patientId</span><span style="color: navy"><b> -> </b></span> ref.reference = <span style="color: navy">(</span>'Patient/' + %patientId<span style="color: navy">)</span><span style="color: navy">, </span> ref.type = <span style="color: blue">'Patient'</span> <i>"subjectref"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"lifestylesubject"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Effective date</span>
src.dateRecueil<b> as </b><span style="color: maroon">collectDate</span><b> where </b>%collectDate.exists()<span style="color: navy"><b> -> </b></span>tgtObs.effective = <b>cast</b><span style="color: navy">(</span><span style="color: maroon">collectDate</span><span style="color: navy">, </span><span style="color: blue">'dateTime'</span><span style="color: navy">)</span> <i>"lifestyleeffective"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Value</span>
src.consommationAutresDrogues<b> as </b><span style="color: maroon">drugs</span><span style="color: navy"><b> -> </b></span>tgtObs.value = <b>create</b><span style="color: navy">(</span><span style="color: blue">'CodeableConcept'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">valueCC</span><b> then</b><span style="color: navy"> {
</span> drugs<span style="color: navy"><b> -> </b></span>valueCC.text = <span style="color: maroon">drugs</span> <i>"drugvaluetext"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"drugvalue"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><b>group </b>TransformPhysicalActivityObservation<span style="color: navy">(</span><b>source</b> <span style="color: maroon">src</span>, <b>target</b> <span style="color: maroon">tgtObs</span><span style="color: navy"> : </span>Observation, <b>source</b> <span style="color: maroon">patient</span><span style="color: navy">)</span><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>tgtObs.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>"setId"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Identifier</span>
src.styleVieId<b> as </b><span style="color: maroon">lsId</span><span style="color: navy"><b> -> </b></span>tgtObs.identifier<b> as </b><span style="color: maroon">identifier</span><b> then</b><span style="color: navy"> {
</span> lsId<span style="color: navy"><b> -> </b></span>identifier.system = <span style="color: blue">'https://hospital.eu/ehr/lifestyle-id'</span> <i>"lifestyleidsystem"</i><span style="color: navy">;</span>
lsId<span style="color: navy"><b> -> </b></span>identifier.value = <span style="color: navy">(</span>%lsId & '-physical'<span style="color: navy">)</span> <i>"lifestyleidvalue"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"lifestyleidentifier"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Status</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.status = <span style="color: blue">'final'</span> <i>"lifestylestatus"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Category - social-history</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.category<b> as </b><span style="color: maroon">category</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>category.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>coding.system = <span style="color: blue">'http://terminology.hl7.org/CodeSystem/observation-category'</span> <i>"categorysystem"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>coding.code = <span style="color: blue">'social-history'</span> <i>"categorycode"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>coding.display = <span style="color: blue">'Social History'</span> <i>"categorydisplay"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"categorycoding"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"lifestylecategory"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Code - physical activity</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.code<b> as </b><span style="color: maroon">code</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>code.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>coding.system = <span style="color: blue">'http://loinc.org'</span> <i>"codesystem"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>coding.code = <span style="color: blue">'67504-6'</span> <i>"codevalue"</i><span style="color: navy">;</span>
src<span style="color: navy"><b> -> </b></span>coding.display = <span style="color: blue">'Exercise activity'</span> <i>"codedisplay"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"physicalcoding"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"physicalcode"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Subject</span>
src<span style="color: navy"><b> -> </b></span>tgtObs.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">ref</span><b> then</b><span style="color: navy"> {
</span> patient.id<b> as </b><span style="color: maroon">patientId</span><span style="color: navy"><b> -> </b></span> ref.reference = <span style="color: navy">(</span>'Patient/' + %patientId<span style="color: navy">)</span><span style="color: navy">, </span> ref.type = <span style="color: blue">'Patient'</span> <i>"subjectref"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"lifestylesubject"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Effective date</span>
src.dateRecueil<b> as </b><span style="color: maroon">collectDate</span><b> where </b>%collectDate.exists()<span style="color: navy"><b> -> </b></span>tgtObs.effective = <b>cast</b><span style="color: navy">(</span><span style="color: maroon">collectDate</span><span style="color: navy">, </span><span style="color: blue">'dateTime'</span><span style="color: navy">)</span> <i>"lifestyleeffective"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Value</span>
src.activitePhysique<b> as </b><span style="color: maroon">physical</span><span style="color: navy"><b> -> </b></span>tgtObs.value = <b>create</b><span style="color: navy">(</span><span style="color: blue">'CodeableConcept'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">valueCC</span><b> then</b><span style="color: navy"> {
</span> physical<span style="color: navy"><b> -> </b></span>valueCC.text = <span style="color: maroon">physical</span> <i>"physicalvaluetext"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"physicalvalue"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><span style="color: navy">// </span><span style="color: green">========================================================================</span>
<span style="color: navy">// </span><span style="color: green">MEDICATION ADMINISTRATION TRANSFORMATION</span>
<span style="color: navy">// </span><span style="color: green">========================================================================</span>
<b>group </b>TransformMedicationAdministrationWOOrder<span style="color: navy">(</span><b>source</b> <span style="color: maroon">src</span>, <b>target</b> <span style="color: maroon">tgtMedAdmin</span><span style="color: navy"> : </span>MedicationAdministration, <b>source</b> <span style="color: maroon">patient</span><span style="color: navy">)</span><span style="color: navy"> {
</span> src<span style="color: navy"><b> -> </b></span>tgtMedAdmin.id = <b>uuid</b><span style="color: navy">(</span><span style="color: navy">)</span> <i>"setId"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Identifier</span>
src.administrationId<b> as </b><span style="color: maroon">adminId</span><span style="color: navy"><b> -> </b></span>tgtMedAdmin.identifier<b> as </b><span style="color: maroon">identifier</span><b> then</b><span style="color: navy"> {
</span> adminId<span style="color: navy"><b> -> </b></span>identifier.system = <span style="color: blue">'https://hospital.eu/ehr/administration-id'</span> <i>"adminidsystem"</i><span style="color: navy">;</span>
adminId<span style="color: navy"><b> -> </b></span>identifier.value = <span style="color: maroon">adminId</span> <i>"adminidvalue"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"adminidentifier"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Status - assume completed</span>
src<span style="color: navy"><b> -> </b></span>tgtMedAdmin.status = <span style="color: blue">'completed'</span> <i>"adminstatus"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Subject</span>
src<span style="color: navy"><b> -> </b></span>tgtMedAdmin.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">ref</span><b> then</b><span style="color: navy"> {
</span> patient.id<b> as </b><span style="color: maroon">patientId</span><span style="color: navy"><b> -> </b></span> ref.reference = <span style="color: navy">(</span>'Patient/' + %patientId<span style="color: navy">)</span><span style="color: navy">, </span> ref.type = <span style="color: blue">'Patient'</span> <i>"subjectref"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"adminsubject"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Medication</span>
src.denomination<b> as </b><span style="color: maroon">denomination</span><span style="color: navy"><b> -> </b></span>tgtMedAdmin.medication = <b>create</b><span style="color: navy">(</span><span style="color: blue">'CodeableConcept'</span><span style="color: navy">)</span><b> as </b><span style="color: maroon">medication</span><b> then</b><span style="color: navy"> {
</span> denomination<span style="color: navy"><b> -> </b></span>medication.text = <span style="color: maroon">denomination</span> <i>"medicationtext"</i><span style="color: navy">;</span>
src.codeAtc<b> as </b><span style="color: maroon">atc</span><span style="color: navy"><b> -> </b></span>medication.coding<b> as </b><span style="color: maroon">coding</span><b> then</b><span style="color: navy"> {
</span> atc<span style="color: navy"><b> -> </b></span>coding.system = <span style="color: blue">'http://www.whocc.no/atc'</span> <i>"atcsystem"</i><span style="color: navy">;</span>
atc<span style="color: navy"><b> -> </b></span>coding.code = <span style="color: maroon">atc</span> <i>"atccode"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"atccoding"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"adminmedication"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Effective period</span>
src<b> where </b>src.dateHeureDebut.exists() or src.dateHeureFin.exists()<span style="color: navy"><b> -> </b></span>tgtMedAdmin.effective = <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">period</span><b> then</b><span style="color: navy"> {
</span> src.dateHeureDebut<b> as </b><span style="color: maroon">startDate</span><span style="color: navy"><b> -> </b></span>period.start = <span style="color: maroon">startDate</span> <i>"periodstart"</i><span style="color: navy">;</span>
src.dateHeureFin<b> as </b><span style="color: maroon">endDate</span><span style="color: navy"><b> -> </b></span>period.end = <span style="color: maroon">endDate</span> <i>"periodend"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"admineffective"</i><span style="color: navy">;</span>
<span style="color: navy">// </span><span style="color: green">Dosage</span>
src<b> where </b>src.quantite.exists() or src.voieAdministration.exists()<span style="color: navy"><b> -> </b></span>tgtMedAdmin.dosage<b> as </b><span style="color: maroon">dosage</span><b> then</b><span style="color: navy"> {
</span> src.quantite<b> as </b><span style="color: maroon">quantity</span><span style="color: navy"><b> -> </b></span>dosage.dose = <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">dose</span><b> then</b><span style="color: navy"> {
</span> quantity<span style="color: navy"><b> -> </b></span>dose.value = <span style="color: maroon">quantity</span> <i>"dosevalue"</i><span style="color: navy">;</span>
src.uniteQuantite<b> as </b><span style="color: maroon">unit</span><span style="color: navy"><b> -> </b></span>dose.unit = <span style="color: maroon">unit</span> <i>"doseunit"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"admindose"</i><span style="color: navy">;</span>
src.voieAdministration<b> as </b><span style="color: maroon">route</span><span style="color: navy"><b> -> </b></span>dosage.route<b> as </b><span style="color: maroon">routeCC</span><b> then</b><span style="color: navy"> {
</span> route<span style="color: navy"><b> -> </b></span>routeCC.coding<b> as </b><span style="color: maroon">routeCoding</span><b> then</b><span style="color: navy"> {
</span> route<span style="color: navy"><b> -> </b></span>routeCoding.code = <span style="color: maroon">route</span> <i>"routecode"</i><span style="color: navy">;</span>
route<span style="color: navy"><b> -> </b></span>routeCoding.system = <span style="color: blue">'https://smt.esante.gouv.fr/terminologie-standardterms'</span> <i>"routesystem"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"routecoding"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"dosageroute"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"admindosage"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><b>group </b>TransformMedicationAdministrationWOrder<span style="color: navy">(</span><b>source</b> <span style="color: maroon">src</span>, <b>target</b> <span style="color: maroon">tgtMedAdmin</span><span style="color: navy"> : </span>MedicationAdministration, <b>source</b> <span style="color: maroon">patient</span>, <b>source</b> <span style="color: maroon">order</span><span style="color: navy">)</span><b> extends </b>TransformMedicationAdministrationWOOrder<span style="color: navy"> {
</span> <span style="color: navy">// </span><span style="color: green">Context (encounter) reference</span>
src<span style="color: navy"><b> -> </b></span>tgtMedAdmin.request = <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">ref</span><b> then</b><span style="color: navy"> {
</span> order.id<b> as </b><span style="color: maroon">orderId</span><span style="color: navy"><b> -> </b></span> ref.reference = <span style="color: navy">(</span>'MedicationRequest/' + %orderId<span style="color: navy">)</span><span style="color: navy">, </span> ref.type = <span style="color: blue">'MedicationRequest'</span> <i>"encounterref"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"admincontext"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span><b>group </b>setEntryRequestAndFullUrl<span style="color: navy">(</span><b>source</b> <span style="color: maroon">newRes</span>, <b>target</b> <span style="color: maroon">tgtEntry</span><span style="color: navy">)</span><span style="color: navy"> {
</span> newRes.id<b> as </b><span style="color: maroon">newResId</span><b> then</b><span style="color: navy"> {
</span> newResId<span style="color: navy"><b> -> </b></span>tgtEntry.fullUrl = <span style="color: navy">(</span>'urn:ehr:' + %newRes.type().name + '/' + %newResId<span style="color: navy">)</span> <i>"setFullUrl"</i><span style="color: navy">;</span>
<span style="color: navy">}</span> <i>"setResourceType"</i><span style="color: navy">;</span>
<span style="color: navy">}
</span></pre></div>
</text>
<url value="https://interop.aphp.fr/ig/fhir/dm/StructureMap/EHR2FSL"/>
<version value="0.1.0"/>
<name value="EHR2FSL"/>
<title
value="Transforms EHR logical model data to FHIR Semantic Layer resources using Bundle as container"/>
<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="Transforms EHR logical model data to FHIR Semantic Layer resources using Bundle as container"/>
<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/ehr"/>
<mode value="source"/>
<alias value="EHR"/>
</structure>
<structure>
<url value="http://hl7.org/fhir/StructureDefinition/Bundle"/>
<mode value="target"/>
<alias value="Bundle"/>
</structure>
<group>
<name value="EHR2FSL"/>
<typeMode value="none"/>
<input>
<name value="src"/>
<type value="EHR"/>
<mode value="source"/>
</input>
<input>
<name value="bundle"/>
<type value="Bundle"/>
<mode value="target"/>
</input>
<rule>
<name value="bundleid"/>
<source>
<context value="src"/>
</source>
<target>
<context value="bundle"/>
<contextType value="variable"/>
<element value="id"/>
<transform value="uuid"/>
</target>
</rule>
<rule>
<name value="bundletype"/>
<source>
<context value="src"/>
</source>
<target>
<context value="bundle"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="copy"/>
<parameter>
<valueString value="collection"/>
</parameter>
</target>
</rule>
<rule>
<name value="setTimestamp"/>
<source>
<context value="src"/>
</source>
<target>
<contextType value="variable"/>
<variable value="timestamp"/>
<transform value="evaluate"/>
<parameter>
<valueString value="now()"/>
</parameter>
</target>
<rule>
<name value="affectTimestamp"/>
<source>
<context value="src"/>
</source>
<target>
<context value="bundle"/>
<contextType value="variable"/>
<element value="timestamp"/>
<transform value="copy"/>
<parameter>
<valueId value="timestamp"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="patiententry"/>
<source>
<context value="src"/>
<element value="patient"/>
<variable value="patient"/>
</source>
<target>
<context value="bundle"/>
<contextType value="variable"/>
<element value="entry"/>
<variable value="patientEntry"/>
</target>
<rule>
<name value="createpatient"/>
<source>
<context value="patient"/>
</source>
<target>
<context value="patientEntry"/>
<contextType value="variable"/>
<element value="resource"/>
<variable value="dmPatient"/>
<transform value="create"/>
<parameter>
<valueString value="Patient"/>
</parameter>
</target>
<rule>
<name value="transformpatient"/>
<source>
<context value="patient"/>
</source>
<dependent>
<name value="TransformPatient"/>
<variable value="patient"/>
<variable value="dmPatient"/>
</dependent>
</rule>
<rule>
<name value="setRequestAndFullUrl"/>
<source>
<context value="patient"/>
</source>
<dependent>
<name value="setEntryRequestAndFullUrl"/>
<variable value="dmPatient"/>
<variable value="patientEntry"/>
</dependent>
</rule>
<rule>
<name value="transformpatientAdresse"/>
<source>
<context value="src"/>
<element value="patientAdresse"/>
<variable value="patientAdresse"/>
<condition value="patientAdresse.patientId = %patient.patientId"/>
</source>
<dependent>
<name value="setAddress"/>
<variable value="patientAdresse"/>
<variable value="dmPatient"/>
</dependent>
</rule>
<rule>
<name value="encounterentries"/>
<source>
<context value="src"/>
<element value="donneesPmsi"/>
<variable value="pmsi"/>
<condition value="pmsi.patientId = %patient.patientId"/>
</source>
<target>
<context value="bundle"/>
<contextType value="variable"/>
<element value="entry"/>
<variable value="encounterEntry"/>
</target>
<rule>
<name value="createencounter"/>
<source>
<context value="pmsi"/>
</source>
<target>
<context value="encounterEntry"/>
<contextType value="variable"/>
<element value="resource"/>
<variable value="dmEncounter"/>
<transform value="create"/>
<parameter>
<valueString value="Encounter"/>
</parameter>
</target>
<rule>
<name value="transformencounter"/>
<source>
<context value="pmsi"/>
</source>
<dependent>
<name value="TransformEncounter"/>
<variable value="pmsi"/>
<variable value="dmEncounter"/>
<variable value="dmPatient"/>
</dependent>
</rule>
<rule>
<name value="setRequestAndFullUrl"/>
<source>
<context value="pmsi"/>
</source>
<dependent>
<name value="setEntryRequestAndFullUrl"/>
<variable value="dmEncounter"/>
<variable value="encounterEntry"/>
</dependent>
</rule>
<rule>
<name value="conditionentries"/>
<source>
<context value="src"/>
<element value="diagnostics"/>
<variable value="diag"/>
<condition
value="(diag.patientId = %patient.patientId) and (diag.pmsiId = %pmsi.pmsiId)"/>
</source>
<target>
<context value="bundle"/>
<contextType value="variable"/>
<element value="entry"/>
<variable value="conditionEntry"/>
</target>
<rule>
<name value="createcondition"/>
<source>
<context value="diag"/>
</source>
<target>
<context value="conditionEntry"/>
<contextType value="variable"/>
<element value="resource"/>
<variable value="dmCondition"/>
<transform value="create"/>
<parameter>
<valueString value="Condition"/>
</parameter>
</target>
<rule>
<name value="transformcondition"/>
<source>
<context value="diag"/>
</source>
<dependent>
<name value="TransformCondition"/>
<variable value="diag"/>
<variable value="dmCondition"/>
<variable value="dmPatient"/>
<variable value="dmEncounter"/>
</dependent>
</rule>
<rule>
<name value="setRequestAndFullUrl"/>
<source>
<context value="diag"/>
</source>
<dependent>
<name value="setEntryRequestAndFullUrl"/>
<variable value="dmCondition"/>
<variable value="conditionEntry"/>
</dependent>
</rule>
</rule>
</rule>
<rule>
<name value="procedureentries"/>
<source>
<context value="src"/>
<element value="actes"/>
<variable value="acte"/>
<condition
value="(acte.patientId = %patient.patientId) and (acte.pmsiId = %pmsi.pmsiId)"/>
</source>
<target>
<context value="bundle"/>
<contextType value="variable"/>
<element value="entry"/>
<variable value="procedureEntry"/>
</target>
<rule>
<name value="createprocedure"/>
<source>
<context value="acte"/>
</source>
<target>
<context value="procedureEntry"/>
<contextType value="variable"/>
<element value="resource"/>
<variable value="dmProcedure"/>
<transform value="create"/>
<parameter>
<valueString value="Procedure"/>
</parameter>
</target>
<rule>
<name value="transformprocedure"/>
<source>
<context value="acte"/>
</source>
<dependent>
<name value="TransformProcedure"/>
<variable value="acte"/>
<variable value="dmProcedure"/>
<variable value="dmPatient"/>
<variable value="dmEncounter"/>
</dependent>
</rule>
<rule>
<name value="setRequestAndFullUrl"/>
<source>
<context value="acte"/>
</source>
<dependent>
<name value="setEntryRequestAndFullUrl"/>
<variable value="dmProcedure"/>
<variable value="procedureEntry"/>
</dependent>
</rule>
</rule>
</rule>
</rule>
</rule>
<rule>
<name value="labentries"/>
<source>
<context value="src"/>
<element value="biologie"/>
<variable value="lab"/>
<condition value="lab.patientId = %patient.patientId"/>
</source>
<target>
<context value="bundle"/>
<contextType value="variable"/>
<element value="entry"/>
<variable value="labEntry"/>
</target>
<rule>
<name value="createlabobs"/>
<source>
<context value="lab"/>
</source>
<target>
<context value="labEntry"/>
<contextType value="variable"/>
<element value="resource"/>
<variable value="dmLab"/>
<transform value="create"/>
<parameter>
<valueString value="Observation"/>
</parameter>
</target>
<rule>
<name value="transformLabObs"/>
<source>
<context value="lab"/>
</source>
<dependent>
<name value="TransformLabObservation"/>
<variable value="lab"/>
<variable value="dmLab"/>
<variable value="dmPatient"/>
</dependent>
</rule>
<rule>
<name value="setRequestAndFullUrl"/>
<source>
<context value="lab"/>
</source>
<dependent>
<name value="setEntryRequestAndFullUrl"/>
<variable value="dmLab"/>
<variable value="labEntry"/>
</dependent>
</rule>
</rule>
</rule>
<rule>
<name value="medicationentries"/>
<source>
<context value="src"/>
<element value="prescription"/>
<variable value="pres"/>
<condition value="pres.patientId = %patient.patientId"/>
</source>
<target>
<context value="bundle"/>
<contextType value="variable"/>
<element value="entry"/>
<variable value="medReqEntry"/>
</target>
<rule>
<name value="createmedreq"/>
<source>
<context value="pres"/>
</source>
<target>
<context value="medReqEntry"/>
<contextType value="variable"/>
<element value="resource"/>
<variable value="dmMedReq"/>
<transform value="create"/>
<parameter>
<valueString value="MedicationRequest"/>
</parameter>
</target>
<rule>
<name value="createmedrequest"/>
<source>
<context value="src"/>
</source>
<dependent>
<name value="TransformMedicationRequest"/>
<variable value="pres"/>
<variable value="dmMedReq"/>
<variable value="dmPatient"/>
</dependent>
</rule>
<rule>
<name value="setRequestAndFullUrl"/>
<source>
<context value="pres"/>
</source>
<dependent>
<name value="setEntryRequestAndFullUrl"/>
<variable value="dmMedReq"/>
<variable value="medReqEntry"/>
</dependent>
</rule>
<rule>
<name value="transformPoso"/>
<source>
<context value="src"/>
<element value="posologie"/>
<variable value="poso"/>
<condition
value="%poso.prescriptionId = %pres.prescriptionId"/>
</source>
<dependent>
<name value="setPoso"/>
<variable value="poso"/>
<variable value="pres"/>
<variable value="dmMedReq"/>
</dependent>
</rule>
<rule>
<name value="administrationentries"/>
<source>
<context value="src"/>
<element value="administration"/>
<variable value="admin"/>
<condition
value="(admin.patientId = %patient.patientId) and (admin.prescriptionId = pres.prescriptionId)"/>
</source>
<target>
<context value="bundle"/>
<contextType value="variable"/>
<element value="entry"/>
<variable value="adminEntry"/>
</target>
<rule>
<name value="createmedadmin"/>
<source>
<context value="admin"/>
</source>
<target>
<context value="adminEntry"/>
<contextType value="variable"/>
<element value="resource"/>
<variable value="dmAdmin"/>
<transform value="create"/>
<parameter>
<valueString value="MedicationAdministration"/>
</parameter>
</target>
<rule>
<name value="createmedadmin"/>
<source>
<context value="admin"/>
</source>
<dependent>
<name value="TransformMedicationAdministrationWOrder"/>
<variable value="admin"/>
<variable value="dmAdmin"/>
<variable value="dmPatient"/>
<variable value="dmMedReq"/>
</dependent>
</rule>
<rule>
<name value="setRequestAndFullUrl"/>
<source>
<context value="admin"/>
</source>
<dependent>
<name value="setEntryRequestAndFullUrl"/>
<variable value="dmAdmin"/>
<variable value="adminEntry"/>
</dependent>
</rule>
</rule>
</rule>
</rule>
</rule>
<rule>
<name value="lifestyleentries"/>
<source>
<context value="src"/>
<element value="styleVie"/>
<variable value="lifestyle"/>
<condition value="lifestyle.patientId = %patient.patientId"/>
</source>
<rule>
<name value="tobaccoentries"/>
<source>
<context value="lifestyle"/>
<element value="consommationTabac"/>
<variable value="tobacco"/>
<condition value="tobacco.exists()"/>
</source>
<target>
<context value="bundle"/>
<contextType value="variable"/>
<element value="entry"/>
<variable value="tobaccoEntry"/>
</target>
<rule>
<name value="createtobaccoobs"/>
<source>
<context value="tobacco"/>
</source>
<target>
<context value="tobaccoEntry"/>
<contextType value="variable"/>
<element value="resource"/>
<variable value="tobaccoObs"/>
<transform value="create"/>
<parameter>
<valueString value="Observation"/>
</parameter>
</target>
<rule>
<name value="createtobaccoobs"/>
<source>
<context value="lifestyle"/>
</source>
<dependent>
<name value="TransformTobaccoObservation"/>
<variable value="lifestyle"/>
<variable value="tobaccoObs"/>
<variable value="dmPatient"/>
</dependent>
</rule>
<rule>
<name value="setRequestAndFullUrl"/>
<source>
<context value="lifestyle"/>
</source>
<dependent>
<name value="setEntryRequestAndFullUrl"/>
<variable value="tobaccoObs"/>
<variable value="tobaccoEntry"/>
</dependent>
</rule>
</rule>
</rule>
<rule>
<name value="alcoholentries"/>
<source>
<context value="lifestyle"/>
<element value="consommationAlcool"/>
<variable value="alcohol"/>
<condition value="alcohol.exists()"/>
</source>
<target>
<context value="bundle"/>
<contextType value="variable"/>
<element value="entry"/>
<variable value="alcoholEntry"/>
</target>
<rule>
<name value="createalcoholobs"/>
<source>
<context value="alcohol"/>
</source>
<target>
<context value="alcoholEntry"/>
<contextType value="variable"/>
<element value="resource"/>
<variable value="alcoholObs"/>
<transform value="create"/>
<parameter>
<valueString value="Observation"/>
</parameter>
</target>
<rule>
<name value="createalcoholobs"/>
<source>
<context value="lifestyle"/>
</source>
<dependent>
<name value="TransformAlcoholObservation"/>
<variable value="lifestyle"/>
<variable value="alcoholObs"/>
<variable value="dmPatient"/>
</dependent>
</rule>
<rule>
<name value="setRequestAndFullUrl"/>
<source>
<context value="lifestyle"/>
</source>
<dependent>
<name value="setEntryRequestAndFullUrl"/>
<variable value="alcoholObs"/>
<variable value="alcoholEntry"/>
</dependent>
</rule>
</rule>
</rule>
<rule>
<name value="drugentries"/>
<source>
<context value="lifestyle"/>
<element value="consommationAutresDrogues"/>
<variable value="drugs"/>
<condition value="drugs.exists()"/>
</source>
<target>
<context value="bundle"/>
<contextType value="variable"/>
<element value="entry"/>
<variable value="drugEntry"/>
</target>
<rule>
<name value="createdrugobs"/>
<source>
<context value="drugs"/>
</source>
<target>
<context value="drugEntry"/>
<contextType value="variable"/>
<element value="resource"/>
<variable value="drugObs"/>
<transform value="create"/>
<parameter>
<valueString value="Observation"/>
</parameter>
</target>
<rule>
<name value="createdrugobs"/>
<source>
<context value="lifestyle"/>
</source>
<dependent>
<name value="TransformDrugObservation"/>
<variable value="lifestyle"/>
<variable value="drugObs"/>
<variable value="dmPatient"/>
</dependent>
</rule>
<rule>
<name value="setRequestAndFullUrl"/>
<source>
<context value="lifestyle"/>
</source>
<dependent>
<name value="setEntryRequestAndFullUrl"/>
<variable value="drugObs"/>
<variable value="drugEntry"/>
</dependent>
</rule>
</rule>
</rule>
<rule>
<name value="physicalentries"/>
<source>
<context value="lifestyle"/>
<element value="activitePhysique"/>
<variable value="physical"/>
<condition value="physical.exists()"/>
</source>
<target>
<context value="bundle"/>
<contextType value="variable"/>
<element value="entry"/>
<variable value="physicalEntry"/>
</target>
<rule>
<name value="createphysicalobs"/>
<source>
<context value="physical"/>
</source>
<target>
<context value="physicalEntry"/>
<contextType value="variable"/>
<element value="resource"/>
<variable value="physicalObs"/>
<transform value="create"/>
<parameter>
<valueString value="Observation"/>
</parameter>
</target>
<rule>
<name value="createphysicalobs"/>
<source>
<context value="lifestyle"/>
</source>
<dependent>
<name value="TransformPhysicalActivityObservation"/>
<variable value="lifestyle"/>
<variable value="physicalObs"/>
<variable value="dmPatient"/>
</dependent>
</rule>
<rule>
<name value="setRequestAndFullUrl"/>
<source>
<context value="lifestyle"/>
</source>
<dependent>
<name value="setEntryRequestAndFullUrl"/>
<variable value="physicalObs"/>
<variable value="physicalEntry"/>
</dependent>
</rule>
</rule>
</rule>
</rule>
<rule>
<name value="vitalentries"/>
<source>
<context value="src"/>
<element value="dossierSoins"/>
<variable value="soin"/>
<condition value="soin.patientId = %patient.patientId"/>
</source>
<target>
<context value="bundle"/>
<contextType value="variable"/>
<element value="entry"/>
<variable value="vitalEntry"/>
</target>
<rule>
<name value="createmesureobs"/>
<source>
<context value="soin"/>
</source>
<target>
<context value="vitalEntry"/>
<contextType value="variable"/>
<element value="resource"/>
<variable value="dmObs"/>
<transform value="create"/>
<parameter>
<valueString value="Observation"/>
</parameter>
</target>
<rule>
<name value="createmesureobs"/>
<source>
<context value="soin"/>
</source>
<dependent>
<name value="TransformVitalSigns"/>
<variable value="soin"/>
<variable value="dmObs"/>
<variable value="dmPatient"/>
</dependent>
</rule>
<rule>
<name value="setRequestAndFullUrl"/>
<source>
<context value="soin"/>
</source>
<dependent>
<name value="setEntryRequestAndFullUrl"/>
<variable value="dmObs"/>
<variable value="vitalEntry"/>
</dependent>
</rule>
</rule>
</rule>
<rule>
<name value="administrationentries"/>
<source>
<context value="src"/>
<element value="administration"/>
<variable value="admin"/>
<condition
value="(admin.patientId = %patient.patientId) and admin.prescriptionId.empty()"/>
</source>
<target>
<context value="bundle"/>
<contextType value="variable"/>
<element value="entry"/>
<variable value="adminEntry"/>
</target>
<rule>
<name value="createmedadmin"/>
<source>
<context value="admin"/>
</source>
<target>
<context value="adminEntry"/>
<contextType value="variable"/>
<element value="resource"/>
<variable value="dmAdmin"/>
<transform value="create"/>
<parameter>
<valueString value="MedicationAdministration"/>
</parameter>
</target>
<rule>
<name value="createmedadmin"/>
<source>
<context value="admin"/>
</source>
<dependent>
<name value="TransformMedicationAdministrationWOOrder"/>
<variable value="admin"/>
<variable value="dmAdmin"/>
<variable value="dmPatient"/>
</dependent>
</rule>
<rule>
<name value="setRequestAndFullUrl"/>
<source>
<context value="admin"/>
</source>
<dependent>
<name value="setEntryRequestAndFullUrl"/>
<variable value="dmAdmin"/>
<variable value="adminEntry"/>
</dependent>
</rule>
</rule>
</rule>
</rule>
</rule>
</group>
<group>
<name value="TransformPatient"/>
<typeMode value="none"/>
<documentation
value="---------------------------------------------------------
PATIENT TRANSFORMATION
---------------------------------------------------------"/>
<input>
<name value="src"/>
<mode value="source"/>
</input>
<input>
<name value="tgt"/>
<type value="Patient"/>
<mode value="target"/>
</input>
<rule>
<name value="setId"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="id"/>
<transform value="uuid"/>
</target>
</rule>
<rule>
<name value="patientidentifier"/>
<source>
<context value="src"/>
<element value="patientId"/>
<variable value="pid"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="identifier"/>
<variable value="identifier"/>
</target>
<rule>
<name value="iduse"/>
<source>
<context value="pid"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="use"/>
<transform value="copy"/>
<parameter>
<valueString value="usual"/>
</parameter>
</target>
</rule>
<rule>
<name value="idtype"/>
<source>
<context value="pid"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="cc"/>
<parameter>
<valueString
value="http://terminology.hl7.org/CodeSystem/v2-0203"/>
</parameter>
<parameter>
<valueString value="PI"/>
</parameter>
<parameter>
<valueString value="Patient Identifier"/>
</parameter>
</target>
</rule>
<rule>
<name value="idsystem"/>
<source>
<context value="pid"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="https://hospital.eu/ehr/patient-id"/>
</parameter>
</target>
</rule>
<rule>
<name value="idvalue"/>
<source>
<context value="pid"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="pid"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="insidentifier"/>
<source>
<context value="src"/>
<element value="ins"/>
<variable value="ins"/>
<condition value="ins.exists()"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="identifier"/>
<variable value="insIdentifier"/>
</target>
<rule>
<name value="insuse"/>
<source>
<context value="ins"/>
</source>
<target>
<context value="insIdentifier"/>
<contextType value="variable"/>
<element value="use"/>
<transform value="copy"/>
<parameter>
<valueString value="official"/>
</parameter>
</target>
<documentation
value="On part du principe qu'on n'est pas sur un old."/>
</rule>
<rule>
<name value="instype"/>
<source>
<context value="ins"/>
</source>
<target>
<context value="insIdentifier"/>
<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>
<parameter>
<valueString value="NIR définitif"/>
</parameter>
</target>
</rule>
<rule>
<name value="inssystem"/>
<source>
<context value="ins"/>
</source>
<target>
<context value="insIdentifier"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="urn:oid:1.2.250.1.213.1.4.8"/>
</parameter>
</target>
</rule>
<rule>
<name value="insvalue"/>
<source>
<context value="ins"/>
</source>
<target>
<context value="insIdentifier"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="ins"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="patientname"/>
<source>
<context value="src"/>
<condition value="src.nom.exists() or src.prenom.exists()"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="name"/>
<variable value="name"/>
</target>
<rule>
<name value="familyname"/>
<source>
<context value="src"/>
<element value="nom"/>
<variable value="lastName"/>
</source>
<target>
<context value="name"/>
<contextType value="variable"/>
<element value="family"/>
<transform value="copy"/>
<parameter>
<valueId value="lastName"/>
</parameter>
</target>
</rule>
<rule>
<name value="givenname"/>
<source>
<context value="src"/>
<element value="prenom"/>
<variable value="firstName"/>
</source>
<target>
<context value="name"/>
<contextType value="variable"/>
<element value="given"/>
<transform value="copy"/>
<parameter>
<valueId value="firstName"/>
</parameter>
</target>
</rule>
<rule>
<name value="nameuse"/>
<source>
<context value="src"/>
</source>
<target>
<context value="name"/>
<contextType value="variable"/>
<element value="use"/>
<transform value="copy"/>
<parameter>
<valueString value="official"/>
</parameter>
</target>
<documentation value="hypothèse un peu forte."/>
</rule>
</rule>
<rule>
<name value="birthdate"/>
<source>
<context value="src"/>
<element value="dateNaissance"/>
<variable value="birthDate"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="birthDate"/>
<transform value="copy"/>
<parameter>
<valueId value="birthDate"/>
</parameter>
</target>
</rule>
<rule>
<name value="gendermale"/>
<source>
<context value="src"/>
<element value="sexe"/>
<variable value="gender"/>
<condition value="gender = 'h'"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="gender"/>
<transform value="copy"/>
<parameter>
<valueString value="male"/>
</parameter>
</target>
</rule>
<rule>
<name value="genderfemale"/>
<source>
<context value="src"/>
<element value="sexe"/>
<variable value="gender"/>
<condition value="gender = 'f'"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="gender"/>
<transform value="copy"/>
<parameter>
<valueString value="female"/>
</parameter>
</target>
</rule>
<rule>
<name value="genderunknown"/>
<source>
<context value="src"/>
<element value="sexe"/>
<variable value="gender"/>
<condition
value="gender.exists() and (gender != 'h') and (gender != 'f')"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="gender"/>
<transform value="copy"/>
<parameter>
<valueString value="unknown"/>
</parameter>
</target>
<documentation
value="n'a pas grand sens en l'état des contraintes SQL"/>
</rule>
<rule>
<name value="deathDate"/>
<source>
<context value="src"/>
<element value="dateDeces"/>
<variable value="deathDate"/>
<condition value="deathDate.exists()"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="deceased"/>
<variable value="deceasedDate"/>
<transform value="cast"/>
<parameter>
<valueId value="deathDate"/>
</parameter>
<parameter>
<valueString value="dateTime"/>
</parameter>
</target>
<rule>
<name value="deathSource"/>
<source>
<context value="src"/>
<element value="sourceDeces"/>
<variable value="deathSource"/>
<condition value="deathSource.exists()"/>
</source>
<target>
<context value="deceasedDate"/>
<contextType value="variable"/>
<element value="extension"/>
<variable value="DeathSourceExtension"/>
</target>
<rule>
<name value="deathSourceUrl"/>
<source>
<context value="deathSource"/>
</source>
<target>
<context value="DeathSourceExtension"/>
<contextType value="variable"/>
<element value="url"/>
<transform value="copy"/>
<parameter>
<valueString
value="https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/DeathSource"/>
</parameter>
</target>
</rule>
<rule>
<name value="deathSourceValue"/>
<source>
<context value="deathSource"/>
</source>
<target>
<context value="DeathSourceExtension"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="cast"/>
<parameter>
<valueId value="deathSource"/>
</parameter>
<parameter>
<valueString value="code"/>
</parameter>
</target>
</rule>
</rule>
</rule>
<rule>
<name value="multiplebirth"/>
<source>
<context value="src"/>
<element value="rangGemellaire"/>
<variable value="twin"/>
<condition value="twin.exists()"/>
</source>
<target>
<context value="tgt"/>
<contextType value="variable"/>
<element value="multipleBirth"/>
<transform value="copy"/>
<parameter>
<valueId value="twin"/>
</parameter>
</target>
</rule>
</group>
<group>
<name value="setAddress"/>
<typeMode value="none"/>
<documentation
value="========================================================================
PATIENT_LOCATION TRANSFORMATION
========================================================================"/>
<input>
<name value="src"/>
<mode value="source"/>
</input>
<input>
<name value="tgtPat"/>
<type value="Patient"/>
<mode value="target"/>
</input>
<rule>
<name value="checkSource"/>
<source>
<context value="src"/>
<condition
value="src.latitude.exists() or src.longitude.exists() or src.codeIris.exists() or src.libelleIris.exists() or src.codeGeographiqueResidence.exists()"/>
</source>
<rule>
<name value="createAddress"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtPat"/>
<contextType value="variable"/>
<element value="address"/>
<variable value="newAddress"/>
</target>
<rule>
<name value="setCoordinates"/>
<source>
<context value="src"/>
<condition
value="src.latitude.exists() or src.longitude.exists()"/>
</source>
<target>
<context value="newAddress"/>
<contextType value="variable"/>
<element value="extension"/>
<variable value="geolocationExtension"/>
</target>
<target>
<context value="geolocationExtension"/>
<contextType value="variable"/>
<element value="url"/>
<transform value="copy"/>
<parameter>
<valueString
value="http://hl7.org/fhir/StructureDefinition/geolocation"/>
</parameter>
</target>
<rule>
<name value="setLat"/>
<source>
<context value="src"/>
<element value="latitude"/>
<variable value="srcLat"/>
</source>
<target>
<context value="geolocationExtension"/>
<contextType value="variable"/>
<element value="extension"/>
<variable value="tgtLat"/>
</target>
<target>
<context value="tgtLat"/>
<contextType value="variable"/>
<element value="url"/>
<transform value="copy"/>
<parameter>
<valueString value="latitude"/>
</parameter>
</target>
<target>
<context value="tgtLat"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="srcLat"/>
</parameter>
</target>
</rule>
<rule>
<name value="setLong"/>
<source>
<context value="src"/>
<element value="longitude"/>
<variable value="srcLong"/>
</source>
<target>
<context value="geolocationExtension"/>
<contextType value="variable"/>
<element value="extension"/>
<variable value="tgtLong"/>
</target>
<target>
<context value="tgtLong"/>
<contextType value="variable"/>
<element value="url"/>
<transform value="copy"/>
<parameter>
<valueString value="longitude"/>
</parameter>
</target>
<target>
<context value="tgtLong"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="srcLong"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="setIris"/>
<source>
<context value="src"/>
<condition
value="src.codeIris.exists() or src.libelleIris.exists()"/>
</source>
<target>
<context value="newAddress"/>
<contextType value="variable"/>
<element value="line"/>
<variable value="irisLine"/>
<transform value="evaluate"/>
<parameter>
<valueString value="%src.libelleIris"/>
</parameter>
</target>
<target>
<context value="irisLine"/>
<contextType value="variable"/>
<element value="extension"/>
<variable value="irisExtension"/>
<transform value="create"/>
<parameter>
<valueString value="Extension"/>
</parameter>
</target>
<target>
<context value="irisExtension"/>
<contextType value="variable"/>
<element value="url"/>
<transform value="copy"/>
<parameter>
<valueString
value="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-censusTract"/>
</parameter>
</target>
<target>
<context value="irisExtension"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="evaluate"/>
<parameter>
<valueString value="%src.codeIris"/>
</parameter>
</target>
</rule>
<rule>
<name value="SetResidencePmsi"/>
<source>
<context value="src"/>
<element value="codeGeographiqueResidence"/>
<variable value="srcCodeGeographiqueResidence"/>
<condition value="src.codeGeographiqueResidence.exists()"/>
</source>
<target>
<context value="newAddress"/>
<contextType value="variable"/>
<element value="extension"/>
<variable value="residencePmsiExtension"/>
</target>
<target>
<context value="residencePmsiExtension"/>
<contextType value="variable"/>
<element value="url"/>
<transform value="copy"/>
<parameter>
<valueString
value="https://interop.aphp.fr/ig/fhir/dm/StructureDefinition/PmsiCodeGeo"/>
</parameter>
</target>
<target>
<context value="residencePmsiExtension"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="cast"/>
<parameter>
<valueId value="srcCodeGeographiqueResidence"/>
</parameter>
<parameter>
<valueString value="code"/>
</parameter>
</target>
</rule>
<rule>
<name value="setDateRecueil"/>
<source>
<context value="src"/>
<element value="dateRecueil"/>
<variable value="dateRecueil"/>
</source>
<target>
<context value="newAddress"/>
<contextType value="variable"/>
<element value="period"/>
<variable value="newAddressPeriod"/>
</target>
<target>
<context value="newAddressPeriod"/>
<contextType value="variable"/>
<element value="start"/>
<transform value="copy"/>
<parameter>
<valueId value="dateRecueil"/>
</parameter>
</target>
</rule>
</rule>
</rule>
</group>
<group>
<name value="TransformEncounter"/>
<typeMode value="none"/>
<documentation
value="========================================================================
ENCOUNTER TRANSFORMATION
========================================================================"/>
<input>
<name value="src"/>
<mode value="source"/>
</input>
<input>
<name value="tgtEnc"/>
<type value="Encounter"/>
<mode value="target"/>
</input>
<input>
<name value="patient"/>
<mode value="source"/>
</input>
<rule>
<name value="setId"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtEnc"/>
<contextType value="variable"/>
<element value="id"/>
<transform value="uuid"/>
</target>
</rule>
<rule>
<name value="encounteridentifier"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtEnc"/>
<contextType value="variable"/>
<element value="identifier"/>
<variable value="identifier"/>
</target>
<rule>
<name value="idtype"/>
<source>
<context value="src"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="cc"/>
<parameter>
<valueString
value="https://hl7.fr/ig/fhir/core/CodeSystem/fr-core-cs-identifier-type"/>
</parameter>
<parameter>
<valueString value="VN"/>
</parameter>
<parameter>
<valueString value="Visit Number"/>
</parameter>
</target>
</rule>
<rule>
<name value="encounteridsystem"/>
<source>
<context value="src"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="https://hospital.eu/ehr/pmsi-id"/>
</parameter>
</target>
</rule>
<rule>
<name value="encounteridvalue"/>
<source>
<context value="src"/>
<element value="pmsiId"/>
<variable value="srcEncoutnerId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="srcEncoutnerId"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="encounterstatus"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtEnc"/>
<contextType value="variable"/>
<element value="status"/>
<transform value="copy"/>
<parameter>
<valueString value="finished"/>
</parameter>
</target>
</rule>
<rule>
<name value="encounterclass"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtEnc"/>
<contextType value="variable"/>
<element value="class"/>
<transform value="c"/>
<parameter>
<valueString
value="http://terminology.hl7.org/CodeSystem/v3-ActCode"/>
</parameter>
<parameter>
<valueString value="IMP"/>
</parameter>
<parameter>
<valueString value="inpatient encounter"/>
</parameter>
</target>
</rule>
<rule>
<name value="encountersubject"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtEnc"/>
<contextType value="variable"/>
<element value="subject"/>
<variable value="ref"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<rule>
<name value="subjectreference"/>
<source>
<context value="patient"/>
<element value="id"/>
<variable value="patientId"/>
</source>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="reference"/>
<transform value="evaluate"/>
<parameter>
<valueString value="'Patient/' + %patientId"/>
</parameter>
</target>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="copy"/>
<parameter>
<valueString value="Patient"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="encounterperiod"/>
<source>
<context value="src"/>
<condition
value="src.dateDebutSejour.exists() or src.dateFinSejour.exists()"/>
</source>
<target>
<context value="tgtEnc"/>
<contextType value="variable"/>
<element value="period"/>
<variable value="period"/>
</target>
<rule>
<name value="periodstart"/>
<source>
<context value="src"/>
<element value="dateDebutSejour"/>
<variable value="startDate"/>
</source>
<target>
<context value="period"/>
<contextType value="variable"/>
<element value="start"/>
<transform value="copy"/>
<parameter>
<valueId value="startDate"/>
</parameter>
</target>
</rule>
<rule>
<name value="periodend"/>
<source>
<context value="src"/>
<element value="dateFinSejour"/>
<variable value="endDate"/>
</source>
<target>
<context value="period"/>
<contextType value="variable"/>
<element value="end"/>
<transform value="copy"/>
<parameter>
<valueId value="endDate"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="encounterhospitalization"/>
<source>
<context value="src"/>
<condition
value="src.modeEntree.exists() or src.modeSortie.exists()"/>
</source>
<target>
<context value="tgtEnc"/>
<contextType value="variable"/>
<element value="hospitalization"/>
<variable value="hosp"/>
</target>
<rule>
<name value="admitsource"/>
<source>
<context value="src"/>
<element value="modeEntree"/>
<variable value="admitSource"/>
</source>
<target>
<context value="hosp"/>
<contextType value="variable"/>
<element value="admitSource"/>
<variable value="admitSrc"/>
</target>
<rule>
<name value="admitsourcetext"/>
<source>
<context value="admitSource"/>
</source>
<target>
<context value="admitSrc"/>
<contextType value="variable"/>
<element value="text"/>
<transform value="copy"/>
<parameter>
<valueId value="admitSource"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="dischargedisposition"/>
<source>
<context value="src"/>
<element value="modeSortie"/>
<variable value="dischargeDisp"/>
</source>
<target>
<context value="hosp"/>
<contextType value="variable"/>
<element value="dischargeDisposition"/>
<variable value="dischargeDsp"/>
</target>
<rule>
<name value="dischargedisptext"/>
<source>
<context value="dischargeDisp"/>
</source>
<target>
<context value="dischargeDsp"/>
<contextType value="variable"/>
<element value="text"/>
<transform value="copy"/>
<parameter>
<valueId value="dischargeDisp"/>
</parameter>
</target>
</rule>
</rule>
</rule>
<rule>
<name value="provider"/>
<source>
<context value="src"/>
<condition
value="src.uniteFonctionnelle.exists() or src.service.exists() or src.etablissement.exists()"/>
</source>
<target>
<context value="tgtEnc"/>
<contextType value="variable"/>
<element value="serviceProvider"/>
<variable value="provider"/>
</target>
<rule>
<name value="providerdisplay"/>
<source>
<context value="src"/>
</source>
<target>
<context value="provider"/>
<contextType value="variable"/>
<element value="display"/>
<transform value="evaluate"/>
<parameter>
<valueString
value="iif(%src.uniteFonctionnelle.exists(), %src.uniteFonctionnelle, iif(%src.service.exists(), %src.service, %src.etablissement))"/>
</parameter>
</target>
</rule>
</rule>
</group>
<group>
<name value="TransformCondition"/>
<typeMode value="none"/>
<documentation
value="========================================================================
CONDITION TRANSFORMATION
========================================================================"/>
<input>
<name value="src"/>
<mode value="source"/>
</input>
<input>
<name value="tgtCond"/>
<type value="Condition"/>
<mode value="target"/>
</input>
<input>
<name value="patient"/>
<mode value="source"/>
</input>
<input>
<name value="encounter"/>
<mode value="source"/>
</input>
<rule>
<name value="setId"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtCond"/>
<contextType value="variable"/>
<element value="id"/>
<transform value="uuid"/>
</target>
</rule>
<rule>
<name value="conditionidentifier"/>
<source>
<context value="src"/>
<element value="diagnosticId"/>
<variable value="diagId"/>
</source>
<target>
<context value="tgtCond"/>
<contextType value="variable"/>
<element value="identifier"/>
<variable value="identifier"/>
</target>
<rule>
<name value="conditionidsystem"/>
<source>
<context value="diagId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="https://hospital.eu/ehr/diagnostic-id"/>
</parameter>
</target>
</rule>
<rule>
<name value="conditionidvalue"/>
<source>
<context value="diagId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="diagId"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="categoryencounterDiag"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtCond"/>
<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>
<parameter>
<valueString value="Encounter Diagnosis"/>
</parameter>
</target>
</rule>
<rule>
<name value="conditioncategory"/>
<source>
<context value="src"/>
<element value="typeDiagnostic"/>
<variable value="diagType"/>
</source>
<target>
<context value="tgtCond"/>
<contextType value="variable"/>
<element value="category"/>
<variable value="category"/>
</target>
<rule>
<name value="categorytext"/>
<source>
<context value="diagType"/>
</source>
<target>
<context value="category"/>
<contextType value="variable"/>
<element value="text"/>
<transform value="copy"/>
<parameter>
<valueId value="diagType"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="varcode"/>
<source>
<context value="src"/>
<element value="codeDiagnostic"/>
<variable value="srcCode"/>
</source>
<target>
<context value="tgtCond"/>
<contextType value="variable"/>
<element value="code"/>
<variable value="conditionCode"/>
</target>
<rule>
<name value="conditioncode"/>
<source>
<context value="src"/>
<element value="libelleDiagnostic"/>
<variable value="label"/>
</source>
<target>
<context value="conditionCode"/>
<contextType value="variable"/>
<element value="coding"/>
<variable value="tgtCoding"/>
</target>
<target>
<context value="tgtCoding"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="http://hl7.org/fhir/sid/icd-10"/>
</parameter>
</target>
<target>
<context value="tgtCoding"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueId value="srcCode"/>
</parameter>
</target>
</rule>
<rule>
<name value="codetext"/>
<source>
<context value="src"/>
<element value="libelleDiagnostic"/>
<variable value="text"/>
</source>
<target>
<context value="conditionCode"/>
<contextType value="variable"/>
<element value="text"/>
<transform value="copy"/>
<parameter>
<valueId value="text"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="conditionsubject"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtCond"/>
<contextType value="variable"/>
<element value="subject"/>
<variable value="ref"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<rule>
<name value="subjectref"/>
<source>
<context value="patient"/>
<element value="id"/>
<variable value="patientId"/>
</source>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="reference"/>
<transform value="evaluate"/>
<parameter>
<valueString value="'Patient/' + %patientId"/>
</parameter>
</target>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="copy"/>
<parameter>
<valueString value="Patient"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="conditionencounter"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtCond"/>
<contextType value="variable"/>
<element value="encounter"/>
<variable value="ref"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<rule>
<name value="encounterref"/>
<source>
<context value="encounter"/>
<element value="id"/>
<variable value="encounterId"/>
</source>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="reference"/>
<transform value="evaluate"/>
<parameter>
<valueString value="'Encounter/' + %encounterId"/>
</parameter>
</target>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="copy"/>
<parameter>
<valueString value="Encounter"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="conditionrecordeddate"/>
<source>
<context value="src"/>
<element value="dateRecueil"/>
<variable value="entryDate"/>
</source>
<target>
<context value="tgtCond"/>
<contextType value="variable"/>
<element value="recordedDate"/>
<transform value="copy"/>
<parameter>
<valueId value="entryDate"/>
</parameter>
</target>
</rule>
<rule>
<name value="conditionclinicalstatus"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtCond"/>
<contextType value="variable"/>
<element value="clinicalStatus"/>
<transform value="cc"/>
<parameter>
<valueString
value="http://terminology.hl7.org/CodeSystem/condition-clinical"/>
</parameter>
<parameter>
<valueString value="active"/>
</parameter>
</target>
</rule>
<rule>
<name value="conditionverificationstatus"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtCond"/>
<contextType value="variable"/>
<element value="verificationStatus"/>
<transform value="cc"/>
<parameter>
<valueString
value="http://terminology.hl7.org/CodeSystem/condition-ver-status"/>
</parameter>
<parameter>
<valueString value="confirmed"/>
</parameter>
</target>
</rule>
</group>
<group>
<name value="TransformProcedure"/>
<typeMode value="none"/>
<documentation
value="========================================================================
PROCEDURE TRANSFORMATION
========================================================================"/>
<input>
<name value="src"/>
<mode value="source"/>
</input>
<input>
<name value="tgtProc"/>
<type value="Procedure"/>
<mode value="target"/>
</input>
<input>
<name value="patient"/>
<mode value="source"/>
</input>
<input>
<name value="encounter"/>
<mode value="source"/>
</input>
<rule>
<name value="setId"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtProc"/>
<contextType value="variable"/>
<element value="id"/>
<transform value="uuid"/>
</target>
</rule>
<rule>
<name value="procedureidentifier"/>
<source>
<context value="src"/>
<element value="acteId"/>
<variable value="acteId"/>
</source>
<target>
<context value="tgtProc"/>
<contextType value="variable"/>
<element value="identifier"/>
<variable value="identifier"/>
</target>
<rule>
<name value="procedureidsystem"/>
<source>
<context value="acteId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="https://hospital.eu/ehr/acte-id"/>
</parameter>
</target>
</rule>
<rule>
<name value="procedureidvalue"/>
<source>
<context value="acteId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="acteId"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="procedurestatus"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtProc"/>
<contextType value="variable"/>
<element value="status"/>
<transform value="copy"/>
<parameter>
<valueString value="completed"/>
</parameter>
</target>
</rule>
<rule>
<name value="procedurecode"/>
<source>
<context value="src"/>
<element value="codeActe"/>
<variable value="code"/>
</source>
<target>
<context value="tgtProc"/>
<contextType value="variable"/>
<element value="code"/>
<variable value="procedureCode"/>
</target>
<rule>
<name value="procedurecoding"/>
<source>
<context value="code"/>
</source>
<target>
<context value="procedureCode"/>
<contextType value="variable"/>
<element value="coding"/>
<variable value="coding"/>
</target>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString
value="https://interop.aphp.fr/ig/fhir/dm/CodeSystem/Ccam"/>
</parameter>
</target>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueId value="code"/>
</parameter>
</target>
</rule>
<rule>
<name value="codetext"/>
<source>
<context value="src"/>
<element value="libelleActe"/>
<variable value="text"/>
</source>
<target>
<context value="procedureCode"/>
<contextType value="variable"/>
<element value="text"/>
<transform value="copy"/>
<parameter>
<valueId value="text"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="proceduresubject"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtProc"/>
<contextType value="variable"/>
<element value="subject"/>
<variable value="ref"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<rule>
<name value="subjectref"/>
<source>
<context value="patient"/>
<element value="id"/>
<variable value="patientId"/>
</source>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="reference"/>
<transform value="evaluate"/>
<parameter>
<valueString value="'Patient/' + %patientId"/>
</parameter>
</target>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="copy"/>
<parameter>
<valueString value="Patient"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="procedureencounter"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtProc"/>
<contextType value="variable"/>
<element value="encounter"/>
<variable value="ref"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<rule>
<name value="encounterref"/>
<source>
<context value="encounter"/>
<element value="id"/>
<variable value="encounterId"/>
</source>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="reference"/>
<transform value="evaluate"/>
<parameter>
<valueString value="'Encounter/' + %encounterId"/>
</parameter>
</target>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="copy"/>
<parameter>
<valueString value="Encounter"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="procedureperformed"/>
<source>
<context value="src"/>
<element value="dateActe"/>
<variable value="performedDate"/>
<condition value="%performedDate.exists()"/>
</source>
<target>
<context value="tgtProc"/>
<contextType value="variable"/>
<element value="performed"/>
<transform value="copy"/>
<parameter>
<valueId value="performedDate"/>
</parameter>
</target>
</rule>
<rule>
<name value="procedureperformer"/>
<source>
<context value="src"/>
<element value="executant"/>
<variable value="performer"/>
</source>
<target>
<context value="tgtProc"/>
<contextType value="variable"/>
<element value="performer"/>
<variable value="perf"/>
</target>
<rule>
<name value="performeractor"/>
<source>
<context value="performer"/>
</source>
<target>
<context value="perf"/>
<contextType value="variable"/>
<element value="actor"/>
<variable value="actor"/>
</target>
<rule>
<name value="performerdisplay"/>
<source>
<context value="performer"/>
</source>
<target>
<context value="actor"/>
<contextType value="variable"/>
<element value="display"/>
<transform value="copy"/>
<parameter>
<valueId value="performer"/>
</parameter>
</target>
</rule>
<rule>
<name value="performerType"/>
<source>
<context value="performer"/>
</source>
<target>
<context value="actor"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="copy"/>
<parameter>
<valueString value="Practitioner"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="performerFunction"/>
<source>
<context value="performer"/>
</source>
<target>
<context value="perf"/>
<contextType value="variable"/>
<element value="function"/>
<variable value="function"/>
</target>
<target>
<context value="function"/>
<contextType value="variable"/>
<element value="text"/>
<transform value="copy"/>
<parameter>
<valueString value="Exécutant"/>
</parameter>
</target>
</rule>
</rule>
</group>
<group>
<name value="TransformLabObservation"/>
<typeMode value="none"/>
<documentation
value="========================================================================
LABORATORY OBSERVATION TRANSFORMATION
========================================================================"/>
<input>
<name value="src"/>
<mode value="source"/>
</input>
<input>
<name value="tgtObs"/>
<type value="Observation"/>
<mode value="target"/>
</input>
<input>
<name value="patient"/>
<mode value="source"/>
</input>
<rule>
<name value="setId"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="id"/>
<transform value="uuid"/>
</target>
</rule>
<rule>
<name value="labidentifier"/>
<source>
<context value="src"/>
<element value="biologieId"/>
<variable value="bioId"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="identifier"/>
<variable value="identifier"/>
</target>
<rule>
<name value="labidsystem"/>
<source>
<context value="bioId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="https://hospital.eu/ehr/biologie-id"/>
</parameter>
</target>
</rule>
<rule>
<name value="labidvalue"/>
<source>
<context value="bioId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="bioId"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="statusvalidated"/>
<source>
<context value="src"/>
<element value="statutValidation"/>
<variable value="validation"/>
<condition value="validation = 'VALIDE'"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="status"/>
<transform value="copy"/>
<parameter>
<valueString value="final"/>
</parameter>
</target>
</rule>
<rule>
<name value="statusdefault"/>
<source>
<context value="src"/>
<condition value="src.statutValidation.exists().not()"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="status"/>
<transform value="copy"/>
<parameter>
<valueString value="final"/>
</parameter>
</target>
</rule>
<rule>
<name value="labcategory"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="category"/>
<variable value="category"/>
</target>
<rule>
<name value="categorycoding"/>
<source>
<context value="src"/>
</source>
<target>
<context value="category"/>
<contextType value="variable"/>
<element value="coding"/>
<variable value="coding"/>
</target>
<rule>
<name value="categorysystem"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString
value="http://terminology.hl7.org/CodeSystem/observation-category"/>
</parameter>
</target>
</rule>
<rule>
<name value="categorycode"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueString value="laboratory"/>
</parameter>
</target>
</rule>
<rule>
<name value="categorydisplay"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="display"/>
<transform value="copy"/>
<parameter>
<valueString value="Laboratory"/>
</parameter>
</target>
</rule>
</rule>
</rule>
<rule>
<name value="labcode"/>
<source>
<context value="src"/>
<element value="codeLoinc"/>
<variable value="loinc"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="code"/>
<variable value="code"/>
</target>
<rule>
<name value="labcoding"/>
<source>
<context value="loinc"/>
</source>
<target>
<context value="code"/>
<contextType value="variable"/>
<element value="coding"/>
<variable value="coding"/>
</target>
<rule>
<name value="codesystem"/>
<source>
<context value="loinc"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="http://loinc.org"/>
</parameter>
</target>
</rule>
<rule>
<name value="codevalue"/>
<source>
<context value="loinc"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueId value="loinc"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="codetext"/>
<source>
<context value="src"/>
<element value="libelleTest"/>
<variable value="text"/>
</source>
<target>
<context value="code"/>
<contextType value="variable"/>
<element value="text"/>
<transform value="copy"/>
<parameter>
<valueId value="text"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="labsubject"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="subject"/>
<variable value="ref"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<rule>
<name value="subjectref"/>
<source>
<context value="patient"/>
<element value="id"/>
<variable value="patientId"/>
</source>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="reference"/>
<transform value="evaluate"/>
<parameter>
<valueString value="'Patient/' + %patientId"/>
</parameter>
</target>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="copy"/>
<parameter>
<valueString value="Patient"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="labeffective"/>
<source>
<context value="src"/>
<element value="datePrelevement"/>
<variable value="collectionDate"/>
<condition value="%collectionDate.exists()"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="effective"/>
<transform value="cast"/>
<parameter>
<valueId value="collectionDate"/>
</parameter>
<parameter>
<valueString value="dateTime"/>
</parameter>
</target>
</rule>
<rule>
<name value="labvaluequantity"/>
<source>
<context value="src"/>
<element value="valeur"/>
<variable value="numValue"/>
<condition value="numValue.exists()"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="value"/>
<variable value="qty"/>
<transform value="create"/>
<parameter>
<valueString value="Quantity"/>
</parameter>
</target>
<rule>
<name value="quantityvalue"/>
<source>
<context value="numValue"/>
</source>
<target>
<context value="qty"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="numValue"/>
</parameter>
</target>
</rule>
<rule>
<name value="quantityunit"/>
<source>
<context value="src"/>
<element value="unite"/>
<variable value="unit"/>
</source>
<target>
<context value="qty"/>
<contextType value="variable"/>
<element value="unit"/>
<transform value="copy"/>
<parameter>
<valueId value="unit"/>
</parameter>
</target>
</rule>
<rule>
<name value="quantitycode"/>
<source>
<context value="src"/>
<element value="unite"/>
<variable value="unit"/>
</source>
<target>
<context value="qty"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueId value="unit"/>
</parameter>
</target>
</rule>
<rule>
<name value="quantitysystem"/>
<source>
<context value="src"/>
</source>
<target>
<context value="qty"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="http://unitsofmeasure.org"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="labreferencerange"/>
<source>
<context value="src"/>
<condition
value="src.borneInfNormale.exists() or src.borneSupNormale.exists()"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="referenceRange"/>
<variable value="range"/>
</target>
<rule>
<name value="referencelow"/>
<source>
<context value="src"/>
<element value="borneInfNormale"/>
<variable value="low"/>
</source>
<target>
<context value="range"/>
<contextType value="variable"/>
<element value="low"/>
<variable value="lowQty"/>
</target>
<rule>
<name value="reflowvalue"/>
<source>
<context value="low"/>
</source>
<target>
<context value="lowQty"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="low"/>
</parameter>
</target>
</rule>
<rule>
<name value="reflowunit"/>
<source>
<context value="src"/>
<element value="unite"/>
<variable value="unit"/>
</source>
<target>
<context value="lowQty"/>
<contextType value="variable"/>
<element value="unit"/>
<transform value="copy"/>
<parameter>
<valueId value="unit"/>
</parameter>
</target>
</rule>
<rule>
<name value="reflowcode"/>
<source>
<context value="src"/>
<element value="unite"/>
<variable value="unit"/>
</source>
<target>
<context value="lowQty"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueId value="unit"/>
</parameter>
</target>
</rule>
<rule>
<name value="reflowsystem"/>
<source>
<context value="src"/>
</source>
<target>
<context value="lowQty"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="http://unitsofmeasure.org"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="referencehigh"/>
<source>
<context value="src"/>
<element value="borneSupNormale"/>
<variable value="high"/>
</source>
<target>
<context value="range"/>
<contextType value="variable"/>
<element value="high"/>
<variable value="highQty"/>
</target>
<rule>
<name value="refhighvalue"/>
<source>
<context value="high"/>
</source>
<target>
<context value="highQty"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="high"/>
</parameter>
</target>
</rule>
<rule>
<name value="refhighunit"/>
<source>
<context value="src"/>
<element value="unite"/>
<variable value="unit"/>
</source>
<target>
<context value="highQty"/>
<contextType value="variable"/>
<element value="unit"/>
<transform value="copy"/>
<parameter>
<valueId value="unit"/>
</parameter>
</target>
</rule>
<rule>
<name value="refhighcode"/>
<source>
<context value="src"/>
<element value="unite"/>
<variable value="unit"/>
</source>
<target>
<context value="highQty"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueId value="unit"/>
</parameter>
</target>
</rule>
<rule>
<name value="refhighsystem"/>
<source>
<context value="src"/>
</source>
<target>
<context value="highQty"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="http://unitsofmeasure.org"/>
</parameter>
</target>
</rule>
</rule>
</rule>
<rule>
<name value="labperformer"/>
<source>
<context value="src"/>
<element value="laboratoire"/>
<variable value="lab"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="performer"/>
<variable value="performer"/>
</target>
<rule>
<name value="performerdisplay"/>
<source>
<context value="lab"/>
</source>
<target>
<context value="performer"/>
<contextType value="variable"/>
<element value="display"/>
<transform value="copy"/>
<parameter>
<valueId value="lab"/>
</parameter>
</target>
</rule>
<rule>
<name value="performerType"/>
<source>
<context value="lab"/>
</source>
<target>
<context value="performer"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="copy"/>
<parameter>
<valueString value="Organization"/>
</parameter>
</target>
</rule>
</rule>
</group>
<group>
<name value="TransformMedicationRequest"/>
<typeMode value="none"/>
<documentation
value="========================================================================
MEDICATION REQUEST TRANSFORMATION
========================================================================"/>
<input>
<name value="src"/>
<mode value="source"/>
</input>
<input>
<name value="tgtMedReq"/>
<type value="MedicationRequest"/>
<mode value="target"/>
</input>
<input>
<name value="patient"/>
<mode value="source"/>
</input>
<rule>
<name value="setId"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtMedReq"/>
<contextType value="variable"/>
<element value="id"/>
<transform value="uuid"/>
</target>
</rule>
<rule>
<name value="medrequestidentifier"/>
<source>
<context value="src"/>
<element value="prescriptionId"/>
<variable value="presId"/>
</source>
<target>
<context value="tgtMedReq"/>
<contextType value="variable"/>
<element value="identifier"/>
<variable value="identifier"/>
</target>
<rule>
<name value="medrequestidsystem"/>
<source>
<context value="presId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="https://hospital.eu/ehr/prescription-id"/>
</parameter>
</target>
</rule>
<rule>
<name value="medrequestidvalue"/>
<source>
<context value="presId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="presId"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="medrequeststatus"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtMedReq"/>
<contextType value="variable"/>
<element value="status"/>
<transform value="copy"/>
<parameter>
<valueString value="unknown"/>
</parameter>
</target>
</rule>
<rule>
<name value="medrequestintent"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtMedReq"/>
<contextType value="variable"/>
<element value="intent"/>
<transform value="copy"/>
<parameter>
<valueString value="order"/>
</parameter>
</target>
</rule>
<rule>
<name value="medrequestsubject"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtMedReq"/>
<contextType value="variable"/>
<element value="subject"/>
<variable value="ref"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<rule>
<name value="subjectref"/>
<source>
<context value="patient"/>
<element value="id"/>
<variable value="patientId"/>
</source>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="reference"/>
<transform value="evaluate"/>
<parameter>
<valueString value="'Patient/' + %patientId"/>
</parameter>
</target>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="copy"/>
<parameter>
<valueString value="Patient"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="medicationdenomination"/>
<source>
<context value="src"/>
<element value="denomination"/>
<variable value="denomination"/>
</source>
<target>
<context value="tgtMedReq"/>
<contextType value="variable"/>
<element value="medication"/>
<variable value="medication"/>
<transform value="create"/>
<parameter>
<valueString value="CodeableConcept"/>
</parameter>
</target>
<rule>
<name value="medicationtext"/>
<source>
<context value="denomination"/>
<variable value="text"/>
</source>
<target>
<context value="medication"/>
<contextType value="variable"/>
<element value="text"/>
<transform value="copy"/>
<parameter>
<valueId value="text"/>
</parameter>
</target>
</rule>
<rule>
<name value="atccoding"/>
<source>
<context value="src"/>
<element value="codeAtc"/>
<variable value="atc"/>
</source>
<target>
<context value="medication"/>
<contextType value="variable"/>
<element value="coding"/>
<variable value="coding"/>
</target>
<rule>
<name value="atcsystem"/>
<source>
<context value="atc"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="http://www.whocc.no/atc"/>
</parameter>
</target>
</rule>
<rule>
<name value="atccode"/>
<source>
<context value="atc"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueId value="atc"/>
</parameter>
</target>
</rule>
</rule>
</rule>
<rule>
<name value="medauthored"/>
<source>
<context value="src"/>
<element value="datePrescription"/>
<variable value="prescDate"/>
</source>
<target>
<context value="tgtMedReq"/>
<contextType value="variable"/>
<element value="authoredOn"/>
<transform value="copy"/>
<parameter>
<valueId value="prescDate"/>
</parameter>
</target>
</rule>
<rule>
<name value="medrequester"/>
<source>
<context value="src"/>
<element value="prescripteur"/>
<variable value="prescriber"/>
</source>
<target>
<context value="tgtMedReq"/>
<contextType value="variable"/>
<element value="requester"/>
<variable value="requesterRef"/>
</target>
<rule>
<name value="requesterdisplay"/>
<source>
<context value="prescriber"/>
</source>
<target>
<context value="requesterRef"/>
<contextType value="variable"/>
<element value="display"/>
<transform value="copy"/>
<parameter>
<valueId value="prescriber"/>
</parameter>
</target>
</rule>
<rule>
<name value="requesterType"/>
<source>
<context value="prescriber"/>
</source>
<target>
<context value="requesterRef"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="copy"/>
<parameter>
<valueString value="Practitioner"/>
</parameter>
</target>
</rule>
</rule>
</group>
<group>
<name value="setPoso"/>
<typeMode value="none"/>
<documentation
value="========================================================================
POSOLOGIE TRANSFORMATION
========================================================================"/>
<input>
<name value="srcPoso"/>
<mode value="source"/>
</input>
<input>
<name value="srcPres"/>
<mode value="source"/>
</input>
<input>
<name value="tgtMedReq"/>
<mode value="target"/>
</input>
<rule>
<name value="dosageinstruction"/>
<source>
<context value="srcPres"/>
</source>
<target>
<context value="tgtMedReq"/>
<contextType value="variable"/>
<element value="dosageInstruction"/>
<variable value="dosageInstruction"/>
</target>
<rule>
<name value="dosagetext"/>
<source>
<context value="srcPoso"/>
</source>
<target>
<context value="dosageInstruction"/>
<contextType value="variable"/>
<element value="text"/>
<transform value="evaluate"/>
<parameter>
<valueString
value="'Prendre' + iif(%srcPoso.quantite.exists(), ' ' + %srcPoso.quantite.toString(), '1') + iif(%srcPoso.uniteQuantite.exists(), ' ' + %srcPoso.uniteQuantite, ' comprimé') + iif(%srcPoso.nombrePrisesParJour.exists(), ' ' + %srcPoso.nombrePrisesParJour.toString() + ' fois par jour', ' selon prescription')"/>
</parameter>
</target>
</rule>
<rule>
<name value="dosageroute"/>
<source>
<context value="srcPres"/>
<element value="voieAdministration"/>
<variable value="route"/>
</source>
<target>
<context value="dosageInstruction"/>
<contextType value="variable"/>
<element value="route"/>
<variable value="routeCC"/>
</target>
<rule>
<name value="routecoding"/>
<source>
<context value="route"/>
</source>
<target>
<context value="routeCC"/>
<contextType value="variable"/>
<element value="coding"/>
<variable value="routeCoding"/>
</target>
<rule>
<name value="routecode"/>
<source>
<context value="route"/>
</source>
<target>
<context value="routeCoding"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueId value="route"/>
</parameter>
</target>
</rule>
<rule>
<name value="routesystem"/>
<source>
<context value="route"/>
</source>
<target>
<context value="routeCoding"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString
value="https://smt.esante.gouv.fr/terminologie-standardterms"/>
</parameter>
</target>
</rule>
</rule>
</rule>
<rule>
<name value="dosagetiming"/>
<source>
<context value="srcPoso"/>
</source>
<target>
<context value="dosageInstruction"/>
<contextType value="variable"/>
<element value="timing"/>
<variable value="timing"/>
</target>
<rule>
<name value="timingrepeat"/>
<source>
<context value="srcPoso"/>
</source>
<target>
<context value="timing"/>
<contextType value="variable"/>
<element value="repeat"/>
<variable value="timingRepeat"/>
</target>
<rule>
<name value="prescriptionperiod"/>
<source>
<context value="srcPres"/>
<condition
value="srcPres.dateDebutPrescription.exists() or srcPres.dateFinPrescription.exists()"/>
</source>
<target>
<context value="timingRepeat"/>
<contextType value="variable"/>
<element value="bounds"/>
<variable value="medReqPeriod"/>
<transform value="create"/>
<parameter>
<valueString value="Period"/>
</parameter>
</target>
<rule>
<name value="periodstart"/>
<source>
<context value="srcPres"/>
<element value="dateDebutPrescription"/>
<variable value="startDate"/>
</source>
<target>
<context value="medReqPeriod"/>
<contextType value="variable"/>
<element value="start"/>
<transform value="copy"/>
<parameter>
<valueId value="startDate"/>
</parameter>
</target>
</rule>
<rule>
<name value="periodend"/>
<source>
<context value="srcPres"/>
<element value="dateFinPrescription"/>
<variable value="endDate"/>
</source>
<target>
<context value="medReqPeriod"/>
<contextType value="variable"/>
<element value="end"/>
<transform value="copy"/>
<parameter>
<valueId value="endDate"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="timingfrequency"/>
<source>
<context value="srcPoso"/>
<element value="nombrePrisesParJour"/>
<variable value="frequency"/>
</source>
<target>
<context value="timingRepeat"/>
<contextType value="variable"/>
<element value="frequency"/>
<transform value="copy"/>
<parameter>
<valueId value="frequency"/>
</parameter>
</target>
</rule>
<rule>
<name value="timingperiod"/>
<source>
<context value="srcPoso"/>
<element value="nombrePrisesParJour"/>
<variable value="frequency"/>
</source>
<target>
<context value="timingRepeat"/>
<contextType value="variable"/>
<element value="period"/>
<transform value="copy"/>
<parameter>
<valueString value="1"/>
</parameter>
</target>
</rule>
<rule>
<name value="timingperiodunit"/>
<source>
<context value="srcPoso"/>
<element value="nombrePrisesParJour"/>
<variable value="frequency"/>
</source>
<target>
<context value="timingRepeat"/>
<contextType value="variable"/>
<element value="periodUnit"/>
<transform value="copy"/>
<parameter>
<valueString value="d"/>
</parameter>
</target>
</rule>
</rule>
</rule>
<rule>
<name value="doseandrate"/>
<source>
<context value="srcPoso"/>
<element value="quantite"/>
<variable value="quantity"/>
</source>
<target>
<context value="dosageInstruction"/>
<contextType value="variable"/>
<element value="doseAndRate"/>
<variable value="doseRate"/>
</target>
<rule>
<name value="dosequantity"/>
<source>
<context value="quantity"/>
</source>
<target>
<context value="doseRate"/>
<contextType value="variable"/>
<element value="dose"/>
<variable value="doseQuantity"/>
<transform value="create"/>
<parameter>
<valueString value="Quantity"/>
</parameter>
</target>
<rule>
<name value="dosevalue"/>
<source>
<context value="quantity"/>
</source>
<target>
<context value="doseQuantity"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="quantity"/>
</parameter>
</target>
</rule>
<rule>
<name value="doseunit"/>
<source>
<context value="srcPoso"/>
<element value="uniteQuantite"/>
<variable value="unit"/>
</source>
<target>
<context value="doseQuantity"/>
<contextType value="variable"/>
<element value="unit"/>
<transform value="copy"/>
<parameter>
<valueId value="unit"/>
</parameter>
</target>
</rule>
<rule>
<name value="dosecode"/>
<source>
<context value="srcPoso"/>
<element value="uniteQuantite"/>
<variable value="unit"/>
</source>
<target>
<context value="doseQuantity"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueId value="unit"/>
</parameter>
</target>
</rule>
<rule>
<name value="dosesystem"/>
<source>
<context value="srcPoso"/>
</source>
<target>
<context value="doseQuantity"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="http://unitsofmeasure.org"/>
</parameter>
</target>
</rule>
</rule>
</rule>
</rule>
</group>
<group>
<name value="TransformVitalSigns"/>
<typeMode value="none"/>
<documentation
value="========================================================================
VITAL SIGNS TRANSFORMATION
========================================================================"/>
<input>
<name value="src"/>
<mode value="source"/>
</input>
<input>
<name value="tgtObs"/>
<type value="Observation"/>
<mode value="target"/>
</input>
<input>
<name value="patient"/>
<mode value="source"/>
</input>
<rule>
<name value="setId"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="id"/>
<transform value="uuid"/>
</target>
</rule>
<rule>
<name value="medrequestidentifier"/>
<source>
<context value="src"/>
<element value="soinId"/>
<variable value="soinId"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="identifier"/>
<variable value="identifier"/>
</target>
<rule>
<name value="soinidsystem"/>
<source>
<context value="soinId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="https://hospital.eu/ehr/soin-id"/>
</parameter>
</target>
</rule>
<rule>
<name value="soinidvalue"/>
<source>
<context value="soinId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="soinId"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="status"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="status"/>
<transform value="copy"/>
<parameter>
<valueString value="final"/>
</parameter>
</target>
</rule>
<rule>
<name value="category"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="category"/>
<variable value="category"/>
</target>
<rule>
<name value="categorycoding"/>
<source>
<context value="src"/>
</source>
<target>
<context value="category"/>
<contextType value="variable"/>
<element value="coding"/>
<variable value="coding"/>
</target>
<rule>
<name value="categorysystem"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString
value="http://terminology.hl7.org/CodeSystem/observation-category"/>
</parameter>
</target>
</rule>
<rule>
<name value="categorycode"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueString value="vital-signs"/>
</parameter>
</target>
</rule>
</rule>
</rule>
<rule>
<name value="code"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="code"/>
<variable value="code"/>
</target>
<rule>
<name value="coding"/>
<source>
<context value="src"/>
</source>
<target>
<context value="code"/>
<contextType value="variable"/>
<element value="coding"/>
<variable value="coding"/>
</target>
<rule>
<name value="codesystem"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="http://loinc.org"/>
</parameter>
</target>
</rule>
<rule>
<name value="codevalue"/>
<source>
<context value="src"/>
<element value="codeLoinc"/>
<variable value="codeLoinc"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueId value="codeLoinc"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="codetext"/>
<source>
<context value="src"/>
<element value="libelleTest"/>
<variable value="label"/>
</source>
<target>
<context value="code"/>
<contextType value="variable"/>
<element value="text"/>
<transform value="copy"/>
<parameter>
<valueId value="label"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="obssubject"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="subject"/>
<variable value="ref"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<rule>
<name value="subjectref"/>
<source>
<context value="patient"/>
<element value="id"/>
<variable value="patientId"/>
</source>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="reference"/>
<transform value="evaluate"/>
<parameter>
<valueString value="'Patient/' + %patientId"/>
</parameter>
</target>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="copy"/>
<parameter>
<valueString value="Patient"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="effective"/>
<source>
<context value="src"/>
<element value="dateMesure"/>
<variable value="date"/>
<condition value="%date.exists()"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="effective"/>
<transform value="cast"/>
<parameter>
<valueId value="date"/>
</parameter>
<parameter>
<valueString value="dateTime"/>
</parameter>
</target>
</rule>
<rule>
<name value="quantity"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="value"/>
<variable value="qty"/>
<transform value="create"/>
<parameter>
<valueString value="Quantity"/>
</parameter>
</target>
<rule>
<name value="value"/>
<source>
<context value="src"/>
<element value="valeur"/>
<variable value="mesure"/>
</source>
<target>
<context value="qty"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="mesure"/>
</parameter>
</target>
</rule>
<rule>
<name value="unit"/>
<source>
<context value="src"/>
<element value="unite"/>
<variable value="unit"/>
</source>
<target>
<context value="qty"/>
<contextType value="variable"/>
<element value="unit"/>
<transform value="copy"/>
<parameter>
<valueId value="unit"/>
</parameter>
</target>
</rule>
<rule>
<name value="code"/>
<source>
<context value="src"/>
<element value="unite"/>
<variable value="unit"/>
</source>
<target>
<context value="qty"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueId value="unit"/>
</parameter>
</target>
</rule>
<rule>
<name value="system"/>
<source>
<context value="src"/>
</source>
<target>
<context value="qty"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="http://unitsofmeasure.org"/>
</parameter>
</target>
</rule>
</rule>
</group>
<group>
<name value="TransformTobaccoObservation"/>
<typeMode value="none"/>
<documentation
value="========================================================================
LIFESTYLE TRANSFORMATION - SEPARATE OBSERVATIONS
========================================================================"/>
<input>
<name value="src"/>
<mode value="source"/>
</input>
<input>
<name value="tgtObs"/>
<type value="Observation"/>
<mode value="target"/>
</input>
<input>
<name value="patient"/>
<mode value="source"/>
</input>
<rule>
<name value="setId"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="id"/>
<transform value="uuid"/>
</target>
</rule>
<rule>
<name value="lifestyleidentifier"/>
<source>
<context value="src"/>
<element value="styleVieId"/>
<variable value="lsId"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="identifier"/>
<variable value="identifier"/>
</target>
<rule>
<name value="lifestyleidsystem"/>
<source>
<context value="lsId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="https://hospital.eu/ehr/lifestyle-id"/>
</parameter>
</target>
</rule>
<rule>
<name value="lifestyleidvalue"/>
<source>
<context value="lsId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="evaluate"/>
<parameter>
<valueString value="%lsId & '-tobacco'"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="lifestylestatus"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="status"/>
<transform value="copy"/>
<parameter>
<valueString value="final"/>
</parameter>
</target>
</rule>
<rule>
<name value="lifestylecategory"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="category"/>
<variable value="category"/>
</target>
<rule>
<name value="categorycoding"/>
<source>
<context value="src"/>
</source>
<target>
<context value="category"/>
<contextType value="variable"/>
<element value="coding"/>
<variable value="coding"/>
</target>
<rule>
<name value="categorysystem"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString
value="http://terminology.hl7.org/CodeSystem/observation-category"/>
</parameter>
</target>
</rule>
<rule>
<name value="categorycode"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueString value="social-history"/>
</parameter>
</target>
</rule>
<rule>
<name value="categorydisplay"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="display"/>
<transform value="copy"/>
<parameter>
<valueString value="Social History"/>
</parameter>
</target>
</rule>
</rule>
</rule>
<rule>
<name value="tobaccocode"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="code"/>
<variable value="code"/>
</target>
<rule>
<name value="tobaccocoding"/>
<source>
<context value="src"/>
</source>
<target>
<context value="code"/>
<contextType value="variable"/>
<element value="coding"/>
<variable value="coding"/>
</target>
<rule>
<name value="codesystem"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="http://loinc.org"/>
</parameter>
</target>
</rule>
<rule>
<name value="codevalue"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueString value="72166-2"/>
</parameter>
</target>
</rule>
<rule>
<name value="codedisplay"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="display"/>
<transform value="copy"/>
<parameter>
<valueString value="Tobacco smoking status"/>
</parameter>
</target>
</rule>
</rule>
</rule>
<rule>
<name value="lifestylesubject"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="subject"/>
<variable value="ref"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<rule>
<name value="subjectref"/>
<source>
<context value="patient"/>
<element value="id"/>
<variable value="patientId"/>
</source>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="reference"/>
<transform value="evaluate"/>
<parameter>
<valueString value="'Patient/' + %patientId"/>
</parameter>
</target>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="copy"/>
<parameter>
<valueString value="Patient"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="lifestyleeffective"/>
<source>
<context value="src"/>
<element value="dateRecueil"/>
<variable value="collectDate"/>
<condition value="%collectDate.exists()"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="effective"/>
<transform value="cast"/>
<parameter>
<valueId value="collectDate"/>
</parameter>
<parameter>
<valueString value="dateTime"/>
</parameter>
</target>
</rule>
<rule>
<name value="tobaccovalue"/>
<source>
<context value="src"/>
<element value="consommationTabac"/>
<variable value="tobacco"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="value"/>
<variable value="valueCC"/>
<transform value="create"/>
<parameter>
<valueString value="CodeableConcept"/>
</parameter>
</target>
<rule>
<name value="tobaccovaluetext"/>
<source>
<context value="tobacco"/>
</source>
<target>
<context value="valueCC"/>
<contextType value="variable"/>
<element value="text"/>
<transform value="copy"/>
<parameter>
<valueId value="tobacco"/>
</parameter>
</target>
</rule>
</rule>
</group>
<group>
<name value="TransformAlcoholObservation"/>
<typeMode value="none"/>
<input>
<name value="src"/>
<mode value="source"/>
</input>
<input>
<name value="tgtObs"/>
<type value="Observation"/>
<mode value="target"/>
</input>
<input>
<name value="patient"/>
<mode value="source"/>
</input>
<rule>
<name value="setId"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="id"/>
<transform value="uuid"/>
</target>
</rule>
<rule>
<name value="lifestyleidentifier"/>
<source>
<context value="src"/>
<element value="styleVieId"/>
<variable value="lsId"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="identifier"/>
<variable value="identifier"/>
</target>
<rule>
<name value="lifestyleidsystem"/>
<source>
<context value="lsId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="https://hospital.eu/ehr/lifestyle-id"/>
</parameter>
</target>
</rule>
<rule>
<name value="lifestyleidvalue"/>
<source>
<context value="lsId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="evaluate"/>
<parameter>
<valueString value="%lsId & '-alcohol'"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="lifestylestatus"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="status"/>
<transform value="copy"/>
<parameter>
<valueString value="final"/>
</parameter>
</target>
</rule>
<rule>
<name value="lifestylecategory"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="category"/>
<variable value="category"/>
</target>
<rule>
<name value="categorycoding"/>
<source>
<context value="src"/>
</source>
<target>
<context value="category"/>
<contextType value="variable"/>
<element value="coding"/>
<variable value="coding"/>
</target>
<rule>
<name value="categorysystem"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString
value="http://terminology.hl7.org/CodeSystem/observation-category"/>
</parameter>
</target>
</rule>
<rule>
<name value="categorycode"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueString value="social-history"/>
</parameter>
</target>
</rule>
<rule>
<name value="categorydisplay"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="display"/>
<transform value="copy"/>
<parameter>
<valueString value="Social History"/>
</parameter>
</target>
</rule>
</rule>
</rule>
<rule>
<name value="alcoholcode"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="code"/>
<variable value="code"/>
</target>
<rule>
<name value="alcoholcoding"/>
<source>
<context value="src"/>
</source>
<target>
<context value="code"/>
<contextType value="variable"/>
<element value="coding"/>
<variable value="coding"/>
</target>
<rule>
<name value="codesystem"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="http://loinc.org"/>
</parameter>
</target>
</rule>
<rule>
<name value="codevalue"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueString value="11331-6"/>
</parameter>
</target>
</rule>
<rule>
<name value="codedisplay"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="display"/>
<transform value="copy"/>
<parameter>
<valueString value="History of alcohol use"/>
</parameter>
</target>
</rule>
</rule>
</rule>
<rule>
<name value="lifestylesubject"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="subject"/>
<variable value="ref"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<rule>
<name value="subjectref"/>
<source>
<context value="patient"/>
<element value="id"/>
<variable value="patientId"/>
</source>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="reference"/>
<transform value="evaluate"/>
<parameter>
<valueString value="'Patient/' + %patientId"/>
</parameter>
</target>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="copy"/>
<parameter>
<valueString value="Patient"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="lifestyleeffective"/>
<source>
<context value="src"/>
<element value="dateRecueil"/>
<variable value="collectDate"/>
<condition value="%collectDate.exists()"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="effective"/>
<transform value="cast"/>
<parameter>
<valueId value="collectDate"/>
</parameter>
<parameter>
<valueString value="dateTime"/>
</parameter>
</target>
</rule>
<rule>
<name value="alcoholvalue"/>
<source>
<context value="src"/>
<element value="consommationAlcool"/>
<variable value="alcohol"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="value"/>
<variable value="valueCC"/>
<transform value="create"/>
<parameter>
<valueString value="CodeableConcept"/>
</parameter>
</target>
<rule>
<name value="alcoholvaluetext"/>
<source>
<context value="alcohol"/>
</source>
<target>
<context value="valueCC"/>
<contextType value="variable"/>
<element value="text"/>
<transform value="copy"/>
<parameter>
<valueId value="alcohol"/>
</parameter>
</target>
</rule>
</rule>
</group>
<group>
<name value="TransformDrugObservation"/>
<typeMode value="none"/>
<input>
<name value="src"/>
<mode value="source"/>
</input>
<input>
<name value="tgtObs"/>
<type value="Observation"/>
<mode value="target"/>
</input>
<input>
<name value="patient"/>
<mode value="source"/>
</input>
<rule>
<name value="setId"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="id"/>
<transform value="uuid"/>
</target>
</rule>
<rule>
<name value="lifestyleidentifier"/>
<source>
<context value="src"/>
<element value="styleVieId"/>
<variable value="lsId"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="identifier"/>
<variable value="identifier"/>
</target>
<rule>
<name value="lifestyleidsystem"/>
<source>
<context value="lsId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="https://hospital.eu/ehr/lifestyle-id"/>
</parameter>
</target>
</rule>
<rule>
<name value="lifestyleidvalue"/>
<source>
<context value="lsId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="evaluate"/>
<parameter>
<valueString value="%lsId & '-drugs'"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="lifestylestatus"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="status"/>
<transform value="copy"/>
<parameter>
<valueString value="final"/>
</parameter>
</target>
</rule>
<rule>
<name value="lifestylecategory"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="category"/>
<variable value="category"/>
</target>
<rule>
<name value="categorycoding"/>
<source>
<context value="src"/>
</source>
<target>
<context value="category"/>
<contextType value="variable"/>
<element value="coding"/>
<variable value="coding"/>
</target>
<rule>
<name value="categorysystem"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString
value="http://terminology.hl7.org/CodeSystem/observation-category"/>
</parameter>
</target>
</rule>
<rule>
<name value="categorycode"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueString value="social-history"/>
</parameter>
</target>
</rule>
<rule>
<name value="categorydisplay"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="display"/>
<transform value="copy"/>
<parameter>
<valueString value="Social History"/>
</parameter>
</target>
</rule>
</rule>
</rule>
<rule>
<name value="drugcode"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="code"/>
<variable value="code"/>
</target>
<rule>
<name value="drugcoding"/>
<source>
<context value="src"/>
</source>
<target>
<context value="code"/>
<contextType value="variable"/>
<element value="coding"/>
<variable value="coding"/>
</target>
<rule>
<name value="codesystem"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="http://loinc.org"/>
</parameter>
</target>
</rule>
<rule>
<name value="codevalue"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueString value="11342-3"/>
</parameter>
</target>
</rule>
<rule>
<name value="codedisplay"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="display"/>
<transform value="copy"/>
<parameter>
<valueString value="History of drug use"/>
</parameter>
</target>
</rule>
</rule>
</rule>
<rule>
<name value="lifestylesubject"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="subject"/>
<variable value="ref"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<rule>
<name value="subjectref"/>
<source>
<context value="patient"/>
<element value="id"/>
<variable value="patientId"/>
</source>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="reference"/>
<transform value="evaluate"/>
<parameter>
<valueString value="'Patient/' + %patientId"/>
</parameter>
</target>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="copy"/>
<parameter>
<valueString value="Patient"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="lifestyleeffective"/>
<source>
<context value="src"/>
<element value="dateRecueil"/>
<variable value="collectDate"/>
<condition value="%collectDate.exists()"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="effective"/>
<transform value="cast"/>
<parameter>
<valueId value="collectDate"/>
</parameter>
<parameter>
<valueString value="dateTime"/>
</parameter>
</target>
</rule>
<rule>
<name value="drugvalue"/>
<source>
<context value="src"/>
<element value="consommationAutresDrogues"/>
<variable value="drugs"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="value"/>
<variable value="valueCC"/>
<transform value="create"/>
<parameter>
<valueString value="CodeableConcept"/>
</parameter>
</target>
<rule>
<name value="drugvaluetext"/>
<source>
<context value="drugs"/>
</source>
<target>
<context value="valueCC"/>
<contextType value="variable"/>
<element value="text"/>
<transform value="copy"/>
<parameter>
<valueId value="drugs"/>
</parameter>
</target>
</rule>
</rule>
</group>
<group>
<name value="TransformPhysicalActivityObservation"/>
<typeMode value="none"/>
<input>
<name value="src"/>
<mode value="source"/>
</input>
<input>
<name value="tgtObs"/>
<type value="Observation"/>
<mode value="target"/>
</input>
<input>
<name value="patient"/>
<mode value="source"/>
</input>
<rule>
<name value="setId"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="id"/>
<transform value="uuid"/>
</target>
</rule>
<rule>
<name value="lifestyleidentifier"/>
<source>
<context value="src"/>
<element value="styleVieId"/>
<variable value="lsId"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="identifier"/>
<variable value="identifier"/>
</target>
<rule>
<name value="lifestyleidsystem"/>
<source>
<context value="lsId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="https://hospital.eu/ehr/lifestyle-id"/>
</parameter>
</target>
</rule>
<rule>
<name value="lifestyleidvalue"/>
<source>
<context value="lsId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="evaluate"/>
<parameter>
<valueString value="%lsId & '-physical'"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="lifestylestatus"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="status"/>
<transform value="copy"/>
<parameter>
<valueString value="final"/>
</parameter>
</target>
</rule>
<rule>
<name value="lifestylecategory"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="category"/>
<variable value="category"/>
</target>
<rule>
<name value="categorycoding"/>
<source>
<context value="src"/>
</source>
<target>
<context value="category"/>
<contextType value="variable"/>
<element value="coding"/>
<variable value="coding"/>
</target>
<rule>
<name value="categorysystem"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString
value="http://terminology.hl7.org/CodeSystem/observation-category"/>
</parameter>
</target>
</rule>
<rule>
<name value="categorycode"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueString value="social-history"/>
</parameter>
</target>
</rule>
<rule>
<name value="categorydisplay"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="display"/>
<transform value="copy"/>
<parameter>
<valueString value="Social History"/>
</parameter>
</target>
</rule>
</rule>
</rule>
<rule>
<name value="physicalcode"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="code"/>
<variable value="code"/>
</target>
<rule>
<name value="physicalcoding"/>
<source>
<context value="src"/>
</source>
<target>
<context value="code"/>
<contextType value="variable"/>
<element value="coding"/>
<variable value="coding"/>
</target>
<rule>
<name value="codesystem"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="http://loinc.org"/>
</parameter>
</target>
</rule>
<rule>
<name value="codevalue"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueString value="67504-6"/>
</parameter>
</target>
</rule>
<rule>
<name value="codedisplay"/>
<source>
<context value="src"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="display"/>
<transform value="copy"/>
<parameter>
<valueString value="Exercise activity"/>
</parameter>
</target>
</rule>
</rule>
</rule>
<rule>
<name value="lifestylesubject"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="subject"/>
<variable value="ref"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<rule>
<name value="subjectref"/>
<source>
<context value="patient"/>
<element value="id"/>
<variable value="patientId"/>
</source>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="reference"/>
<transform value="evaluate"/>
<parameter>
<valueString value="'Patient/' + %patientId"/>
</parameter>
</target>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="copy"/>
<parameter>
<valueString value="Patient"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="lifestyleeffective"/>
<source>
<context value="src"/>
<element value="dateRecueil"/>
<variable value="collectDate"/>
<condition value="%collectDate.exists()"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="effective"/>
<transform value="cast"/>
<parameter>
<valueId value="collectDate"/>
</parameter>
<parameter>
<valueString value="dateTime"/>
</parameter>
</target>
</rule>
<rule>
<name value="physicalvalue"/>
<source>
<context value="src"/>
<element value="activitePhysique"/>
<variable value="physical"/>
</source>
<target>
<context value="tgtObs"/>
<contextType value="variable"/>
<element value="value"/>
<variable value="valueCC"/>
<transform value="create"/>
<parameter>
<valueString value="CodeableConcept"/>
</parameter>
</target>
<rule>
<name value="physicalvaluetext"/>
<source>
<context value="physical"/>
</source>
<target>
<context value="valueCC"/>
<contextType value="variable"/>
<element value="text"/>
<transform value="copy"/>
<parameter>
<valueId value="physical"/>
</parameter>
</target>
</rule>
</rule>
</group>
<group>
<name value="TransformMedicationAdministrationWOOrder"/>
<typeMode value="none"/>
<documentation
value="========================================================================
MEDICATION ADMINISTRATION TRANSFORMATION
========================================================================"/>
<input>
<name value="src"/>
<mode value="source"/>
</input>
<input>
<name value="tgtMedAdmin"/>
<type value="MedicationAdministration"/>
<mode value="target"/>
</input>
<input>
<name value="patient"/>
<mode value="source"/>
</input>
<rule>
<name value="setId"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtMedAdmin"/>
<contextType value="variable"/>
<element value="id"/>
<transform value="uuid"/>
</target>
</rule>
<rule>
<name value="adminidentifier"/>
<source>
<context value="src"/>
<element value="administrationId"/>
<variable value="adminId"/>
</source>
<target>
<context value="tgtMedAdmin"/>
<contextType value="variable"/>
<element value="identifier"/>
<variable value="identifier"/>
</target>
<rule>
<name value="adminidsystem"/>
<source>
<context value="adminId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="https://hospital.eu/ehr/administration-id"/>
</parameter>
</target>
</rule>
<rule>
<name value="adminidvalue"/>
<source>
<context value="adminId"/>
</source>
<target>
<context value="identifier"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="adminId"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="adminstatus"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtMedAdmin"/>
<contextType value="variable"/>
<element value="status"/>
<transform value="copy"/>
<parameter>
<valueString value="completed"/>
</parameter>
</target>
</rule>
<rule>
<name value="adminsubject"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtMedAdmin"/>
<contextType value="variable"/>
<element value="subject"/>
<variable value="ref"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<rule>
<name value="subjectref"/>
<source>
<context value="patient"/>
<element value="id"/>
<variable value="patientId"/>
</source>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="reference"/>
<transform value="evaluate"/>
<parameter>
<valueString value="'Patient/' + %patientId"/>
</parameter>
</target>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="copy"/>
<parameter>
<valueString value="Patient"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="adminmedication"/>
<source>
<context value="src"/>
<element value="denomination"/>
<variable value="denomination"/>
</source>
<target>
<context value="tgtMedAdmin"/>
<contextType value="variable"/>
<element value="medication"/>
<variable value="medication"/>
<transform value="create"/>
<parameter>
<valueString value="CodeableConcept"/>
</parameter>
</target>
<rule>
<name value="medicationtext"/>
<source>
<context value="denomination"/>
</source>
<target>
<context value="medication"/>
<contextType value="variable"/>
<element value="text"/>
<transform value="copy"/>
<parameter>
<valueId value="denomination"/>
</parameter>
</target>
</rule>
<rule>
<name value="atccoding"/>
<source>
<context value="src"/>
<element value="codeAtc"/>
<variable value="atc"/>
</source>
<target>
<context value="medication"/>
<contextType value="variable"/>
<element value="coding"/>
<variable value="coding"/>
</target>
<rule>
<name value="atcsystem"/>
<source>
<context value="atc"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString value="http://www.whocc.no/atc"/>
</parameter>
</target>
</rule>
<rule>
<name value="atccode"/>
<source>
<context value="atc"/>
</source>
<target>
<context value="coding"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueId value="atc"/>
</parameter>
</target>
</rule>
</rule>
</rule>
<rule>
<name value="admineffective"/>
<source>
<context value="src"/>
<condition
value="src.dateHeureDebut.exists() or src.dateHeureFin.exists()"/>
</source>
<target>
<context value="tgtMedAdmin"/>
<contextType value="variable"/>
<element value="effective"/>
<variable value="period"/>
<transform value="create"/>
<parameter>
<valueString value="Period"/>
</parameter>
</target>
<rule>
<name value="periodstart"/>
<source>
<context value="src"/>
<element value="dateHeureDebut"/>
<variable value="startDate"/>
</source>
<target>
<context value="period"/>
<contextType value="variable"/>
<element value="start"/>
<transform value="copy"/>
<parameter>
<valueId value="startDate"/>
</parameter>
</target>
</rule>
<rule>
<name value="periodend"/>
<source>
<context value="src"/>
<element value="dateHeureFin"/>
<variable value="endDate"/>
</source>
<target>
<context value="period"/>
<contextType value="variable"/>
<element value="end"/>
<transform value="copy"/>
<parameter>
<valueId value="endDate"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="admindosage"/>
<source>
<context value="src"/>
<condition
value="src.quantite.exists() or src.voieAdministration.exists()"/>
</source>
<target>
<context value="tgtMedAdmin"/>
<contextType value="variable"/>
<element value="dosage"/>
<variable value="dosage"/>
</target>
<rule>
<name value="admindose"/>
<source>
<context value="src"/>
<element value="quantite"/>
<variable value="quantity"/>
</source>
<target>
<context value="dosage"/>
<contextType value="variable"/>
<element value="dose"/>
<variable value="dose"/>
<transform value="create"/>
<parameter>
<valueString value="Quantity"/>
</parameter>
</target>
<rule>
<name value="dosevalue"/>
<source>
<context value="quantity"/>
</source>
<target>
<context value="dose"/>
<contextType value="variable"/>
<element value="value"/>
<transform value="copy"/>
<parameter>
<valueId value="quantity"/>
</parameter>
</target>
</rule>
<rule>
<name value="doseunit"/>
<source>
<context value="src"/>
<element value="uniteQuantite"/>
<variable value="unit"/>
</source>
<target>
<context value="dose"/>
<contextType value="variable"/>
<element value="unit"/>
<transform value="copy"/>
<parameter>
<valueId value="unit"/>
</parameter>
</target>
</rule>
</rule>
<rule>
<name value="dosageroute"/>
<source>
<context value="src"/>
<element value="voieAdministration"/>
<variable value="route"/>
</source>
<target>
<context value="dosage"/>
<contextType value="variable"/>
<element value="route"/>
<variable value="routeCC"/>
</target>
<rule>
<name value="routecoding"/>
<source>
<context value="route"/>
</source>
<target>
<context value="routeCC"/>
<contextType value="variable"/>
<element value="coding"/>
<variable value="routeCoding"/>
</target>
<rule>
<name value="routecode"/>
<source>
<context value="route"/>
</source>
<target>
<context value="routeCoding"/>
<contextType value="variable"/>
<element value="code"/>
<transform value="copy"/>
<parameter>
<valueId value="route"/>
</parameter>
</target>
</rule>
<rule>
<name value="routesystem"/>
<source>
<context value="route"/>
</source>
<target>
<context value="routeCoding"/>
<contextType value="variable"/>
<element value="system"/>
<transform value="copy"/>
<parameter>
<valueString
value="https://smt.esante.gouv.fr/terminologie-standardterms"/>
</parameter>
</target>
</rule>
</rule>
</rule>
</rule>
</group>
<group>
<name value="TransformMedicationAdministrationWOrder"/>
<extends value="TransformMedicationAdministrationWOOrder"/>
<typeMode value="none"/>
<input>
<name value="src"/>
<mode value="source"/>
</input>
<input>
<name value="tgtMedAdmin"/>
<type value="MedicationAdministration"/>
<mode value="target"/>
</input>
<input>
<name value="patient"/>
<mode value="source"/>
</input>
<input>
<name value="order"/>
<mode value="source"/>
</input>
<rule>
<name value="admincontext"/>
<source>
<context value="src"/>
</source>
<target>
<context value="tgtMedAdmin"/>
<contextType value="variable"/>
<element value="request"/>
<variable value="ref"/>
<transform value="create"/>
<parameter>
<valueString value="Reference"/>
</parameter>
</target>
<rule>
<name value="encounterref"/>
<source>
<context value="order"/>
<element value="id"/>
<variable value="orderId"/>
</source>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="reference"/>
<transform value="evaluate"/>
<parameter>
<valueString value="'MedicationRequest/' + %orderId"/>
</parameter>
</target>
<target>
<context value="ref"/>
<contextType value="variable"/>
<element value="type"/>
<transform value="copy"/>
<parameter>
<valueString value="MedicationRequest"/>
</parameter>
</target>
</rule>
</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="'urn:ehr:' + %newRes.type().name + '/' + %newResId"/>
</parameter>
</target>
</rule>
</rule>
</group>
</StructureMap>