原子方法hl7SegmentToXml.ftl:
<#--功能:将hl7的相应消息段装换成为xml格式-->
<#--编写人:杨江兵-->
<#--output_segment:需要转换的hl7消息段-->
<#--output_segment格式范例:inputEDI.getElementAt("MSH")-->
<#macro getHl7Xml output_segment>
<#assign type = output_segment[0]+output_segment[1]+output_segment[2]>
<#if type == "MSH">
<MSH>
<SouSysTem>${output_segment.getElementAt("SendingApplication.NamespaceID")}</SouSysTem>
<TarSystem>${output_segment.getElementAt("ReceivingApplication.NamespaceID")}</TarSystem>
<BusiCode>${output_segment.getElementAt("ReceivingApplication.UniversalID")}</BusiCode>
<SendingFacility>${output_segment.getElementAt("SendingFacility.NamespaceID")}</SendingFacility>
<MsgType>${output_segment.getElementAt("MessageType")}</MsgType>
<MsgTime>${output_segment.getElementAt("DateTimeOfMessage")}</MsgTime>
<MsgId>${output_segment.getElementAt("MessageControlID")}</MsgId>
</MSH>
<#elseif type == 'PID'>
<PID>
<PatientId>${output_segment.getElementAt("PatientID.IDNumber")}</PatientId>
<#assign donull = output_segment.getElementAt("PatientIdentifierList").isEmpty()>
<#if donull=="true">
<IdCard></IdCard>
<MedicareCard></MedicareCard>
<OutPid></OutPid>
<InPid></InPid>
<#else>
<#assign i = 0>
<#list output_segment.getElementAt("PatientIdentifierList").allChildren as PatientIdentifierList>
<#assign i = i+1>
<#if i==1>
<IdCard>${PatientIdentifierList.getElementAt("CheckDigit")}</IdCard>
<#else>
<IdCard></IdCard>
</#if>
<#if i==2>
<MedicareCard>${PatientIdentifierList.getElementAt("CheckDigit")}</MedicareCard>
<#else>
<MedicareCard></MedicareCard>
</#if>
<#if i==3>
<OutPid>${PatientIdentifierList.getElementAt("CheckDigit")}</OutPid>
<#else>
<OutPid></OutPid>
</#if>
<#if i==4>
<InPid>${PatientIdentifierList.getElementAt("CheckDigit")}</InPid>
<#else>
<InPid></InPid>
</#if>
</#list>
</#if>
<#assign donull = output_segment.getElementAt("PatientName").isEmpty()>
<#if donull=="true">
<PatientName></PatientName>
<#else>
<PatientName>${output_segment.getElementAt("PatientName[0].FamilyName.Surname")}</PatientName>
</#if>
<PatientSex>${output_segment.getElementAt("Sex")}</PatientSex>
<BirthDate>${output_segment.getElementAt("DateTimeOfBirth")}</BirthDate>
<MaritalStatus>${output_segment.getElementAt("MaritalStatus.Identifier")}</MaritalStatus>
<#assign donull = output_segment.getElementAt("EthnicGroup").isEmpty()>
<#if donull=="true">
<Nation></Nation>
<#else>
<Nation>${output_segment.getElementAt("EthnicGroup[0].Identifier")}</Nation>
</#if>
<#assign donull = output_segment.getElementAt("HomePhoneNumber").isEmpty()>
<#if donull=="true">
<PhoneNumber></PhoneNumber>
<#else>
<PhoneNumber>${output_segment.getElementAt("HomePhoneNumber[0].PhoneNumberString")}</PhoneNumber>
</#if>
<Nationality>${output_segment.getElementAt("CountyCode")}</Nationality>
<#assign donull = output_segment.getElementAt("PatientAddress").isEmpty()>
<#if donull=="true">
<PatientAddress></PatientAddress>
<#else>
<PatientAddress>${output_segment.getElementAt("PatientAddress[0].StreetAddress.StreetOrMailingAddress")}</PatientAddress>
</#if>
<BirthAddress>${output_segment.getElementAt("BirthPlace")}</BirthAddress>
<DeathIndicator>${output_segment.getElementAt("PatientDeathIndicator")}</DeathIndicator>
<DeathTime>${output_segment.getElementAt("PatientDeathDateAndTime")}</DeathTime>
</PID>
<#elseif type == 'EVN'>
<EVN>
<RecordedTime>${output_segment.getElementAt("RecordedDateTime")}</RecordedTime>
<#assign donull = output_segment.getElementAt("OperatorID").isEmpty()>
<#if donull=="true">
<OperatorId></OperatorId>
<OperatorName></OperatorName>
<#else>
<OperatorId>${output_segment.getElementAt("OperatorID[0].IDNumber")}</OperatorId>
<OperatorName>${output_segment.getElementAt("OperatorID[0].FamilyName.Surname")}</OperatorName>
</#if>
<EventFacility>${output_segment.getElementAt("EventFacility.NamespaceID")}</EventFacility>
</EVN>
<#elseif type == 'NK1'>
<NK1>
<#assign donull = output_segment.getElementAt("NextOfKinName").isEmpty()>
<#if donull=="true">
<ContactName></ContactName>
<#else>
<ContactName>${output_segment.getElementAt("NextOfKinName[0].FamilyName.Surname")}</ContactName>
</#if>
<Relationship>${output_segment.getElementAt("Relationship.Identifier")}</Relationship>
<#assign donull = output_segment.getElementAt("Address").isEmpty()>
<#if donull=="true">
<ContactAddress></ContactAddress>
<#else>
<ContactAddress>${output_segment.getElementAt("Address[0].StreetAddress.StreetOrMailingAddress")}</ContactAddress>
</#if>
<#assign donull = output_segment.getElementAt("PhoneNumber").isEmpty()>
<#if donull=="true">
<ContactNumber></ContactNumber>
<#else>
<ContactNumber>${output_segment.getElementAt("PhoneNumber[0].PhoneNumberString")}</ContactNumber>
</#if>
</NK1>
<#elseif type == 'PV1'>
<PV1>
<PatientClass>${output_segment.getElementAt("PatientClass")}</PatientClass>
<DeptId>${output_segment.getElementAt("AssignedPatientLocation.PointOfCare")}</DeptId>
<WardId>${output_segment.getElementAt("AssignedPatientLocation.Room")}</WardId>
<Bed>${output_segment.getElementAt("AssignedPatientLocation.Bed")}</Bed>
<Clinic>${output_segment.getElementAt("AssignedPatientLocation.Facility.NamespaceID")}</Clinic>
<#assign donull = output_segment.getElementAt("AttendingDoctor").isEmpty()>
<#if donull=="true">
<DoctorId></DoctorId>
<DoctorName></DoctorName>
<#else>
<DoctorId>${output_segment.getElementAt("AttendingDoctor[0].IDNumber")}</DoctorId>
<DoctorName>${output_segment.getElementAt("AttendingDoctor[0].FamilyName.Surname")}</DoctorName>
</#if>
<#assign donull = output_segment.getElementAt("AdmittingDoctor").isEmpty()>
<#if donull=="true">
<AdmitDoctorId></AdmitDoctorId>
<AdmitDoctorName></AdmitDoctorName>
<#else>
<AdmitDoctorId>${output_segment.getElementAt("AdmittingDoctor[0].IDNumber")}</AdmitDoctorId>
<AdmitDoctorName>${output_segment.getElementAt("AdmittingDoctor[0].FamilyName.Surname")}</AdmitDoctorName>
</#if>
<VisitNumber>${output_segment.getElementAt("VisitNumber.IDNumber")}</VisitNumber>
<AdmitTime> ${output_segment.getElementAt("AdmitDateTime")}</AdmitTime>
<#assign donull = output_segment.getElementAt("DischargeDateTime").isEmpty()>
<#if donull=="true">
<DischargeTime></DischargeTime>
<#else>
<DischargeTime>${output_segment.getElementAt("DischargeDateTime[0]")}</DischargeTime>
</#if>
</PV1>
<#elseif type == 'ORC'>
<ORC>
<OrderControl>${output_segment.getElementAt("OrderControl")}</OrderControl>
<OrderNumber>${output_segment.getElementAt("PlacerOrderNumber.EntityIdentifier")}</OrderNumber>
<#assign donull = output_segment.getElementAt("QuantityTiming").isEmpty()>
<#if donull=="true">
<Frequency></Frequency>
<FrequencyInterval></FrequencyInterval>
<FrequencyIntervalUnit></FrequencyIntervalUnit>
<#else>
<Frequency>${output_segment.getElementAt("QuantityTiming[0].Quantity.Quantity")}</Frequency>
<FrequencyInterval>${output_segment.getElementAt("QuantityTiming[0].Interval.RepeatPattern")}</FrequencyInterval>
<FrequencyIntervalUnit>${output_segment.getElementAt("QuantityTiming[0].Duration")}</FrequencyIntervalUnit>
</#if>
<TransactionTime>${output_segment.getElementAt("DateTimeOfTransaction")}</TransactionTime>
<#assign donull = output_segment.getElementAt("EnteredBy").isEmpty()>
<#if donull=="true">
<EnteredByName></EnteredByName>
<#else>
<EnteredByName>${output_segment.getElementAt("EnteredBy[0].IDNumber")}</EnteredByName>
</#if>
<#assign donull = output_segment.getElementAt("VerifiedBy").isEmpty()>
<#if donull=="true">
<VerifiedByName></VerifiedByName>
<#else>
<VerifiedByName>${output_segment.getElementAt("VerifiedBy[0].IDNumber")}</VerifiedByName>
</#if>
<#assign donull = output_segment.getElementAt("OrderingProvider").isEmpty()>
<#if donull=="true">
<OrderDoctorId></OrderDoctorId>
<OrderDoctorName></OrderDoctorName>
<#else>
<OrderDoctorId>${output_segment.getElementAt("OrderingProvider[0].IDNumber")}</OrderDoctorId>
<OrderDoctorName>${output_segment.getElementAt("OrderingProvider[0].FamilyName.Surname")}</OrderDoctorName>
</#if>
<EffectiveTime>${output_segment.getElementAt("OrderEffectiveDateTime")}</EffectiveTime>
<EnteringDeptId>${output_segment.getElementAt("EnteringOrganization.Identifier")}</EnteringDeptId>
<EnteringDeptName>${output_segment.getElementAt("EnteringOrganization.Text")}</EnteringDeptName>
</ORC>
<#elseif type == 'OBR'>
<OBR>
<ExecDeptId>${output_segment.getElementAt("FillerOrderNumber.EntityIdentifier")}</ExecDeptId>
<ExecDeptName>${output_segment.getElementAt("FillerOrderNumber.NamespaceID")}</ExecDeptName>
<ItemId>${output_segment.getElementAt("UniversalServiceID.Identifier")}</ItemId>
<ItemName>${output_segment.getElementAt("UniversalServiceID.Text")}</ItemName>
<Priority>${output_segment.getElementAt("Priority")}</Priority>
<CheckTime>${output_segment.getElementAt("ObservationDateTime")}</CheckTime>
<CheckEndTime>${output_segment.getElementAt("ObservationEndDateTime")}</CheckEndTime>
<#assign donull = output_segment.getElementAt("CollectorIdentifier").isEmpty()>
<#if donull=="true">
<CollectorId></CollectorId>
<CollectorName></CollectorName>
<#else>
<CollectorId>${output_segment.getElementAt("CollectorIdentifier[0].IDNumber")}</CollectorId>
<CollectorName>${output_segment.getElementAt("CollectorIdentifier[0].FamilyName.Surname")}</CollectorName>
</#if>
<SpecimenReceivedTime>${output_segment.getElementAt("SpecimenReceivedDateTime")}</SpecimenReceivedTime>
<SpecimenPart>${output_segment.getElementAt("SpecimenSource.BodySite.Identifier")}</SpecimenPart>
<CheckMathodCode>${output_segment.getElementAt("SpecimenSource.BodySite.NameOfCodingSystem")}</CheckMathodCode>
<CheckMathodName>${output_segment.getElementAt("SpecimenSource.BodySite.Text")}</CheckMathodName>
<CheckType>${output_segment.getElementAt("SpecimenSource.BodySite.AlternateIdentifier")}</CheckType>
<BarcodeNumber>${output_segment.getElementAt("FillerField1")}</BarcodeNumber>
<SampleNumber>${output_segment.getElementAt("NumberOfSampleContainers")}</SampleNumber>
<ChargePractice>${output_segment.getElementAt("ChargeToPractice.DollarAmount.Quantity")}</ChargePractice>
<ResultsTime>${output_segment.getElementAt("ResultsRptStatusChngDateTime")}</ResultsTime>
<ResultStatus>${output_segment.getElementAt("ResultStatus")}</ResultStatus>
<#assign donull = output_segment.getElementAt("Transcriptionist").isEmpty()>
<#if donull=="true">
<ResultEntryId></ResultEntryId>
<ResultEntryName></ResultEntryName>
<#else>
<ResultEntryId>${output_segment.getElementAt("Transcriptionist[0].PersonName.IDNumber")}</ResultEntryId>
<ResultEntryName>${output_segment.getElementAt("Transcriptionist[0].PersonName.FamilyName.Surname")}</ResultEntryName>
</#if>
<ResultVerifyId>${output_segment.getElementAt("PrincipalResultInterpreter.PersonName.IDNumber")}</ResultVerifyId>
<ResultVerifyName>${output_segment.getElementAt("PrincipalResultInterpreter.PersonName.FamilyName.Surname")}</ResultVerifyName>
</OBR>
<#elseif type == 'AL1'>
<AL1>
<AllergenCode>${output_segment.getElementAt("AllergyCodeMnemonicDescription.Identifier")}</AllergenCode>
<AllergenName>${output_segment.getElementAt("AllergyCodeMnemonicDescription.Text")}</AllergenName>
<#assign donull = output_segment.getElementAt("AllergyReaction").isEmpty()>
<#if donull=="true">
<AllergenReaction></AllergenReaction>
<#else>
<AllergenReaction>${output_segment.getElementAt("AllergyReaction[0]")}</AllergenReaction>
</#if>
<IdentificationDate>${output_segment.getElementAt("IdentificationDate")}</IdentificationDate>
</AL1>
<#elseif type == 'DG1'>
<DG1>
<DiagnosisCodeMethod>${output_segment.getElementAt("DiagnosisCodingMethod")}</DiagnosisCodeMethod>
<DiagnosisCode>${output_segment.getElementAt("DiagnosisCode.Identifier")}</DiagnosisCode>
<DiagnosisName>${output_segment.getElementAt("DiagnosisCode.Text")}</DiagnosisName>
</DG1>
<#elseif type == 'RXO'>
<RXO>
<ItemId>${output_segment.getElementAt("RequestedGiveCode.Identifier")}</ItemId>
<ItemName>${output_segment.getElementAt("RequestedGiveCode.Text")}</ItemName>
<DrugStandard></DrugStandard>
<Manufacturer></Manufacturer>
<DrugTotal>${output_segment.getElementAt("RequestedGiveUnits.Identifier")}^${output_segment.getElementAt("RequestedGiveUnits.Text")}</DrugTotal>
<GiveUnits>${output_segment.getElementAt("RequestedGiveStrengthUnits.Identifier")}</GiveUnits>
<DosageForm>${output_segment.getElementAt("RequestedDosageForm.Text")}</DosageForm>
<#assign donull = output_segment.getElementAt("ProvidersPharmacyTreatmentInstructions").isEmpty()>
<#if donull=="true">
<ItemTypeCode></ItemTypeCode>
<ItemTypeName></ItemTypeName>
<DispenseFirstAmount></DispenseFirstAmount>
<#else>
<ItemTypeCode>${output_segment.getElementAt("ProvidersPharmacyTreatmentInstructions[0].Identifier")}</ItemTypeCode>
<ItemTypeName>${output_segment.getElementAt("ProvidersPharmacyTreatmentInstructions[0].Text")}</ItemTypeName>
<DispenseFirstAmount>${output_segment.getElementAt("ProvidersPharmacyTreatmentInstructions[0].NameOfCodingSystem")}</DispenseFirstAmount>
</#if>
<DispenseAmount>${output_segment.getElementAt("RequestedDispenseAmount")}</DispenseAmount>
<DispenseUnits>${output_segment.getElementAt("RequestedDispenseUnits.Identifier")}</DispenseUnits>
<#assign donull = output_segment.getElementAt("OrderingProvidersDEANumber").isEmpty()>
<#if donull=="true">
<ToxicDrugs></ToxicDrugs>
<#else>
<ToxicDrugs>${output_segment.getElementAt("OrderingProvidersDEANumber[0].IDNumber")}</ToxicDrugs>
</#if>
<AntibacterialDrugs></AntibacterialDrugs>
<#assign donull = output_segment.getElementAt("ProvidersAdministrationInstructions").isEmpty()>
<#if donull=="true">
<GiveRateTypeCode></GiveRateTypeCode>
<GiveRateTypeName></GiveRateTypeName>
<#else>
<GiveRateTypeCode>${output_segment.getElementAt("ProvidersAdministrationInstructions[0].Identifier")}</GiveRateTypeCode>
<GiveRateTypeName>${output_segment.getElementAt("ProvidersAdministrationInstructions[0].Text")}</GiveRateTypeName>
</#if>
<GivePer>${output_segment.getElementAt("RequestedGivePerTimeUnit")}</GivePer>
<#assign donull = output_segment.getElementAt("Indication").isEmpty()>
<#if donull=="true">
<Indications>
<Indication></Indication>
</Indications>
<#else>
<Indications>
<#list output_segment.getElementAt("Indication").allChildren as result>
<Indication>${result.getElementAt("Identifier")}^${result.getElementAt("Text")}</Indication>
</#list>
</Indications>
</#if>
<GiveRateAmount>${output_segment.getElementAt("RequestedGiveRateAmount")}</GiveRateAmount>
<GiveRateUnits>${output_segment.getElementAt("RequestedGiveRateUnits.Identifier")}</GiveRateUnits>
<TotalDailyDose>${output_segment.getElementAt("TotalDailyDose.Quantity")}</TotalDailyDose>
<TotalDailyDoseUnit>${output_segment.getElementAt("TotalDailyDose.Units.Identifier")}</TotalDailyDoseUnit>
</RXO>
<#elseif type == 'RXR'>
<RXR>
<MethodCode>${output_segment.getElementAt("RoutingInstruction.Identifier")}</MethodCode>
<MethodName>${output_segment.getElementAt("RoutingInstruction.Text")}</MethodName>
<UseSiteCode>${output_segment.getElementAt("Site.Identifier")}</UseSiteCode>
<UseSiteName>${output_segment.getElementAt("Site.Text")}</UseSiteName>
<UseDeviceCode>${output_segment.getElementAt("AdministrationDevice.Identifier")}</UseDeviceCode>
<UseDeviceName>${output_segment.getElementAt("AdministrationDevice.Text")}</UseDeviceName>
</RXR>
<#elseif type == 'Z01'>
<Z01>
<OperationNo>${output_segment.getElementAt("OperationNo")}</OperationNo>
<OperationCode>${output_segment.getElementAt("OperationCode")}</OperationCode>
<OperationName>${output_segment.getElementAt("OperationName")}</OperationName>
<OperationLevle>${output_segment.getElementAt("OperationLevle")}</OperationLevle>
<OperationFlag>${output_segment.getElementAt("OperationFlag")}</OperationFlag>
<OperationApplyStatus>${output_segment.getElementAt("OperationApplyStatus")}</OperationApplyStatus>
<PatientId>${output_segment.getElementAt("PatientIdentityList.IDNumber")}</PatientId>
<VisitNumber>${output_segment.getElementAt("PatientIdentityList.IDNumber")}${output_segment.getElementAt("PatientIdentityList.CheckDigit")}</VisitNumber>
<OperationDataTime>${output_segment.getElementAt("OperationDataTime")}</OperationDataTime>
<OperationRoom>${output_segment.getElementAt("OperationRoom.Identifier")}</OperationRoom>
<OperationRoomNo>${output_segment.getElementAt("OperationRoomNo")}</OperationRoomNo>
<OperationSequence>${output_segment.getElementAt("OperationSequence.Quantity.Quantity")}</OperationSequence>
<IsolationIndicator>${output_segment.getElementAt("IsolationIndicator")}</IsolationIndicator>
<OperatingDepartMent>${output_segment.getElementAt("OperatingDepartMent.PointOfCare")}</OperatingDepartMent>
<Surgeon>${output_segment.getElementAt("Surgeon.IDNumber")}</Surgeon>
<FirstAssistant>${output_segment.getElementAt("FirstAssistant.IDNumber")}</FirstAssistant>
<SecondAssistant>${output_segment.getElementAt("SecondAssistant.IDNumber")}</SecondAssistant>
<ThirdAssistant>${output_segment.getElementAt("ThirdAssistant.IDNumber")}</ThirdAssistant>
<FourthAssistant>${output_segment.getElementAt("FourthAssistant.IDNumber")}</FourthAssistant>
<AnesthesiaMethod>${output_segment.getElementAt("AnesthesiaMethod")}</AnesthesiaMethod>
<AnesthesiaDoctor>${output_segment.getElementAt("AnesthesiaDoctor.IDNumber")}</AnesthesiaDoctor>
<SecondAnesthesiaDoctor>${output_segment.getElementAt("SecondAnesthesiaDoctor.IDNumber")}</SecondAnesthesiaDoctor>
<ThirdAnesthesiaDoctor>${output_segment.getElementAt("ThirdAnesthesiaDoctor.IDNumber")}</ThirdAnesthesiaDoctor>
<AnesthesiaAssistant>${output_segment.getElementAt("AnesthesiaAssistant.IDNumber")}</AnesthesiaAssistant>
<SecondAnesthesiaAssistant>${output_segment.getElementAt("SecondAnesthesiaAssistant.IDNumber")}</SecondAnesthesiaAssistant>
<ThirdAnesthesiaAssistant>${output_segment.getElementAt("ThirdAnesthesiaAssistant.IDNumber")}</ThirdAnesthesiaAssistant>
<FourthAnesthesiaAssistant>${output_segment.getElementAt("FourthAnesthesiaAssistant.IDNumber")}</FourthAnesthesiaAssistant>
<BloodTranDoctor>${output_segment.getElementAt("BloodTranDoctor.IDNumber")}</BloodTranDoctor>
<FirstOperationNurse>${output_segment.getElementAt("FirstOperationNurse.IDNumber")}</FirstOperationNurse>
<SecondOperationNurse>${output_segment.getElementAt("SecondOperationNurse.IDNumber")}</SecondOperationNurse>
<ThirdOperationNurse>${output_segment.getElementAt("ThirdOperationNurse.IDNumber")}</ThirdOperationNurse>
<FirstSupplyNurse>${output_segment.getElementAt("FirstSupplyNurse.IDNumber")}</FirstSupplyNurse>
<SecondSupplyNurse>${output_segment.getElementAt("SecondSupplyNurse.IDNumber")}</SecondSupplyNurse>
<ThirdSupplyNurse>${output_segment.getElementAt("ThirdSupplyNurse.IDNumber")}</ThirdSupplyNurse>
<NotesOnOperation>${output_segment.getElementAt("NotesOnOperation")}</NotesOnOperation>
<ReqDateTime>${output_segment.getElementAt("ReqDateTime")}</ReqDateTime>
<OrderDoctorId>${output_segment.getElementAt("EnteredBy.IDNumber")}</OrderDoctorId>
<OperationPosition>${output_segment.getElementAt("OperationPosition")}</OperationPosition>
<SpecialEquipment>${output_segment.getElementAt("SpecialEquipment")}</SpecialEquipment>
<SpecialInfect>${output_segment.getElementAt("SpecialInfect")}</SpecialInfect>
<Incisionlevel>${output_segment.getElementAt("Incisionlevel")}</Incisionlevel>
<intertionstatus>${output_segment.getElementAt("intertionStatus")}</intertionstatus>
<ASAGrade>${output_segment.getElementAt("ASAGrade")}</ASAGrade>
<NNIS>${output_segment.getElementAt("NNIS")}</NNIS>
<IsReplant>${output_segment.getElementAt("IsReplant")}</IsReplant>
<IsEndoscopy>${output_segment.getElementAt("IsEndoscopy")}</IsEndoscopy>
<IsPerioperative>${output_segment.getElementAt("IsPerioperative")}</IsPerioperative>
<Operationsituation>${output_segment.getElementAt("OperationSituation")}</Operationsituation>
<InOperRoomDate>${output_segment.getElementAt("OperationStartTime")}</InOperRoomDate>
<OutOperRoomDate>${output_segment.getElementAt("OperationEndTime")}</OutOperRoomDate>
<AnesthesiaStartDate>${output_segment.getElementAt("OperationStartTime")}</AnesthesiaStartDate>
<AnesthesiaEndDate>${output_segment.getElementAt("OperationEndTime")}</AnesthesiaEndDate>
<OperStartDate>${output_segment.getElementAt("OperationStartTime")}</OperStartDate>
<OperEndDate>${output_segment.getElementAt("OperationEndTime")}</OperEndDate>
<InPACUDate>${output_segment.getElementAt("InPACUDate")}</InPACUDate>
<OutPACUDate>${output_segment.getElementAt("OutPACUDate")}</OutPACUDate>
<OperatorCode>${output_segment.getElementAt("OperatorCode")}</OperatorCode>
<RequestNo>${output_segment.getElementAt("RequestNo")}</RequestNo>
<OrderID>${output_segment.getElementAt("OrderID")}</OrderID>
</Z01>
<#elseif type == 'OBX'>
<OBX>
<ValueType>${output_segment.getElementAt("ValueType")}</ValueType>
<ObservationIdentifierCode>${output_segment.getElementAt("ObservationIdentifier.Identifier")}</ObservationIdentifierCode>
<ObservationIdentifierName>${output_segment.getElementAt("ObservationIdentifier.Text")}</ObservationIdentifierName>
<ObservationName>${output_segment.getElementAt("ObservationSubID")}</ObservationName>
<#assign donull = output_segment.getElementAt("ObservationValue").isEmpty()>
<#if donull=="true">
<ObservationValue></ObservationValue>
<#else>
<ObservationValue>${output_segment.getElementAt("ObservationValue[0]")}</ObservationValue>
</#if>
<Units>${output_segment.getElementAt("Units.Identifier")}</Units>
<ReferencesRange>${output_segment.getElementAt("ReferencesRange")}</ReferencesRange>
<#assign donull = output_segment.getElementAt("AbnormalFlags").isEmpty()>
<#if donull=="true">
<AbnormalFlags></AbnormalFlags>
<#else>
<AbnormalFlags>${output_segment.getElementAt("AbnormalFlags[0]")}</AbnormalFlags>
</#if>
<ResultStatus>${output_segment.getElementAt("ObservationResultStatus")}</ResultStatus>
<ResultXpath>${output_segment.getElementAt("UserDefinedAccessChecks")}</ResultXpath>
<ResultTime>${output_segment.getElementAt("DateTimeOfTheObservation")}</ResultTime>
<#assign donull = output_segment.getElementAt("ResponsibleObserver").isEmpty()>
<#if donull=="true">
<ResultObserverId></ResultObserverId>
<ResultObserverName></ResultObserverName>
<#else>
<ResultObserverId>${output_segment.getElementAt("ResponsibleObserver[0].IDNumber")}</ResultObserverId>
<ResultObserverName>${output_segment.getElementAt("ResponsibleObserver[0].FamilyName.Surname")}</ResultObserverName>
</#if>
<#assign donull = output_segment.getElementAt("EquipmentInstanceIdentifier").isEmpty()>
<#if donull=="true">
<EquipmentId></EquipmentId>
<#else>
<EquipmentId>${output_segment.getElementAt("EquipmentInstanceIdentifier[0].EntityIdentifier")}</EquipmentId>
</#if>
</OBX>
<#--查询部分-->
<#elseif type == 'QPD'>
<QPD>${output_segment.getElementAt("MessageQueryName.Identifier")}</QPD>
<QPD>${output_segment.getElementAt("MessageQueryName.Text")}</QPD>
<QPD>${output_segment.getElementAt("QueryTag")}</QPD>
<#list output_segment.getAllChildren("PatientList") as QPDpargam>
<#if QPDpargam !=''>
<QPD>${QPDpargam}</QPD>
</#if>
</#list>
<#elseif type == 'RDF'>
<#list output_segment.getElementAt("ColumnDescription").allChildren as RDF>
<RDF>${RDF.getElementAt("SegmentFieldName")}</RDF>
</#list>
<#elseif type == 'RCP'>
<RCP>
<QueryPriority>${output_segment.getElementAt("QueryPriority")}</QueryPriority>
<QuantityLimited>${output_segment.getElementAt("QuantityLimitedRequest")}</QuantityLimited>
<ResponseModality>${output_segment.getElementAt("ResponseModality")}</ResponseModality>
<DeliveryTime>${output_segment.getElementAt("ExecutionAndDeliveryTime")}</DeliveryTime>
<#assign donull = output_segment.getElementAt("SortbyField").isEmpty()>
<#if donull=="true">
<SortbyField></SortbyField>
<#else>
<SortbyField>${output_segment.getElementAt("SortbyField[0]")}</SortbyField>
</#if>
</RCP>
<#elseif type == 'MSA'>
<MSA>
<AcknowledgmentCode>${output_segment.getElementAt("AcknowledgementCode")}</AcknowledgmentCode>
<MsgId>${output_segment.getElementAt("MessageControlID")}</MsgId>
<TextMessage>${output_segment.getElementAt("TextMessage")},${output_segment.getElementAt("ErrorCondition")}</TextMessage>
</MSA>
<#elseif type == 'QAK'>
<QAK>
<QueryTag>${output_segment.getElementAt("QueryTag")}</QueryTag>
<ResponseStatus>${output_segment.getElementAt("QueryResponseStatus")}</ResponseStatus>
<HitCount>${output_segment.getElementAt("HitCount")}</HitCount>
</QAK>
<#elseif type == 'RDT'>
<RDT>
<#assign r1 = '<'>
<#assign r11 = '>'>
<#assign r2 = '</'>
<#assign i = 1>
<#list inputEDI.getElementAt("TableRow.RDF.ColumnDescription").allChildren as RDF>
<#assign re = RDF.getElementAt("SegmentFieldName")>
<#assign ve = output_segment.getElementAt("${i}")>
${r1}${re}${r11}${ve}${r2}${re}${r11}
<#assign i = i+1>
</#list>
</RDT>
<#else>
</#if>
</#macro>
逻辑调用方法public-hl7toxml.ftl:
<#--功能:将hl7的相应消息段装换成为xml格式-->
<#--编写人:杨江兵-->
<#import "hl7SegmentToXml.ftl" as hl7toxml>
<#macro publiGetHl7Xml in_busicode>
<#assign busicode = in_busicode>
<#--RTBK13-->
<#if busicode='响应查询'>
<ResponseInfo>
<#assign MSH = inputEDI.getElementAt("MSH")>
<@hl7toxml.getHl7Xml output_segment=MSH/>
<#assign MSA = inputEDI.getElementAt("MSA")>
<@hl7toxml.getHl7Xml output_segment=MSA/>
<#assign QAK = inputEDI.getElementAt("QAK")>
<@hl7toxml.getHl7Xml output_segment=QAK/>
<QPDS>
<#assign QPD = inputEDI.getElementAt("QPD")>
<@hl7toxml.getHl7Xml output_segment=QPD/>
</QPDS>
<RDFS>
<#assign RDF = inputEDI.getElementAt("TableRow.RDF")>
<@hl7toxml.getHl7Xml output_segment=RDF/>
</RDFS>
<RDTS>
<#list inputEDI.getElementAt("TableRow.RDT").allChildren as RDT>
<@hl7toxml.getHl7Xml output_segment=RDT/>
</#list>
</RDTS>
</ResponseInfo>
<#else>
<RequestInfo>
<#--MSH段公用-->
<#assign MSH = inputEDI.getElementAt("MSH")>
<@hl7toxml.getHl7Xml output_segment=MSH/>
<#--检查医嘱申请,检验申请单新开与取消,样本核收与取消,取消检验报告发布OMGO19-->
<#if busicode=='3001'||busicode=='3002'||busicode=='4001'||busicode=='4002'||busicode=='4008'||busicode=='4009'||busicode=='4012'>
<#assign PID = inputEDI.getElementAt("PatientInformation.PID")>
<@hl7toxml.getHl7Xml output_segment=PID/>
<#assign PV1 = inputEDI.getElementAt("PatientInformation.Visit.PV1")>
<@hl7toxml.getHl7Xml output_segment=PV1/>
<OrderInfo>
<#assign ORC = inputEDI.getElementAt("ClinicalOrder[0].ORC")>
<@hl7toxml.getHl7Xml output_segment=ORC/>
<#assign OBR = inputEDI.getElementAt("ClinicalOrder[0].OBR")>
<@hl7toxml.getHl7Xml output_segment=OBR/>
<#assign DG1 = inputEDI.getElementAt("ClinicalOrder[0].DG1[0]")>
<@hl7toxml.getHl7Xml output_segment=DG1/>
</OrderInfo>
<#--患者挂号及入科,取消挂号,取消入科ADTA01-->
<#elseif busicode=='2006'||busicode=='2011'||busicode=='2009'||busicode=='2005'||busicode=='2010'>
<#assign EVN = inputEDI.getElementAt("EVN")>
<@hl7toxml.getHl7Xml output_segment=EVN/>
<#assign PID = inputEDI.getElementAt("PID")>
<@hl7toxml.getHl7Xml output_segment=PID/>
<NK1S>
<#list inputEDI.getElementAt("NK1").allChildren as result>
<@hl7toxml.getHl7Xml output_segment=result/>
</#list>
</NK1S>
<#assign PV1 = inputEDI.getElementAt("PV1")>
<@hl7toxml.getHl7Xml output_segment=PV1/>
<DG1S>
<#list inputEDI.getElementAt("DG1").allChildren as result>
<@hl7toxml.getHl7Xml output_segment=result/>
</#list>
</DG1S>
<#--患者转科转床,取消转科转床ADTA02-->
<#elseif busicode=='2002'||busicode=='2007'>
<#assign EVN = inputEDI.getElementAt("EVN")>
<@hl7toxml.getHl7Xml output_segment=EVN/>
<#assign PID = inputEDI.getElementAt("PID")>
<@hl7toxml.getHl7Xml output_segment=PID/>
<#assign PV1 = inputEDI.getElementAt("PV1")>
<@hl7toxml.getHl7Xml output_segment=PV1/>
<#--患者结束就诊、出院,取消就诊、取消出院ADTA03-->
<#elseif busicode=='2012'||busicode=='2003'||busicode=='2013'||busicode=='2008'>
<#assign EVN = inputEDI.getElementAt("EVN")>
<@hl7toxml.getHl7Xml output_segment=EVN/>
<#assign PID = inputEDI.getElementAt("PID")>
<@hl7toxml.getHl7Xml output_segment=PID/>
<#assign PV1 = inputEDI.getElementAt("PV1")>
<@hl7toxml.getHl7Xml output_segment=PV1/>
<DG1S>
<#list inputEDI.getElementAt("DG1").allChildren as result>
<@hl7toxml.getHl7Xml output_segment=result/>
</#list>
</DG1S>
<#--患者基本信息修改,患者诊断更新ADTA08-->
<#elseif busicode=='2004'||busicode=='2015'||busicode=='2016'||busicode=='2017'||busicode=='2018'>
<#assign EVN = inputEDI.getElementAt("EVN")>
<@hl7toxml.getHl7Xml output_segment=EVN/>
<#assign PID = inputEDI.getElementAt("PID")>
<@hl7toxml.getHl7Xml output_segment=PID/>
<NK1S>
<#list inputEDI.getElementAt("NK1").allChildren as result>
<@hl7toxml.getHl7Xml output_segment=result/>
</#list>
</NK1S>
<#assign PV1 = inputEDI.getElementAt("PV1")>
<@hl7toxml.getHl7Xml output_segment=PV1/>
<AL1S>
<#list inputEDI.getElementAt("AL1").allChildren as result>
<@hl7toxml.getHl7Xml output_segment=result/>
</#list>
</AL1S>
<DG1S>
<#list inputEDI.getElementAt("DG1").allChildren as result>
<@hl7toxml.getHl7Xml output_segment=result/>
</#list>
</DG1S>
<#--新开药品治疗医嘱OMPO09-->
<#elseif busicode=='5003'>
<#assign PID = inputEDI.getElementAt("PatientInformation.PID")>
<@hl7toxml.getHl7Xml output_segment=PID/>
<#assign PV1 = inputEDI.getElementAt("PatientInformation.Visit.PV1")>
<@hl7toxml.getHl7Xml output_segment=PV1/>
<OrderInfo>
<#assign ORC = inputEDI.getElementAt("CommonOrder[0].ORC")>
<@hl7toxml.getHl7Xml output_segment=ORC/>
<#assign RXO = inputEDI.getElementAt("CommonOrder[0].RXO")>
<@hl7toxml.getHl7Xml output_segment=RXO/>
<#assign RXR = inputEDI.getElementAt("CommonOrder[0].RXR[0]")>
<@hl7toxml.getHl7Xml output_segment=RXR/>
</OrderInfo>
<#--删除新开的药品治疗医嘱,取消、停用通用临床医嘱ORMO01Pharmacy-->
<#elseif busicode=='5004'||busicode=='5002'||busicode=='5007'>
<#assign PID = inputEDI.getElementAt("PatientInformation.PID")>
<@hl7toxml.getHl7Xml output_segment=PID/>
<#assign PV1 = inputEDI.getElementAt("PatientInformation.Visit.PV1")>
<@hl7toxml.getHl7Xml output_segment=PV1/>
<OrderInfo>
<#assign ORC = inputEDI.getElementAt("CommonOrders[0].ORC")>
<@hl7toxml.getHl7Xml output_segment=ORC/>
<#assign RXO = inputEDI.getElementAt("CommonOrders[0].PharmacyOrder.RXO")>
<@hl7toxml.getHl7Xml output_segment=RXO/>
<#assign RXR = inputEDI.getElementAt("CommonOrders[0].PharmacyOrder.RXR[0]")>
<@hl7toxml.getHl7Xml output_segment=RXR/>
</OrderInfo>
<#--新开通用临床医嘱ORMO01ORMO01Diagnostic-->
<#elseif busicode=='5001'>
<#assign PID = inputEDI.getElementAt("PatientInformation.PID")>
<@hl7toxml.getHl7Xml output_segment=PID/>
<#assign PV1 = inputEDI.getElementAt("PatientInformation.Visit.PV1")>
<@hl7toxml.getHl7Xml output_segment=PV1/>
<OrderInfo>
<#assign ORC = inputEDI.getElementAt("CommonOrder[0].ORC")>
<@hl7toxml.getHl7Xml output_segment=ORC/>
<#assign OBR = inputEDI.getElementAt("CommonOrder[0].OrderDetail.OBR")>
<@hl7toxml.getHl7Xml output_segment=OBR/>
<#assign DG1 = inputEDI.getElementAt("CommonOrder[0].OrderDetail.DG1[0]")>
<@hl7toxml.getHl7Xml output_segment=DG1/>
</OrderInfo>
<#--检验报告结果发布,检查报告结果发布与取消ORUR01-->
<#elseif busicode=='4011'||busicode=='3006'||busicode=='3007'>
<#assign PID = inputEDI.getElementAt("ObservationMessage[0].PatientInformation.PID")>
<@hl7toxml.getHl7Xml output_segment=PID/>
<#assign PV1 = inputEDI.getElementAt("ObservationMessage[0].PatientInformation.PatientVisit.PV1")>
<@hl7toxml.getHl7Xml output_segment=PV1/>
<OrderInfo>
<#assign ORC = inputEDI.getElementAt("ObservationMessage[0].Order[0].ORC")>
<@hl7toxml.getHl7Xml output_segment=ORC/>
<#assign OBR = inputEDI.getElementAt("ObservationMessage[0].Order[0].OBR")>
<@hl7toxml.getHl7Xml output_segment=OBR/>
<OBXS>
<#list output_segment.getElementAt("ObservationMessage[0].Order[0].Results").allChildren as result>
<#assign OBX = result.getElementAt("OBX")>
<@hl7toxml.getHl7Xml output_segment=OBX/>
</#list>
</OBXS>
</OrderInfo>
<#--新生儿登记ADTA04-->
<#elseif busicode=='2015'>
<#assign PID = inputEDI.getElementAt("PID")>
<@hl7toxml.getHl7Xml output_segment=PID/>
<#--手术安排信息发布,修改手术安排信息,发送手术术后信息,取消发送手术术后信息ZDMZ02-->
<#elseif busicode=='6003'||busicode=='6004'||busicode=='6005'||busicode=='6006'>
<#assign Z01 = inputEDI.getElementAt("Z01")>
<@hl7toxml.getHl7Xml output_segment=Z01/>
<#--查询QBPQ13-->
<#elseif busicode=='请求查询'>
<QPDS>
<#assign QPD = inputEDI.getElementAt("QPD")>
<@hl7toxml.getHl7Xml output_segment=QPD/>
</QPDS>
<RDFS>
<#assign RDF = inputEDI.getElementAt("RDF")>
<@hl7toxml.getHl7Xml output_segment=RDF/>
</RDFS>
<RCP>
<#assign RCP = inputEDI.getElementAt("RCP")>
<@hl7toxml.getHl7Xml output_segment=RCP/>
</RCP>
<#else>
</#if>
</RequestInfo>
</#if>
</#macro>
公共入口(main):
<#--功能:传入相应业务编码,将hl7转换对应xml-->
<#import "public-hl7toxml.ftl" as hl7toxml>
<#assign busicode = input.getProperty("TransId")>
<#if busicode[0]=='Q'>
<@hl7toxml.publiGetHl7Xml in_busicode='响应查询'/>
<#else>
<@hl7toxml.publiGetHl7Xml in_busicode=busicode/>
</#if>