Health Cloud HL7 v2 SIU Listener - Implementation Template

(0 reviews)

Developer guide

SIU Application Dev Guide

The Health Cloud SIU application uses the following DataWeave modules to map between HL7 v2 and Health Cloud formats.

ModuleDescription
addressMaps the FHIR address object.
addresstypeMaps the address type object.
codeableconceptMaps the CodeableConcept object.
doctorsThis module defines some common functions to support doctor lookups and processing.
driverlicensenumberMaps the driver license number object.
extendedpersonnameMaps the extended person name object.
extendedtelecommunicationnumberMaps the extended telecommunication number object.
genderMaps the gender object.
identifierMaps the FHIR identifier object.
idtypesMaps the ID type object.
LibSIUThis module defines functions needed to convert an HL7 v2 SIU message into the Clinical data model of Salesforce Health Cloud.
maritalstatusMaps the marital status object.
nametypeMaps the name type object.
telecomequipmenttypeMaps the Telecom Equipment Type object.
telecomusecodeMaps the telecom use code object.
utilThis module defines a number of common utility functions.

address

Maps the FHIR address object.

Source: .src/main/resources/dwl/resources/datatypes/address.dwl

Functions

fun mapAddress (obj)

Maps the provided object to the FHIR address.

param obj is an object with XAD fields that can be mapped to an address. (ORC-22, RXA-28 ...)
return A FHIR formatted Address object.

(back to top)

addresstype

Maps the address type object.

Source: .src/main/resources/dwl/resources/codesystem/addresstype.dwl

Functions

fun mapAddressType (code)

Maps the provided XAD-07 field to the proper address type object.

param code is a XAD-07 field to map.
return An address type object.

(back to top)

codeableconcept

Maps the CodeableConcept object.

Source: .src/main/resources/dwl/resources/datatypes/codeableconcept.dwl

Functions

fun mapCodeableConcept (obj)

Maps the provided object into a CodeableConcept object.

param obj is the object to map from.
return A CodeableConcept object.

fun mapCodeableConcept (obj, hasMappingFunct, mappingFunct)

Maps the provided object with the provided mapping function into a CodeableConcept object.

param obj is the object to map from.
param hasMappingFunct is a boolean with true for has a provided mapping function and false for not. If set to true mappingFunct must be a vaild mapping function reference.
param mappingFunct is a function reference with the function to call to provide the mapping. This function definition must take a single argument.
return A CodeableConcept object.

fun mapCodeableConceptDoMapping (obj, hasMappingFunct, mappingFunct)

This function produces the codeable concept mappings. It's broken out into it's own function so it can be called multiple times from mapCodeableConcept.

param obj is the object to map from.
param hasMappingFunct is a boolean with true for has a provided mapping function and false for not. If set to true mappingFunct must be a vaild mapping function reference.
param mappingFunct is a function reference with the function to call to provide the mapping. This function definition must take a single argument.
return A CodeableConcept object.

fun mapCodeableConceptAdmissionTypes (code)

This function maps the provided code to the appropriate codeableconcept object for Encounter Admission Types. This function is provided as a pointer to mapCodeableConcept.

param code is the PV1-04 CWE-01 value.
return A CodeableConcept object.

(back to top)

doctors

This module defines some common functions to
support doctor lookups and processing.

Source: .src/main/resources/dwl/resources/doctors.dwl

Functions

fun createQuery (doctorIds)

Creates the HC query to get the IdValue and ParentRecordId from the Identifier table with the supplied list of values.

param doctorIds is a list of doctor Ids to query.
return A HC query string.

fun processQueryResults (idList, queryResult)

Processes the HC query results along with the provided Id list to create a list of parent record Ids that matches up with the provided idList identifier values. If a query result for a provided idList value isn't present then a null placeholder is put in it's place in the output.

param idList is a list of the Id values to create a HC list for.
return A list of HC Ids that match up to the input idList with nulls set where no value was found.

fun createHealthcareProviderQuery (doctorIds)

Creates the HC query to get the AccountId and Id from the HealthcareProvider table with the supplied list of values.

param doctorIds is a list of doctor Account Ids to query.
return A HC query string.

fun processHealthcareProviderQueryResults (idList, queryResult)

Processes the HC query results along with the provided Id list to create a list of HealthcareProvider Ids that matches up with the provided Account Id values. If a query result for a provided idList value isn't present then a null placeholder is put in it's place in the output.

param idList is a list of the Id values to create a HC list for.
return A list of HealthcareProvider Ids that match up to the input Account Id list with nulls set where no value was found.

fun processHealthcareProvidersByType (identifierValueList, providersList)

Processes the HC Providers along with the provided IdentifierValue list to create a list of HealthcareProvider Ids that matches up with the specified provider type. If a query result for a provided idList value isn't present then an empty list will be is put in it's place in the output.

param identifierValueList is a list of the Id values to create a HC list for.
param providersList is a list of providers with Id and IdentifierValues
return A list of HealthcareProvider Ids that match up to the input Account Id list with nulls set where no value was found.

(back to top)

driverlicensenumber

Maps the driver license number object.

Source: .src/main/resources/dwl/resources/datatypes/driverlicensenumber.dwl

Functions

fun mapDriverLicenseNumber (obj)

Maps the driver license number object with the provided PID PID-20 object.

param obj is a PID-20 object.
return A DriverLicenseNumber object.

(back to top)

extendedpersonname

Maps the extended person name object.

Source: .src/main/resources/dwl/resources/datatypes/extendedpersonname.dwl

Functions

fun mapExtendedPersonName (xpn)

Maps the extended person name with the provided XPN object.

param xpn is an XPN object.
return An ExtendedPersonName object or null if xpn is null.

(back to top)

extendedtelecommunicationnumber

Maps the extended telecommunication number object.

Source: .src/main/resources/dwl/resources/datatypes/extendedtelecommunicationnumber.dwl

Functions

fun mapExtendedTelecommunicationNumber (xtn)

Maps the extended telecommunication number with the provided xtn object.

param xtn is the provided object to map.
return An ExtendedTelecommunicationNumber object.

(back to top)

gender

Maps the gender object.

Source: .src/main/resources/dwl/resources/codesystem/gender.dwl

Functions

fun mapGender (code)

Maps the gender with the provided code.

param code is a string with the code to map.
return A Gender object.

(back to top)

identifier

Maps the FHIR identifier object.

Source: .src/main/resources/dwl/resources/datatypes/identifier.dwl

Functions

fun mapIdentifier (cx)

Maps the provided object to the FHIR identifier object.

param cx is the input object to map.
return An identifier object.

(back to top)

idtypes

Maps the ID type object.

Source: .src/main/resources/dwl/resources/codesystem/idtypes.dwl

Functions

fun mapIdTypes (code)

Maps the ID type with the provided code.

param code is a string with the ID type.
return An IdType object.

(back to top)

LibSIU

This module defines functions needed to convert an
HL7 v2 SIU message into the Clinical data model of Salesforce Health Cloud.

Source: .src/main/resources/dwl/hl7/LibSIU.dwl

Functions

fun getMRN (msg)

This function takes SIU message and locates the MRN number.

param msg is an SIU message.
return The MRN number or null if not found.

fun getResultIds (res)

This function takes the results of a Salesforce query and returns a list of IDs.

param res is a Salesforce query result.
return An array with a list of Ids found.

fun getCompositeResponseId (data, refId)

Gets the Id returned in the composite response for the provided reference Id.

param data is the composite response.
param refId is a string with the referenceId to match on.
return A string with the Id or null if not found.

fun getCompositeResponseRecords (data, refId)

Gets the records returned in the composite response for the provided reference Id.

param data is the composite response.
param refId is a string with the referenceId to match on.
return an array of records that are in composite response for the matching referenceId.

fun stripBlankCompositeRequests (compositeRequests)

Removes any composite requests where the number of items are less then or equal to 1. This is to remove blank requests.

param compositeRequests is the list of composite requests to strip.
return A list of composite requests.

fun getPersonAccount (msg, recordType)

Converts the provided SIU request message to the HealthCloud PersonAccount request object.

param msg is an SIU message.
param recordType is an ID with the PersonAccount record ID to use.
return A HealthCloud PersonAccount request object.

fun getAccount (msg)

Converts the provided SIU request message to the HealthCloud Account object.

param msg is an SIU message.
return A HealthCloud Account object.

fun getPersonName (msg, accountId)

Converts the provided SIU request message to the HealthCloud PersonName object list.

param msg is an SIU message.
param accountId is a string with the Account Id.
return A HealthCloud PersonName object list.

HL7 v2 SegmentSalesforce Object and FieldType
PID.2 - Patient External IDIdentifierObject
PID.3 - Patient Internal IDIdentifierObject
PID.4 - Alternate Patient IDIdentifierObject
PID.5 - Patient NamePersonNameObject
PID.7 - Datetime of BirthContact.BirthDateDate
PID.8 - SexContact.GenderPicklist
PID.9 - Patient AliasPersonNameObject
PID.11 - Patient AddressContactPointAddressObject
PID.13 - Phone Number - HomeContactPointPhone and ContactPointEmail Objects
PID.14 - Phone Number - BusinessContactPointPhone and ContactPointEmail Objects
PID.15 - Primary LangaugePersonLanguageObject
PID.16 - Marital StatusContact.MaritalStatusPicklist
PID.25 - Multiple Birth IndicatorContact.SequenceInMultipleBirthDouble
PID.29 - Patient Death Date and TimeContact.DeceasedDateDateTime
PID.40 - Patient Telecommunication InformationContactPointPhone and ContactPointEmail Objects

fun hcConvertPersonName (fhirObjList, accountId)

Converts the provided list of FHIR formatted patient names to the HealthCloud PersonName object list.

param msg is an SIU message.
param accountId is a string with the Account Id.
return A list of HealthCloud PersonName objects.

fun getIdentifiers (msg, idTypeIdMap, accountId)

Converts the provided SIU request message to the HealthCloud Identifier object list.

param msg is an SIU message.
param idTypeIdMap is an object with the IdType code -> IdType Id from HealthCloud map.
param accountId is a string with the Account Id.
return A HealthCloud Identifier object list.

fun hcConvertIdentifier (pid)

Converts the provided PID segment to a list of FHIR formatted identifier objects.

param pid is a HL7 v2 PID segment to get the identifiers from.
return A list of FHIR formatted identifier objects.

fun getContact (msg)

Converts the provided SIU request message to the HealthCloud Contact object.

param msg is an SIU message.
return A HealthCloud Contact object.

fun getPersonLanguage (msg, accountId)

Converts the provided SIU request message to the HealthCloud Person Language object.

param msg is an SIU message.
param accountId is a string with the Account Id.
return A HealthCloud Person Language object.

fun getContactPointAddress (msg, accountId)

Converts the provided SIU request message to the HealthCloud ContactPoint Address objectlist.

param msg is an SIU message.
param accountId is a string with the Account Id.
return A HealthCloud ContactPoint Address object list.

fun getContactPointPhone (msg, accountId)

Converts the provided SIU request message to the HealthCloud ContactPointPhone object list.

param msg is an SIU message.
param accountId is a string with the Account Id.
return A HealthCloud ContactPointPhone object list.

fun getContactPointEmail (msg, accountId)

Converts the provided SIU request message to the HealthCloud ContactPointEmail object list.

param msg is an SIU message.
param accountId is a string with the Account Id.
return A HealthCloud ContactPointEmail object list.

fun getClinicalEncounter (msg, admissionTypeCodeSetBundleId, dischargeDispositionCodeSetBundleId, patientId, facilityId, serviceAppointmentId, clinicalEncounterStatus)

Converts the provided SIU request message to the HealthCloud ClinicalEncounter object.

param msg is an SIU message.
param admissionTypeCodeSetBundleId is a string with the admission type CodeSetBundle Id to set for TypeId.
param dischargeDispositionCodeSetBundleId is a string with the discharge disposition CodeSetBundle Id.
param patientId is the patient related to the ClinicalEncounter.
param serviceAppointmentId Id of ther Service Appointment tagged to the Clinical Encounter.
param clinicalEncounterStatus status of the Clinical Encounter.
return A HealthCloud ClinicalEncounter object.

HL7 v2 SegmentSalesforce Object and FieldType
PV1.2 - Patient ClassClinicalEncounter.CategoryPicklist
PV1.3 - Assigned Patient LocationClinicalEncounterFacilityObject
PV1.4 - Admission TypeClinicalEncounter.TypeIdLookup: CodeSetBundle
PV1.5 - Preadmit NumberClinicalEncounter.PreAdmissionIdentifierIdLookup: Identifier
PV1.7 - Attending DoctorClinicalEncounterProviderObject
PV1.8 - Referring DoctorClinicalEncounterProviderObject
PV1.9 - Consulting DoctorClinicalEncounterProviderObject
PV1.10 - Hospital ServiceClinicalEncounter.ServiceTypePicklist
PV1.13 - Readmission IndicatorClinicalEncounter.ReadmissionCodeIdLookup: CodeSetBundle
PV1.14 - Admit SourceClinicalEncounter.AdmissionSourcePicklist
PV1.16 - VIP IndicatorClinicalEncounter.SpecialCourtesyPicklist
PV1.17 - Admitting DoctorClinicalEncounterProviderObject
PV1.18 - Patient TypeClinicalEncounter.TypeIdLookup: CodeSetBundle
PV1.19 - Visit IdentifierClinicalEncounterIdentifierObject
PV1.22 - Courtesy CodeClinicalEncounter.SpecialCourtesyPicklist
PV1.36 - Discharge DispositionClinicalEncounter.DischargeDispositionIdLookup: CodeSetBundle
PV1.37 - Discharged to LocationClinicalEncounter.DestinationFacilityIdLookup: HealthcareFacility
PV1.37 - Discharged to LocationClinicalEncounter.DestinationOrganizationIdLookup: Account
PV1.38 - Diet TypeClinicalEncounter.DietPreferencePicklist
PV1.44 - Admit DatetimeClinicalEncounter.StartDateDateTime
PV1.45 - Discharge DatetimeClinicalEncounter.EndDateDateTime
PV1.50 - Alternate Visit IDClinicalEncounterIdentifierObject
PV2.3 - Admit ReasonClinicalEncounterReason.ReasonCodeIdLookup: CodeSetBundle
PV2.7 - Visit User CodeClinicalAlert.CodeIdLookup: CodeSetBundle
PV2.11 - Actual Length of Inpatient StayClinicalEncounter.DurationDouble
PV2.11 - Actual Length of Inpatient StayClinicalEncounter.DurationUnitIdLookup: UnitOfMeasure
PV2.25 - Patient Status CodeClinicalEncounter.PriorityIdLookup: CodeSetBundle

fun updateServiceAppointmentOnClinicalEncounter (msg, serviceAppointmentId)

Converts the provided SIU request message to the HealthCloud ClinicalEncounter object.

param msg is an SIU message.
param status is the status of ClinicalEncounter.
return A HealthCloud ClinicalEncounter object.

fun mapClinicalEncounterFacilityStatus (val)

This function maps the Status of a Clinical Encounter Facility based on ServiceAppointment Status.

param val is the service appointment status from SCH Segment.
return a status of Clinical Encounter as in Health Cloud - Defaulted to Planned Status.

fun mapEncounterClass (pv1_02)

This function creates the Encounter Class object.

param pv1_02 is the PV1-01 object.
return An Encounter Class object.

fun mapClinicalEncounterCategory (val)

Maps the value for PV1-02 to a matching ClinicalEncounter Category or sets as Unknown if a suitable one can't be matched.

param val is the PV1-02 value.
return A HealthCloud picklist value for ClinicalEncounter Category.

fun mapServiceType (val)

Maps the value for PV1-10 to a matching ClinicalEncounter ServiceType.

param val is the PV1-10 value.
return A HealthCloud picklist value for ClinicalEncounter ServiceType.

fun mapAdmissionSource (val)

Maps the value for PV1-14 to a matching ClinicalEncounter AdmissionSource.

param val is the PV1-14 value.
return A HealthCloud picklist value for ClinicalEncounter AdmissionSource.

fun mapCodeableConceptReadmissionIndicator (code)

This function maps the provided code to the appropriate codeableconcept object for Encounter Readmission Indicator. This function is provided as a pointer to mapCodeableConcept.

param code is the PV1-13 CWE-01 value.
return A CodeableConcept object.

fun mapCodeableConceptEncounterPriority (code)

This function maps the provided code to the appropriate codeableconcept object for Encounter Priority. This function is provided as a pointer to mapCodeableConcept.

param code is the PV2-25 CWE-01 value.
return A CodeableConcept object.

fun getClinicalEncounterFacility (msg, facilityId, clinicalEncounterId)

Converts the provided SIU request message to the HealthCloud ClinicalEncounterFacility object.

param msg is an SIU message.
param facilityId is the HC facility Id to use.
param clinicalEncounterId is the HC ClinicalEncounter Id to use.
param status is the status of ClinicalEncounterFacility.
return A HealthCloud ClinicalEncounterFacility object.

fun getClinicalEncounterProvider (msg, doctorIds, clinicalEncounterId)

Converts the provided SIU request message to the HealthCloud ClinicalEncounterProvider object list in case PV1 Segment exists.

param msg is an SIU message.
param attendingDoctorIds is a list of Practitioner Ids for attending doctors.
param referringDoctorIds is a list of Practitioner Ids for referring doctors.
param consultingDoctorIds is a list of Practitioner Ids for consulting doctors.
param admittingDoctorIds is a list of Practitioner Ids for admitting doctors.
param clinicalEncounterId is the HC ClinicalEncounter Id to use.
return A HealthCloud ClinicalEncounterProvider object list.

fun getClinicalEncounterIdentifier (msg, clinicalEncounterId)

Converts the provided SIU request message to the HealthCloud ClinicalEncounterIdentifier object.

param msg is an SIU message.
param clinicalEncounterId is the HC ClinicalEncounter Id to use.
return A HealthCloud ClinicalEncounterIdentifier object.

fun getClinicalEncounterReason (msg, reasonCodeCodeSetBundleId, clinicalEncounterId)

Converts the provided SIU request message to the HealthCloud ClinicalEncounterReason object.

param msg is an SIU message.
param reasonCodeCodeSetBundleId is the CodeSetBundle Id of the reason code.
param clinicalEncounterId is the HC ClinicalEncounter Id to use.
return A HealthCloud ClinicalEncounterReason object.

fun getServiceAppointmentStatus (msg)

Maps the status of provided SIU request message to the HealthCloud ServiceAppointment object.

param msg is an SIU message data.
return Status of HealthCloud ServiceAppointment Status.

fun getAppointmentReason (msg)

Maps the Appointment Reason of provided SIU request message to the HealthCloud ServiceAppointment object.

param msg is an SIU message data.
return Status of HealthCloud ServiceAppointment Appointment Reason.

fun getClinicalAlert (msg, clinicalAlertCodeSetBundleId, accountId, codeSetUndefined, clinicalEncounterId)

Converts the provided SIU request message to the HealthCloud ClinicalAlert object.

param msg is an SIU message.
param clinicalAlertCodeSetBundleId is the CodeSetBundle Id of the clinical alert.
param accountId is a string with the Account Id.
param codeSetUndefined is the CodeSetBundle undefined value to be used when no value is available.
param clinicalEncounterId is the HC ClinicalEncounter Id to use.
return A HealthCloud ClinicalAlert object.

(back to top)

maritalstatus

Maps the marital status object.

Source: .src/main/resources/dwl/resources/codesystem/maritalstatus.dwl

Functions

fun mapMaritalStatus (code: String)

Maps the marital status with the provided code.

param code is a string with the status.
return A MaritalStatus object.

(back to top)

nametype

Maps the name type object.

Source: .src/main/resources/dwl/resources/codesystem/nametype.dwl

Functions

fun mapNameType (code: String)

Maps the name type with the provided code.

param code is a string with the status.
return A NameType object.

(back to top)

telecomequipmenttype

Maps the Telecom Equipment Type object.

Source: .src/main/resources/dwl/resources/codesystem/telecomequipmenttype.dwl

Functions

fun mapTelecomEquipmentType (code)

Maps the provided XAD-07 field to the proper Telecom Equipment Type object.

param code is a XTN-03 field to map.
return An telecom equipment type object or null if not found.

(back to top)

telecomusecode

Maps the telecom use code object.

Source: .src/main/resources/dwl/resources/codesystem/telecomusecode.dwl

Functions

fun mapTelecomUseCode (code: String)

Maps the telecom use code with the provided code.

param code is a string with the code to map.
return A TelecomUseCode object.

(back to top)

util

This module defines a number of common
utility functions.

Source: .src/main/resources/dwl/resources/util.dwl

Functions

fun mapGuid (InStr: String)

Generates a GUID with the provided string. This is helpful because the GUID generated is predictable.

param InStr is the input string to the hash function.
return A string with the predictable hashed value.

fun toString (data)

Converts anything to a JSON string representation. Note that if you are serializing an object datetime fields may have local timezone information so this can cause issues with repeatability for munit tests.

param data is the data type to convert to JSON.
return A JSON formatted string of the provided variable.

fun hl7ConvertDateTime (timeStr)

Converts a HL7 v2 datetime string to the expected datetime string.

param timeStr is a HL7 v2 datetime string formatted YYYYMMDDHHMMSS.
return A timestamp string formatted YYYY-MM-DDTHH:MM:SS.000Z.

fun addDurationToDateTime (timeStr, duration, durationUnits)

Add duration to datetime string to and return new datetime string.

param timeStr is a HL7 v2 datetime string formatted YYYY-MM-DDTHH:MM:SS.000Z.
param duration is a number
param durationUnits units is in minutes or hours or seconds
return A timestamp string formatted YYYY-MM-DDTHH:MM:SS.000Z.

fun hl7ConvertDate (dateStr)

Converst a HL7 v2 date to date string.

param dateStr is a HL7 v2 date string formatted YYYYMMDD.
return A date string formatted YYYY-MM-DD.

fun removeNull (arr: Array)

Removes all null items from an array.

param arr is an array.
return An array with null items removed.

fun removeNull (obj: Object)

Removes all null values from an object.

param obj is an object.
return An object with null values removed.

fun clean (obj: Object)

Cleans the provided object of blank strings, null values, empty objects, and empty arrays.

param obj is an Object to clean.
return A cleaned object.

fun clean (arr: Array)

Cleans the provided array of blank strings, null values, empty objects, and empty arrays.

param arr is an Array to clean.
return A cleaned Array.

fun strip (item, key: String)

Recursively strips the provided key name from any objects in the provided item.

param item is an value.
param key is a String with the object key name to strip.
return The provided value with any instances of the key removed.

fun toEpochSeconds (str)

Converts the provided HL7 v2 datetime string and converts it to a number with the number of seconds since epoch.

param str is a HL7 v2 datetime string.
return A number with number of seconds since epoch.

fun fromEpochSeconds (seconds)

Converts the provided datetime as a number with seconds since epoch into the FHIR formatted datetime string.

param seconds is a number with the seconds since epoch.
return A string with the FHIR formatted datetime string.

fun replacePair (obj: Object, key: String, val)

Replaces a key value pair in an object with the provided object and key value set.

param obj is an object to replace in.
param key is a string to match on.
param val is the value to replace with.
return An object with the replaced pair or null if no object is provided.

(back to top)


Reviews

TypeTemplate
OrganizationMuleSoft
Published by
MuleSoft Solutions
Published onFeb 26, 2024
Asset overview

Asset versions for 1.2.x

Asset versions
VersionActions
1.2.0