我对 Mrth 中向 XML 的 HL7 消息的转换有疑问。
我遇到的问题是消息段中有两个实例,我现在需要将它们分成两个 xml 标记。
所以 HL7 段看起来像这样:
PID|1|16^^^MEDAVIS^PI|||MyTest^TEST 2^T^^MISS~Test2^^^^^^B|00MemberCode|19921106|M|||MANNING ROAD^^DURBAN^^4001^ZA||0313017352~072363395^^CP~^NET^Internet^TEST@GMAIL.COM|0313017352~072363395^^CP~^NET^Internet^TEST@GMAIL.COM|||||123456PatDepCode|||||||ZA||||N
所以问题出在 PID 段中,其中在段 5(名称)中有多个标签,然后在段中也有
我一直在使用不同的供应商向我们的系统提供信息的转换只使用了该段中的一个标签,看起来像这样:
tmp['Patient']['Name']= msg['PID']['PID.5']['PID.5.2'].toString();
tmp['Patient']['Surname'] = msg['PID']['PID.5']['PID.5.1'].toString();
问题是代码中的两个部分最终会导致混乱
<Name><PID.5.2>TEST 2</PID.5.2><PID.5.2/></Name>
<Surname><PID.5.1>TEST G4M Nachname</PID.5.1><PID.5.1>NameOfBirth</PID.5.1></Surname>
如何更改格式,以便第一个段类似于名称 1 和 surname1 以及第二个段 name2 和 surname2
更新:我已经更新了转换代码,它给出了正确的结果,但它们仍然是一条错误消息,尽管它使用带有错误的代码产生了 reuslt。
<PID.5> <PID.5.1>TEST G4M Nachname</PID.5.1> <PID.5.2>TEST 2</PID.5.2> <PID.5.3>T</PID.5.3> <PID.5.4/> <PID.5.5>MISS</PID.5.5> </PID.5> <PID.5> <PID.5.1>NameOfBirth</PID.5.1> <PID.5.2/> <PID.5.3/> <PID.5.4/> <PID.5.5/> <PID.5.6/> <PID.5.7>B</PID.5.7> </PID.5>
所以调整后的变换看起来像:
/*patient name seperation*/
var segmentlength = msg['PID']['PID.5']['PID.5.2'].toString().length;
var tildeappears = msg['PID']['PID.5']['PID.5.2'].toString().indexof('~');
tmp['Patient']['Name'] = msg['PID']['PID.5']['PID.5.1'].toString().substring(0,tildeappears-1);
tmp['Patient']['Name1']= msg['PID']['PID.5']['PID.5.1'].toString().substring(tildeappears+1,segmentlength)
但是当运行 Mirth 时返回此错误:
变压器错误错误消息:评估变压器 com.mirth.connect.server.MirthJavascriptTransformerException 时出错:通道:AGFA_DFT_PayloadBuilderV3 连接器:输出日志脚本源:变压器源代码:604:tmp['Patient']['MRN'] = msg['PID' ]['PID.3']['PID.3.1'].toString(); 605:606:/患者姓名分隔/ 607: 608: var segmentlength = msg['PID']['PID.5']['PID.5.2'].toString().length; 609: 波浪形= msg['PID']['PID.5']['PID.5.2'].toString().indexof('~'); 610: tmp['Patient']['Name'] = msg['PID']['PID.5']['PID.5.2'].toString().substring(0,tildeappears-1); 611:tmp['Patient']['Name1']= msg['PID']['PID.5']['PID.5.2'].toString().substring(tildeappears+1,segmentlength); 612:tmp['患者']['姓氏'] = msg['PID']['PID.5']['PID.5.1'].toString(); 613:行号:609 详细信息:TypeError:在对象 TEST 2 中找不到函数 indexof。在 40699b8f-7c07-4eaf-8d54-e6f423be853b:609(doTransform)在 40699b8f-7c07-4eaf-8d54-e6f423be853b: