HL7 FHIR Implementation Guide: Sri Lanka
0.1.0 - STU1

HL7 FHIR Implementation Guide: Sri Lanka, published by Jembi Health Systems. This is not an authorized publication; it is the continuous build for version 0.1.0. This version is based on the current content of https://github.com/jembi/Sri-Lanka and changes regularly. See the Directory of published versions

## StructureMap:

Official URL: http://openhie.org/fhir/sri-lanka/StructureMap/HIMSLMToPatientRegistration | Version: 0.1.0
Draft as of 2023-11-10 | Computable Name: HIMSLMToPatientRegistration

Maps the HIMS logical model data elements to the Patient resource data elements

    map "http://openhie.org/fhir/sri-lanka/StructureMap/HIMSLMToPatientRegistration" = "HIMSLMToPatientRegistration"

    // Maps the HIMS logical model data elements to the Patient resource data elements

    uses "http://openhie.org/fhir/sri-lanka/StructureDefinition/HIMSPatientRegistrationDataDictionary" alias IMMZC as source
    uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias Bundle as target
    uses "http://hl7.org/fhir/StructureDefinition/Patient" alias Patient as target

    group DataDictToPatient(source immzc : IMMZC, target patient : Patient) {
      immzc.personalHealthNumber as id1 -> patient.identifier as identifier then {
        id1 -> identifier.value = id1 "SetPersonalHealthNumberValue";
      } "SetPHN";
      immzc.nationalIdentityCard as id2 -> patient.identifier as identifier then {
        id2 -> identifier.value = id2 "SetNationalIdentityCardNumberValue";
      } "SetNIC";
      immzc.passport as id3 -> patient.identifier as identifier then {
        id3 -> identifier.value = id3 "SetPassportNumberValue";
      } "SetPassport";
      immzc.drivingLicense as id4 -> patient.identifier as identifier then {
        id4 -> identifier.value = id4 "SetDrivingLicenseNumberValue";
      } "SetDL";
      immzc.seniorCitizenNumber as id5 -> patient.identifier as identifier then {
        id5 -> identifier.value = id5 "SetSeniorCitizenNumberValue";
      } "SetSCN";
      immzc.sex as sex -> patient.gender = sex "SetGender";
      immzc.birthDate as birthDate -> patient.birthDate = birthDate "SetBirthDate";
      immzc.patientName as patientName -> patient.name as hname then NameToHumanName(patientName, hname) "SetPatientNames";
      immzc.address as address -> patient.address as haddy then AddyToAddress(address, haddy) "SetAddresses";
      immzc.contactDetails as contactDetails -> patient.telecom as hcontact then ContactDetailsToContactPoint(contactDetails, hcontact) "SetContactDetails";
    }

    group NameToHumanName(source name, target hname) {
      name.fullName as fullName -> hname.text = fullName "SetFullName";
      name.firstName as firstName -> hname.given = firstName "SetFirstName";
      name.surname as surname -> hname.family = surname "SetFamilyName";
    }

    group AddyToAddress(source address, target haddy) {
      address.streetNameAndNr as streetNameAndNr -> haddy.line = streetNameAndNr "SetStreetNameAndNr";
      address.city as city -> haddy.city = city "SetCity";
      address.state as state -> haddy.state = state "SetState";
      address.country as country -> haddy.country = country "SetCountry";
      address.postalCode as postalCode -> haddy.postalCode = postalCode "SetPostalCode";
    }

    group ContactDetailsToContactPoint(source contact, target hcontact) {
      contact.mobileNumber as mobileNumber -> hcontact.value = mobileNumber "SetMobileNumber";
      contact.landline as landline -> hcontact.value = landline "SetLandline";
    }