我正在使用Mirth Connect v2.0并且遇到一项任务,将XML转换为HL7 v3。我已连接到Ms-Access数据库(医院系统在Access中),我已设置通道并在目标选项卡中将连接器类型设置为文件编写器。当我部署频道时,我可以看到日志文件中填充了XML格式的记录,现在我仍然坚持如何将XML消息转换/转换为HL7。有什么指针吗?
答案 0 :(得分:9)
在渠道摘要标签
中单击“设置数据类型”并确保将Source inbound设置为XML,并将Source outbound设置为HL7 v3,并将目标出站设置为HL7 v3。
在来源标签上,点击左侧边栏中的编辑变换器
在左侧的编辑转换器窗口中,选择消息模板标签。
您可以使用小文件夹图标将示例文件加载到入站和出站模板中。
您可以在入站和出站模板之间拖放节点以创建转换。
这是非常标准的Mirth东西,所以我希望我没有过分简化。希望这能让你朝着正确的方向前进。
答案 1 :(得分:1)
我使用示例xml数据将XML转换为hl7,您可以使用自己的。 您可以在垃圾变换器中粘贴以下代码:
var length = msg['orderList']['order'].length();
var rcount = 0;
for(var i=0;i<length;i++)
{
var SEG = new XML("<OBR/>");
SEG['OBR.1']['OBR.1.1']=i+1;
SEG['OBR.16']['OBR.16.1']=msg['orderList']['order'][i]['provider'].toString();
tmp['OBR'][i]=SEG;
var reslen = msg['orderList']['order'][i]['result'].length();
logger.info(reslen);
for(var j=0;j<reslen;j++)
{
var RSEG = new XML("<OBX/>");
RSEG['OBX.1']['OBX.1.1'] = rcount;
RSEG['OBX.3']['OBX.3.1'] = msg['orderList']['order'][i]['result'][j]['resultcode'].toString();
RSEG['OBX.3']['OBX.3.2']=msg['orderList']['order'][i]['result'][j]['text'].toString();
RSEG['OBX.7'] = msg['orderList']['order'][i]['result'][j]['range'].toString();
RSEG['OBX.6']['OBX.6.2'] = msg['orderList']['order'][i]['result'][j]['unit'].toString();
tmp['OBX'][rcount]=RSEG;
rcount++;
}
}
logger.info(**SerializerFactory.getSerializer('HL7V2').fromXML(tmp)**);
别忘了创建HL&amp;源出站中的模板
**MSH|^~\&|||||||||
PID|||||||||||||||||||||||||||
ORC|||||||||||||||||||**
示例XML
<PatientOrder>
<patient>
<name><fullname>XXXXXXXXXXX, XXXX.</fullname><firstname>XXXXX</firstname><lastname>XXXXX</lastname></name>
<address>
<address1>XXXXXX XXXX XXXX Med XXXX</address1><address2>Information XXXXX Fl</address2><address3>XXXX XXXX St </address3><address4>XXXXXX XXXXXX, XX XXXXX</address4><telephone>XXX/XXXX-XXXX</telephone><fax>XXX/XXX-XXX</fax><latitude>X2.XXXXX</latitude><longitude>-X1.XXXXX</longitude></address>
</patient>
<orderList>
<order>
<provider>57423</provider>
<result>result
<resultcode>7685-1</resultcode>
<text>Hemoglobin test2</text>
<resultdate></resultdate>
<range>3to52</range>
<unit>mg</unit>
</result>
<result>result
<resultcode>7685-1</resultcode>
<text>Hemoglobin test2</text>
<resultdate></resultdate>
<range>3to52</range>
<unit>mg</unit>
</result>
</order>
<order>
<provider>57423</provider>
<result>result
<resultcode>7685-1</resultcode>
<text>Hemoglobin test2</text>
<resultdate></resultdate>
<range>3to52</range>
<unit>mg</unit>
</result>
</order>
</orderList>
</PatientOrder>
答案 2 :(得分:0)
您可能希望使用XSLT,但所需的实际代码将取决于您的数据库架构以及它如何转换为XML。解决您的特定转换问题超出了StackOverflow问题的指导原则,除非您可以使问题更具体(即“我做了X,期待Y并得到Z)。
似乎有很多产品会进行此类转换。我发现很多点击谷歌搜索“xml到HL7”。我建议你从那里开始。