Social Care Interoperability Platform FHIR Implementation Guide
Version: 0.1.0, Status: draft

Social Care Interoperability Platform FHIR Implementation Guide - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

StructureMap: PractitionerToCareWorker

Official URL: https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/Practitioner-CareWorker Version: 0.1.0
Draft as of 2026-03-24 Computable Name: PractitionerToCareWorker

map "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/Practitioner-CareWorker" = "PractitionerToCareWorker"

uses "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/MODS-Practitioner" alias Practitioner as source
uses "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/MODS-CareWorker" alias CareWorker as target

group CareWorker(source src : Practitioner, target tgt : CareWorker) {
  src -> tgt.id = evaluate(src, id) "setCareWorkerId";
  src ->  tgt.meta as meta,  meta.dataClass as dataClass then {
    src -> dataClass.name = 'Care Worker' "ac0d9409-65d3-4ac5-a2e4-82e311729d39";
  } "setDataClassName";
  src -> tgt.name as name then {
    src.name as humanName then {
      src -> name.given = evaluate(humanName, given) "5b7971e2-4ecc-4f09-a7f3-480d6620c5fa";
      src -> name.family = evaluate(humanName, family) "ff76faaa-9937-4c29-9e4b-b7ee6587b724";
    } "setFamilyAndGivenName";
  } "setName";
  src -> tgt.contactDetails as contactDetails then {
    src.telecom as emailAddress where $this.system='email' -> contactDetails.emailAddressDetails as emailAddressDetails then {
      src -> emailAddressDetails.emailAddress = evaluate(emailAddress, value) "056d2626-9d12-411c-8aa7-9ce762c25520";
      src -> emailAddressDetails.preferredOrder = evaluate(emailAddress, rank) "9c3e2c64-fa5c-4f1a-bd0e-b1214d7f3042";
      emailAddress.extension as emailAddressTypeExt where $this.url='https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-PersonEmailAddressType' then {
        src -> emailAddressDetails.type as emailAddressType then {
          src -> emailAddressType.system = 'https://data.digitisingsocialcare.co.uk/mods/v1/person-email-address-type' "df5ca7a7-596b-4316-863d-a1b078386d9b";
          src -> emailAddressType.code = evaluate(emailAddressTypeExt, valueCoding.code) "dc2268a7-1f92-4d75-b21a-7075ff68c701";
          src -> emailAddressType.display = evaluate(emailAddressTypeExt, valueCoding.display) "88beab9d-b983-44ad-ab6f-67cffec63f8b";
        } "ccd293d4-7b1f-4e72-86d4-d38cfa46cbc2";
      };
    };
    src.telecom as telephoneNumber where $this.system='phone' -> contactDetails.telephoneDetails as telephoneNumberDetails then {
      src -> telephoneNumberDetails.telephoneNumber = evaluate(telephoneNumber, value) "ec42b1e7-46b5-40f9-9948-9e9c8c4097cb";
      src -> telephoneNumberDetails.preferredOrder = evaluate(telephoneNumber, rank) "3122fe00-dc00-455e-9785-5779e8f82e21";
      telephoneNumber.extension as telephoneNumberExt where $this.url='https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-PersonTelephoneNumberType' then {
        src -> telephoneNumberDetails.type as telephoneNumberType then {
          src -> telephoneNumberType.system = 'https://data.digitisingsocialcare.co.uk/mods/v1/person-telephone-type' "0520f2c7-d19c-41b0-b26f-99deb20298fd";
          src -> telephoneNumberType.code = evaluate(telephoneNumberExt, valueCoding.code) "2d449562-de74-496f-9aeb-e950492fb40d";
          src -> telephoneNumberType.display = evaluate(telephoneNumberExt, valueCoding.display) "683286cd-5953-4d92-8a19-ec2f0caa133f";
        } "738d2d8c-f42f-4a10-adc2-6ce7948eec06";
      };
    };
  } "setContactDetails";
}