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
| Official URL: https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/ProxyForSubjectOfCare-RelatedPerson | Version: 0.1.0 | |||
| Draft as of 2026-06-10 | Computable Name: ProxyForSubjectOfCareToRelatedPerson | |||
map "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/ProxyForSubjectOfCare-RelatedPerson" = "ProxyForSubjectOfCareToRelatedPerson" uses "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/MODS-ProxyForSubjectOfCare" alias Proxy as source uses "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/MODS-RelatedPerson" alias RelatedPerson as target group RelatedPerson(source src : Proxy, target tgt : RelatedPerson) { src -> tgt.id = evaluate(src, id) "setRelatedPersonId"; src.organisation as careProvider -> tgt.extension as careProviderExt then { src -> careProviderExt.url = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-PersonCareProvider' "b9292139-1b8f-4c5d-b781-368bccac221b"; src -> careProviderExt.valueReference as careProviderReference then { src -> careProviderReference.reference = evaluate(careProvider, 'Organization/'+id) "d494c489-206c-487b-972d-8bd5312fd360"; src -> careProviderReference.display = evaluate(careProvider, display) "64ff5e98-f747-4eba-8b2b-600bd112cdcc"; src -> careProviderReference.identifier as careProviderReferenceIdentifier then { src -> careProviderReferenceIdentifier.value = evaluate(careProvider, id) "3c12268a-ae91-4869-a16d-235c6982b8b0"; } "34491163-a91c-45ba-94fb-53b56530c103"; } "b3f51d40-9f15-402d-b08a-46b21edd67cd"; } "setRelatedPersonOrganization"; src.subjectOfCare as subjectOfCare then { src -> tgt.patient as patient then { src -> patient.reference = evaluate(subjectOfCare, 'Patient/'+id) "78ad13d4-3940-483c-94ca-ff677ad7100b"; src -> patient.display = evaluate(subjectOfCare, display) "5a8735bf-6abb-4d3d-b47b-0c29a3a3f991"; } "441264c5-0599-4567-adbc-220688927af2"; } "setRelatedPersonPatient"; src.relationship as relationship -> tgt.relationship as rel then { src -> rel.coding as coding then { src -> coding.system = 'https://fhir.hl7.org.uk/CodeSystem/UKCore-AdditionalPersonRelationshipRole' "8d5382e5-d08e-477e-9690-86a51261e72a"; src -> coding.code = evaluate(relationship, code) "53334e1e-d46c-4d2f-bc1b-f115e846e794"; src -> coding.display = evaluate(relationship, display) "d2377e93-8a3c-473f-8f82-87e8abe188d0"; } "setRelationship"; src -> tgt.name as name then { src -> name.given = evaluate(src, name.given) "99828a34-9ad5-4894-b5b8-504aeaf814cc"; src -> name.family = evaluate(src, name.family) "bf0aa1f7-9c59-4cf7-a2fb-4e820e199229"; } "setRelatedPersonName"; src.contactDetails as emailContactDetails then { emailContactDetails.emailAddressDetails as emailAddressDetails -> tgt.telecom as telecom then { src -> telecom.system = 'email' "4e46ae0f-8a0d-47d1-9e99-d4cf31ced945"; src -> telecom.value = evaluate(emailAddressDetails, emailAddress) "cda1226a-4e01-4091-b93c-13ccada9368e"; src -> telecom.rank = evaluate(emailAddressDetails, preferredOrder) "6b7c5508-1141-4ee6-a7d5-e7c408e521f6"; src -> src.emailAddressType = create('Coding') as etvt then { src -> etvt.system = 'https://data.digitisingsocialcare.co.uk/mods/v1/person-email-address-type' "3b30a006-9dc4-4566-ac42-98f06ef88c3a"; src -> etvt.code = evaluate(emailAddressDetails, type.code) "33a5f1b1-4a57-4426-a735-414253549a0d"; src -> telecom.use = translate(etvt, 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/ConceptMap/MODS-FHIREmailContactPointUse-1', 'code') "96f33131-b850-41e5-95f9-f9551fe3638a"; src -> telecom.extension as emailTypeExt then { src -> emailTypeExt.url = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-PersonEmailAddressType' "f90680fc-b883-4dd8-9b2f-fdc312340e0d"; src -> emailTypeExt.valueCoding as emailTypeValueCoding then { src -> emailTypeValueCoding.system = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-EmailAddressType-1' "52d6c865-9f40-4f4c-87de-b58260875b09"; src -> emailTypeValueCoding.code = evaluate(emailAddressDetails, type.code) "f0b10acb-ce40-4183-996f-17cdc8138b91"; src -> emailTypeValueCoding.display = evaluate(emailAddressDetails, type.display) "f30d3ecc-a036-4bef-ad77-f503cc1ce627"; } "db4e6da1-0b42-42bb-bd68-0e878f4d7fae"; } "fc187ce1-29d9-4c08-af78-2cfeb1af3155"; } "34434b22-9d09-4e7a-97ed-ea1de835d0e1"; } "setRelatedPersonEmailAddress"; src.contactDetails as telephoneContactDetails then { telephoneContactDetails.telephoneDetails as telephoneNumberDetails -> tgt.telecom as telecom then { src -> telecom.system = 'phone' "897eb342-01b4-4432-8298-d726f00ee3ed"; src -> telecom.value = evaluate(telephoneNumberDetails, telephoneNumber) "08fe1c78-2d83-4a60-abbf-20129c16c256"; src -> telecom.rank = evaluate(telephoneNumberDetails, preferredOrder) "6b1eed15-fde0-465c-8b63-9751f4385cd1"; src -> src.telephoneType = create('Coding') as ttvt then { src -> ttvt.system = 'https://data.digitisingsocialcare.co.uk/mods/v1/person-telephone-type' "e2864900-39b5-434a-a630-110bc5193f11"; src -> ttvt.code = evaluate(telephoneNumberDetails, type.code) "b3eb9a1c-82df-4f4f-84b1-c8155e3b72ca"; src -> telecom.use = translate(ttvt, 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/ConceptMap/MODS-FHIRTelephoneContactPointUse-1', 'code') "aa0fc8d5-370e-4b2a-8985-f8cd140b6686"; } "f4fa631d-8838-4d4c-a10d-a18c0033ff7e"; src -> telecom.extension as telephoneTypeExt then { src -> telephoneTypeExt.url = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-PersonTelephoneNumberType' "519ac2f9-cba1-4d02-9114-a12562a77a67"; src -> telephoneTypeExt.valueCoding as telephoneNumberTypeCoding then { src -> telephoneNumberTypeCoding.system = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-TelephoneNumberType-1' "2f60cd96-c1ca-4631-b7cb-1b680ab29ffd"; src -> telephoneNumberTypeCoding.code = evaluate(telephoneNumberDetails, type.code) "d14f04b2-e4ec-46fc-a9c1-3c9d0717d157"; src -> telephoneNumberTypeCoding.display = evaluate(telephoneNumberDetails, type.display) "b6343bc6-64d5-43dd-bb48-6a2051dc4b6e"; } "95c87854-7b97-4159-893f-2cbea091ee1b"; } "783b3da7-b7f9-41c8-933d-73337bf44060"; } "setRelatedPersonTelephone"; src.address as address where $this.country.empty().not() -> src.addresses as addresses then { addresses as addr then { address -> addr.line = evaluate(address, addressEntry1) "a5d2ab90-f69f-4ab1-bba3-1482f81e9c11"; address -> addr.line = evaluate(address, addressEntry2) "08d9c4f7-5944-44ce-b59d-32d3ce6b2377"; address -> addr.line = evaluate(address, addressEntry3) "2cb70e3e-4426-4f56-abc6-8f1973f1c208"; address -> addr.line = evaluate(address, addressEntry4) "f0eda907-1ed9-48ea-8220-600505a3da1f"; address -> addr.postalCode = evaluate(address, postCode) "7f17f984-1dec-4ecc-b894-9da5a5108453"; address -> addr.country = evaluate(address, country.display) "e53b2580-95fb-4338-9283-bb98225aa35a"; address -> addr.extension as extension then { address -> extension.url = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-AddressCountry' "35d73d21-c2ad-4ab5-8d6e-27ec8f887826"; address -> extension.valueCoding as countryCoding then { address -> countryCoding.system = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-Country-1' "ed2d4ecf-cc43-4e37-850b-b98a9d710170"; address -> countryCoding.code = evaluate(address, country.code) "6e3c48ce-5dee-4f38-8345-18a0288a43ed"; address -> countryCoding.display = evaluate(address, country.display) "b92a7c6d-aaa6-4147-ac89-d1cd4cb6fc2b"; } "f11261e4-3ba9-4b91-a3a9-be862c2399a9"; } "14f2b8cc-fc6e-462e-8d9a-afcd5b9a8f97"; } "1456c4de-1f10-4d63-ad36-b30dc65d840a"; addresses -> tgt.address "3a1f704e-cbbe-4f4a-9135-05a47976b7ed"; } "setRelatedPersonAddressWithCountry"; }; }; }; }