freeMaker hl7转xml范例

 原子方法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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值