Rhapsody freeMaker 任意HL7转json

json节点对应hl7数据路径

原子服务hl7ToJson.ftl 

<#assign pleve=leve/>
<#list list as HL7CName>         
<#if HL7CName==''>
<#else>
	<#assign i=pleve-leve>
	<#assign j=pleve-leve>
	<#if leve==1>
		<#assign isegment=segment+'-'+(HL7CName.getElementIndex()+1)/>	
	<#elseif i gt 0>		
		<#list 1..i as xunhuan>		
			<#assign isegment=isegment?substring(0,isegment?last_index_of("-"))/>			
		</#list>
		<#assign isegment=isegment+'-'+(HL7CName.getElementIndex()+1)/>
	<#else>
		<#assign isegment=isegment+'-'+(HL7CName.getElementIndex()+1)/>			
	</#if>		
	<#if iresult==''>
	<#assign iresult=iresult+'"'+isegment+'":"'+HL7CName+'-'+j+'"'/>
	<#else>
	<#assign iresult=iresult+',"'+isegment+'":"'+HL7CName+'-'+j+'"'/>
	</#if>
	<#if HL7CName.getAllChildren()?exists>			
		<#assign leve=leve+1/>		
		<#assign list=HL7CName.getAllChildren()>
		<#include "hl7ToJson.ftl" >	
		<#assign leve=leve-1/>		
	</#if> 	
</#if>			
</#list>

原子服务write.ftl 

<#list inputHl7 as nextinputHl7> 
	<#assign segmentlist0=''/>
	<#list nextinputHl7.getAllChildren() as segmentlist>
		<#assign segmentlist0=segmentlist/>
		<#break>
	</#list>
	<#if nextinputHl7?index_of("\r")==nextinputHl7?last_index_of("\r")&&segmentlist0?split("|")?size == 1>
		<#if nextinputHl7!=''>			
			<#if segmentlist0?split("|")?size == 1>
				<#assign leve=1/>
				<#assign list=nextinputHl7.getAllChildren()/>
				<#assign segment=nextinputHl7[0]+nextinputHl7[1]+nextinputHl7[2]/>		
				<#assign iresult=''/>
				<#include "hl7ToJson.ftl" >			
				<#assign iresult='"'+segment+'":{'+iresult+'}'/>
				<#if result==''>
					<#assign result=result+iresult/>
					<#else>
					<#assign result=result+','+iresult/>
				</#if>
			</#if>
		</#if>
	<#else>
		<#assign inputHl7=nextinputHl7.getAllChildren()> 
		<#include "write.ftl" >	
	</#if>
</#list>

公共入口main 

<#assign result=''/>
<#assign iresult=''/>
<#assign type=''/>
<#assign segment=''/>
<#assign isegment=''/>
<#assign type=inputEDI.getElementValue("MSH.MessageType.MessageType")+inputEDI.getElementValue("MSH.MessageType.TriggerEvent")/>
<#list inputEDI.getAllChildren() as HL7Name> 
	<#if HL7Name !=''>
		<#assign segmentlist0=''/>
		<#list HL7Name.getAllChildren() as segmentlist>			
			<#assign segmentlist0=segmentlist/>	
			<#break>
		</#list>		
		<#if HL7Name?index_of("\r")==HL7Name?last_index_of("\r")>			
		<#assign leve=1/>
		<#assign pleve=0/>
		<#assign list=HL7Name.getAllChildren()/>
		<#assign segment=HL7Name[0]+HL7Name[1]+HL7Name[2]/>		
		<#assign iresult=''/>
		<#include "hl7ToJson.ftl" >			
		<#assign iresult='"'+segment+'":{'+iresult+'}'/>
		<#if result==''>
			<#assign result=result+iresult/>
			<#else>
			<#assign result=result+','+iresult/>
		</#if>
		<#else>
		<#assign inputHl7=HL7Name.getAllChildren()> 
		<#include "write.ftl" >	
		</#if>			
	</#if>
</#list>
{"${type}":{${result?replace('\\','\\\\')}}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值