StructureMap-cda2fhirLabReport

Sourcehl7.fhir.it.cda2fhir#current:CDA to FHIR Maps (v4.0.1)
resourceTypeStructureMap
idcda2fhirLabReport
canonicalhttp://hl7.it/fhir/cda2fhir/StructureMap/cda2fhirLabReport
version0.1.0
statusdraft
publisherHL7 Italy
namecda2fhirLabReport
date2023-06-12T14:05:19+00:00
jurisdictionsit
Usages(none)

    
/// url = 
    
    'http://hl7.it/fhir/cda2fhir/StructureMap/cda2fhirLabReport'

    
/// name = 
    
    'cda2fhirLabReport'

    
/// status = 
    
    'draft'


    uses
     "
http://hl7.org/fhir/cda/StructureDefinition/ClinicalDocument    " 
    alias 
ClinicalDocument     as 
    source

    uses
     "
http://hl7.org/fhir/cda/StructureDefinition/AssignedAuthor    " 
    alias 
AssignedAuthor     as 
    queried

    uses
     "
http://hl7.org/fhir/cda/StructureDefinition/AssignedEntity    " 
    alias 
AssignedEntity     as 
    queried

    uses
     "
http://hl7.org/fhir/cda/StructureDefinition/AssociatedEntity    " 
    alias 
AssociatedEntity     as 
    queried

    uses
     "
http://hl7.org/fhir/cda/StructureDefinition/CustodianOrganization    " 
    alias 
CustodianOrganization     as 
    queried

    uses
     "
http://hl7.org/fhir/cda/StructureDefinition/OrganizationPartOf    " 
    alias 
OrganizationPartOf     as 
    queried

    uses
     "
http://hl7.org/fhir/cda/StructureDefinition/Organization    " 
    alias 
rapresentedOrganization     as 
    queried

    uses
     "
http://hl7.org/fhir/cda/StructureDefinition/Section    " 
    alias 
Section     as 
    queried

    uses
     "
http://hl7.org/fhir/cda/StructureDefinition/PatientRole    " 
    alias 
PatientRole     as 
    queried

    uses
     "
http://hl7.org/fhir/cda/StructureDefinition/AD    " 
    alias 
AD     as 
    source

    uses
     "
    http://hl7.org/fhir/StructureDefinition/Bundle
    " 
    alias 
Bundle     as 
    target

    uses
     "
    http://hl7.org/fhir/StructureDefinition/Composition
    " 
    alias 
Composition     as 
    produced

    uses
     "
    http://hl7.org/fhir/StructureDefinition/Patient
    " 
    alias 
Patient     as 
    produced

    uses
     "
    http://hl7.org/fhir/StructureDefinition/Encounter
    " 
    alias 
Encounter     as 
    produced

    uses
     "
    http://hl7.org/fhir/StructureDefinition/Person
    " 
    alias 
Patient     as 
    produced

    uses
     "
    http://hl7.org/fhir/StructureDefinition/Practitioner
    " 
    alias 
Practitioner     as 
    produced

    uses
     "
    http://hl7.org/fhir/StructureDefinition/Specimen
    " 
    alias 
Specimen     as 
    produced

    uses
     "
    http://hl7.org/fhir/StructureDefinition/Procedure
    " 
    alias 
Procedure     as 
    produced

    uses
     "
    http://hl7.org/fhir/StructureDefinition/Organization
    " 
    alias 
Organization     as 
    produced

    uses
     "
http://hl7.org/fhir/cda/StructureDefinition/Act    " 
    alias 
Act     as 
    produced

    uses
     "
http://hl7.org/fhir/cda/StructureDefinition/IVL-PQ    " 
    alias 
IVL_PQ     as 
    source

    uses
     "
http://hl7.org/fhir/cda/StructureDefinition/PQ    " 
    alias 
PQ     as 
    source

    uses
     "
    http://hl7.org/fhir/StructureDefinition/SimpleQuantity
    " 
    alias 
SimpleQuantity     as 
    target

    uses
     "
http://hl7.org/fhir/cda/StructureDefinition/Organizer    " 
    alias 
Organizer     as 
    source


    imports
     "
    http://hl7.it/fhir/cda2fhir/StructureMap/cda2fhirDataTypes
    "

    imports
     "
    http://hl7.it/fhir/cda2fhir/StructureMap/cda2fhirHeader
    "


    group 
CdaToBundle    (
    source
     cda
     : 
ClinicalDocument,     target
     bundle
     : 
Bundle    )
     {

  cda    
 ->     
 bundle.entry     as 
    e
    , 
 e.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e.resource =     create
    (
    'Composition'
    )
     as 
    composition
    , 
 composition.id =     uuid
    (
    )
     as 
    uuid1
    , 
 e.fullUrl =     append
    (
    'https://example/Composition/'
    , 
    uuid1
    )
    , 
 request.url =     'Composition'
    , 
 bundle.entry     as 
    e2
    , 
 e2.request =     create
    (
    'BackboneElement'
    )
     as 
    requestPAT
    , 
 requestPAT.method =     'PUT'
    , 
 e2.resource =     create
    (
    'Patient'
    )
     as 
    patient
    , 
 patient.id =     uuid
    (
    )
     as 
    uuid2
    , 
 e2.fullUrl =     append
    (
    'https://example/Patient/'
    , 
    uuid2
    )
    , 
 bundle.entry     as 
    e3
    , 
 e3.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e3.resource =     create
    (
    'Encounter'
    )
     as 
    encounter
    , 
 encounter.id =     uuid
    (
    )
     as 
    uuid3
    , 
 e3.fullUrl =     append
    (
    'https://example/Encounter/'
    , 
    uuid3
    )
    , 
 request.url =     'Encounter'
    , 
 bundle.entry     as 
    e6
    , 
 e6.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e6.resource =     create
    (
    'DocumentReference'
    )
     as 
    DocumentReference
    , 
 DocumentReference.id =     uuid
    (
    )
     as 
    uuid6
    , 
 e6.fullUrl =     append
    (
    'https://example/DocumentReference/'
    , 
    uuid6
    )
    , 
 request.url =     'DocumentReference'
     then
     {

    cda     then 
ClinicalDocumentToBundle    (
    cda
    , 
    patient
    , 
    composition
    , 
    encounter
    , 
    bundle
    , 
    DocumentReference
    )
     "cdatobundle"
    ;

    cda.recordTarget     as 
    recordTarget
     then
     {

      recordTarget.patientRole     as 
    patient
     then
     {

        patient.id     as 
    id
    
 ->     
patient.identifier     as 
    identifier
     then
     {

          id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

          id.extension     as 
    ext1
    
 ->     
identifier.value =     ext1
     "value"
    ;

          id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

            }
     "idfr"
    ;

        patient.id     as 
    id
     where 
(root = '2.16.840.1.113883.2.9.4.3.2') or (root = '2.16.840.1.113883.2.9.4.3.7') or (root = '2.16.840.1.113883.2.9.4.3.3') or (root = '2.16.840.1.113883.2.9.4.3.17') or (root = '2.16.840.1.113883.2.9.4.3.18') or (root = '2.16.840.1.113883.2.9.2.10.4.1.1') or (root = '2.16.840.1.113883.2.9.2.20.4.1.1') or (root = '2.16.840.1.113883.2.9.2.30.4.1.1') or (root = '2.16.840.1.113883.2.9.2.41.4.1.1') or (root = '2.16.840.1.113883.2.9.2.42.4.1.1') or (root = '2.16.840.1.113883.2.9.2.50.4.1.1') or (root = '2.16.840.1.113883.2.9.2.60.4.1.1') or (root = '2.16.840.1.113883.2.9.2.70.4.1.1') or (root = '2.16.840.1.113883.2.9.2.80.4.1.1') or (root = '2.16.840.1.113883.2.9.2.90.4.1.1') or (root = '2.16.840.1.113883.2.9.2.100.4.1.1') or (root = '2.16.840.1.113883.2.9.2.110.4.1.1') or (root = '2.16.840.1.113883.2.9.2.120.4.1.1') or (root = '2.16.840.1.113883.2.9.2.130.4.1.1') or (root = '2.16.840.1.113883.2.9.2.140.4.1.1') or (root = '2.16.840.1.113883.2.9.2.150.4.1.1') or (root = '2.16.840.1.113883.2.9.2.160.4.1.1') or (root = '2.16.840.1.113883.2.9.2.170.4.1.1') or (root = '2.16.840.1.113883.2.9.2.180.4.1.1') or (root = '2.16.840.1.113883.2.9.2.190.4.1.1') or (root = '2.16.840.1.113883.2.9.2.200.4.1.1') or (root = '2.16.840.1.113883.2.9.2.10.4.1') or (root = '2.16.840.1.113883.2.9.2.20.4.1') or (root = '2.16.840.1.113883.2.9.2.30.4.1') or (root = '2.16.840.1.113883.2.9.2.41.4.1') or (root = '2.16.840.1.113883.2.9.2.42.4.1') or (root = '2.16.840.1.113883.2.9.2.50.4.1') or (root = '2.16.840.1.113883.2.9.2.60.4.1') or (root = '2.16.840.1.113883.2.9.2.70.4.1') or (root = '2.16.840.1.113883.2.9.2.80.4.1') or (root = '2.16.840.1.113883.2.9.2.90.4.1') or (root = '2.16.840.1.113883.2.9.2.100.4.1') or (root = '2.16.840.1.113883.2.9.2.110.4.1') or (root = '2.16.840.1.113883.2.9.2.120.4.1') or (root = '2.16.840.1.113883.2.9.2.130.4.1') or (root = '2.16.840.1.113883.2.9.2.140.4.1') or (root = '2.16.840.1.113883.2.9.2.150.4.1') or (root = '2.16.840.1.113883.2.9.2.160.4.1') or (root = '2.16.840.1.113883.2.9.2.170.4.1') or (root = '2.16.840.1.113883.2.9.2.180.4.1') or (root = '2.16.840.1.113883.2.9.2.190.4.1') or (root = '2.16.840.1.113883.2.9.2.200.4.1') or (root = '2.16.840.1.113883.2.9.4.3.15')     then
     {

          id.extension     as 
    ext
    
 ->     
requestPAT.url =     append
    (
    'Patient?identifier='
    , 
    ext
    )
     "UUID"
    ;

            }
     "ext"
    ;

          }
     "record"
    ;

        }
     "patient"
    ;

      }
     "ClinicalDocumentToBody"
    ;

    }


    group 
ClinicalDocumentToBundle    (
    source
     cda
     : 
ClinicalDocument,     target
     patient
     : 
Patient,     target
     composition
     : 
Composition,     target
     encounter
     : 
Encounter,     target
     bundle
     : 
Bundle,     target
     documentreference
     : 
DocumentReference    )
     {

  cda    
 ->     
bundle.id =     uuid
    (
    )
     "id"
    ;

  cda.id    
 ->     
bundle.identifier     "identifier"
    ;

  cda    
 ->     
bundle.type =     'transaction'
     "type"
    ;

  cda    
 ->     
bundle.timestamp =     (
timestamp.now()    )
     "date"
    ;

  cda     then 
ClinicalDocumentComposition    (
    cda
    , 
    composition
    , 
    patient
    , 
    encounter
    , 
    bundle
    , 
    documentreference
    )
     "composition"
    ;

  cda.component     as 
    component
     then
     {

    component.structuredBody     as 
    body
     then
     {

      body.component     as 
    component
     then
     {

        component.section     as 
    srcSection
     then
     {

          srcSection.code    
 ->     
composition.section     as 
    tgtSection
     then 
ClinicalDocumentSection    (
    cda
    , 
    srcSection
    , 
    patient
    , 
    tgtSection
    , 
    bundle
    , 
    encounter
    , 
    documentreference
    )
    ;

            }
    ;

          }
    ;

        }
     "body"
    ;

      }
    ;

    }


    group 
ClinicalDocumentSection    (
    source
     cda
     : 
ClinicalDocument,     source
     src
     : 
Section,     target
     patient
     : 
Patient,     target
     tgt
,     target
     bundle
     : 
Bundle,     target
     enc
     : 
Encounter,     target
     documentreference
     : 
DocumentReference    )
     {

  src.title     as 
    t
    
 ->     
tgt.title =     (
t.dataString    )
    ;

  src.code    
 ->     
tgt.code    ;

  src.text     as 
    cdaText
    
 ->     
tgt.text     as 
    fhirText
     then
     {

    cdaText    
 ->     
fhirText.status =     'generated'
     "narrativeStatus"
    ;

    cdaText     as 
    t
    
 ->     
fhirText.div =     t
     "narrativeText"
    ;

      }
     "cdaText"
    ;

  src.entry     as 
    entry1
    
 ->     
 bundle.entry     as 
    e1
    , 
 e1.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e1.resource =     create
    (
    'DiagnosticReport'
    )
     as 
    DiagnosticReport
    , 
 DiagnosticReport.id =     uuid
    (
    )
     as 
    uuid1
    , 
 e1.fullUrl =     append
    (
    'https://example/DiagnosticReport/'
    , 
    uuid1
    )
    , 
 request.url =     'DiagnosticReport'
    , 
 tgt.entry =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/DiagnosticReport/' + %DiagnosticReport.id    )
     then
     {

    entry1.act     as 
    act1
     then 
Act    (
    act1
    , 
    patient
    , 
    DiagnosticReport
    , 
    enc
    , 
    bundle
    )
    ;

      }
    ;

  src.component     as 
    component
     then
     {

    component.section     as 
    sec
    
 ->     
tgt.section     as 
    tgtSection
     then 
ClinicalDocumentSection    (
    cda
    , 
    sec
    , 
    patient
    , 
    tgtSection
    , 
    bundle
    , 
    enc
    , 
    documentreference
    )
    ;

      }
    ;

    }


    group 
Observation    (
    source
     obs
     : 
Observation,     target
     patient
     : 
Patient,     target
     encounter
     : 
Encounter,     target
     ob
     : 
Observation,     target
     bundle
     : 
Bundle    )
     {

  obs    
 ->     
 ob.subject =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Patient/' + %patient.id    )
     "reference"
    ;

  obs    
 ->     
 ob.encounter =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Encounter/' + %encounter.id    )
     "reference"
    ;

  obs.code    
 ->     
ob.code    ;

  obs.statusCode     as 
    statusc
     where 
(code = 'completed')    
 ->     
ob.status =     'final'
    ;

  obs.statusCode     as 
    statusc
     where 
(code = 'active')    
 ->     
ob.status =     'registered'
    ;

  obs.statusCode     as 
    statusc
     where 
(code = 'aborted')    
 ->     
ob.status =     'cancelled'
    ;

  obs.statusCode     as 
    statusc
     where 
(code = 'suspended')    
 ->     
ob.status =     'partial'
    ;

  obs.effectiveTime     as 
    effectiveTime
    
 ->     
ob.effective =     create
    (
    'dateTime'
    )
     as 
    value
     then 
TSDateTime    (
    effectiveTime
    , 
    value
    )
     "value2"
    ;

  obs     where 
effectiveTime.low.exists() or effectiveTime.high.exists()     then
     {

    obs.effectiveTime     as 
    eff
    
 ->     
ob.effective =     create
    (
    'Period'
    )
     as 
    period
     then 
IVLTSPeriod    (
    eff
    , 
    period
    )
    ;

      }
     "where"
    ;

  obs.interpretationCode    
 ->     
ob.interpretation    ;

  obs.methodCode    
 ->     
ob.method    ;

  obs.value     : 
INT     as 
    int
    
 ->     
ob.value =     (
int.value    )
    ;

  obs.value     : 
BL     as 
    boolean
    
 ->     
ob.value =     (
boolean.value    )
     "boolean"
    ;

  obs.value     : 
CE     as 
    val
     then
     {

    val    
 ->     
ob.value =     create
    (
    'CodeableConcept'
    )
     as 
    ce
     then
     {

      val.originalText     as 
    originalText
     then
     {

        originalText.reference     as 
    reference
    
 ->     
ce.text =     reference
    ;

          }
     "originltext"
    ;

      val    
 ->     
ce.coding     as 
    coding
     then
     {

        val.code     as 
    code
    
 ->     
coding.code =     cast
    (
    code
    , 
    'string'
    )
    ;

        val.codeSystem     as 
    system
    
 ->     
coding.system =     translate
    (
    system
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
    ;

        val.displayName     as 
    display
    
 ->     
coding.display =     cast
    (
    display
    , 
    'string'
    )
    ;

        val.codeSystemVersion     as 
    version
    
 ->     
coding.version =     cast
    (
    version
    , 
    'string'
    )
    ;

          }
     "code"
    ;

      val.translation     as 
    translation
    
 ->     
ce.coding     as 
    coding
     then
     {

        translation.code     as 
    code
    
 ->     
coding.code =     cast
    (
    code
    , 
    'string'
    )
    ;

        translation.codeSystem     as 
    system
    
 ->     
coding.system =     translate
    (
    system
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
    ;

        translation.displayName     as 
    display
    
 ->     
coding.display =     cast
    (
    display
    , 
    'string'
    )
    ;

        translation.codeSystemVersion     as 
    version
    
 ->     
coding.version =     cast
    (
    version
    , 
    'string'
    )
    ;

        translation.qualifier     as 
    qualifier
     then
     {

          qualifier.value     as 
    value
    
 ->     
ce.coding     as 
    coding
     then
     {

            value.code     as 
    code
    
 ->     
coding.code =     cast
    (
    code
    , 
    'string'
    )
    ;

            value.codeSystem     as 
    system
    
 ->     
coding.system =     translate
    (
    system
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
    ;

            value.displayName     as 
    display
    
 ->     
coding.display =     cast
    (
    display
    , 
    'string'
    )
    ;

            value.codeSystemVersion     as 
    version
    
 ->     
coding.version =     cast
    (
    version
    , 
    'string'
    )
    ;

              }
    ;

            }
    ;

          }
    ;

        }
     "coding"
    ;

      }
     "val"
    ;

  obs.value     : 
CD     as 
    val
     then
     {

    val    
 ->     
ob.value =     create
    (
    'CodeableConcept'
    )
     as 
    ce
     then
     {

      val.originalText     as 
    originalText
     then
     {

        originalText.reference     as 
    reference
    
 ->     
ce.text =     reference
    ;

          }
     "originltext"
    ;

      val    
 ->     
ce.coding     as 
    coding
     then
     {

        val.code     as 
    code
    
 ->     
coding.code =     cast
    (
    code
    , 
    'string'
    )
    ;

        val.codeSystem     as 
    system
    
 ->     
coding.system =     translate
    (
    system
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
    ;

        val.displayName     as 
    display
    
 ->     
coding.display =     cast
    (
    display
    , 
    'string'
    )
    ;

        val.codeSystemVersion     as 
    version
    
 ->     
coding.version =     cast
    (
    version
    , 
    'string'
    )
    ;

          }
     "code"
    ;

      val.translation     as 
    translation
    
 ->     
ce.coding     as 
    coding
     then
     {

        translation.code     as 
    code
    
 ->     
coding.code =     cast
    (
    code
    , 
    'string'
    )
    ;

        translation.codeSystem     as 
    system
    
 ->     
coding.system =     translate
    (
    system
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
    ;

        translation.displayName     as 
    display
    
 ->     
coding.display =     cast
    (
    display
    , 
    'string'
    )
    ;

        translation.codeSystemVersion     as 
    version
    
 ->     
coding.version =     cast
    (
    version
    , 
    'string'
    )
    ;

        translation.qualifier     as 
    qualifier
     then
     {

          qualifier.value     as 
    value
    
 ->     
ce.coding     as 
    coding
     then
     {

            value.code     as 
    code
    
 ->     
coding.code =     cast
    (
    code
    , 
    'string'
    )
    ;

            value.codeSystem     as 
    system
    
 ->     
coding.system =     translate
    (
    system
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
    ;

            value.displayName     as 
    display
    
 ->     
coding.display =     cast
    (
    display
    , 
    'string'
    )
    ;

            value.codeSystemVersion     as 
    version
    
 ->     
coding.version =     cast
    (
    version
    , 
    'string'
    )
    ;

              }
    ;

            }
    ;

          }
    ;

        }
     "coding"
    ;

      }
     "val"
    ;

  obs.value     : 
PQ     as 
    val
     then
     {

    val    
 ->     
ob.value =     create
    (
    'Quantity'
    )
     as 
    quantity
     then
     {

      val.value     as 
    value
    
 ->     
quantity.value =     value
    ;

      val.unit     as 
    unit
    
 ->     
quantity.unit =     unit
    ;

        }
     "quantity"
    ;

      }
     "valueQuantity"
    ;

  obs.value     : 
ST     as 
    value
    
 ->     
 ob.value =     create
    (
    'string'
    )
    , 
 ob.value =     (
value.dataString    )
    ;

  obs.entryRelationship     as 
    entryRelationship
     then
     {

    entryRelationship.act     as 
    act
     then
     {

      act.text     as 
    text
     then
     {

        text.reference     as 
    reference
    
 ->     
ob.note     as 
    note
     then
     {

          reference    
 ->     
note.text =     (
reference.value    )
     "reference"
    ;

            }
    ;

          }
    ;

        }
     "Act"
    ;

      }
    ;
     // 
    Note e commenti

  obs.subject     as 
    sbj
     then
     {

    sbj.relatedSubject     as 
    relatedSubj
    
 ->     
patient.extension     as 
    extension2
     then 
ExtSubjectAnimal    (
    relatedSubj
    , 
    extension2
    )
    ;

      }
    ;
     // 
    subject

  obs.performer     as 
    performer
    
 ->     
 bundle.entry     as 
    e1
    , 
 e1.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e1.resource =     create
    (
    'PractitionerRole'
    )
     as 
    practitionerRole
    , 
 practitionerRole.id =     uuid
    (
    )
     as 
    uuid1
    , 
 e1.fullUrl =     append
    (
    'https://example/PractitionerRole/'
    , 
    uuid1
    )
    , 
 request.url =     'PractitionerRole'
     then
     {

    performer    
 ->     
 ob.performer =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/PractitionerRole/' + %practitionerRole.id    )
     then
     {

      performer.assignedEntity     as 
    entity
     then
     {

        entity.code    
 ->     
practitionerRole.code    ;

        entity    
 ->     
 bundle.entry     as 
    e2
    , 
 e2.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e2.resource =     create
    (
    'Practitioner'
    )
     as 
    practitioner
     then
     {

          entity    
 ->     
practitioner.meta     as 
    meta
     then
     {

            entity    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

              entity    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

              entity    
 ->     
coding.code =     'ClinicalDocument/body/observation/performer'
     "code"
    ;

                }
     "coding"
    ;

              }
     "meta"
    ;

          entity.id     as 
    id
    
 ->     
practitioner.identifier     as 
    identifier
     then
     {

            id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

            id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

              entity    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

                }
     "ext"
    ;

            id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

            id.root     as 
    r
     then
     {

              id.extension     as 
    ext
    
 ->     
 practitioner.id =     (
r + '-' + ext    )
     as 
    uuid2
    , 
 e2.fullUrl =     append
    (
    'https://example/Practitioner/'
    , 
    uuid2
    )
    , 
 practitionerRole.practitioner =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Practitioner/' + %practitioner.id    )
     "performer"
    ;

                }
     "r"
    ;

              }
     "identifier"
    ;

          entity.id     as 
    id
     where 
(root = '2.16.840.1.113883.2.9.4.3.2')     then
     {

            id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "2"
    ;

          entity.id     as 
    id
     where 
(root != '2.16.840.1.113883.2.9.4.3.2')     then
     {

            id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "diverso"
    ;

          entity.addr    
 ->     
practitioner.address    ;

          entity.telecom    
 ->     
practitioner.telecom    ;

          entity.assignedPerson     as 
    person
     then
     {

            person.name    
 ->     
practitioner.name    ;

            person.birthTime     as 
    birthTime
     then
     {

              birthTime.value     as 
    date
    
 ->     
practitioner.birthDate =     truncate
    (
    date
    , 
    10
    )
    ;

                }
     "birth"
    ;

              }
     "name"
    ;

          entity.representedOrganization     as 
    representedOrganization
    
 ->     
 bundle.entry     as 
    e3
    , 
 e3.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e3.resource =     create
    (
    'Organization'
    )
     as 
    organization
     then
     {

            representedOrganization    
 ->     
organization.meta     as 
    meta
     then
     {

              representedOrganization    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

                representedOrganization    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

                representedOrganization    
 ->     
coding.code =     'ClinicalDocument/body/observation/performer/representedOrganization'
     "code"
    ;

                  }
     "coding"
    ;

                }
     "meta"
    ;

            representedOrganization.id     as 
    id
    
 ->     
organization.identifier     as 
    identifier
     then
     {

              id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

              id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

                representedOrganization    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                  }
     "ext"
    ;

              id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

              id.root     as 
    r
     then
     {

                id.extension     as 
    ext
    
 ->     
 organization.id =     (
r + '-' + ext    )
     as 
    uuid3
    , 
 e3.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid3
    )
    , 
 practitionerRole.organization =     create
    (
    'Reference'
    )
     as 
    referenceOrg
    , 
 referenceOrg.reference =     append
    (
    'https://example/Organization/'
    , 
    uuid3
    )
     "aut"
    ;

                  }
     "r"
    ;

                }
     "identifier"
    ;

            representedOrganization.name     as 
    v
    
 ->     
organization.name =     (
v.other    )
    ;

            representedOrganization.telecom    
 ->     
organization.telecom    ;

            representedOrganization.addr    
 ->     
organization.address    ;

            representedOrganization.asOrganizationPartOf     as 
    OrgPartOf
    
 ->     
 bundle.entry     as 
    e4
    , 
 e4.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 e4.resource =     create
    (
    'Organization'
    )
     as 
    organization1
    , 
 request.method =     'PUT'
     then
     {

              OrgPartOf    
 ->     
organization1.meta     as 
    meta
     then
     {

                OrgPartOf    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

                  OrgPartOf    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

                  OrgPartOf    
 ->     
coding.code =     'ClinicalDocument/body/observation/performer/representedOrganization/asOrganizationPartOf'
     "code"
    ;

                    }
     "coding"
    ;

                  }
     "meta"
    ;

              OrgPartOf.id     as 
    id
    
 ->     
organization1.identifier     as 
    identifier
     then
     {

                id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

                id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

                  OrgPartOf    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                    }
     "ext"
    ;

                id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

                id.root     as 
    r
     then
     {

                  id.extension     as 
    ext
    
 ->     
 organization1.id =     (
r + '-' + ext    )
     as 
    uuid4
    , 
 e4.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid4
    )
    , 
 organization.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization1.id    )
     "org"
    ;

                    }
     "r"
    ;

                  }
     "identifier"
    ;

              OrgPartOf.code    
 ->     
organization1.type    ;

              OrgPartOf.statusCode     as 
    status
     where 
(value = 'active')    
 ->     
 organization1.active =     create
    (
    'boolean'
    )
    , 
 organization1.active =     'true'
    ;

              OrgPartOf.wholeOrganization     as 
    wholeOrgan
    
 ->     
 bundle.entry     as 
    e5
    , 
 e5.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e5.resource =     create
    (
    'Organization'
    )
     as 
    organization2
     then
     {

                wholeOrgan    
 ->     
organization2.meta     as 
    meta
     then
     {

                  wholeOrgan    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

                    wholeOrgan    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

                    wholeOrgan    
 ->     
coding.code =     'ClinicalDocument/body/observation/performer/representedOrganization/wholeOrganization'
     "code"
    ;

                      }
     "coding"
    ;

                    }
     "meta"
    ;

                wholeOrgan.id     as 
    id
    
 ->     
organization2.identifier     as 
    identifier
     then
     {

                  id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

                  id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

                    wholeOrgan    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                      }
     "ext"
    ;

                  id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

                  id.root     as 
    r
     then
     {

                    id.extension     as 
    ext
    
 ->     
 organization2.id =     (
r + '-' + ext    )
     as 
    uuid5
    , 
 e5.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid5
    )
    , 
 organization1.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization2.id    )
     "org"
    ;

                      }
     "r"
    ;

                    }
     "identifier"
    ;

                wholeOrgan.name     as 
    v
    
 ->     
organization2.name =     (
v.other    )
    ;

                wholeOrgan.telecom    
 ->     
organization2.telecom    ;

                wholeOrgan.addr    
 ->     
organization2.address    ;

                  }
    ;

                }
     "OrgPartOf"
    ;

              }
    ;
     // 
    organization

            }
     "practitioner"
    ;

          }
     "entity"
    ;

        }
     "practitionerRole"
    ;

      }
    ;
     // 
    performer

  obs.author     as 
    srcAuthor
    
 ->     
 bundle.entry     as 
    e6
    , 
 e6.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e6.resource =     create
    (
    'PractitionerRole'
    )
     as 
    practitionerRole
    , 
 practitionerRole.id =     uuid
    (
    )
     as 
    uuid6
    , 
 e6.fullUrl =     append
    (
    'https://example/PractitionerRole/'
    , 
    uuid6
    )
    , 
 request.url =     'PractitionerRole'
    , 
 ob.performer =     create
    (
    'Reference'
    )
     as 
    referenceaut
    , 
 referenceaut.reference =     (
'https://example/PractitionerRole/' + %practitionerRole.id    )
     then
     {

    srcAuthor.assignedAuthor     as 
    assignedAuthor
     then
     {

      assignedAuthor.code     as 
    codice
    
 ->     
practitionerRole.code     as 
    code2
     then 
CECodeableConcept    (
    codice
    , 
    code2
    )
    ;

      assignedAuthor    
 ->     
 bundle.entry     as 
    e7
    , 
 e7.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e7.resource =     create
    (
    'Practitioner'
    )
     as 
    practitioner
    , 
 practitioner.id =     uuid
    (
    )
     as 
    uuid7
     then
     {

        srcAuthor.functionCode    
 ->     
practitionerRole.code    ;

        assignedAuthor    
 ->     
practitioner.meta     as 
    meta
     then
     {

          assignedAuthor    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

            assignedAuthor    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

            assignedAuthor    
 ->     
coding.code =     'ClinicalDocument/body/observation/author'
     "code"
    ;

              }
     "coding"
    ;

            }
     "meta"
    ;

        assignedAuthor.id     as 
    id
    
 ->     
practitioner.identifier     as 
    identifier
     then
     {

          id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

          id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

            assignedAuthor    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "ext"
    ;

          id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

          id.root     as 
    r
     then
     {

            id.extension     as 
    ext
    
 ->     
 practitioner.id =     (
r + '-' + ext    )
     as 
    uuid2
    , 
 e7.fullUrl =     append
    (
    'https://example/Practitioner/'
    , 
    uuid2
    )
    , 
 practitionerRole.practitioner =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Practitioner/' + %practitioner.id    )
     "aut"
    ;

              }
     "r"
    ;

          assignedAuthor.id     as 
    id
     where 
(root = '2.16.840.1.113883.2.9.4.3.2')     then
     {

            id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "2"
    ;

          assignedAuthor.id     as 
    id
     where 
(root != '2.16.840.1.113883.2.9.4.3.2')     then
     {

            id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "diverso"
    ;

            }
     "identifier"
    ;

        assignedAuthor.addr    
 ->     
practitioner.address    ;

        assignedAuthor.telecom    
 ->     
practitioner.telecom    ;

        assignedAuthor.assignedPerson     as 
    person
     then
     {

          person.name    
 ->     
practitioner.name    ;

          person.birthTime     as 
    birthTime
     then
     {

            birthTime.value     as 
    date
    
 ->     
practitioner.birthDate =     truncate
    (
    date
    , 
    10
    )
    ;

              }
     "birth"
    ;

            }
     "name"
    ;
     // 
    person

          }
     "ASSAUth"
    ;

      assignedAuthor.representedOrganization     as 
    representedOrganization
    
 ->     
 bundle.entry     as 
    e8
    , 
 e8.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e8.resource =     create
    (
    'Organization'
    )
     as 
    organization
     then
     {

        representedOrganization    
 ->     
organization.meta     as 
    meta
     then
     {

          representedOrganization    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

            representedOrganization    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

            representedOrganization    
 ->     
coding.code =     'ClinicalDocument/body/observation/author/representedOrganization'
     "code"
    ;

              }
     "coding"
    ;

            }
     "meta"
    ;

        representedOrganization.id     as 
    id
    
 ->     
organization.identifier     as 
    identifier
     then
     {

          id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

          id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

            representedOrganization    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "ext"
    ;

          id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

          id.root     as 
    r
     then
     {

            id.extension     as 
    ext
    
 ->     
 organization.id =     (
r + '-' + ext    )
     as 
    uuid3
    , 
 e8.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid3
    )
    , 
 practitionerRole.organization =     create
    (
    'Reference'
    )
     as 
    referenceOrg
    , 
 referenceOrg.reference =     append
    (
    'https://example/Organization/'
    , 
    uuid3
    )
     "org"
    ;

              }
     "r"
    ;

            }
     "identifier"
    ;

        representedOrganization.name     as 
    v
    
 ->     
organization.name =     (
v.other    )
    ;

        representedOrganization.telecom    
 ->     
organization.telecom    ;

        representedOrganization.addr    
 ->     
organization.address    ;

        representedOrganization.asOrganizationPartOf     as 
    OrgPartOf
    
 ->     
 bundle.entry     as 
    e9
    , 
 e9.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e9.resource =     create
    (
    'Organization'
    )
     as 
    organization1
     then
     {

          OrgPartOf    
 ->     
organization1.meta     as 
    meta
     then
     {

            OrgPartOf    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

              OrgPartOf    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

              OrgPartOf    
 ->     
coding.code =     'ClinicalDocument/body/observation/author/representedOrganization/asOrganizationPartOf'
     "code"
    ;

                }
     "coding"
    ;

              }
     "meta"
    ;

          OrgPartOf.id     as 
    id
    
 ->     
organization1.identifier     as 
    identifier
     then
     {

            id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

            id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

              OrgPartOf    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                }
     "ext"
    ;

            id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

            id.root     as 
    r
     then
     {

              id.extension     as 
    ext
    
 ->     
 organization1.id =     (
r + '-' + ext    )
     as 
    uuid4
    , 
 e9.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid4
    )
    , 
 organization.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization1.id    )
     "org"
    ;

                }
     "r"
    ;

              }
     "identifier"
    ;

          OrgPartOf.code    
 ->     
organization1.type    ;

          OrgPartOf.statusCode     as 
    status
     where 
(value = 'active')    
 ->     
 organization1.active =     create
    (
    'boolean'
    )
    , 
 organization1.active =     'true'
    ;

          OrgPartOf.wholeOrganization     as 
    wholeOrgan
    
 ->     
 bundle.entry     as 
    e10
    , 
 e10.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e10.resource =     create
    (
    'Organization'
    )
     as 
    organization2
     then
     {

            wholeOrgan    
 ->     
organization2.meta     as 
    meta
     then
     {

              wholeOrgan    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

                wholeOrgan    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

                wholeOrgan    
 ->     
coding.code =     'ClinicalDocument/body/observation/author/representedOrganization/asOrganizationPartOf/wholeOrganization'
     "code"
    ;

                  }
     "coding"
    ;

                }
     "meta"
    ;

            wholeOrgan.id     as 
    id
    
 ->     
organization2.identifier     as 
    identifier
     then
     {

              id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

              id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

                wholeOrgan    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                  }
     "ext"
    ;

              id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

              id.root     as 
    r
     then
     {

                id.extension     as 
    ext
    
 ->     
 organization2.id =     (
r + '-' + ext    )
     as 
    uuid4
    , 
 e10.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid4
    )
    , 
 organization1.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization2.id    )
     "org"
    ;

                  }
     "r"
    ;

                }
     "identifier"
    ;

            wholeOrgan.name     as 
    v
    
 ->     
organization2.name =     (
v.other    )
    ;

            wholeOrgan.telecom    
 ->     
organization2.telecom    ;

            wholeOrgan.addr    
 ->     
organization2.address    ;

              }
    ;

            }
     "OrgPartOf"
    ;

          }
    ;
     // 
    organization

      assignedAuthor.assignedAuthoringDevice     as 
    assignedAuthoringDevice
    
 ->     
 bundle.entry     as 
    e11
    , 
 e11.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e11.resource =     create
    (
    'Device'
    )
     as 
    device
    , 
 device.id =     uuid
    (
    )
     as 
    uuid11
    , 
 e11.fullUrl =     append
    (
    'https://example/Device/'
    , 
    uuid11
    )
    , 
 request.url =     'Device'
    , 
 tgt.author =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Device/' + %device.id    )
     then
     {

        assignedAuthoringDevice.templateId    
 ->     
device.identifier    ;

        assignedAuthoringDevice.code    
 ->     
device.type    ;

        assignedAuthoringDevice.manufacturerModelName     as 
    manufacturerModelName
     then
     {

          manufacturerModelName     as 
    m
    
 ->     
device.manufacturer =     (
m.displayName    )
     "displayRule"
    ;

            }
     "manufacturer"
    ;

        assignedAuthoringDevice.softwareName     as 
    softwareName
    
 ->     
device.deviceName     as 
    deviceName
     then
     {

          softwareName    
 ->     
deviceName.type =     'other'
     "typeName"
    ;

          softwareName     as 
    s
    
 ->     
deviceName.name =     (
s.displayName    )
     "name"
    ;

            }
     "deviceName"
    ;

          }
     "Device"
    ;
     // 
    device

        }
    ;

      }
    ;
     // 
    author

  obs.participant     as 
    participant
     where 
(typeCode != 'DEV')    
 ->     
 ob.encounter =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Encounter/' + %encounter.id    )
     then
     {

    participant    
 ->     
encounter.participant     as 
    FhirParticipant
     then
     {

      participant     as 
    p
    
 ->     
FhirParticipant.type     as 
    type
     then
     {

        p    
 ->     
type.coding     as 
    coding
     then
     {

          p    
 ->     
coding.code =     (
p.typeCode    )
     "codice"
    ;

          p    
 ->     
coding.system =     'http://terminology.hl7.org/CodeSystem/v3-ParticipationType'
     "system"
    ;

            }
     "codeType"
    ;

          }
     "type"
    ;

        }
     "fhirParticipant"
    ;

    participant.participantRole     as 
    participantRole
    
 ->     
 bundle.entry     as 
    e12
    , 
 e12.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e12.resource =     create
    (
    'PractitionerRole'
    )
     as 
    practitionerRole
    , 
 practitionerRole.id =     uuid
    (
    )
     as 
    uuid12
    , 
 e12.fullUrl =     append
    (
    'https://example/PractitionerRole/'
    , 
    uuid12
    )
    , 
 request.url =     'PractitionerRole'
    , 
 encounter.participant =     create
    (
    'BackboneElement'
    )
     as 
    participant1
    , 
 participant1.individual =     create
    (
    'Reference'
    )
     as 
    referencepart
    , 
 referencepart.reference =     (
'https://example/Practitioner/' + %practitionerRole.id    )
     then
     {

      participant.time     as 
    time1
    
 ->     
participant1.period =     create
    (
    'Period'
    )
     as 
    period
     then
     {

        time1    
 ->     
period.start =     create
    (
    'dateTime'
    )
     as 
    start
     then 
TSDateTime    (
    time1
    , 
    start
    )
     "val"
    ;

          }
    ;
     // 
    participant.time -> participant1.period;

      participant.time     as 
    time1
    
 ->     
participant1.period =     create
    (
    'Period'
    )
     as 
    period
     then 
IVLTSPeriod    (
    time1
    , 
    period
    )
    ;

      participant.functionCode    
 ->     
practitionerRole.code    ;

      participantRole    
 ->     
 bundle.entry     as 
    e13
    , 
 e13.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e13.resource =     create
    (
    'Practitioner'
    )
     as 
    practitioner
     then
     {

        participantRole    
 ->     
practitioner.meta     as 
    meta
     then
     {

          participantRole    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

            participantRole    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

            participantRole    
 ->     
coding.code =     'ClinicalDocument/body/observation/participant'
     "code"
    ;

              }
     "coding"
    ;

            }
     "meta"
    ;

        participantRole.id     as 
    id
    
 ->     
practitioner.identifier     as 
    identifier
     then
     {

          id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

          id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

            participantRole    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "ext"
    ;

          id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

          id.root     as 
    r
     then
     {

            id.extension     as 
    ext
    
 ->     
 practitioner.id =     (
r + '-' + ext    )
     as 
    uuid4
    , 
 e13.fullUrl =     append
    (
    'https://example/Practitioner/'
    , 
    uuid4
    )
    , 
 practitionerRole.practitioner =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Practitioner/' + %practitioner.id    )
     "org"
    ;

              }
     "r"
    ;

            }
     "identifier"
    ;

        participantRole.code    
 ->     
practitionerRole.code    ;

        participantRole.addr    
 ->     
practitioner.address    ;

        participantRole.telecom    
 ->     
practitioner.telecom    ;

        participantRole.playingEntity     as 
    playingEntity
     then
     {

          playingEntity.name    
 ->     
practitioner.name    ;

          playingEntity.birthTime     as 
    birthTime
     then
     {

            birthTime.value     as 
    date
    
 ->     
practitioner.birthDate =     truncate
    (
    date
    , 
    10
    )
    ;

              }
     "birth"
    ;

            }
     "name"
    ;

          }
     "practitioner"
    ;
     // 
    non mappa i 2 precedenti

        }
     "partRole"
    ;

      }
     "participantEncounter"
    ;
     // 
    participant person

  obs.participant     as 
    devParticipant
     where 
(typeCode = 'DEV')    
 ->     
 bundle.entry     as 
    e14
    , 
 e14.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e14.resource =     create
    (
    'Device'
    )
     as 
    device
    , 
 device.id =     uuid
    (
    )
     as 
    uuid14
    , 
 e14.fullUrl =     append
    (
    'https://example/Device/'
    , 
    uuid14
    )
    , 
 request.url =     'Device'
    , 
 ob.device =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Device/' + %device.id    )
     then
     {

    devParticipant.participantRole     as 
    participantRoleDev
     then
     {

      participantRoleDev.playingDevice     as 
    playingDevice
     then
     {

        playingDevice.code    
 ->     
device.type    ;

        playingDevice.manufacturerModelName     as 
    manufacturerModelName
     then
     {

          manufacturerModelName     as 
    m
    
 ->     
device.manufacturer =     (
m.displayName    )
     "displayRule"
    ;

            }
     "manufacturer"
    ;

        playingDevice.softwareName     as 
    softwareName
    
 ->     
device.deviceName     as 
    deviceName
     then
     {

          softwareName    
 ->     
deviceName.type =     'other'
     "typeName"
    ;

          softwareName     as 
    s
    
 ->     
deviceName.name =     (
s.displayName    )
     "name"
    ;

            }
     "deviceName"
    ;

          }
    ;

        }
     "participantRoleDev"
    ;

      }
     "devParticipant"
    ;
     // 
    participant device

  obs.entryRelationship     as 
    er
     then
     {

    er.observationMedia     as 
    obsMedia
    
 ->     
 bundle.entry     as 
    e15
    , 
 e15.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e15.resource =     create
    (
    'Media'
    )
     as 
    media1
    , 
 media1.id =     uuid
    (
    )
     as 
    uuid15
    , 
 e15.fullUrl =     append
    (
    'https://example/Media/'
    , 
    uuid15
    )
    , 
 request.url =     'Media'
    , 
 ob.derivedFrom =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Media/' + %media1.id    )
     then
     {

      obsMedia    
 ->     
media1.content =     create
    (
    'Attachment'
    )
     as 
    Attachment
     then
     {

        obsMedia    
 ->     
media1.status =     'unknown'
     "status"
    ;

        obsMedia.value     as 
    valueMedia
     then
     {

          valueMedia.mediaType     as 
    type
    
 ->     
Attachment.contentType =     type
     "type"
    ;

          valueMedia    
 ->     
Attachment.data =     (
valueMedia.dataBase64Binary    )
     "data"
    ;

            }
     "valuemedia"
    ;

          }
     "Attachment"
    ;

        }
     "media"
    ;

      }
     "observationMedia"
    ;
     // 
    observationMedia

  obs.referenceRange     as 
    refRange
    
 ->     
ob.referenceRange =     create
    (
    'BackboneElement'
    )
     as 
    ref
     then
     {

    refRange.observationRange     as 
    obsRange
     then
     {

      obsRange.value     : 
ST     as 
    value
    
 ->     
 ref.text =     create
    (
    'string'
    )
    , 
 ref.text =     (
value.dataString    )
    ;

      obsRange    
 ->     
ref.low =     create
    (
    'Quantity'
    )
     as 
    Low
     then
     {

        obsRange.value     : 
IVL_PQ     as 
    v
     then
     {

          v.low     as 
    l1
     then
     {

            l1.value     as 
    decValue
    
 ->     
Low.value =     decValue
    ;

            l1.unit     as 
    Unit
    
 ->     
Low.unit =     Unit
    ;

              }
     "decValue"
    ;

          v    
 ->     
ref.high =     create
    (
    'Quantity'
    )
     as 
    high
     then
     {

            v.high     as 
    h1
     then
     {

              h1.value     as 
    decValue1
    
 ->     
high.value =     decValue1
    ;

              h1.unit     as 
    Unit1
    
 ->     
high.unit =     Unit1
    ;

                }
     "decValue"
    ;

              }
     "high"
    ;

            }
     "IVL-PQ"
    ;

        obsRange.interpretationCode    
 ->     
ref.type    ;

        obsRange.precondition     as 
    precondition
     then
     {

          precondition.criterion     as 
    criterion
     then
     {

            criterion.code    
 ->     
ref.appliesTo     "appliesTo"
    ;

            criterion.value     : 
IVL_PQ     as 
    v
     then
     {

              v.high     as 
    l1
     then
     {

                l1    
 ->     
ref.age =     create
    (
    'Quantity'
    )
     as 
    age
     then
     {

                  l1    
 ->     
age.high     as 
    high
     then
     {

                    l1.value     as 
    decValue
    
 ->     
high.value =     decValue
    ;

                    l1.unit     as 
    Unit1
    
 ->     
high.unit =     Unit1
    ;

                      }
     "high"
    ;

                    }
     "age"
    ;

                  }
     "low"
    ;

                }
     "v"
    ;

              }
    ;

            }
    ;

          }
     "obsRange"
    ;

        }
     "refRange"
    ;

      }
     "ref"
    ;
     // 
    referenceRange

    }


    group 
Observation2    (
    source
     obs
     : 
Observation,     target
     patient
     : 
Patient,     target
     encounter
     : 
Encounter,     target
     ob
     : 
Observation,     target
     bundle
     : 
Bundle,     source
     cda
     : 
Act,     target
     specimenp
     : 
Specimen    )
     {

  obs    
 ->     
 ob.subject =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Patient/' + %patient.id    )
     "reference"
    ;

  obs    
 ->     
 ob.encounter =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Encounter/' + %encounter.id    )
     "reference"
    ;

  obs.code    
 ->     
ob.code    ;

  obs.statusCode     as 
    statusc
     where 
(code = 'completed')    
 ->     
ob.status =     'final'
    ;

  obs.statusCode     as 
    statusc
     where 
(code = 'active')    
 ->     
ob.status =     'registered'
    ;

  obs.statusCode     as 
    statusc
     where 
(code = 'aborted')    
 ->     
ob.status =     'cancelled'
    ;

  obs.statusCode     as 
    statusc
     where 
(code = 'suspended')    
 ->     
ob.status =     'partial'
    ;

  obs.effectiveTime     as 
    effectiveTime
    
 ->     
ob.effective =     create
    (
    'dateTime'
    )
     as 
    value
     then 
TSDateTime    (
    effectiveTime
    , 
    value
    )
     "value2"
    ;

  obs     where 
effectiveTime.low.exists() or effectiveTime.high.exists()     then
     {

    obs.effectiveTime     as 
    eff
    
 ->     
ob.effective =     create
    (
    'Period'
    )
     as 
    period
     then 
IVLTSPeriod    (
    eff
    , 
    period
    )
    ;

      }
     "where"
    ;

  obs.interpretationCode    
 ->     
ob.interpretation    ;

  obs.methodCode    
 ->     
ob.method    ;

  obs.value     : 
INT     as 
    int
    
 ->     
ob.value =     (
int.value    )
    ;

  obs.value     : 
BL     as 
    boolean
    
 ->     
ob.value =     (
boolean.value    )
     "boolean"
    ;

  obs.value     : 
CE     as 
    val
     then
     {

    val    
 ->     
ob.value =     create
    (
    'CodeableConcept'
    )
     as 
    ce
     then
     {

      val.originalText     as 
    originalText
     then
     {

        originalText.reference     as 
    reference
    
 ->     
ce.text =     reference
    ;

          }
     "originltext"
    ;

      val    
 ->     
ce.coding     as 
    coding
     then
     {

        val.code     as 
    code
    
 ->     
coding.code =     cast
    (
    code
    , 
    'string'
    )
    ;

        val.codeSystem     as 
    system
    
 ->     
coding.system =     translate
    (
    system
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
    ;

        val.displayName     as 
    display
    
 ->     
coding.display =     cast
    (
    display
    , 
    'string'
    )
    ;

        val.codeSystemVersion     as 
    version
    
 ->     
coding.version =     cast
    (
    version
    , 
    'string'
    )
    ;

          }
     "code"
    ;

      val.translation     as 
    translation
    
 ->     
ce.coding     as 
    coding
     then
     {

        translation.code     as 
    code
    
 ->     
coding.code =     cast
    (
    code
    , 
    'string'
    )
    ;

        translation.codeSystem     as 
    system
    
 ->     
coding.system =     translate
    (
    system
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
    ;

        translation.displayName     as 
    display
    
 ->     
coding.display =     cast
    (
    display
    , 
    'string'
    )
    ;

        translation.codeSystemVersion     as 
    version
    
 ->     
coding.version =     cast
    (
    version
    , 
    'string'
    )
    ;

        translation.qualifier     as 
    qualifier
     then
     {

          qualifier.value     as 
    value
    
 ->     
ce.coding     as 
    coding
     then
     {

            value.code     as 
    code
    
 ->     
coding.code =     cast
    (
    code
    , 
    'string'
    )
    ;

            value.codeSystem     as 
    system
    
 ->     
coding.system =     translate
    (
    system
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
    ;

            value.displayName     as 
    display
    
 ->     
coding.display =     cast
    (
    display
    , 
    'string'
    )
    ;

            value.codeSystemVersion     as 
    version
    
 ->     
coding.version =     cast
    (
    version
    , 
    'string'
    )
    ;

              }
    ;

            }
    ;

          }
    ;

        }
     "coding"
    ;

      }
     "val"
    ;

  obs.value     : 
PQ     as 
    val
     then
     {

    val    
 ->     
ob.value =     create
    (
    'Quantity'
    )
     as 
    quantity
     then
     {

      val.value     as 
    value
    
 ->     
quantity.value =     value
    ;

      val.unit     as 
    unit
    
 ->     
quantity.unit =     unit
    ;

        }
     "quantity"
    ;

      }
     "valueQuantity"
    ;

  obs.value     : 
ST     as 
    value
    
 ->     
 ob.value =     create
    (
    'string'
    )
    , 
 ob.value =     (
value.dataString    )
    ;

  obs.entryRelationship     as 
    entryRelationship
     then
     {

    entryRelationship.act     as 
    act
     then
     {

      act.text     as 
    text
     then
     {

        text.reference     as 
    reference
    
 ->     
ob.note     as 
    note
     then
     {

          reference    
 ->     
note.text =     (
reference.value    )
     "reference"
    ;

            }
    ;

          }
    ;

        }
     "Act"
    ;

      }
    ;
     // 
    Note e commenti

  obs.subject     as 
    sbj
     then
     {

    sbj.relatedSubject     as 
    relatedSubj
    
 ->     
patient.extension     as 
    extension2
     then 
ExtSubjectAnimal    (
    relatedSubj
    , 
    extension2
    )
    ;

      }
    ;
     // 
    subject

  cda     where 
cda.entryRelationship.act.exists()     then
     {

    obs.specimen     as 
    spmn
     then
     {

      spmn.specimenRole     as 
    specimenRole
     then
     {

        specimenRole.id     as 
    id
     then
     {

          id.extension     as 
    extobs
     then
     {

            cda.entryRelationship     as 
    entryRelationship
     then
     {

              entryRelationship.act     as 
    a
     then
     {

                a.specimen     as 
    sp
     then
     {

                  sp.specimenRole     as 
    spr
     then
     {

                    spr.id     where 
(extension = extobs)    
 ->     
 bundle.entry     as 
    e4o
    , 
 e4o.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e4o.resource =     create
    (
    'Specimen'
    )
     as 
    specimen
    , 
 specimen.id =     uuid
    (
    )
     as 
    uuid4o
    , 
 e4o.fullUrl =     append
    (
    'https://example/Specimen/'
    , 
    uuid4o
    )
    , 
 request.url =     'Specimen'
    , 
 ob.specimen =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Specimen/' + %specimen.id    )
     then
     {

                      spr    
 ->     
 specimen.parent =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Specimen/' + %specimenp.id    )
     "reference"
    ;

                      spr.id    
 ->     
specimen.identifier    ;

                      specimenRole.specimenPlayingEntity     as 
    spent
     then
     {

                        spent.code    
 ->     
specimen.type    ;

                          }
     "ent"
    ;

                      spr.specimenPlayingEntity     as 
    specimenPlayingEntity
     then
     {

                        specimenPlayingEntity.code    
 ->     
specimen.type    ;

                          }
    ;

                      a    
 ->     
specimen.collection =     create
    (
    'BackboneElement'
    )
     as 
    collection
     then
     {

                        a.effectiveTime     as 
    effectivetime
    
 ->     
collection.collected =     create
    (
    'dateTime'
    )
     as 
    value
     then 
TSDateTime    (
    effectivetime
    , 
    value
    )
     "value"
    ;

                        a     where 
effectiveTime.low.exists() or effectiveTime.high.exists()     then
     {

                          a.effectiveTime     as 
    eff
    
 ->     
collection.collected =     create
    (
    'Period'
    )
     as 
    period
     then 
IVLTSPeriod    (
    eff
    , 
    period
    )
    ;

                            }
     "where"
    ;

                        a.participant     as 
    participant
    
 ->     
 bundle.entry     as 
    e10
    , 
 e10.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e10.resource =     create
    (
    'Practitioner'
    )
     as 
    practitioner
    , 
 practitioner.id =     uuid
    (
    )
     as 
    uuid11
    , 
 e10.fullUrl =     append
    (
    'https://example/Practitioner/'
    , 
    uuid11
    )
    , 
 collection.collector =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Practitioner/' + %practitioner.id    )
     then
     {

                          participant.participantRole     as 
    participantRole
     then
     {

                            participantRole    
 ->     
practitioner.meta     as 
    meta
     then
     {

                              participantRole    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

                                participantRole    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

                                participantRole    
 ->     
coding.code =     'ClinicalDocument/body/act/participant'
     "code"
    ;

                                  }
     "coding"
    ;

                                }
     "meta"
    ;

                            participantRole.id     as 
    id
    
 ->     
practitioner.identifier     as 
    identifier
     then
     {

                              id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

                              id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

                                participantRole    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

                                  }
     "ext"
    ;

                              id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

                                }
     "identifier"
    ;

                            participantRole.addr    
 ->     
practitioner.address    ;

                            participantRole.playingEntity     as 
    playingEntity
     then
     {

                              playingEntity.name    
 ->     
practitioner.name    ;

                                }
    ;

                              }
    ;

                            }
    ;

                          }
     "collection"
    ;

                        }
     "cont"
    ;

                      }
     "spr"
    ;

                    }
     "sp"
    ;

                  }
     "a"
    ;

                }
     "en"
    ;

              }
     "extobs"
    ;

            }
    ;

          }
    ;

        }
    ;
     // 
    specimen

      }
     "conditionactexists"
    ;

  cda     where 
cda.entryRelationship.act.exists().not() and (obs.specimen.specimenRole.specimenPlayingEntity.code.code != specimenp.type.coding.code)     then
     {

    obs.specimen     as 
    spmn
    
 ->     
 bundle.entry     as 
    e4o
    , 
 e4o.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e4o.resource =     create
    (
    'Specimen'
    )
     as 
    specimen
    , 
 specimen.id =     uuid
    (
    )
     as 
    uuid4o
    , 
 e4o.fullUrl =     append
    (
    'https://example/Specimen/'
    , 
    uuid4o
    )
    , 
 request.url =     'Specimen'
    , 
 ob.specimen =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Specimen/' + %specimen.id    )
     then
     {

      spmn.specimenRole     as 
    specimenRole
     then
     {

        specimenRole.id    
 ->     
specimen.identifier    ;

        specimenRole.specimenPlayingEntity     as 
    specimenPlayingEntity
     then
     {

          specimenPlayingEntity.code    
 ->     
specimen.type    ;

            }
    ;

          }
    ;

        }
    ;

      }
     "wherenotexists"
    ;

  obs.performer     as 
    performer
    
 ->     
 bundle.entry     as 
    e1
    , 
 e1.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e1.resource =     create
    (
    'PractitionerRole'
    )
     as 
    practitionerRole
    , 
 practitionerRole.id =     uuid
    (
    )
     as 
    uuid1
    , 
 e1.fullUrl =     append
    (
    'https://example/PractitionerRole/'
    , 
    uuid1
    )
    , 
 request.url =     'PractitionerRole'
     then
     {

    performer    
 ->     
 ob.performer =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/PractitionerRole/' + %practitionerRole.id    )
     then
     {

      performer.assignedEntity     as 
    entity
     then
     {

        entity.code    
 ->     
practitionerRole.code    ;

        entity    
 ->     
 bundle.entry     as 
    e2
    , 
 e2.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e2.resource =     create
    (
    'Practitioner'
    )
     as 
    practitioner
     then
     {

          entity    
 ->     
practitioner.meta     as 
    meta
     then
     {

            entity    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

              entity    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

              entity    
 ->     
coding.code =     'ClinicalDocument/body/observation/performer'
     "code"
    ;

                }
     "coding"
    ;

              }
     "meta"
    ;

          entity.id     as 
    id
    
 ->     
practitioner.identifier     as 
    identifier
     then
     {

            id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

            id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

              entity    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

                }
     "ext"
    ;

            id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

            id.root     as 
    r
     then
     {

              id.extension     as 
    ext
    
 ->     
 practitioner.id =     (
r + '-' + ext    )
     as 
    uuid2
    , 
 e2.fullUrl =     append
    (
    'https://example/Practitioner/'
    , 
    uuid2
    )
    , 
 practitionerRole.practitioner =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Practitioner/' + %practitioner.id    )
     "performer"
    ;

                }
     "r"
    ;

              }
     "identifier"
    ;

          entity.id     as 
    id
     where 
(root = '2.16.840.1.113883.2.9.4.3.2')     then
     {

            id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "2"
    ;

          entity.id     as 
    id
     where 
(root != '2.16.840.1.113883.2.9.4.3.2')     then
     {

            id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "diverso"
    ;

          entity.addr    
 ->     
practitioner.address    ;

          entity.telecom    
 ->     
practitioner.telecom    ;

          entity.assignedPerson     as 
    person
     then
     {

            person.name    
 ->     
practitioner.name    ;

            person.birthTime     as 
    birthTime
     then
     {

              birthTime.value     as 
    date
    
 ->     
practitioner.birthDate =     truncate
    (
    date
    , 
    10
    )
    ;

                }
     "birth"
    ;

              }
     "name"
    ;

          entity.representedOrganization     as 
    representedOrganization
    
 ->     
 bundle.entry     as 
    e3
    , 
 e3.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e3.resource =     create
    (
    'Organization'
    )
     as 
    organization
     then
     {

            representedOrganization    
 ->     
organization.meta     as 
    meta
     then
     {

              representedOrganization    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

                representedOrganization    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

                representedOrganization    
 ->     
coding.code =     'ClinicalDocument/body/observation/performer/representedOrganization'
     "code"
    ;

                  }
     "coding"
    ;

                }
     "meta"
    ;

            representedOrganization.id     as 
    id
    
 ->     
organization.identifier     as 
    identifier
     then
     {

              id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

              id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

                representedOrganization    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                  }
     "ext"
    ;

              id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

              id.root     as 
    r
     then
     {

                id.extension     as 
    ext
    
 ->     
 organization.id =     (
r + '-' + ext    )
     as 
    uuid3
    , 
 e3.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid3
    )
    , 
 practitionerRole.organization =     create
    (
    'Reference'
    )
     as 
    referenceOrg
    , 
 referenceOrg.reference =     append
    (
    'https://example/Organization/'
    , 
    uuid3
    )
     "aut"
    ;

                  }
     "r"
    ;

                }
     "identifier"
    ;

            representedOrganization.name     as 
    v
    
 ->     
organization.name =     (
v.other    )
    ;

            representedOrganization.telecom    
 ->     
organization.telecom    ;

            representedOrganization.addr    
 ->     
organization.address    ;

            representedOrganization.asOrganizationPartOf     as 
    OrgPartOf
    
 ->     
 bundle.entry     as 
    e4
    , 
 e4.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 e4.resource =     create
    (
    'Organization'
    )
     as 
    organization1
    , 
 request.method =     'PUT'
     then
     {

              OrgPartOf    
 ->     
organization1.meta     as 
    meta
     then
     {

                OrgPartOf    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

                  OrgPartOf    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

                  OrgPartOf    
 ->     
coding.code =     'ClinicalDocument/body/observation/performer/representedOrganization/asOrganizationPartOf'
     "code"
    ;

                    }
     "coding"
    ;

                  }
     "meta"
    ;

              OrgPartOf.id     as 
    id
    
 ->     
organization1.identifier     as 
    identifier
     then
     {

                id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

                id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

                  OrgPartOf    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                    }
     "ext"
    ;

                id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

                id.root     as 
    r
     then
     {

                  id.extension     as 
    ext
    
 ->     
 organization1.id =     (
r + '-' + ext    )
     as 
    uuid4
    , 
 e4.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid4
    )
    , 
 organization.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization1.id    )
     "org"
    ;

                    }
     "r"
    ;

                  }
     "identifier"
    ;

              OrgPartOf.code    
 ->     
organization1.type    ;

              OrgPartOf.statusCode     as 
    status
     where 
(value = 'active')    
 ->     
 organization1.active =     create
    (
    'boolean'
    )
    , 
 organization1.active =     'true'
    ;

              OrgPartOf.wholeOrganization     as 
    wholeOrgan
    
 ->     
 bundle.entry     as 
    e5
    , 
 e5.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e5.resource =     create
    (
    'Organization'
    )
     as 
    organization2
     then
     {

                wholeOrgan    
 ->     
organization2.meta     as 
    meta
     then
     {

                  wholeOrgan    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

                    wholeOrgan    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

                    wholeOrgan    
 ->     
coding.code =     'ClinicalDocument/body/observation/performer/representedOrganization/wholeOrganization'
     "code"
    ;

                      }
     "coding"
    ;

                    }
     "meta"
    ;

                wholeOrgan.id     as 
    id
    
 ->     
organization2.identifier     as 
    identifier
     then
     {

                  id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

                  id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

                    wholeOrgan    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                      }
     "ext"
    ;

                  id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

                  id.root     as 
    r
     then
     {

                    id.extension     as 
    ext
    
 ->     
 organization2.id =     (
r + '-' + ext    )
     as 
    uuid5
    , 
 e5.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid5
    )
    , 
 organization1.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization2.id    )
     "org"
    ;

                      }
     "r"
    ;

                    }
     "identifier"
    ;

                wholeOrgan.name     as 
    v
    
 ->     
organization2.name =     (
v.other    )
    ;

                wholeOrgan.telecom    
 ->     
organization2.telecom    ;

                wholeOrgan.addr    
 ->     
organization2.address    ;

                  }
    ;

                }
     "OrgPartOf"
    ;

              }
    ;
     // 
    organization

            }
     "practitioner"
    ;

          }
     "entity"
    ;

        }
     "practitionerRole"
    ;

      }
    ;
     // 
    performer

  obs.author     as 
    srcAuthor
    
 ->     
 bundle.entry     as 
    e6
    , 
 e6.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e6.resource =     create
    (
    'PractitionerRole'
    )
     as 
    practitionerRole
    , 
 practitionerRole.id =     uuid
    (
    )
     as 
    uuid6
    , 
 e6.fullUrl =     append
    (
    'https://example/PractitionerRole/'
    , 
    uuid6
    )
    , 
 request.url =     'PractitionerRole'
    , 
 ob.performer =     create
    (
    'Reference'
    )
     as 
    referenceaut
    , 
 referenceaut.reference =     (
'https://example/PractitionerRole/' + %practitionerRole.id    )
     then
     {

    srcAuthor.assignedAuthor     as 
    assignedAuthor
     then
     {

      assignedAuthor.code     as 
    codice
    
 ->     
practitionerRole.code     as 
    code2
     then 
CECodeableConcept    (
    codice
    , 
    code2
    )
    ;

      assignedAuthor    
 ->     
 bundle.entry     as 
    e7
    , 
 e7.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e7.resource =     create
    (
    'Practitioner'
    )
     as 
    practitioner
    , 
 practitioner.id =     uuid
    (
    )
     as 
    uuid7
     then
     {

        srcAuthor.functionCode    
 ->     
practitionerRole.code    ;

        assignedAuthor    
 ->     
practitioner.meta     as 
    meta
     then
     {

          assignedAuthor    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

            assignedAuthor    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

            assignedAuthor    
 ->     
coding.code =     'ClinicalDocument/body/observation/author'
     "code"
    ;

              }
     "coding"
    ;

            }
     "meta"
    ;

        assignedAuthor.id     as 
    id
    
 ->     
practitioner.identifier     as 
    identifier
     then
     {

          id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

          id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

            assignedAuthor    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "ext"
    ;

          id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

          id.root     as 
    r
     then
     {

            id.extension     as 
    ext
    
 ->     
 practitioner.id =     (
r + '-' + ext    )
     as 
    uuid2
    , 
 e7.fullUrl =     append
    (
    'https://example/Practitioner/'
    , 
    uuid2
    )
    , 
 practitionerRole.practitioner =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Practitioner/' + %practitioner.id    )
     "aut"
    ;

              }
     "r"
    ;

          assignedAuthor.id     as 
    id
     where 
(root = '2.16.840.1.113883.2.9.4.3.2')     then
     {

            id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "2"
    ;

          assignedAuthor.id     as 
    id
     where 
(root != '2.16.840.1.113883.2.9.4.3.2')     then
     {

            id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "diverso"
    ;

            }
     "identifier"
    ;

        assignedAuthor.addr    
 ->     
practitioner.address    ;

        assignedAuthor.telecom    
 ->     
practitioner.telecom    ;

        assignedAuthor.assignedPerson     as 
    person
     then
     {

          person.name    
 ->     
practitioner.name    ;

          person.birthTime     as 
    birthTime
     then
     {

            birthTime.value     as 
    date
    
 ->     
practitioner.birthDate =     truncate
    (
    date
    , 
    10
    )
    ;

              }
     "birth"
    ;

            }
     "name"
    ;
     // 
    person

          }
     "ASSAUth"
    ;

      assignedAuthor.representedOrganization     as 
    representedOrganization
    
 ->     
 bundle.entry     as 
    e8
    , 
 e8.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e8.resource =     create
    (
    'Organization'
    )
     as 
    organization
     then
     {

        representedOrganization    
 ->     
organization.meta     as 
    meta
     then
     {

          representedOrganization    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

            representedOrganization    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

            representedOrganization    
 ->     
coding.code =     'ClinicalDocument/body/observation/author/representedOrganization'
     "code"
    ;

              }
     "coding"
    ;

            }
     "meta"
    ;

        representedOrganization.id     as 
    id
    
 ->     
organization.identifier     as 
    identifier
     then
     {

          id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

          id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

            representedOrganization    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "ext"
    ;

          id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

          id.root     as 
    r
     then
     {

            id.extension     as 
    ext
    
 ->     
 organization.id =     (
r + '-' + ext    )
     as 
    uuid3
    , 
 e8.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid3
    )
    , 
 practitionerRole.organization =     create
    (
    'Reference'
    )
     as 
    referenceOrg
    , 
 referenceOrg.reference =     append
    (
    'https://example/Organization/'
    , 
    uuid3
    )
     "org"
    ;

              }
     "r"
    ;

            }
     "identifier"
    ;

        representedOrganization.name     as 
    v
    
 ->     
organization.name =     (
v.other    )
    ;

        representedOrganization.telecom    
 ->     
organization.telecom    ;

        representedOrganization.addr    
 ->     
organization.address    ;

        representedOrganization.asOrganizationPartOf     as 
    OrgPartOf
    
 ->     
 bundle.entry     as 
    e9
    , 
 e9.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e9.resource =     create
    (
    'Organization'
    )
     as 
    organization1
     then
     {

          OrgPartOf    
 ->     
organization1.meta     as 
    meta
     then
     {

            OrgPartOf    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

              OrgPartOf    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

              OrgPartOf    
 ->     
coding.code =     'ClinicalDocument/body/observation/author/representedOrganization/asOrganizationPartOf'
     "code"
    ;

                }
     "coding"
    ;

              }
     "meta"
    ;

          OrgPartOf.id     as 
    id
    
 ->     
organization1.identifier     as 
    identifier
     then
     {

            id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

            id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

              OrgPartOf    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                }
     "ext"
    ;

            id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

            id.root     as 
    r
     then
     {

              id.extension     as 
    ext
    
 ->     
 organization1.id =     (
r + '-' + ext    )
     as 
    uuid4
    , 
 e9.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid4
    )
    , 
 organization.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization1.id    )
     "org"
    ;

                }
     "r"
    ;

              }
     "identifier"
    ;

          OrgPartOf.code    
 ->     
organization1.type    ;

          OrgPartOf.statusCode     as 
    status
     where 
(value = 'active')    
 ->     
 organization1.active =     create
    (
    'boolean'
    )
    , 
 organization1.active =     'true'
    ;

          OrgPartOf.wholeOrganization     as 
    wholeOrgan
    
 ->     
 bundle.entry     as 
    e10
    , 
 e10.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e10.resource =     create
    (
    'Organization'
    )
     as 
    organization2
     then
     {

            wholeOrgan    
 ->     
organization2.meta     as 
    meta
     then
     {

              wholeOrgan    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

                wholeOrgan    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

                wholeOrgan    
 ->     
coding.code =     'ClinicalDocument/body/observation/author/representedOrganization/asOrganizationPartOf/wholeOrganization'
     "code"
    ;

                  }
     "coding"
    ;

                }
     "meta"
    ;

            wholeOrgan.id     as 
    id
    
 ->     
organization2.identifier     as 
    identifier
     then
     {

              id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

              id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

                wholeOrgan    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                  }
     "ext"
    ;

              id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

              id.root     as 
    r
     then
     {

                id.extension     as 
    ext
    
 ->     
 organization2.id =     (
r + '-' + ext    )
     as 
    uuid4
    , 
 e10.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid4
    )
    , 
 organization1.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization2.id    )
     "org"
    ;

                  }
     "r"
    ;

                }
     "identifier"
    ;

            wholeOrgan.name     as 
    v
    
 ->     
organization2.name =     (
v.other    )
    ;

            wholeOrgan.telecom    
 ->     
organization2.telecom    ;

            wholeOrgan.addr    
 ->     
organization2.address    ;

              }
    ;

            }
     "OrgPartOf"
    ;

          }
    ;
     // 
    organization

      assignedAuthor.assignedAuthoringDevice     as 
    assignedAuthoringDevice
    
 ->     
 bundle.entry     as 
    e11
    , 
 e11.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e11.resource =     create
    (
    'Device'
    )
     as 
    device
    , 
 device.id =     uuid
    (
    )
     as 
    uuid11
    , 
 e11.fullUrl =     append
    (
    'https://example/Device/'
    , 
    uuid11
    )
    , 
 request.url =     'Device'
    , 
 tgt.author =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Device/' + %device.id    )
     then
     {

        assignedAuthoringDevice.templateId    
 ->     
device.identifier    ;

        assignedAuthoringDevice.code    
 ->     
device.type    ;

        assignedAuthoringDevice.manufacturerModelName     as 
    manufacturerModelName
     then
     {

          manufacturerModelName     as 
    m
    
 ->     
device.manufacturer =     (
m.displayName    )
     "displayRule"
    ;

            }
     "manufacturer"
    ;

        assignedAuthoringDevice.softwareName     as 
    softwareName
    
 ->     
device.deviceName     as 
    deviceName
     then
     {

          softwareName    
 ->     
deviceName.type =     'other'
     "typeName"
    ;

          softwareName     as 
    s
    
 ->     
deviceName.name =     (
s.displayName    )
     "name"
    ;

            }
     "deviceName"
    ;

          }
     "Device"
    ;
     // 
    device

        }
    ;

      }
    ;
     // 
    author

  obs.participant     as 
    participant
     where 
(typeCode != 'DEV')    
 ->     
 ob.encounter =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Encounter/' + %encounter.id    )
     then
     {

    participant    
 ->     
encounter.participant     as 
    FhirParticipant
     then
     {

      participant     as 
    p
    
 ->     
FhirParticipant.type     as 
    type
     then
     {

        p    
 ->     
type.coding     as 
    coding
     then
     {

          p    
 ->     
coding.code =     (
p.typeCode    )
     "codice"
    ;

          p    
 ->     
coding.system =     'http://terminology.hl7.org/CodeSystem/v3-ParticipationType'
     "system"
    ;

            }
     "codeType"
    ;

          }
     "type"
    ;

        }
     "fhirParticipant"
    ;

    participant.participantRole     as 
    participantRole
    
 ->     
 bundle.entry     as 
    e12
    , 
 e12.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e12.resource =     create
    (
    'PractitionerRole'
    )
     as 
    practitionerRole
    , 
 practitionerRole.id =     uuid
    (
    )
     as 
    uuid12
    , 
 e12.fullUrl =     append
    (
    'https://example/PractitionerRole/'
    , 
    uuid12
    )
    , 
 request.url =     'PractitionerRole'
    , 
 encounter.participant =     create
    (
    'BackboneElement'
    )
     as 
    participant1
    , 
 participant1.individual =     create
    (
    'Reference'
    )
     as 
    referencepart
    , 
 referencepart.reference =     (
'https://example/Practitioner/' + %practitionerRole.id    )
     then
     {

      participant.time     as 
    time1
    
 ->     
participant1.period =     create
    (
    'Period'
    )
     as 
    period
     then
     {

        time1    
 ->     
period.start =     create
    (
    'dateTime'
    )
     as 
    start
     then 
TSDateTime    (
    time1
    , 
    start
    )
     "val"
    ;

          }
    ;
     // 
    participant.time -> participant1.period;

      participant.time     as 
    time1
    
 ->     
participant1.period =     create
    (
    'Period'
    )
     as 
    period
     then 
IVLTSPeriod    (
    time1
    , 
    period
    )
    ;

      participant.functionCode    
 ->     
practitionerRole.code    ;

      participantRole    
 ->     
 bundle.entry     as 
    e13
    , 
 e13.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e13.resource =     create
    (
    'Practitioner'
    )
     as 
    practitioner
     then
     {

        participantRole    
 ->     
practitioner.meta     as 
    meta
     then
     {

          participantRole    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

            participantRole    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

            participantRole    
 ->     
coding.code =     'ClinicalDocument/body/observation/participant'
     "code"
    ;

              }
     "coding"
    ;

            }
     "meta"
    ;

        participantRole.id     as 
    id
    
 ->     
practitioner.identifier     as 
    identifier
     then
     {

          id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

          id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

            participantRole    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "ext"
    ;

          id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

          id.root     as 
    r
     then
     {

            id.extension     as 
    ext
    
 ->     
 practitioner.id =     (
r + '-' + ext    )
     as 
    uuid4
    , 
 e13.fullUrl =     append
    (
    'https://example/Practitioner/'
    , 
    uuid4
    )
    , 
 practitionerRole.practitioner =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Practitioner/' + %practitioner.id    )
     "org"
    ;

              }
     "r"
    ;

            }
     "identifier"
    ;

        participantRole.code    
 ->     
practitionerRole.code    ;

        participantRole.addr    
 ->     
practitioner.address    ;

        participantRole.telecom    
 ->     
practitioner.telecom    ;

        participantRole.playingEntity     as 
    playingEntity
     then
     {

          playingEntity.name    
 ->     
practitioner.name    ;

          playingEntity.birthTime     as 
    birthTime
     then
     {

            birthTime.value     as 
    date
    
 ->     
practitioner.birthDate =     truncate
    (
    date
    , 
    10
    )
    ;

              }
     "birth"
    ;

            }
     "name"
    ;

          }
     "practitioner"
    ;
     // 
    non mappa i 2 precedenti

        }
     "partRole"
    ;

      }
     "participantEncounter"
    ;
     // 
    participant person

  obs.participant     as 
    devParticipant
     where 
(typeCode = 'DEV')    
 ->     
 bundle.entry     as 
    e14
    , 
 e14.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e14.resource =     create
    (
    'Device'
    )
     as 
    device
    , 
 device.id =     uuid
    (
    )
     as 
    uuid14
    , 
 e14.fullUrl =     append
    (
    'https://example/Device/'
    , 
    uuid14
    )
    , 
 request.url =     'Device'
    , 
 ob.device =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Device/' + %device.id    )
     then
     {

    devParticipant.participantRole     as 
    participantRoleDev
     then
     {

      participantRoleDev.playingDevice     as 
    playingDevice
     then
     {

        playingDevice.code    
 ->     
device.type    ;

        playingDevice.manufacturerModelName     as 
    manufacturerModelName
     then
     {

          manufacturerModelName     as 
    m
    
 ->     
device.manufacturer =     (
m.displayName    )
     "displayRule"
    ;

            }
     "manufacturer"
    ;

        playingDevice.softwareName     as 
    softwareName
    
 ->     
device.deviceName     as 
    deviceName
     then
     {

          softwareName    
 ->     
deviceName.type =     'other'
     "typeName"
    ;

          softwareName     as 
    s
    
 ->     
deviceName.name =     (
s.displayName    )
     "name"
    ;

            }
     "deviceName"
    ;

          }
    ;

        }
     "participantRoleDev"
    ;

      }
     "devParticipant"
    ;
     // 
    participant device

  obs.entryRelationship     as 
    er
     then
     {

    er.observationMedia     as 
    obsMedia
    
 ->     
 bundle.entry     as 
    e15
    , 
 e15.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e15.resource =     create
    (
    'Media'
    )
     as 
    media1
    , 
 media1.id =     uuid
    (
    )
     as 
    uuid15
    , 
 e15.fullUrl =     append
    (
    'https://example/Media/'
    , 
    uuid15
    )
    , 
 request.url =     'Media'
    , 
 ob.derivedFrom =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Media/' + %media1.id    )
     then
     {

      obsMedia    
 ->     
media1.content =     create
    (
    'Attachment'
    )
     as 
    Attachment
     then
     {

        obsMedia    
 ->     
media1.status =     'unknown'
     "status"
    ;

        obsMedia.value     as 
    valueMedia
     then
     {

          valueMedia.mediaType     as 
    type
    
 ->     
Attachment.contentType =     type
     "type"
    ;

          valueMedia    
 ->     
Attachment.data =     (
valueMedia.dataBase64Binary    )
     "data"
    ;

            }
     "valuemedia"
    ;

          }
     "Attachment"
    ;

        }
     "media"
    ;

      }
     "observationMedia"
    ;
     // 
    observationMedia

  obs.referenceRange     as 
    refRange
    
 ->     
ob.referenceRange =     create
    (
    'BackboneElement'
    )
     as 
    ref
     then
     {

    refRange.observationRange     as 
    obsRange
     then
     {

      obsRange.value     : 
ST     as 
    value
    
 ->     
 ref.text =     create
    (
    'string'
    )
    , 
 ref.text =     (
value.dataString    )
    ;

      obsRange    
 ->     
ref.low =     create
    (
    'Quantity'
    )
     as 
    Low
     then
     {

        obsRange.value     : 
IVL_PQ     as 
    v
     then
     {

          v.low     as 
    l1
     then
     {

            l1.value     as 
    decValue
    
 ->     
Low.value =     decValue
    ;

            l1.unit     as 
    Unit
    
 ->     
Low.unit =     Unit
    ;

              }
     "decValue"
    ;

          v    
 ->     
ref.high =     create
    (
    'Quantity'
    )
     as 
    high
     then
     {

            v.high     as 
    h1
     then
     {

              h1.value     as 
    decValue1
    
 ->     
high.value =     decValue1
    ;

              h1.unit     as 
    Unit1
    
 ->     
high.unit =     Unit1
    ;

                }
     "decValue"
    ;

              }
     "high"
    ;

            }
     "IVL-PQ"
    ;

        obsRange.interpretationCode    
 ->     
ref.type    ;

        obsRange.precondition     as 
    precondition
     then
     {

          precondition.criterion     as 
    criterion
     then
     {

            criterion.code    
 ->     
ref.appliesTo     "appliesTo"
    ;

            criterion.value     : 
IVL_PQ     as 
    v
     then
     {

              v.high     as 
    l1
     then
     {

                l1    
 ->     
ref.age =     create
    (
    'Quantity'
    )
     as 
    age
     then
     {

                  l1    
 ->     
age.high     as 
    high
     then
     {

                    l1.value     as 
    decValue
    
 ->     
high.value =     decValue
    ;

                    l1.unit     as 
    Unit1
    
 ->     
high.unit =     Unit1
    ;

                      }
     "high"
    ;

                    }
     "age"
    ;

                  }
     "low"
    ;

                }
     "v"
    ;

              }
    ;

            }
    ;

          }
     "obsRange"
    ;

        }
     "refRange"
    ;

      }
     "ref"
    ;
     // 
    referenceRange

    }


    group 
Observation3    (
    source
     obs
     : 
Observation,     target
     patient
     : 
Patient,     target
     encounter
     : 
Encounter,     target
     ob
     : 
Observation,     target
     bundle
     : 
Bundle,     source
     cda
     : 
Act    )
     {

  obs    
 ->     
 ob.subject =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Patient/' + %patient.id    )
     "reference"
    ;

  obs    
 ->     
 ob.encounter =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Encounter/' + %encounter.id    )
     "reference"
    ;

  obs.code    
 ->     
ob.code    ;

  obs.statusCode     as 
    statusc
     where 
(code = 'completed')    
 ->     
ob.status =     'final'
    ;

  obs.statusCode     as 
    statusc
     where 
(code = 'active')    
 ->     
ob.status =     'registered'
    ;

  obs.statusCode     as 
    statusc
     where 
(code = 'aborted')    
 ->     
ob.status =     'cancelled'
    ;

  obs.statusCode     as 
    statusc
     where 
(code = 'suspended')    
 ->     
ob.status =     'partial'
    ;

  obs.effectiveTime     as 
    effectiveTime
    
 ->     
ob.effective =     create
    (
    'dateTime'
    )
     as 
    value
     then 
TSDateTime    (
    effectiveTime
    , 
    value
    )
     "value2"
    ;

  obs     where 
effectiveTime.low.exists() or effectiveTime.high.exists()     then
     {

    obs.effectiveTime     as 
    eff
    
 ->     
ob.effective =     create
    (
    'Period'
    )
     as 
    period
     then 
IVLTSPeriod    (
    eff
    , 
    period
    )
    ;

      }
     "where"
    ;

  obs.interpretationCode    
 ->     
ob.interpretation    ;

  obs.methodCode    
 ->     
ob.method    ;

  obs.value     : 
INT     as 
    int
    
 ->     
ob.value =     (
int.value    )
    ;

  obs.value     : 
BL     as 
    boolean
    
 ->     
ob.value =     (
boolean.value    )
     "boolean"
    ;

  obs.value     : 
CE     as 
    val
     then
     {

    val    
 ->     
ob.value =     create
    (
    'CodeableConcept'
    )
     as 
    ce
     then
     {

      val.originalText     as 
    originalText
     then
     {

        originalText.reference     as 
    reference
    
 ->     
ce.text =     reference
    ;

          }
     "originltext"
    ;

      val    
 ->     
ce.coding     as 
    coding
     then
     {

        val.code     as 
    code
    
 ->     
coding.code =     cast
    (
    code
    , 
    'string'
    )
    ;

        val.codeSystem     as 
    system
    
 ->     
coding.system =     translate
    (
    system
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
    ;

        val.displayName     as 
    display
    
 ->     
coding.display =     cast
    (
    display
    , 
    'string'
    )
    ;

        val.codeSystemVersion     as 
    version
    
 ->     
coding.version =     cast
    (
    version
    , 
    'string'
    )
    ;

          }
     "code"
    ;

      val.translation     as 
    translation
    
 ->     
ce.coding     as 
    coding
     then
     {

        translation.code     as 
    code
    
 ->     
coding.code =     cast
    (
    code
    , 
    'string'
    )
    ;

        translation.codeSystem     as 
    system
    
 ->     
coding.system =     translate
    (
    system
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
    ;

        translation.displayName     as 
    display
    
 ->     
coding.display =     cast
    (
    display
    , 
    'string'
    )
    ;

        translation.codeSystemVersion     as 
    version
    
 ->     
coding.version =     cast
    (
    version
    , 
    'string'
    )
    ;

        translation.qualifier     as 
    qualifier
     then
     {

          qualifier.value     as 
    value
    
 ->     
ce.coding     as 
    coding
     then
     {

            value.code     as 
    code
    
 ->     
coding.code =     cast
    (
    code
    , 
    'string'
    )
    ;

            value.codeSystem     as 
    system
    
 ->     
coding.system =     translate
    (
    system
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
    ;

            value.displayName     as 
    display
    
 ->     
coding.display =     cast
    (
    display
    , 
    'string'
    )
    ;

            value.codeSystemVersion     as 
    version
    
 ->     
coding.version =     cast
    (
    version
    , 
    'string'
    )
    ;

              }
    ;

            }
    ;

          }
    ;

        }
     "coding"
    ;

      }
     "val"
    ;

  obs.value     : 
PQ     as 
    val
     then
     {

    val    
 ->     
ob.value =     create
    (
    'Quantity'
    )
     as 
    quantity
     then
     {

      val.value     as 
    value
    
 ->     
quantity.value =     value
    ;

      val.unit     as 
    unit
    
 ->     
quantity.unit =     unit
    ;

        }
     "quantity"
    ;

      }
     "valueQuantity"
    ;

  obs.value     : 
ST     as 
    value
    
 ->     
 ob.value =     create
    (
    'string'
    )
    , 
 ob.value =     (
value.dataString    )
    ;

  obs.entryRelationship     as 
    entryRelationship
     then
     {

    entryRelationship.act     as 
    act
     then
     {

      act.text     as 
    text
     then
     {

        text.reference     as 
    reference
    
 ->     
ob.note     as 
    note
     then
     {

          reference    
 ->     
note.text =     (
reference.value    )
     "reference"
    ;

            }
    ;

          }
    ;

        }
     "Act"
    ;

      }
    ;
     // 
    Note e commenti

  obs.subject     as 
    sbj
     then
     {

    sbj.relatedSubject     as 
    relatedSubj
    
 ->     
patient.extension     as 
    extension2
     then 
ExtSubjectAnimal    (
    relatedSubj
    , 
    extension2
    )
    ;

      }
    ;
     // 
    subject

  obs.specimen     as 
    spmn
    
 ->     
 bundle.entry     as 
    e4o
    , 
 e4o.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e4o.resource =     create
    (
    'Specimen'
    )
     as 
    specimen
    , 
 specimen.id =     uuid
    (
    )
     as 
    uuid4o
    , 
 e4o.fullUrl =     append
    (
    'https://example/Specimen/'
    , 
    uuid4o
    )
    , 
 request.url =     'Specimen'
    , 
 ob.specimen =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Specimen/' + %specimen.id    )
     then
     {

    spmn.specimenRole     as 
    specimenRole
     then
     {

      specimenRole.id     as 
    id
    
 ->     
specimen.identifier    ;

      specimenRole.specimenPlayingEntity     as 
    specimenPlayingEntity
     then
     {

        specimenPlayingEntity.code    
 ->     
specimen.type    ;

          }
    ;

        }
    ;

      }
    ;
     // 
    specimen

  obs.performer     as 
    performer
    
 ->     
 bundle.entry     as 
    e1
    , 
 e1.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e1.resource =     create
    (
    'PractitionerRole'
    )
     as 
    practitionerRole
    , 
 practitionerRole.id =     uuid
    (
    )
     as 
    uuid1
    , 
 e1.fullUrl =     append
    (
    'https://example/PractitionerRole/'
    , 
    uuid1
    )
    , 
 request.url =     'PractitionerRole'
     then
     {

    performer    
 ->     
 ob.performer =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/PractitionerRole/' + %practitionerRole.id    )
     then
     {

      performer.assignedEntity     as 
    entity
     then
     {

        entity.code    
 ->     
practitionerRole.code    ;

        entity    
 ->     
 bundle.entry     as 
    e2
    , 
 e2.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e2.resource =     create
    (
    'Practitioner'
    )
     as 
    practitioner
     then
     {

          entity    
 ->     
practitioner.meta     as 
    meta
     then
     {

            entity    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

              entity    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

              entity    
 ->     
coding.code =     'ClinicalDocument/body/observation/performer'
     "code"
    ;

                }
     "coding"
    ;

              }
     "meta"
    ;

          entity.id     as 
    id
    
 ->     
practitioner.identifier     as 
    identifier
     then
     {

            id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

            id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

              entity    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

                }
     "ext"
    ;

            id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

            id.root     as 
    r
     then
     {

              id.extension     as 
    ext
    
 ->     
 practitioner.id =     (
r + '-' + ext    )
     as 
    uuid2
    , 
 e2.fullUrl =     append
    (
    'https://example/Practitioner/'
    , 
    uuid2
    )
    , 
 practitionerRole.practitioner =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Practitioner/' + %practitioner.id    )
     "performer"
    ;

                }
     "r"
    ;

              }
     "identifier"
    ;

          entity.id     as 
    id
     where 
(root = '2.16.840.1.113883.2.9.4.3.2')     then
     {

            id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "2"
    ;

          entity.id     as 
    id
     where 
(root != '2.16.840.1.113883.2.9.4.3.2')     then
     {

            id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "diverso"
    ;

          entity.addr    
 ->     
practitioner.address    ;

          entity.telecom    
 ->     
practitioner.telecom    ;

          entity.assignedPerson     as 
    person
     then
     {

            person.name    
 ->     
practitioner.name    ;

            person.birthTime     as 
    birthTime
     then
     {

              birthTime.value     as 
    date
    
 ->     
practitioner.birthDate =     truncate
    (
    date
    , 
    10
    )
    ;

                }
     "birth"
    ;

              }
     "name"
    ;

          entity.representedOrganization     as 
    representedOrganization
    
 ->     
 bundle.entry     as 
    e3
    , 
 e3.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e3.resource =     create
    (
    'Organization'
    )
     as 
    organization
     then
     {

            representedOrganization    
 ->     
organization.meta     as 
    meta
     then
     {

              representedOrganization    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

                representedOrganization    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

                representedOrganization    
 ->     
coding.code =     'ClinicalDocument/body/observation/performer/representedOrganization'
     "code"
    ;

                  }
     "coding"
    ;

                }
     "meta"
    ;

            representedOrganization.id     as 
    id
    
 ->     
organization.identifier     as 
    identifier
     then
     {

              id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

              id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

                representedOrganization    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                  }
     "ext"
    ;

              id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

              id.root     as 
    r
     then
     {

                id.extension     as 
    ext
    
 ->     
 organization.id =     (
r + '-' + ext    )
     as 
    uuid3
    , 
 e3.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid3
    )
    , 
 practitionerRole.organization =     create
    (
    'Reference'
    )
     as 
    referenceOrg
    , 
 referenceOrg.reference =     append
    (
    'https://example/Organization/'
    , 
    uuid3
    )
     "aut"
    ;

                  }
     "r"
    ;

                }
     "identifier"
    ;

            representedOrganization.name     as 
    v
    
 ->     
organization.name =     (
v.other    )
    ;

            representedOrganization.telecom    
 ->     
organization.telecom    ;

            representedOrganization.addr    
 ->     
organization.address    ;

            representedOrganization.asOrganizationPartOf     as 
    OrgPartOf
    
 ->     
 bundle.entry     as 
    e4
    , 
 e4.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 e4.resource =     create
    (
    'Organization'
    )
     as 
    organization1
    , 
 request.method =     'PUT'
     then
     {

              OrgPartOf    
 ->     
organization1.meta     as 
    meta
     then
     {

                OrgPartOf    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

                  OrgPartOf    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

                  OrgPartOf    
 ->     
coding.code =     'ClinicalDocument/body/observation/performer/representedOrganization/asOrganizationPartOf'
     "code"
    ;

                    }
     "coding"
    ;

                  }
     "meta"
    ;

              OrgPartOf.id     as 
    id
    
 ->     
organization1.identifier     as 
    identifier
     then
     {

                id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

                id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

                  OrgPartOf    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                    }
     "ext"
    ;

                id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

                id.root     as 
    r
     then
     {

                  id.extension     as 
    ext
    
 ->     
 organization1.id =     (
r + '-' + ext    )
     as 
    uuid4
    , 
 e4.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid4
    )
    , 
 organization.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization1.id    )
     "org"
    ;

                    }
     "r"
    ;

                  }
     "identifier"
    ;

              OrgPartOf.code    
 ->     
organization1.type    ;

              OrgPartOf.statusCode     as 
    status
     where 
(value = 'active')    
 ->     
 organization1.active =     create
    (
    'boolean'
    )
    , 
 organization1.active =     'true'
    ;

              OrgPartOf.wholeOrganization     as 
    wholeOrgan
    
 ->     
 bundle.entry     as 
    e5
    , 
 e5.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e5.resource =     create
    (
    'Organization'
    )
     as 
    organization2
     then
     {

                wholeOrgan    
 ->     
organization2.meta     as 
    meta
     then
     {

                  wholeOrgan    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

                    wholeOrgan    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

                    wholeOrgan    
 ->     
coding.code =     'ClinicalDocument/body/observation/performer/representedOrganization/wholeOrganization'
     "code"
    ;

                      }
     "coding"
    ;

                    }
     "meta"
    ;

                wholeOrgan.id     as 
    id
    
 ->     
organization2.identifier     as 
    identifier
     then
     {

                  id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

                  id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

                    wholeOrgan    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                      }
     "ext"
    ;

                  id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

                  id.root     as 
    r
     then
     {

                    id.extension     as 
    ext
    
 ->     
 organization2.id =     (
r + '-' + ext    )
     as 
    uuid5
    , 
 e5.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid5
    )
    , 
 organization1.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization2.id    )
     "org"
    ;

                      }
     "r"
    ;

                    }
     "identifier"
    ;

                wholeOrgan.name     as 
    v
    
 ->     
organization2.name =     (
v.other    )
    ;

                wholeOrgan.telecom    
 ->     
organization2.telecom    ;

                wholeOrgan.addr    
 ->     
organization2.address    ;

                  }
    ;

                }
     "OrgPartOf"
    ;

              }
    ;
     // 
    organization

            }
     "practitioner"
    ;

          }
     "entity"
    ;

        }
     "practitionerRole"
    ;

      }
    ;
     // 
    performer

  obs.author     as 
    srcAuthor
    
 ->     
 bundle.entry     as 
    e6
    , 
 e6.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e6.resource =     create
    (
    'PractitionerRole'
    )
     as 
    practitionerRole
    , 
 practitionerRole.id =     uuid
    (
    )
     as 
    uuid6
    , 
 e6.fullUrl =     append
    (
    'https://example/PractitionerRole/'
    , 
    uuid6
    )
    , 
 request.url =     'PractitionerRole'
    , 
 ob.performer =     create
    (
    'Reference'
    )
     as 
    referenceaut
    , 
 referenceaut.reference =     (
'https://example/PractitionerRole/' + %practitionerRole.id    )
     then
     {

    srcAuthor.assignedAuthor     as 
    assignedAuthor
     then
     {

      assignedAuthor.code     as 
    codice
    
 ->     
practitionerRole.code     as 
    code2
     then 
CECodeableConcept    (
    codice
    , 
    code2
    )
    ;

      assignedAuthor    
 ->     
 bundle.entry     as 
    e7
    , 
 e7.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e7.resource =     create
    (
    'Practitioner'
    )
     as 
    practitioner
    , 
 practitioner.id =     uuid
    (
    )
     as 
    uuid7
     then
     {

        srcAuthor.functionCode    
 ->     
practitionerRole.code    ;

        assignedAuthor    
 ->     
practitioner.meta     as 
    meta
     then
     {

          assignedAuthor    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

            assignedAuthor    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

            assignedAuthor    
 ->     
coding.code =     'ClinicalDocument/body/observation/author'
     "code"
    ;

              }
     "coding"
    ;

            }
     "meta"
    ;

        assignedAuthor.id     as 
    id
    
 ->     
practitioner.identifier     as 
    identifier
     then
     {

          id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

          id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

            assignedAuthor    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "ext"
    ;

          id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

          id.root     as 
    r
     then
     {

            id.extension     as 
    ext
    
 ->     
 practitioner.id =     (
r + '-' + ext    )
     as 
    uuid2
    , 
 e7.fullUrl =     append
    (
    'https://example/Practitioner/'
    , 
    uuid2
    )
    , 
 practitionerRole.practitioner =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Practitioner/' + %practitioner.id    )
     "aut"
    ;

              }
     "r"
    ;

          assignedAuthor.id     as 
    id
     where 
(root = '2.16.840.1.113883.2.9.4.3.2')     then
     {

            id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "2"
    ;

          assignedAuthor.id     as 
    id
     where 
(root != '2.16.840.1.113883.2.9.4.3.2')     then
     {

            id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "diverso"
    ;

            }
     "identifier"
    ;

        assignedAuthor.addr    
 ->     
practitioner.address    ;

        assignedAuthor.telecom    
 ->     
practitioner.telecom    ;

        assignedAuthor.assignedPerson     as 
    person
     then
     {

          person.name    
 ->     
practitioner.name    ;

          person.birthTime     as 
    birthTime
     then
     {

            birthTime.value     as 
    date
    
 ->     
practitioner.birthDate =     truncate
    (
    date
    , 
    10
    )
    ;

              }
     "birth"
    ;

            }
     "name"
    ;
     // 
    person

          }
     "ASSAUth"
    ;

      assignedAuthor.representedOrganization     as 
    representedOrganization
    
 ->     
 bundle.entry     as 
    e8
    , 
 e8.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e8.resource =     create
    (
    'Organization'
    )
     as 
    organization
     then
     {

        representedOrganization    
 ->     
organization.meta     as 
    meta
     then
     {

          representedOrganization    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

            representedOrganization    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

            representedOrganization    
 ->     
coding.code =     'ClinicalDocument/body/observation/author/representedOrganization'
     "code"
    ;

              }
     "coding"
    ;

            }
     "meta"
    ;

        representedOrganization.id     as 
    id
    
 ->     
organization.identifier     as 
    identifier
     then
     {

          id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

          id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

            representedOrganization    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "ext"
    ;

          id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

          id.root     as 
    r
     then
     {

            id.extension     as 
    ext
    
 ->     
 organization.id =     (
r + '-' + ext    )
     as 
    uuid3
    , 
 e8.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid3
    )
    , 
 practitionerRole.organization =     create
    (
    'Reference'
    )
     as 
    referenceOrg
    , 
 referenceOrg.reference =     append
    (
    'https://example/Organization/'
    , 
    uuid3
    )
     "org"
    ;

              }
     "r"
    ;

            }
     "identifier"
    ;

        representedOrganization.name     as 
    v
    
 ->     
organization.name =     (
v.other    )
    ;

        representedOrganization.telecom    
 ->     
organization.telecom    ;

        representedOrganization.addr    
 ->     
organization.address    ;

        representedOrganization.asOrganizationPartOf     as 
    OrgPartOf
    
 ->     
 bundle.entry     as 
    e9
    , 
 e9.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e9.resource =     create
    (
    'Organization'
    )
     as 
    organization1
     then
     {

          OrgPartOf    
 ->     
organization1.meta     as 
    meta
     then
     {

            OrgPartOf    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

              OrgPartOf    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

              OrgPartOf    
 ->     
coding.code =     'ClinicalDocument/body/observation/author/representedOrganization/asOrganizationPartOf'
     "code"
    ;

                }
     "coding"
    ;

              }
     "meta"
    ;

          OrgPartOf.id     as 
    id
    
 ->     
organization1.identifier     as 
    identifier
     then
     {

            id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

            id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

              OrgPartOf    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                }
     "ext"
    ;

            id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

            id.root     as 
    r
     then
     {

              id.extension     as 
    ext
    
 ->     
 organization1.id =     (
r + '-' + ext    )
     as 
    uuid4
    , 
 e9.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid4
    )
    , 
 organization.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization1.id    )
     "org"
    ;

                }
     "r"
    ;

              }
     "identifier"
    ;

          OrgPartOf.code    
 ->     
organization1.type    ;

          OrgPartOf.statusCode     as 
    status
     where 
(value = 'active')    
 ->     
 organization1.active =     create
    (
    'boolean'
    )
    , 
 organization1.active =     'true'
    ;

          OrgPartOf.wholeOrganization     as 
    wholeOrgan
    
 ->     
 bundle.entry     as 
    e10
    , 
 e10.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e10.resource =     create
    (
    'Organization'
    )
     as 
    organization2
     then
     {

            wholeOrgan    
 ->     
organization2.meta     as 
    meta
     then
     {

              wholeOrgan    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

                wholeOrgan    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

                wholeOrgan    
 ->     
coding.code =     'ClinicalDocument/body/observation/author/representedOrganization/asOrganizationPartOf/wholeOrganization'
     "code"
    ;

                  }
     "coding"
    ;

                }
     "meta"
    ;

            wholeOrgan.id     as 
    id
    
 ->     
organization2.identifier     as 
    identifier
     then
     {

              id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

              id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

                wholeOrgan    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                  }
     "ext"
    ;

              id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

              id.root     as 
    r
     then
     {

                id.extension     as 
    ext
    
 ->     
 organization2.id =     (
r + '-' + ext    )
     as 
    uuid4
    , 
 e10.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid4
    )
    , 
 organization1.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization2.id    )
     "org"
    ;

                  }
     "r"
    ;

                }
     "identifier"
    ;

            wholeOrgan.name     as 
    v
    
 ->     
organization2.name =     (
v.other    )
    ;

            wholeOrgan.telecom    
 ->     
organization2.telecom    ;

            wholeOrgan.addr    
 ->     
organization2.address    ;

              }
    ;

            }
     "OrgPartOf"
    ;

          }
    ;
     // 
    organization

      assignedAuthor.assignedAuthoringDevice     as 
    assignedAuthoringDevice
    
 ->     
 bundle.entry     as 
    e11
    , 
 e11.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e11.resource =     create
    (
    'Device'
    )
     as 
    device
    , 
 device.id =     uuid
    (
    )
     as 
    uuid11
    , 
 e11.fullUrl =     append
    (
    'https://example/Device/'
    , 
    uuid11
    )
    , 
 request.url =     'Device'
    , 
 tgt.author =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Device/' + %device.id    )
     then
     {

        assignedAuthoringDevice.templateId    
 ->     
device.identifier    ;

        assignedAuthoringDevice.code    
 ->     
device.type    ;

        assignedAuthoringDevice.manufacturerModelName     as 
    manufacturerModelName
     then
     {

          manufacturerModelName     as 
    m
    
 ->     
device.manufacturer =     (
m.displayName    )
     "displayRule"
    ;

            }
     "manufacturer"
    ;

        assignedAuthoringDevice.softwareName     as 
    softwareName
    
 ->     
device.deviceName     as 
    deviceName
     then
     {

          softwareName    
 ->     
deviceName.type =     'other'
     "typeName"
    ;

          softwareName     as 
    s
    
 ->     
deviceName.name =     (
s.displayName    )
     "name"
    ;

            }
     "deviceName"
    ;

          }
     "Device"
    ;
     // 
    device

        }
    ;

      }
    ;
     // 
    author

  obs.participant     as 
    participant
     where 
(typeCode != 'DEV')    
 ->     
 ob.encounter =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Encounter/' + %encounter.id    )
     then
     {

    participant    
 ->     
encounter.participant     as 
    FhirParticipant
     then
     {

      participant     as 
    p
    
 ->     
FhirParticipant.type     as 
    type
     then
     {

        p    
 ->     
type.coding     as 
    coding
     then
     {

          p    
 ->     
coding.code =     (
p.typeCode    )
     "codice"
    ;

          p    
 ->     
coding.system =     'http://terminology.hl7.org/CodeSystem/v3-ParticipationType'
     "system"
    ;

            }
     "codeType"
    ;

          }
     "type"
    ;

        }
     "fhirParticipant"
    ;

    participant.participantRole     as 
    participantRole
    
 ->     
 bundle.entry     as 
    e12
    , 
 e12.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e12.resource =     create
    (
    'PractitionerRole'
    )
     as 
    practitionerRole
    , 
 practitionerRole.id =     uuid
    (
    )
     as 
    uuid12
    , 
 e12.fullUrl =     append
    (
    'https://example/PractitionerRole/'
    , 
    uuid12
    )
    , 
 request.url =     'PractitionerRole'
    , 
 encounter.participant =     create
    (
    'BackboneElement'
    )
     as 
    participant1
    , 
 participant1.individual =     create
    (
    'Reference'
    )
     as 
    referencepart
    , 
 referencepart.reference =     (
'https://example/Practitioner/' + %practitionerRole.id    )
     then
     {

      participant.time     as 
    time1
    
 ->     
participant1.period =     create
    (
    'Period'
    )
     as 
    period
     then
     {

        time1    
 ->     
period.start =     create
    (
    'dateTime'
    )
     as 
    start
     then 
TSDateTime    (
    time1
    , 
    start
    )
     "val"
    ;

          }
    ;
     // 
    participant.time -> participant1.period;

      participant.time     as 
    time1
    
 ->     
participant1.period =     create
    (
    'Period'
    )
     as 
    period
     then 
IVLTSPeriod    (
    time1
    , 
    period
    )
    ;

      participant.functionCode    
 ->     
practitionerRole.code    ;

      participantRole    
 ->     
 bundle.entry     as 
    e13
    , 
 e13.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e13.resource =     create
    (
    'Practitioner'
    )
     as 
    practitioner
     then
     {

        participantRole    
 ->     
practitioner.meta     as 
    meta
     then
     {

          participantRole    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

            participantRole    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

            participantRole    
 ->     
coding.code =     'ClinicalDocument/body/observation/participant'
     "code"
    ;

              }
     "coding"
    ;

            }
     "meta"
    ;

        participantRole.id     as 
    id
    
 ->     
practitioner.identifier     as 
    identifier
     then
     {

          id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

          id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

            participantRole    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "ext"
    ;

          id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

          id.root     as 
    r
     then
     {

            id.extension     as 
    ext
    
 ->     
 practitioner.id =     (
r + '-' + ext    )
     as 
    uuid4
    , 
 e13.fullUrl =     append
    (
    'https://example/Practitioner/'
    , 
    uuid4
    )
    , 
 practitionerRole.practitioner =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Practitioner/' + %practitioner.id    )
     "org"
    ;

              }
     "r"
    ;

            }
     "identifier"
    ;

        participantRole.code    
 ->     
practitionerRole.code    ;

        participantRole.addr    
 ->     
practitioner.address    ;

        participantRole.telecom    
 ->     
practitioner.telecom    ;

        participantRole.playingEntity     as 
    playingEntity
     then
     {

          playingEntity.name    
 ->     
practitioner.name    ;

          playingEntity.birthTime     as 
    birthTime
     then
     {

            birthTime.value     as 
    date
    
 ->     
practitioner.birthDate =     truncate
    (
    date
    , 
    10
    )
    ;

              }
     "birth"
    ;

            }
     "name"
    ;

          }
     "practitioner"
    ;
     // 
    non mappa i 2 precedenti

        }
     "partRole"
    ;

      }
     "participantEncounter"
    ;
     // 
    participant person

  obs.participant     as 
    devParticipant
     where 
(typeCode = 'DEV')    
 ->     
 bundle.entry     as 
    e14
    , 
 e14.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e14.resource =     create
    (
    'Device'
    )
     as 
    device
    , 
 device.id =     uuid
    (
    )
     as 
    uuid14
    , 
 e14.fullUrl =     append
    (
    'https://example/Device/'
    , 
    uuid14
    )
    , 
 request.url =     'Device'
    , 
 ob.device =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Device/' + %device.id    )
     then
     {

    devParticipant.participantRole     as 
    participantRoleDev
     then
     {

      participantRoleDev.playingDevice     as 
    playingDevice
     then
     {

        playingDevice.code    
 ->     
device.type    ;

        playingDevice.manufacturerModelName     as 
    manufacturerModelName
     then
     {

          manufacturerModelName     as 
    m
    
 ->     
device.manufacturer =     (
m.displayName    )
     "displayRule"
    ;

            }
     "manufacturer"
    ;

        playingDevice.softwareName     as 
    softwareName
    
 ->     
device.deviceName     as 
    deviceName
     then
     {

          softwareName    
 ->     
deviceName.type =     'other'
     "typeName"
    ;

          softwareName     as 
    s
    
 ->     
deviceName.name =     (
s.displayName    )
     "name"
    ;

            }
     "deviceName"
    ;

          }
    ;

        }
     "participantRoleDev"
    ;

      }
     "devParticipant"
    ;
     // 
    participant device

  obs.entryRelationship     as 
    er
     then
     {

    er.observationMedia     as 
    obsMedia
    
 ->     
 bundle.entry     as 
    e15
    , 
 e15.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e15.resource =     create
    (
    'Media'
    )
     as 
    media1
    , 
 media1.id =     uuid
    (
    )
     as 
    uuid15
    , 
 e15.fullUrl =     append
    (
    'https://example/Media/'
    , 
    uuid15
    )
    , 
 request.url =     'Media'
    , 
 ob.derivedFrom =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Media/' + %media1.id    )
     then
     {

      obsMedia    
 ->     
media1.content =     create
    (
    'Attachment'
    )
     as 
    Attachment
     then
     {

        obsMedia    
 ->     
media1.status =     'unknown'
     "status"
    ;

        obsMedia.value     as 
    valueMedia
     then
     {

          valueMedia.mediaType     as 
    type
    
 ->     
Attachment.contentType =     type
     "type"
    ;

          valueMedia    
 ->     
Attachment.data =     (
valueMedia.dataBase64Binary    )
     "data"
    ;

            }
     "valuemedia"
    ;

          }
     "Attachment"
    ;

        }
     "media"
    ;

      }
     "observationMedia"
    ;
     // 
    observationMedia

  obs.referenceRange     as 
    refRange
    
 ->     
ob.referenceRange =     create
    (
    'BackboneElement'
    )
     as 
    ref
     then
     {

    refRange.observationRange     as 
    obsRange
     then
     {

      obsRange.value     : 
ST     as 
    value
    
 ->     
 ref.text =     create
    (
    'string'
    )
    , 
 ref.text =     (
value.dataString    )
    ;

      obsRange    
 ->     
ref.low =     create
    (
    'Quantity'
    )
     as 
    Low
     then
     {

        obsRange.value     : 
IVL_PQ     as 
    v
     then
     {

          v.low     as 
    l1
     then
     {

            l1.value     as 
    decValue
    
 ->     
Low.value =     decValue
    ;

            l1.unit     as 
    Unit
    
 ->     
Low.unit =     Unit
    ;

              }
     "decValue"
    ;

          v    
 ->     
ref.high =     create
    (
    'Quantity'
    )
     as 
    high
     then
     {

            v.high     as 
    h1
     then
     {

              h1.value     as 
    decValue1
    
 ->     
high.value =     decValue1
    ;

              h1.unit     as 
    Unit1
    
 ->     
high.unit =     Unit1
    ;

                }
     "decValue"
    ;

              }
     "high"
    ;

            }
     "IVLPQ"
    ;

        obsRange.interpretationCode    
 ->     
ref.type    ;

        obsRange.precondition     as 
    precondition
     then
     {

          precondition.criterion     as 
    criterion
     then
     {

            criterion.code    
 ->     
ref.appliesTo     "appliesTo"
    ;

            criterion.value     : 
IVL_PQ     as 
    v
     then
     {

              v.high     as 
    l1
     then
     {

                l1    
 ->     
ref.age =     create
    (
    'Quantity'
    )
     as 
    age
     then
     {

                  l1    
 ->     
age.high     as 
    high
     then
     {

                    l1.value     as 
    decValue
    
 ->     
high.value =     decValue
    ;

                    l1.unit     as 
    Unit1
    
 ->     
high.unit =     Unit1
    ;

                      }
     "high"
    ;

                    }
     "age"
    ;

                  }
     "low"
    ;

                }
     "v"
    ;

              }
    ;

            }
    ;

          }
     "obsRange"
    ;

        }
     "refRange"
    ;

      }
     "ref"
    ;
     // 
    referenceRange

    }


    group 
Act    (
    source
     cda
     : 
Act,     target
     pat
     : 
Patient,     target
     ac
     : 
DiagnosticReport,     target
     enc
     : 
Encounter,     target
     bundle
     : 
Bundle    )
     {

  cda.code    
 ->     
ac.code    ;

  cda     where 
cda.statusCode.exists().not()     then
     {

    cda    
 ->     
ac.status =     'final'
     "statuscode"
    ;

      }
     "status"
    ;

  cda.statusCode     as 
    statusc
     where 
(code = 'completed')    
 ->     
ac.status =     'final'
    ;

  cda.statusCode     as 
    statusc
     where 
(code = 'active')    
 ->     
ac.status =     'registered'
    ;

  cda.statusCode     as 
    statusc
     where 
(code = 'aborted')    
 ->     
ac.status =     'cancelled'
    ;

  cda.statusCode     as 
    statusc
     where 
(code = 'suspended')    
 ->     
ac.status =     'partial'
    ;

  cda.effectiveTime     as 
    effectiveTime
    
 ->     
ac.effective =     create
    (
    'dateTime'
    )
     as 
    value
     then 
TSDateTime    (
    effectiveTime
    , 
    value
    )
     "value3"
    ;

  cda     where 
effectiveTime.low.exists() or effectiveTime.high.exists()     then
     {

    cda.effectiveTime     as 
    eff
    
 ->     
ac.effective =     create
    (
    'Period'
    )
     as 
    period
     then 
IVLTSPeriod    (
    eff
    , 
    period
    )
    ;

      }
     "where"
    ;

  cda    
 ->     
 ac.subject =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Patient/' + %pat.id    )
     "reference"
    ;

  cda    
 ->     
 ac.encounter =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Encounter/' + %enc.id    )
     "reference"
    ;

  cda     where 
cda.specimen.exists()     then
     {

    cda.specimen     as 
    src
    
 ->     
 bundle.entry     as 
    e4
    , 
 e4.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e4.resource =     create
    (
    'Specimen'
    )
     as 
    specimen
    , 
 specimen.id =     uuid
    (
    )
     as 
    uuid4
    , 
 e4.fullUrl =     append
    (
    'https://example/Specimen/'
    , 
    uuid4
    )
    , 
 request.url =     'Specimen'
    , 
 ac.specimen =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Specimen/' + %specimen.id    )
     then
     {

      src.specimenRole     as 
    specimenRole
     then
     {

        specimenRole.id    
 ->     
specimen.identifier    ;

        specimenRole.specimenPlayingEntity     as 
    specimenPlayingEntity
     then
     {

          specimenPlayingEntity.code    
 ->     
specimen.type    ;

            }
    ;

          }
     "SpecimenRole"
    ;

      src    
 ->     
 specimen.subject =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Patient/' + %patient.id    )
     "reference"
    ;

      cda.entryRelationship     as 
    entryRelationship
     then
     {

        entryRelationship.observation     as 
    observation
     then
     {

          observation    
 ->     
 bundle.entry     as 
    e12
    , 
 e12.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e12.resource =     create
    (
    'Observation'
    )
     as 
    obs
    , 
 obs.id =     uuid
    (
    )
     as 
    uuid13
    , 
 e12.fullUrl =     append
    (
    'https://example/Observation/'
    , 
    uuid13
    )
    , 
 request.url =     'Observation'
    , 
 ac.result =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Observation/' + %obs.id    )
     then
     {

            observation     then 
Observation2    (
    observation
    , 
    pat
    , 
    enc
    , 
    obs
    , 
    bundle
    , 
    cda
    , 
    specimen
    )
     "ORG"
    ;

            cda.entryRelationship     as 
    entryRelationship1
     then
     {

              entryRelationship1.procedure     as 
    proc
    
 ->     
 bundle.entry     as 
    e5
    , 
 e5.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e5.resource =     create
    (
    'Procedure'
    )
     as 
    procedure
    , 
 procedure.id =     uuid
    (
    )
     as 
    uuid5
    , 
 e5.fullUrl =     append
    (
    'https://example/Procedure/'
    , 
    uuid5
    )
    , 
 request.url =     'Procedure'
    , 
 obs.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Procedure/' + %procedure.id    )
     then
     {

                proc    
 ->     
 procedure.subject =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Patient/' + %patient.id    )
     "reference"
    ;

                proc    
 ->     
 procedure.encounter =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Encounter/' + %encounter.id    )
     "reference"
    ;

                proc     where 
proc.statusCode.exists().not()     then
     {

                  proc    
 ->     
procedure.status =     'unknown'
     "statuscode"
    ;

                    }
     "status"
    ;

                proc.statusCode     as 
    statusc
     where 
(code = 'completed')    
 ->     
procedure.status =     'completed'
    ;

                proc.statusCode     as 
    statusc
     where 
(code = 'active')    
 ->     
procedure.status =     'in-progress'
    ;

                proc.statusCode     as 
    statusc
     where 
(code = 'aborted')    
 ->     
procedure.status =     'stopped'
    ;

                proc.statusCode     as 
    statusc
     where 
(code = 'suspended')    
 ->     
procedure.status =     'on-hold'
    ;

                proc.statusCode     as 
    statusc
     where 
(code = 'cancelled')    
 ->     
procedure.status =     'not-done'
    ;

                proc.statusCode     as 
    statusc
     where 
(code = 'held')    
 ->     
procedure.status =     'on-hold'
    ;

                proc.statusCode     as 
    statusc
     where 
(code = 'new')    
 ->     
procedure.status =     'preparation'
    ;

                proc.statusCode     as 
    statusc
     where 
(code = 'obsolete')    
 ->     
procedure.status =     'entered-in-error'
    ;

                proc.statusCode     as 
    statusc
     where 
(code = 'nullified')    
 ->     
procedure.status =     'unknown'
    ;

                proc.effectiveTime     as 
    effectiveTime
    
 ->     
procedure.performed =     create
    (
    'dateTime'
    )
     as 
    value
     then 
TSDateTime    (
    effectiveTime
    , 
    value
    )
     "datetime"
    ;

                proc     where 
effectiveTime.low.exists() or effectiveTime.high.exists()     then
     {

                  proc.effectiveTime     as 
    eff
    
 ->     
procedure.performed =     create
    (
    'Period'
    )
     as 
    period
     then 
IVLTSPeriod    (
    eff
    , 
    period
    )
    ;

                    }
     "where"
    ;

                proc.targetSiteCode    
 ->     
procedure.bodySite    ;

                  }
    ;

                }
     "entryRelationshipprocedure"
    ;
     // 
    procedure

              }
     "obs"
    ;

            }
    ;

        entryRelationship.organizer     as 
    organizer
     then
     {

          organizer    
 ->     
 bundle.entry     as 
    e12
    , 
 e12.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e12.resource =     create
    (
    'Observation'
    )
     as 
    obs
    , 
 obs.id =     uuid
    (
    )
     as 
    uuid13
    , 
 e12.fullUrl =     append
    (
    'https://example/Observation/'
    , 
    uuid13
    )
    , 
 request.url =     'Observation'
    , 
 ac.result =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Observation/' + %obs.id    )
     then
     {

            organizer     then 
Organizer    (
    cda
    , 
    organizer
    , 
    pat
    , 
    enc
    , 
    obs
    , 
    bundle
    )
     "ORG"
    ;

            cda.entryRelationship     as 
    entryRelationship1
     then
     {

              entryRelationship1.procedure     as 
    proc
    
 ->     
 bundle.entry     as 
    e5
    , 
 e5.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e5.resource =     create
    (
    'Procedure'
    )
     as 
    procedure
    , 
 procedure.id =     uuid
    (
    )
     as 
    uuid5
    , 
 e5.fullUrl =     append
    (
    'https://example/Procedure/'
    , 
    uuid5
    )
    , 
 request.url =     'Procedure'
    , 
 obs.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Procedure/' + %procedure.id    )
     then
     {

                proc    
 ->     
 procedure.subject =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Patient/' + %patient.id    )
     "reference"
    ;

                proc    
 ->     
 procedure.encounter =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Encounter/' + %encounter.id    )
     "reference"
    ;

                proc     where 
proc.statusCode.exists().not()     then
     {

                  proc    
 ->     
procedure.status =     'unknown'
     "statuscode"
    ;

                    }
     "status"
    ;

                proc.statusCode     as 
    statusc
     where 
(code = 'completed')    
 ->     
procedure.status =     'completed'
    ;

                proc.statusCode     as 
    statusc
     where 
(code = 'active')    
 ->     
procedure.status =     'in-progress'
    ;

                proc.statusCode     as 
    statusc
     where 
(code = 'aborted')    
 ->     
procedure.status =     'stopped'
    ;

                proc.statusCode     as 
    statusc
     where 
(code = 'suspended')    
 ->     
procedure.status =     'on-hold'
    ;

                proc.statusCode     as 
    statusc
     where 
(code = 'cancelled')    
 ->     
procedure.status =     'not-done'
    ;

                proc.statusCode     as 
    statusc
     where 
(code = 'held')    
 ->     
procedure.status =     'on-hold'
    ;

                proc.statusCode     as 
    statusc
     where 
(code = 'new')    
 ->     
procedure.status =     'preparation'
    ;

                proc.statusCode     as 
    statusc
     where 
(code = 'obsolete')    
 ->     
procedure.status =     'entered-in-error'
    ;

                proc.statusCode     as 
    statusc
     where 
(code = 'nullified')    
 ->     
procedure.status =     'unknown'
    ;

                proc.effectiveTime     as 
    effectiveTime
    
 ->     
procedure.performed =     create
    (
    'dateTime'
    )
     as 
    value
     then 
TSDateTime    (
    effectiveTime
    , 
    value
    )
     "datetime"
    ;

                proc     where 
effectiveTime.low.exists() or effectiveTime.high.exists()     then
     {

                  proc.effectiveTime     as 
    eff
    
 ->     
procedure.performed =     create
    (
    'Period'
    )
     as 
    period
     then 
IVLTSPeriod    (
    eff
    , 
    period
    )
    ;

                    }
     "where"
    ;

                proc.targetSiteCode    
 ->     
procedure.bodySite    ;

                  }
     "pbservation"
    ;

                }
     "entryRelationshiprocedure"
    ;
     // 
    procedure

              }
     "Organizer"
    ;

            }
    ;

          }
     "entryRelationshipobservation"
    ;

        }
    ;

      }
     "exist"
    ;
     // 
    specimen

  cda     where 
cda.specimen.exists().not()     then
     {

    cda.entryRelationship     as 
    entryRelationship
     then
     {

      entryRelationship.observation     as 
    observation
     then
     {

        observation    
 ->     
 bundle.entry     as 
    e12
    , 
 e12.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e12.resource =     create
    (
    'Observation'
    )
     as 
    obs
    , 
 obs.id =     uuid
    (
    )
     as 
    uuid13
    , 
 e12.fullUrl =     append
    (
    'https://example/Observation/'
    , 
    uuid13
    )
    , 
 request.url =     'Observation'
    , 
 ac.result =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Observation/' + %obs.id    )
     then
     {

          observation     then 
Observation3    (
    observation
    , 
    pat
    , 
    enc
    , 
    obs
    , 
    bundle
    , 
    cda
    )
     "ORG"
    ;

          cda.entryRelationship     as 
    entryRelationship1
     then
     {

            entryRelationship1.procedure     as 
    proc
    
 ->     
 bundle.entry     as 
    e5
    , 
 e5.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e5.resource =     create
    (
    'Procedure'
    )
     as 
    procedure
    , 
 procedure.id =     uuid
    (
    )
     as 
    uuid5
    , 
 e5.fullUrl =     append
    (
    'https://example/Procedure/'
    , 
    uuid5
    )
    , 
 request.url =     'Procedure'
    , 
 obs.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Procedure/' + %procedure.id    )
     then
     {

              proc    
 ->     
 procedure.subject =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Patient/' + %patient.id    )
     "reference"
    ;

              proc    
 ->     
 procedure.encounter =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Encounter/' + %encounter.id    )
     "reference"
    ;

              proc     where 
proc.statusCode.exists().not()     then
     {

                proc    
 ->     
procedure.status =     'unknown'
     "statuscode"
    ;

                  }
     "status"
    ;

              proc.statusCode     as 
    statusc
     where 
(code = 'completed')    
 ->     
procedure.status =     'completed'
    ;

              proc.statusCode     as 
    statusc
     where 
(code = 'active')    
 ->     
procedure.status =     'in-progress'
    ;

              proc.statusCode     as 
    statusc
     where 
(code = 'aborted')    
 ->     
procedure.status =     'stopped'
    ;

              proc.statusCode     as 
    statusc
     where 
(code = 'suspended')    
 ->     
procedure.status =     'on-hold'
    ;

              proc.statusCode     as 
    statusc
     where 
(code = 'cancelled')    
 ->     
procedure.status =     'not-done'
    ;

              proc.statusCode     as 
    statusc
     where 
(code = 'held')    
 ->     
procedure.status =     'on-hold'
    ;

              proc.statusCode     as 
    statusc
     where 
(code = 'new')    
 ->     
procedure.status =     'preparation'
    ;

              proc.statusCode     as 
    statusc
     where 
(code = 'obsolete')    
 ->     
procedure.status =     'entered-in-error'
    ;

              proc.statusCode     as 
    statusc
     where 
(code = 'nullified')    
 ->     
procedure.status =     'unknown'
    ;

              proc.effectiveTime     as 
    effectiveTime
    
 ->     
procedure.performed =     create
    (
    'dateTime'
    )
     as 
    value
     then 
TSDateTime    (
    effectiveTime
    , 
    value
    )
     "datetime"
    ;

              proc     where 
effectiveTime.low.exists() or effectiveTime.high.exists()     then
     {

                proc.effectiveTime     as 
    eff
    
 ->     
procedure.performed =     create
    (
    'Period'
    )
     as 
    period
     then 
IVLTSPeriod    (
    eff
    , 
    period
    )
    ;

                  }
     "where"
    ;

              proc.targetSiteCode    
 ->     
procedure.bodySite    ;

                }
    ;

              }
     "entryRelationshipprocedure"
    ;
     // 
    procedure

            }
     "obs"
    ;

          }
    ;

      entryRelationship.organizer     as 
    organizer
     then
     {

        organizer    
 ->     
 bundle.entry     as 
    e12
    , 
 e12.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e12.resource =     create
    (
    'Observation'
    )
     as 
    obs
    , 
 obs.id =     uuid
    (
    )
     as 
    uuid13
    , 
 e12.fullUrl =     append
    (
    'https://example/Observation/'
    , 
    uuid13
    )
    , 
 request.url =     'Observation'
    , 
 ac.result =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Observation/' + %obs.id    )
     then
     {

          organizer     then 
Organizer    (
    cda
    , 
    organizer
    , 
    pat
    , 
    enc
    , 
    obs
    , 
    bundle
    )
     "ORG"
    ;

          cda.entryRelationship     as 
    entryRelationship1
     then
     {

            entryRelationship1.procedure     as 
    proc
    
 ->     
 bundle.entry     as 
    e5
    , 
 e5.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e5.resource =     create
    (
    'Procedure'
    )
     as 
    procedure
    , 
 procedure.id =     uuid
    (
    )
     as 
    uuid5
    , 
 e5.fullUrl =     append
    (
    'https://example/Procedure/'
    , 
    uuid5
    )
    , 
 request.url =     'Procedure'
    , 
 obs.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Procedure/' + %procedure.id    )
     then
     {

              proc    
 ->     
 procedure.subject =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Patient/' + %patient.id    )
     "reference"
    ;

              proc    
 ->     
 procedure.encounter =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Encounter/' + %encounter.id    )
     "reference"
    ;

              proc     where 
proc.statusCode.exists().not()     then
     {

                proc    
 ->     
procedure.status =     'unknown'
     "statuscode"
    ;

                  }
     "status"
    ;

              proc.statusCode     as 
    statusc
     where 
(code = 'completed')    
 ->     
procedure.status =     'completed'
    ;

              proc.statusCode     as 
    statusc
     where 
(code = 'active')    
 ->     
procedure.status =     'in-progress'
    ;

              proc.statusCode     as 
    statusc
     where 
(code = 'aborted')    
 ->     
procedure.status =     'stopped'
    ;

              proc.statusCode     as 
    statusc
     where 
(code = 'suspended')    
 ->     
procedure.status =     'on-hold'
    ;

              proc.statusCode     as 
    statusc
     where 
(code = 'cancelled')    
 ->     
procedure.status =     'not-done'
    ;

              proc.statusCode     as 
    statusc
     where 
(code = 'held')    
 ->     
procedure.status =     'on-hold'
    ;

              proc.statusCode     as 
    statusc
     where 
(code = 'new')    
 ->     
procedure.status =     'preparation'
    ;

              proc.statusCode     as 
    statusc
     where 
(code = 'obsolete')    
 ->     
procedure.status =     'entered-in-error'
    ;

              proc.statusCode     as 
    statusc
     where 
(code = 'nullified')    
 ->     
procedure.status =     'unknown'
    ;

              proc.effectiveTime     as 
    effectiveTime
    
 ->     
procedure.performed =     create
    (
    'dateTime'
    )
     as 
    value
     then 
TSDateTime    (
    effectiveTime
    , 
    value
    )
     "datetime"
    ;

              proc     where 
effectiveTime.low.exists() or effectiveTime.high.exists()     then
     {

                proc.effectiveTime     as 
    eff
    
 ->     
procedure.performed =     create
    (
    'Period'
    )
     as 
    period
     then 
IVLTSPeriod    (
    eff
    , 
    period
    )
    ;

                  }
     "where"
    ;

              proc.targetSiteCode    
 ->     
procedure.bodySite    ;

                }
     "pbservation"
    ;

              }
     "entryRelationshiprocedure"
    ;
     // 
    procedure

            }
     "Organizer"
    ;

          }
    ;

        }
     "entryRelationshipobservation"
    ;
     // 
    cda -> bundle.entry as e4, e4.request = create('BackboneElement') as request, request.method = 'POST', e4.resource = create('Specimen') as specimen,  specimen.id = uuid() as uuid4,  e4.fullUrl = append('https://example/Specimen/', uuid4), request.url = 'Specimen' then {

      }
     "existnot"
    ;

  cda.participant     as 
    part
     where 
(typeCode != 'DEV')    
 ->     
enc.participant     as 
    participant
     then
     {

    part    
 ->     
participant.type     as 
    type
     then
     {

      part    
 ->     
type.coding     as 
    coding
     then
     {

        part    
 ->     
coding.code =     (
part.typeCode    )
     "codice"
    ;

        part    
 ->     
coding.system =     'http://terminology.hl7.org/CodeSystem/v3-ParticipationType'
     "system"
    ;

          }
     "codeType"
    ;

        }
     "type"
    ;

    part.participantRole     as 
    participantRole
    
 ->     
participant.individual =     create
    (
    'Reference'
    )
     as 
    reference
     then
     {

      participantRole    
 ->     
 bundle.entry     as 
    e
    , 
 e.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e.resource =     create
    (
    'Practitioner'
    )
     as 
    practitioner
     then
     {

        part.time     as 
    time1
    
 ->     
participant.period =     create
    (
    'Period'
    )
     as 
    period
     then
     {

          time1    
 ->     
period.start =     create
    (
    'dateTime'
    )
     as 
    start
     then 
TSDateTime    (
    time1
    , 
    start
    )
     "val"
    ;

            }
    ;

        part.time     as 
    time1
    
 ->     
participant.period =     create
    (
    'Period'
    )
     as 
    period
     then 
IVLTSPeriod    (
    time1
    , 
    period
    )
    ;

        participantRole    
 ->     
practitioner.meta     as 
    meta
     then
     {

          participantRole    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

            participantRole    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

            participantRole    
 ->     
coding.code =     'ClinicalDocument/body/act/participant'
     "code"
    ;

              }
     "coding"
    ;

            }
     "meta"
    ;

        participantRole.id     as 
    id
    
 ->     
practitioner.identifier     as 
    identifier
     then
     {

          id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

          id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

            participantRole    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "ext"
    ;

          id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

          id.root     as 
    r
     then
     {

            id.extension     as 
    ext
    
 ->     
 practitioner.id =     (
r + '-' + ext    )
     as 
    uuid4
    , 
 e.fullUrl =     append
    (
    'https://example/Practitioner/'
    , 
    uuid4
    )
    , 
 reference.reference =     (
'https://example/Practitioner/' + %practitioner.id    )
     "org"
    ;

              }
     "r"
    ;

            }
     "identifier"
    ;

        participantRole.addr    
 ->     
practitioner.address    ;

        participantRole.playingEntity     as 
    playingEntity
     then
     {

          playingEntity.name    
 ->     
practitioner.name    ;

            }
    ;

          }
     "participanRoleBund"
    ;

        }
    ;

      }
    ;
     // 
    PARTICIPANT

  cda.performer     as 
    performer
    
 ->     
 bundle.entry     as 
    e1
    , 
 e1.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e1.resource =     create
    (
    'PractitionerRole'
    )
     as 
    practitionerRole
    , 
 practitionerRole.id =     uuid
    (
    )
     as 
    uuid1
    , 
 e1.fullUrl =     append
    (
    'https://example/PractitionerRole/'
    , 
    uuid1
    )
    , 
 request.url =     'PractitionerRole'
    , 
 ac.performer =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/PractitionerRole/' + %practitionerRole.id    )
     then
     {

    performer.assignedEntity     as 
    assignedEntity
     then
     {

      assignedEntity.code     as 
    codice
    
 ->     
practitionerRole.code    ;

      assignedEntity    
 ->     
 bundle.entry     as 
    e2
    , 
 e2.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e2.resource =     create
    (
    'Practitioner'
    )
     as 
    practitioner
     then
     {

        assignedEntity.code    
 ->     
practitionerRole.code    ;

        assignedEntity    
 ->     
practitioner.meta     as 
    meta
     then
     {

          assignedEntity    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

            assignedEntity    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

            assignedEntity    
 ->     
coding.code =     'ClinicalDocument/body/act/performer'
     "code"
    ;

              }
     "coding"
    ;

            }
     "meta"
    ;

        assignedEntity.id     as 
    id
    
 ->     
practitioner.identifier     as 
    identifier
     then
     {

          id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

          id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

            assignedEntity    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "ext"
    ;

          id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

          id.root     as 
    r
     then
     {

            id.extension     as 
    ext
    
 ->     
 practitioner.id =     (
r + '-' + ext    )
     as 
    uuid4
    , 
 e2.fullUrl =     append
    (
    'https://example/Practitioner/'
    , 
    uuid4
    )
    , 
 practitionerRole.practitioner =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Practitioner/' + %practitioner.id    )
     "pra"
    ;

              }
     "r"
    ;

            }
     "identifier"
    ;

        assignedEntity.addr    
 ->     
practitioner.address    ;

        assignedEntity.telecom    
 ->     
practitioner.telecom    ;

        assignedEntity.assignedPerson     as 
    person
     then
     {

          person.name    
 ->     
practitioner.name    ;

          person.birthTime     as 
    birthTime
     then
     {

            birthTime.value     as 
    date
    
 ->     
practitioner.birthDate =     truncate
    (
    date
    , 
    10
    )
    ;

              }
     "birth"
    ;

            }
     "name"
    ;

          }
     "ASSAUth"
    ;

      assignedEntity.representedOrganization     as 
    representedOrganization
    
 ->     
 bundle.entry     as 
    e3
    , 
 e3.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e3.resource =     create
    (
    'Organization'
    )
     as 
    organization
     then
     {

        representedOrganization    
 ->     
organization.meta     as 
    meta
     then
     {

          representedOrganization    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

            representedOrganization    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

            representedOrganization    
 ->     
coding.code =     'ClinicalDocument/body/act/representedOrganization'
     "code"
    ;

              }
     "coding"
    ;

            }
     "meta"
    ;

        representedOrganization.id     as 
    id
    
 ->     
organization.identifier     as 
    identifier
     then
     {

          id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

          id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

            representedOrganization    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "ext"
    ;

          id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

          id.root     as 
    r
     then
     {

            id.extension     as 
    ext
    
 ->     
 organization.id =     (
r + '-' + ext    )
     as 
    uuid2
    , 
 e3.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid2
    )
    , 
 practitionerRole.organization =     create
    (
    'Reference'
    )
     as 
    referenceOrg
    , 
 referenceOrg.reference =     append
    (
    'https://example/Organization/'
    , 
    uuid2
    )
     "org"
    ;

              }
     "r"
    ;

            }
     "identifier"
    ;

        representedOrganization.name     as 
    v
    
 ->     
organization.name =     (
v.other    )
    ;

        representedOrganization.telecom    
 ->     
organization.telecom    ;

        representedOrganization.addr    
 ->     
organization.address    ;

        representedOrganization.asOrganizationPartOf     as 
    OrgPartOf
    
 ->     
 bundle.entry     as 
    e4
    , 
 e4.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e4.resource =     create
    (
    'Organization'
    )
     as 
    organization1
     then
     {

          OrgPartOf    
 ->     
organization1.meta     as 
    meta
     then
     {

            OrgPartOf    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

              OrgPartOf    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

              OrgPartOf    
 ->     
coding.code =     'ClinicalDocument/body/act/representedOrganization/asOrganizationPartOf'
     "code"
    ;

                }
     "coding"
    ;

              }
     "meta"
    ;

          OrgPartOf.id     as 
    id
    
 ->     
organization1.identifier     as 
    identifier
     then
     {

            id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

            id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

              OrgPartOf    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                }
     "ext"
    ;

            id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

            id.root     as 
    r
     then
     {

              id.extension     as 
    ext
    
 ->     
 organization1.id =     (
r + '-' + ext    )
     as 
    uuid3
    , 
 organization1.id =     uuid
    (
    )
     as 
    uuid3
    , 
 e4.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid3
    )
    , 
 organization.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization1.id    )
     "org"
    ;

                }
     "r"
    ;

              }
     "identifier"
    ;

          OrgPartOf.code    
 ->     
organization1.type    ;

          OrgPartOf.statusCode     as 
    status
     where 
(value = 'active')    
 ->     
 organization1.active =     create
    (
    'boolean'
    )
    , 
 organization1.active =     'true'
    ;

          OrgPartOf.wholeOrganization     as 
    wholeOrgan
    
 ->     
 bundle.entry     as 
    e10bis
    , 
 e10bis.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e10bis.resource =     create
    (
    'Organization'
    )
     as 
    organization2
     then
     {

            OrgPartOf    
 ->     
organization2.meta     as 
    meta
     then
     {

              OrgPartOf    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

                OrgPartOf    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

                OrgPartOf    
 ->     
coding.code =     'ClinicalDocument/body/act/representedOrganization/asOrganizationPartOf/wholeOrganization'
     "code"
    ;

                  }
     "coding"
    ;

                }
     "meta"
    ;

            wholeOrgan.id     as 
    id
    
 ->     
organization2.identifier     as 
    identifier
     then
     {

              id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

              id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

                wholeOrgan    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                  }
     "ext"
    ;

              id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

              id.root     as 
    r
     then
     {

                id.extension     as 
    ext
    
 ->     
 organization2.id =     (
r + '-' + ext    )
     as 
    uuid5
    , 
 e10bis.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid5
    )
    , 
 organization1.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization2.id    )
     "org"
    ;

                  }
     "r"
    ;

                }
     "identifier"
    ;

            wholeOrgan.name     as 
    v
    
 ->     
organization2.name =     (
v.other    )
    ;

            wholeOrgan.telecom    
 ->     
organization2.telecom    ;

            wholeOrgan.addr    
 ->     
organization2.address    ;

              }
    ;

            }
     "OrgPartOf"
    ;

          }
    ;

        }
     "performer"
    ;

      }
    ;
     // 
    PERFORMER

  cda.author     as 
    srcAuthor
    
 ->     
 bundle.entry     as 
    e5
    , 
 e5.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e5.resource =     create
    (
    'PractitionerRole'
    )
     as 
    practitionerRole
    , 
 practitionerRole.id =     uuid
    (
    )
     as 
    uuid6
    , 
 e5.fullUrl =     append
    (
    'https://example/PractitionerRole/'
    , 
    uuid6
    )
    , 
 request.url =     'PractitionerRole'
    , 
 ac.performer =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/PractitionerRole/' + %practitionerRole.id    )
     then
     {

    srcAuthor.assignedAuthor     as 
    assignedAuthor
     then
     {

      assignedAuthor.code     as 
    codice
    
 ->     
practitionerRole.code    ;

      assignedAuthor    
 ->     
 bundle.entry     as 
    e7
    , 
 e7.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e7.resource =     create
    (
    'Practitioner'
    )
     as 
    practitioner
     then
     {

        srcAuthor.functionCode    
 ->     
practitionerRole.code    ;

        assignedAuthor.code    
 ->     
practitionerRole.code    ;

        assignedAuthor    
 ->     
practitioner.meta     as 
    meta
     then
     {

          assignedAuthor    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

            assignedAuthor    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

            assignedAuthor    
 ->     
coding.code =     'ClinicalDocument/body/act/author'
     "code"
    ;

              }
     "coding"
    ;

            }
     "meta"
    ;

        assignedAuthor.id     as 
    id
    
 ->     
practitioner.identifier     as 
    identifier
     then
     {

          id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

          id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

            assignedAuthor    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "ext"
    ;

          id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

          id.root     as 
    r
     then
     {

            id.extension     as 
    ext
    
 ->     
 practitioner.id =     (
r + '-' + ext    )
     as 
    uuid2
    , 
 e7.fullUrl =     append
    (
    'https://example/Practitioner/'
    , 
    uuid2
    )
    , 
 practitionerRole.practitioner =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Practitioner/' + %practitioner.id    )
     "aut"
    ;

              }
     "r"
    ;

            }
     "identifier"
    ;

        assignedAuthor.id     as 
    id
     where 
(root = '2.16.840.1.113883.2.9.4.3.2')     then
     {

          id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

            }
     "2"
    ;

        assignedAuthor.id     as 
    id
     where 
(root != '2.16.840.1.113883.2.9.4.3.2')     then
     {

          id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

            }
     "diverso"
    ;

        assignedAuthor.addr    
 ->     
practitioner.address    ;

        assignedAuthor.telecom    
 ->     
practitioner.telecom    ;

        assignedAuthor.assignedPerson     as 
    person
     then
     {

          person.name    
 ->     
practitioner.name    ;

          person.birthTime     as 
    birthTime
     then
     {

            birthTime.value     as 
    date
    
 ->     
practitioner.birthDate =     truncate
    (
    date
    , 
    10
    )
    ;

              }
     "birth"
    ;

            }
     "name"
    ;
     // 
    person

          }
     "ASSAUth"
    ;

      assignedAuthor.representedOrganization     as 
    representedOrganization
    
 ->     
 bundle.entry     as 
    e8
    , 
 e8.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e8.resource =     create
    (
    'Organization'
    )
     as 
    organization
     then
     {

        representedOrganization    
 ->     
organization.meta     as 
    meta
     then
     {

          representedOrganization    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

            representedOrganization    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

            representedOrganization    
 ->     
coding.code =     'ClinicalDocument/body/act/author/representedOrganization'
     "code"
    ;

              }
     "coding"
    ;

            }
     "meta"
    ;

        representedOrganization.id     as 
    id
    
 ->     
organization.identifier     as 
    identifier
     then
     {

          id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

          id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

            representedOrganization    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "ext"
    ;

          id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

          id.root     as 
    r
     then
     {

            id.extension     as 
    ext
    
 ->     
 organization.id =     (
r + '-' + ext    )
     as 
    uuid8
    , 
 e8.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid8
    )
    , 
 practitionerRole.organization =     create
    (
    'Reference'
    )
     as 
    referenceOrg
    , 
 referenceOrg.reference =     append
    (
    'https://example/Organization/'
    , 
    uuid8
    )
     "org"
    ;

              }
     "r"
    ;

            }
     "identifier"
    ;

        representedOrganization.name     as 
    v
    
 ->     
organization.name =     (
v.other    )
    ;

        representedOrganization.telecom    
 ->     
organization.telecom    ;

        representedOrganization.addr    
 ->     
organization.address    ;

        representedOrganization.asOrganizationPartOf     as 
    OrgPartOf
    
 ->     
 bundle.entry     as 
    e9
    , 
 e9.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e9.resource =     create
    (
    'Organization'
    )
     as 
    organization1
     then
     {

          OrgPartOf    
 ->     
organization1.meta     as 
    meta
     then
     {

            OrgPartOf    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

              OrgPartOf    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

              OrgPartOf    
 ->     
coding.code =     'ClinicalDocument/body/act/author/representedOrganization/asOrganizationPartOf'
     "code"
    ;

                }
     "coding"
    ;

              }
     "meta"
    ;

          OrgPartOf.id     as 
    id
    
 ->     
organization1.identifier     as 
    identifier
     then
     {

            id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

            id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

              OrgPartOf    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                }
     "ext"
    ;

            id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

            id.root     as 
    r
     then
     {

              id.extension     as 
    ext
    
 ->     
 organization1.id =     (
r + '-' + ext    )
     as 
    uuid9
    , 
 e9.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid9
    )
    , 
 organization.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization1.id    )
     "org"
    ;

                }
     "r"
    ;

              }
     "identifier"
    ;

          OrgPartOf.code    
 ->     
organization1.type    ;

          OrgPartOf.statusCode     as 
    status
     where 
(value = 'active')    
 ->     
 organization1.active =     create
    (
    'boolean'
    )
    , 
 organization1.active =     'true'
    ;

          OrgPartOf.wholeOrganization     as 
    wholeOrgan
    
 ->     
 bundle.entry     as 
    e10
    , 
 e10.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e10.resource =     create
    (
    'Organization'
    )
     as 
    organization2
     then
     {

            wholeOrgan    
 ->     
organization2.meta     as 
    meta
     then
     {

              wholeOrgan    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

                wholeOrgan    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

                wholeOrgan    
 ->     
coding.code =     'ClinicalDocument/body/act/author/representedOrganization/asOrganizationPartOf/wholeOrganization'
     "code"
    ;

                  }
     "coding"
    ;

                }
     "meta"
    ;

            wholeOrgan.id     as 
    id
    
 ->     
organization2.identifier     as 
    identifier
     then
     {

              id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

              id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

                wholeOrgan    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                  }
     "ext"
    ;

              id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

              id.root     as 
    r
     then
     {

                id.extension     as 
    ext
    
 ->     
 organization2.id =     (
r + '-' + ext    )
     as 
    uuid10
    , 
 e10.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid10
    )
    , 
 organization1.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization2.id    )
     "org"
    ;

                  }
     "r"
    ;

                }
     "identifier"
    ;

            wholeOrgan.name     as 
    v
    
 ->     
organization2.name =     (
v.other    )
    ;

            wholeOrgan.telecom    
 ->     
organization2.telecom    ;

            wholeOrgan.addr    
 ->     
organization2.address    ;

              }
    ;

            }
     "OrgPartOf"
    ;

          }
    ;
     // 
    organization

        }
     "author"
    ;

      }
    ;
     // 
    AUTHOR

  cda.entryRelationship     as 
    entryRelationship
     then
     {

    entryRelationship.act     as 
    act
     then
     {

      act.text     as 
    text
     then
     {

        text.reference     as 
    reference
    
 ->     
ac.conclusion =     (
reference.value    )
    ;

          }
    ;

        }
     "Act"
    ;

      }
    ;
     // 
    <!--entryRelationship per la gestione delle note e commenti-->

    }


    group 
Organizer    (
    source
     cda
     : 
Act,     source
     org
     : 
Organizer,     target
     patient
     : 
Patient,     target
     encounter
     : 
Encounter,     target
     observation
     : 
Observation,     target
     bundle
     : 
Bundle    )
     {

  org    
 ->     
 observation.subject =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Patient/' + %patient.id    )
     "reference"
    ;

  org    
 ->     
 observation.encounter =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Encounter/' + %encounter.id    )
     "reference"
    ;

  org.code    
 ->     
observation.code    ;

  org     where 
org.code.exists().not()     then
     {

    cda.code    
 ->     
observation.code    ;

      }
     "act"
    ;

  org.statusCode     as 
    statusc
     where 
(code = 'completed')    
 ->     
observation.status =     'final'
    ;

  org.statusCode     as 
    statusc
     where 
(code = 'active')    
 ->     
observation.status =     'registered'
    ;

  org.statusCode     as 
    statusc
     where 
(code = 'aborted')    
 ->     
observation.status =     'cancelled'
    ;

  org.statusCode     as 
    statusc
     where 
(code = 'suspended')    
 ->     
observation.status =     'partial'
    ;

  org.effectiveTime     as 
    effectiveTime
    
 ->     
observation.effective =     create
    (
    'dateTime'
    )
     as 
    value
     then 
TSDateTime    (
    effectiveTime
    , 
    value
    )
     "value2"
    ;

  org     where 
effectiveTime.low.exists() or effectiveTime.high.exists()     then
     {

    org.effectiveTime     as 
    eff
    
 ->     
observation.effective =     create
    (
    'Period'
    )
     as 
    period
     then 
IVLTSPeriod    (
    eff
    , 
    period
    )
    ;

      }
     "where"
    ;

  org.specimen     as 
    spmn
    
 ->     
 bundle.entry     as 
    e4o
    , 
 e4o.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e4o.resource =     create
    (
    'Specimen'
    )
     as 
    specimen
    , 
 specimen.id =     uuid
    (
    )
     as 
    uuid4o
    , 
 e4o.fullUrl =     append
    (
    'https://example/Specimen/'
    , 
    uuid4o
    )
    , 
 request.url =     'Specimen'
    , 
 observation.specimen =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Specimen/' + %specimen.id    )
     then
     {

    spmn.specimenRole     as 
    specimenRole
     then
     {

      specimenRole.id     as 
    id
    
 ->     
specimen.identifier    ;

      specimenRole.specimenPlayingEntity     as 
    specimenPlayingEntity
     then
     {

        specimenPlayingEntity.code    
 ->     
specimen.type    ;

          }
    ;

        }
    ;

      }
    ;
     // 
    specimen

  org.subject     as 
    sbj
     then
     {

    sbj.relatedSubject     as 
    relatedSubj
    
 ->     
patient.extension     as 
    extension2
     then 
ExtSubjectAnimal    (
    relatedSubj
    , 
    extension2
    )
    ;

      }
    ;
     // 
    subject

  org.performer     as 
    performer
    
 ->     
 bundle.entry     as 
    e1
    , 
 e1.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e1.resource =     create
    (
    'PractitionerRole'
    )
     as 
    practitionerRole
    , 
 practitionerRole.id =     uuid
    (
    )
     as 
    uuid1
    , 
 e1.fullUrl =     append
    (
    'https://example/PractitionerRole/'
    , 
    uuid1
    )
    , 
 request.url =     'PractitionerRole'
     then
     {

    performer    
 ->     
 observation.performer =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/PractitionerRole/' + %practitionerRole.id    )
     then
     {

      performer.assignedEntity     as 
    entity
     then
     {

        entity.code    
 ->     
practitionerRole.code    ;

        entity    
 ->     
 bundle.entry     as 
    e2
    , 
 e2.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e2.resource =     create
    (
    'Practitioner'
    )
     as 
    practitioner
     then
     {

          entity    
 ->     
practitioner.meta     as 
    meta
     then
     {

            entity    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

              entity    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

              entity    
 ->     
coding.code =     'ClinicalDocument/body/organizer/performer'
     "code"
    ;

                }
     "coding"
    ;

              }
     "meta"
    ;

          entity.id     as 
    id
    
 ->     
practitioner.identifier     as 
    identifier
     then
     {

            id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

            id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

              entity    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

                }
     "ext"
    ;

            id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

            id.root     as 
    r
     then
     {

              id.extension     as 
    ext
    
 ->     
 practitioner.id =     (
r + '-' + ext    )
     as 
    uuid2
    , 
 e2.fullUrl =     append
    (
    'https://example/Practitioner/'
    , 
    uuid2
    )
    , 
 practitionerRole.practitioner =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Practitioner/' + %practitioner.id    )
     "aut"
    ;

                }
     "r"
    ;

              }
     "identifier"
    ;

          entity.id     as 
    id
     where 
(root = '2.16.840.1.113883.2.9.4.3.2')     then
     {

            id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "2"
    ;

          entity.id     as 
    id
     where 
(root != '2.16.840.1.113883.2.9.4.3.2')     then
     {

            id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "diverso"
    ;

          entity.addr    
 ->     
practitioner.address    ;

          entity.telecom    
 ->     
practitioner.telecom    ;

          entity.assignedPerson     as 
    person
     then
     {

            person.name    
 ->     
practitioner.name    ;

            person.birthTime     as 
    birthTime
     then
     {

              birthTime.value     as 
    date
    
 ->     
practitioner.birthDate =     truncate
    (
    date
    , 
    10
    )
    ;

                }
     "birth"
    ;

              }
     "name"
    ;

          entity.representedOrganization     as 
    representedOrganization
    
 ->     
 bundle.entry     as 
    e3
    , 
 e3.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e3.resource =     create
    (
    'Organization'
    )
     as 
    organization
     then
     {

            representedOrganization    
 ->     
organization.meta     as 
    meta
     then
     {

              representedOrganization    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

                representedOrganization    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

                representedOrganization    
 ->     
coding.code =     'ClinicalDocument/body/organizer/performer/representedOrganization'
     "code"
    ;

                  }
     "coding"
    ;

                }
     "meta"
    ;

            representedOrganization.id     as 
    id
    
 ->     
organization.identifier     as 
    identifier
     then
     {

              id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

              id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

                representedOrganization    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                  }
     "ext"
    ;

              id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

              id.root     as 
    r
     then
     {

                id.extension     as 
    ext
    
 ->     
 organization.id =     (
r + '-' + ext    )
     as 
    uuid3
    , 
 e3.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid3
    )
    , 
 practitionerRole.organization =     create
    (
    'Reference'
    )
     as 
    referenceOrg
    , 
 referenceOrg.reference =     append
    (
    'https://example/Organization/'
    , 
    uuid3
    )
     "aut"
    ;

                  }
     "r"
    ;

                }
     "identifier"
    ;

            representedOrganization.name     as 
    v
    
 ->     
organization.name =     (
v.other    )
    ;

            representedOrganization.telecom    
 ->     
organization.telecom    ;

            representedOrganization.addr    
 ->     
organization.address    ;

            representedOrganization.asOrganizationPartOf     as 
    OrgPartOf
    
 ->     
 bundle.entry     as 
    e4
    , 
 e4.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e4.resource =     create
    (
    'Organization'
    )
     as 
    organization1
     then
     {

              OrgPartOf    
 ->     
organization1.meta     as 
    meta
     then
     {

                OrgPartOf    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

                  OrgPartOf    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

                  OrgPartOf    
 ->     
coding.code =     'ClinicalDocument/body/organizer/performer/representedOrganization/asOrganizationPartOf'
     "code"
    ;

                    }
     "coding"
    ;

                  }
     "meta"
    ;

              OrgPartOf.id     as 
    id
    
 ->     
organization1.identifier     as 
    identifier
     then
     {

                id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

                id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

                  OrgPartOf    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                    }
     "ext"
    ;

                id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

                id.root     as 
    r
     then
     {

                  id.extension     as 
    ext
    
 ->     
 organization1.id =     (
r + '-' + ext    )
     as 
    uuid4
    , 
 e4.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid4
    )
    , 
 organization.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization1.id    )
     "org"
    ;

                    }
     "r"
    ;

                  }
     "identifier"
    ;

              OrgPartOf.code    
 ->     
organization1.type    ;

              OrgPartOf.statusCode     as 
    status
     where 
(value = 'active')    
 ->     
 organization1.active =     create
    (
    'boolean'
    )
    , 
 organization1.active =     'true'
    ;

              OrgPartOf.wholeOrganization     as 
    wholeOrgan
    
 ->     
 bundle.entry     as 
    e5
    , 
 e5.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e5.resource =     create
    (
    'Organization'
    )
     as 
    organization2
     then
     {

                wholeOrgan    
 ->     
organization2.meta     as 
    meta
     then
     {

                  wholeOrgan    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

                    wholeOrgan    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

                    wholeOrgan    
 ->     
coding.code =     'ClinicalDocument/body/organizer/performer/representedOrganization/asOrganizationPartOf/wholeOrganization'
     "code"
    ;

                      }
     "coding"
    ;

                    }
     "meta"
    ;

                wholeOrgan.id     as 
    id
    
 ->     
organization2.identifier     as 
    identifier
     then
     {

                  id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

                  id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

                    wholeOrgan    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                      }
     "ext"
    ;

                  id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

                  id.root     as 
    r
     then
     {

                    id.extension     as 
    ext
    
 ->     
 organization2.id =     (
r + '-' + ext    )
     as 
    uuid4
    , 
 e5.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid4
    )
    , 
 organization1.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization2.id    )
     "org"
    ;

                      }
     "r"
    ;

                    }
     "identifier"
    ;

                wholeOrgan.name     as 
    v
    
 ->     
organization2.name =     (
v.other    )
    ;

                wholeOrgan.telecom    
 ->     
organization2.telecom    ;

                wholeOrgan.addr    
 ->     
organization2.address    ;

                  }
    ;

                }
     "OrgPartOf"
    ;

              }
    ;

            }
     "practitioner"
    ;

          }
     "entity"
    ;

        }
     "practitionerRole"
    ;

      }
    ;
     // 
    performer

  org.author     as 
    srcAuthor
    
 ->     
 bundle.entry     as 
    e6
    , 
 e6.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e6.resource =     create
    (
    'PractitionerRole'
    )
     as 
    practitionerRole
    , 
 practitionerRole.id =     uuid
    (
    )
     as 
    uuid6
    , 
 e6.fullUrl =     append
    (
    'https://example/PractitionerRole/'
    , 
    uuid6
    )
    , 
 request.url =     'PractitionerRole'
    , 
 observation.performer =     create
    (
    'Reference'
    )
     as 
    referenceaut
    , 
 referenceaut.reference =     (
'https://example/PractitionerRole/' + %practitionerRole.id    )
     then
     {

    srcAuthor.assignedAuthor     as 
    assignedAuthor
     then
     {

      assignedAuthor.code     as 
    codice
    
 ->     
practitionerRole.code     as 
    code2
     then 
CECodeableConcept    (
    codice
    , 
    code2
    )
    ;

      assignedAuthor    
 ->     
 bundle.entry     as 
    e7
    , 
 e7.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e7.resource =     create
    (
    'Practitioner'
    )
     as 
    practitioner
     then
     {

        srcAuthor.functionCode    
 ->     
practitionerRole.code    ;

        assignedAuthor    
 ->     
practitioner.meta     as 
    meta
     then
     {

          assignedAuthor    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

            assignedAuthor    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

            assignedAuthor    
 ->     
coding.code =     'ClinicalDocument/body/organizer/author'
     "code"
    ;

              }
     "coding"
    ;

            }
     "meta"
    ;
     // 
    assignedAuthor.code -> practitionerRole.code;

        assignedAuthor.id     as 
    id
    
 ->     
practitioner.identifier     as 
    identifier
     then
     {

          id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

          id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

            assignedAuthor    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "ext"
    ;

          id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

          id.root     as 
    r
     then
     {

            id.extension     as 
    ext
    
 ->     
 practitioner.id =     (
r + '-' + ext    )
     as 
    uuid7
    , 
 e7.fullUrl =     append
    (
    'https://example/Practitioner/'
    , 
    uuid7
    )
    , 
 practitionerRole.practitioner =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Practitioner/' + %practitioner.id    )
     "aut"
    ;

              }
     "r"
    ;

            }
     "identifier"
    ;

        assignedAuthor.id     as 
    id
     where 
(root = '2.16.840.1.113883.2.9.4.3.2')     then
     {

          id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

            }
     "2"
    ;

        assignedAuthor.id     as 
    id
     where 
(root != '2.16.840.1.113883.2.9.4.3.2')     then
     {

          id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

            }
     "diverso"
    ;

        assignedAuthor.addr    
 ->     
practitioner.address    ;

        assignedAuthor.telecom    
 ->     
practitioner.telecom    ;

        assignedAuthor.assignedPerson     as 
    person
     then
     {

          person.name    
 ->     
practitioner.name    ;

          person.birthTime     as 
    birthTime
     then
     {

            birthTime.value     as 
    date
    
 ->     
practitioner.birthDate =     truncate
    (
    date
    , 
    10
    )
    ;

              }
     "birth"
    ;

            }
     "name"
    ;
     // 
    person

          }
     "ASSAUth"
    ;

      assignedAuthor.representedOrganization     as 
    representedOrganization
    
 ->     
 bundle.entry     as 
    e8
    , 
 e8.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e8.resource =     create
    (
    'Organization'
    )
     as 
    organization
     then
     {

        representedOrganization    
 ->     
organization.meta     as 
    meta
     then
     {

          representedOrganization    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

            representedOrganization    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

            representedOrganization    
 ->     
coding.code =     'ClinicalDocument/body/organizer/author/representedOrganization'
     "code"
    ;

              }
     "coding"
    ;

            }
     "meta"
    ;

        representedOrganization.id     as 
    id
    
 ->     
organization.identifier     as 
    identifier
     then
     {

          id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

          id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

            representedOrganization    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "ext"
    ;

          id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

          id.root     as 
    r
     then
     {

            id.extension     as 
    ext
    
 ->     
 organization.id =     (
r + '-' + ext    )
     as 
    uuid8
    , 
 e8.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid8
    )
    , 
 practitionerRole.organization =     create
    (
    'Reference'
    )
     as 
    referenceOrg
    , 
 referenceOrg.reference =     append
    (
    'https://example/Organization/'
    , 
    uuid8
    )
     "aut"
    ;

              }
     "r"
    ;

            }
     "identifier"
    ;

        representedOrganization.name     as 
    v
    
 ->     
organization.name =     (
v.other    )
    ;

        representedOrganization.telecom    
 ->     
organization.telecom    ;

        representedOrganization.addr    
 ->     
organization.address    ;

        representedOrganization.asOrganizationPartOf     as 
    OrgPartOf
    
 ->     
 bundle.entry     as 
    e9
    , 
 e9.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e9.resource =     create
    (
    'Organization'
    )
     as 
    organization1
     then
     {

          OrgPartOf    
 ->     
organization1.meta     as 
    meta
     then
     {

            OrgPartOf    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

              OrgPartOf    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

              OrgPartOf    
 ->     
coding.code =     'ClinicalDocument/body/organizer/author/representedOrganization/asOrganizationPartOf'
     "code"
    ;

                }
     "coding"
    ;

              }
     "meta"
    ;

          OrgPartOf.id     as 
    id
    
 ->     
organization1.identifier     as 
    identifier
     then
     {

            id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

            id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

              OrgPartOf    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                }
     "ext"
    ;

            id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

            id.root     as 
    r
     then
     {

              id.extension     as 
    ext
    
 ->     
 organization1.id =     (
r + '-' + ext    )
     as 
    uuid9
    , 
 e9.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid9
    )
    , 
 organization.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization1.id    )
     "aut"
    ;

                }
     "r"
    ;

              }
     "identifier"
    ;

          OrgPartOf.code    
 ->     
organization1.type    ;

          OrgPartOf.statusCode     as 
    status
     where 
(value = 'active')    
 ->     
 organization1.active =     create
    (
    'boolean'
    )
    , 
 organization1.active =     'true'
    ;

          OrgPartOf.wholeOrganization     as 
    wholeOrgan
    
 ->     
 bundle.entry     as 
    e10
    , 
 e10.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e10.resource =     create
    (
    'Organization'
    )
     as 
    organization2
     then
     {

            OrgPartOf    
 ->     
organization2.meta     as 
    meta
     then
     {

              OrgPartOf    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

                OrgPartOf    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

                OrgPartOf    
 ->     
coding.code =     'ClinicalDocument/body/organizer/author/representedOrganization/asOrganizationPartOf/wholeOrganization'
     "code"
    ;

                  }
     "coding"
    ;

                }
     "meta"
    ;

            wholeOrgan.id     as 
    id
    
 ->     
organization2.identifier     as 
    identifier
     then
     {

              id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

              id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

                wholeOrgan    
 ->     
request.url =     append
    (
    'Organization?identifier='
    , 
    ext
    )
     "UUID"
    ;

                  }
     "ext"
    ;

              id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

              id.root     as 
    r
     then
     {

                id.extension     as 
    ext
    
 ->     
 organization2.id =     (
r + '-' + ext    )
     as 
    uuid10
    , 
 e10.fullUrl =     append
    (
    'https://example/Organization/'
    , 
    uuid10
    )
    , 
 organization1.partOf =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Organization/' + %organization2.id    )
     "aut"
    ;

                  }
     "r"
    ;

                }
     "identifier"
    ;

            wholeOrgan.name     as 
    v
    
 ->     
organization2.name =     (
v.other    )
    ;

            wholeOrgan.telecom    
 ->     
organization2.telecom    ;

            wholeOrgan.addr    
 ->     
organization2.address    ;

              }
    ;

            }
     "OrgPartOf"
    ;

          }
    ;
     // 
    organization

      assignedAuthor.assignedAuthoringDevice     as 
    assignedAuthoringDevice
    
 ->     
 bundle.entry     as 
    e11
    , 
 e11.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e11.resource =     create
    (
    'Device'
    )
     as 
    device
    , 
 device.id =     uuid
    (
    )
     as 
    uuid11
    , 
 e11.fullUrl =     append
    (
    'https://example/Device/'
    , 
    uuid11
    )
    , 
 request.url =     'Device'
    , 
 tgt.author =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Device/' + %device.id    )
     then
     {

        assignedAuthoringDevice.templateId    
 ->     
device.identifier    ;

        assignedAuthoringDevice.code    
 ->     
device.type    ;

        assignedAuthoringDevice.manufacturerModelName     as 
    manufacturerModelName
     then
     {

          manufacturerModelName     as 
    m
    
 ->     
device.manufacturer =     (
m.displayName    )
     "displayRule"
    ;

            }
     "manufacturer"
    ;

        assignedAuthoringDevice.softwareName     as 
    softwareName
    
 ->     
device.deviceName     as 
    deviceName
     then
     {

          softwareName    
 ->     
deviceName.type =     'other'
     "typeName"
    ;

          softwareName     as 
    s
    
 ->     
deviceName.name =     (
s.displayName    )
     "name"
    ;

            }
     "deviceName"
    ;

          }
     "Device"
    ;
     // 
    device

        }
    ;
     // 
    srcAuthor.time as time -> tgt.date;

      }
    ;
     // 
    author

  org.participant     as 
    participant
     where 
(typeCode != 'DEV')    
 ->     
 observation.encounter =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Encounter/' + %encounter.id    )
     then
     {

    participant    
 ->     
encounter.participant     as 
    FhirParticipant
     then
     {

      participant     as 
    p
    
 ->     
FhirParticipant.type     as 
    type
     then
     {

        p    
 ->     
type.coding     as 
    coding
     then
     {

          p    
 ->     
coding.code =     (
p.typeCode    )
     "codice"
    ;

          p    
 ->     
coding.system =     'http://terminology.hl7.org/CodeSystem/v3-ParticipationType'
     "system"
    ;

            }
     "codeType"
    ;

          }
     "type"
    ;

        }
     "fhirParticipant"
    ;

    participant.participantRole     as 
    participantRole
    
 ->     
 bundle.entry     as 
    e12
    , 
 e12.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e12.resource =     create
    (
    'PractitionerRole'
    )
     as 
    practitionerRole
    , 
 practitionerRole.id =     uuid
    (
    )
     as 
    uuid12
    , 
 e12.fullUrl =     append
    (
    'https://example/PractitionerRole/'
    , 
    uuid12
    )
    , 
 request.url =     'PractitionerRole'
    , 
 encounter.participant =     create
    (
    'BackboneElement'
    )
     as 
    participant1
     then
     {

      participant.time     as 
    time1
    
 ->     
participant1.period =     create
    (
    'Period'
    )
     as 
    period
     then
     {

        time1    
 ->     
period.start =     create
    (
    'dateTime'
    )
     as 
    start
     then 
TSDateTime    (
    time1
    , 
    start
    )
     "val"
    ;

          }
    ;
     // 
    participant.time -> participant1.period;

      participant.time     as 
    time1
    
 ->     
participant1.period =     create
    (
    'Period'
    )
     as 
    period
     then 
IVLTSPeriod    (
    time1
    , 
    period
    )
    ;

      participant.functionCode    
 ->     
practitionerRole.code    ;

      participantRole    
 ->     
 bundle.entry     as 
    e13
    , 
 e13.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'PUT'
    , 
 e13.resource =     create
    (
    'Practitioner'
    )
     as 
    practitioner
     then
     {

        participantRole    
 ->     
 participant1.individual =     create
    (
    'Reference'
    )
     as 
    referencepart
    , 
 referencepart.reference =     (
'https://example/PractitionerRole/' + %practitionerRole.id    )
     "par"
    ;

        participantRole    
 ->     
practitioner.meta     as 
    meta
     then
     {

          participantRole    
 ->     
meta.tag =     create
    (
    'Coding'
    )
     as 
    coding
     then
     {

            participantRole    
 ->     
coding.system =     'http://algoritmodiscoring'
     "system"
    ;

            participantRole    
 ->     
coding.code =     'ClinicalDocument/body/organizer/participant'
     "code"
    ;

              }
     "coding"
    ;

            }
     "meta"
    ;

        participantRole.id     as 
    id
    
 ->     
practitioner.identifier     as 
    identifier
     then
     {

          id.root     as 
    r
    
 ->     
identifier.system =     translate
    (
    r
    , 
    'http://hl7.org/fhir/ConceptMap/special-oid2uri'
    , 
    'uri'
    )
     "root1"
    ;

          id.extension     as 
    ext
    
 ->     
identifier.value =     ext
     then
     {

            participantRole    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

              }
     "ext"
    ;

          id.assigningAuthorityName     as 
    s
    
 ->     
 identifier.assigner     as 
    a
    , 
 a.display =     s
    ;

          id.root     as 
    r
     then
     {

            id.extension     as 
    ext
    
 ->     
 practitioner.id =     (
r + '-' + ext    )
     as 
    uuid2
    , 
 e13.fullUrl =     append
    (
    'https://example/Practitioner/'
    , 
    uuid2
    )
    , 
 practitionerRole.practitioner =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Practitioner/' + %practitioner.id    )
     "part"
    ;

              }
     "r"
    ;

            }
     "identifier"
    ;

        participantRole.id     as 
    id
     where 
(root = '2.16.840.1.113883.2.9.4.3.2')     then
     {

          id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

            }
     "2"
    ;

        participantRole.id     as 
    id
     where 
(root != '2.16.840.1.113883.2.9.4.3.2')     then
     {

          id.extension     as 
    ext
    
 ->     
request.url =     append
    (
    'Practitioner?identifier='
    , 
    ext
    )
     "UUID"
    ;

            }
     "diverso"
    ;

        participantRole.code    
 ->     
practitionerRole.code    ;

        participantRole.addr    
 ->     
practitioner.address    ;

        participantRole.telecom    
 ->     
practitioner.telecom    ;

        participantRole.playingEntity     as 
    playingEntity
     then
     {

          playingEntity.name    
 ->     
practitioner.name    ;

          playingEntity.birthTime     as 
    birthTime
     then
     {

            birthTime.value     as 
    date
    
 ->     
practitioner.birthDate =     truncate
    (
    date
    , 
    10
    )
    ;

              }
     "birth"
    ;

            }
     "name"
    ;

          }
     "practitioner"
    ;
     // 
    non mappa i 2 precedenti

        }
     "partRole"
    ;

      }
     "participantEncounter"
    ;
     // 
    participant person

  org.participant     as 
    devParticipant
     where 
(typeCode = 'DEV')    
 ->     
 bundle.entry     as 
    e14
    , 
 e14.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e14.resource =     create
    (
    'Device'
    )
     as 
    device
    , 
 device.id =     uuid
    (
    )
     as 
    uuid14
    , 
 e14.fullUrl =     append
    (
    'https://example/Device/'
    , 
    uuid14
    )
    , 
 request.url =     'Device'
    , 
 observation.device =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Device/' + %device.id    )
     then
     {

    devParticipant.participantRole     as 
    participantRoleDev
     then
     {

      participantRoleDev.playingDevice     as 
    playingDevice
     then
     {

        playingDevice.code    
 ->     
device.type    ;

        playingDevice.manufacturerModelName     as 
    manufacturerModelName
     then
     {

          manufacturerModelName     as 
    m
    
 ->     
device.manufacturer =     (
m.displayName    )
     "displayRule"
    ;

            }
     "manufacturer"
    ;

        playingDevice.softwareName     as 
    softwareName
    
 ->     
device.deviceName     as 
    deviceName
     then
     {

          softwareName    
 ->     
deviceName.type =     'other'
     "typeName"
    ;

          softwareName     as 
    s
    
 ->     
deviceName.name =     (
s.displayName    )
     "name"
    ;

            }
     "deviceName"
    ;

          }
    ;

        }
     "participantRoleDev"
    ;

      }
     "devParticipant"
    ;
     // 
    participant device

  org.component     as 
    component
     then
     {

    component.observation     as 
    observation
    
 ->     
 bundle.entry     as 
    e
    , 
 e.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e.resource =     create
    (
    'Observation'
    )
     as 
    observationhasmember
    , 
 observationhasmember.id =     uuid
    (
    )
     as 
    uuid2
    , 
 e.fullUrl =     append
    (
    'https://example/Observation/'
    , 
    uuid2
    )
    , 
 request.url =     'Observation'
    , 
 observation.hasMember =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Observation/' + %observationhasmember.id    )
     then 
Observation    (
    observation
    , 
    patient
    , 
    encounter
    , 
    observationhasmember
    , 
    bundle
    )
     "OBS"
    ;

      }
     "componentobservation"
    ;

  org.component     as 
    component
     then
     {

    component.organizer     as 
    organizer
    
 ->     
 bundle.entry     as 
    e1
    , 
 e1.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e1.resource =     create
    (
    'Observation'
    )
     as 
    observationorganizer
    , 
 observationorganizer.id =     uuid
    (
    )
     as 
    uuid3
    , 
 e1.fullUrl =     append
    (
    'https://example/Observation/'
    , 
    uuid3
    )
    , 
 request.url =     'Observation'
    , 
 observation.hasMember =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Observation/' + %observationorganizer.id    )
     then
     {

      organizer     then 
Organizer    (
    cda
    , 
    organizer
    , 
    patient
    , 
    encounter
    , 
    observationorganizer
    , 
    bundle
    )
     "ORG"
    ;

        }
    ;

      }
     "componentorganizer"
    ;

  org.component     as 
    component
     then
     {

    component.observationMedia     as 
    obsMedia
    
 ->     
 bundle.entry     as 
    e15
    , 
 e15.request =     create
    (
    'BackboneElement'
    )
     as 
    request
    , 
 request.method =     'POST'
    , 
 e15.resource =     create
    (
    'Media'
    )
     as 
    media1
    , 
 media1.id =     uuid
    (
    )
     as 
    uuid15
    , 
 e15.fullUrl =     append
    (
    'https://example/Media/'
    , 
    uuid15
    )
    , 
 request.url =     'Media'
    , 
 observation.derivedFrom =     create
    (
    'Reference'
    )
     as 
    reference
    , 
 reference.reference =     (
'https://example/Media/' + %media1.id    )
     then
     {

      obsMedia    
 ->     
media1.content =     create
    (
    'Attachment'
    )
     as 
    Attachment
     then
     {

        obsMedia    
 ->     
media1.status =     'unknown'
     "status"
    ;

        obsMedia.value     as 
    valueMedia
     then
     {

          valueMedia.mediaType     as 
    type
    
 ->     
Attachment.contentType =     type
     "type"
    ;

          valueMedia    
 ->     
Attachment.data =     (
valueMedia.dataBase64Binary    )
     "data"
    ;

            }
     "valuemedia"
    ;

          }
     "Attachment"
    ;

        }
     "obsmedia"
    ;

      }
    ;
     // 
    observationMedia

  org.component     as 
    component
     then
     {

    component.act     as 
    act
     then
     {

      act.text     as 
    text
     then
     {

        text.reference     as 
    reference
    
 ->     
observation.note     as 
    note
     then
     {

          reference    
 ->     
note.text =     (
reference.value    )
     "reference"
    ;

            }
     "note"
    ;

          }
    ;

        }
     "componentact"
    ;

      }
    ;
     // 
    note

    }


    group 
ExtSubjectAnimal    (
    source
     src
     : 
relatedSubject,     target
     ext
     : 
Extension    )
     {

  src    
 ->     
ext.url =     'http://hl7.org/fhir/StructureDefinition/patient-animal'
     "url"
    ;

  src.code     as 
    code
    
 ->     
 ext.extension     as 
    ext
    , 
 ext.url =     'species'
    , 
 ext.value =     create
    (
    'CodeableConcept'
    )
     as 
    code1
     then 
CECodeableConcept    (
    code
    , 
    code1
    )
    ;

    }


  

Produced 08 Sep 2023