[英]How to read multiple ORC & OBR segment from HL7 message using HAPI
我有以下HL7消息来解析。
MSH|^~\&|LIS|LAB1|APP2|LAB2|20140706163250||OML^O21|20140706163252282|P|2.4
PID|1||7015||LISTESTPATIENT12^LISTESTPATIENT12||19730901000000|F
PV1|1||||||LISPHYCDE1^LISPHY001^LISCARE TEST
ORC|NW|LISCASEID15|||||||||||||||NJ||||TCL^TCL
OBR|1|LISCASEID15||28259^Her2^STAIN|||20140706162713|||||||20140706162713|Breast|patho^pathl^pathf|||image1^image1^image1|blk1^blk1^blk1|SPEC14^SPEC14^SPEC14
ORC|XO|LISCASEID15|||||||||||||||NJ||||TCL^TCL
OBR|2|LISCASEID15||28260^Her2^STAIN|||20140706162713|||||||20140706162713|Breast|patho^pathl^pathf|||image2^image2^image|blk2^blk2^blk2|SPEC14^SPEC14^SPEC14
我试图使用HAPI Terser.get()方法从OBR和ORC段中获取值。
Terser t = new Terser(h7msg);
t.get("/.ORDER_OBSERVATION(0)/ORC-1-1"); // Should return NW
t.get("/.ORDER_OBSERVATION(1)/ORC-1-1"); // Should return XO
t.get("/.ORDER_OBSERVATION(0)/OBR-4-1"); // Should return 28259
t.get("/.ORDER_OBSERVATION(1)/OBR-4-1"); // Should return 28260
但是以上所有语句给出了以下错误“无循环迭代时到达消息末尾”
不知道,我在这里做什么错。 伙计们请帮助我正确输入Teaser.get()方法,以获取上述价值。
这里的问题是OML ^ O21消息不包含多个ORDER_OBSERVATION。 这意味着您不能访问元素ORDER_OBSERVATION(1)
,因为它不存在。
将OML消息解析为XML时,您可以看到HL7的真实结构:
<?xml version="1.0" encoding="UTF-8"?><OML_O21 xmlns="urn:hl7-org:v2xml">
<MSH>
<MSH.1>|</MSH.1>
<MSH.2>^~\&</MSH.2>
<MSH.3>
<HD.1>LIS</HD.1>
</MSH.3>
<MSH.4>
<HD.1>LAB1</HD.1>
</MSH.4>
<MSH.5>
<HD.1>APP2</HD.1>
</MSH.5>
<MSH.6>
<HD.1>LAB2</HD.1>
</MSH.6>
<MSH.7>
<TS.1>20140706163250</TS.1>
</MSH.7>
<MSH.9>
<MSG.1>OML</MSG.1>
<MSG.2>O21</MSG.2>
</MSH.9>
<MSH.10>20140706163252282</MSH.10>
<MSH.11>
<PT.1>P</PT.1>
</MSH.11>
<MSH.12>
<VID.1>2.4</VID.1>
</MSH.12>
</MSH>
<OML_O21.PATIENT>
<PID>
<PID.1>1</PID.1>
<PID.3>
<CX.1>7015</CX.1>
</PID.3>
<PID.5>
<XPN.1>
<FN.1>LISTESTPATIENT12</FN.1>
</XPN.1>
<XPN.2>LISTESTPATIENT12</XPN.2>
</PID.5>
<PID.7>
<TS.1>19730901000000</TS.1>
</PID.7>
<PID.8>F</PID.8>
</PID>
<OML_O21.PATIENT_VISIT>
<PV1>
<PV1.1>1</PV1.1>
<PV1.7>
<XCN.1>LISPHYCDE1</XCN.1>
<XCN.2>
<FN.1>LISPHY001</FN.1>
</XCN.2>
<XCN.3>LISCARE TEST</XCN.3>
</PV1.7>
</PV1>
</OML_O21.PATIENT_VISIT>
</OML_O21.PATIENT>
<OML_O21.ORDER_GENERAL>
<OML_O21.ORDER>
<ORC>
<ORC.1>NW</ORC.1>
<ORC.2>
<EI.1>LISCASEID15</EI.1>
</ORC.2>
<ORC.17>
<CE.1>NJ</CE.1>
</ORC.17>
<ORC.21>
<XON.1>TCL</XON.1>
<XON.2>TCL</XON.2>
</ORC.21>
</ORC>
</OML_O21.ORDER>
<OML_O21.ORDER>
<ORC>
<ORC.1>XO</ORC.1>
<ORC.2>
<EI.1>LISCASEID15</EI.1>
</ORC.2>
<ORC.17>
<CE.1>NJ</CE.1>
</ORC.17>
<ORC.21>
<XON.1>TCL</XON.1>
<XON.2>TCL</XON.2>
</ORC.21>
</ORC>
<OML_O21.OBSERVATION_REQUEST>
<OBR>
<OBR.1>1</OBR.1>
<OBR.2>
<EI.1>LISCASEID15</EI.1>
</OBR.2>
<OBR.4>
<CE.1>28259</CE.1>
<CE.2>Her2</CE.2>
<CE.3>STAIN</CE.3>
</OBR.4>
<OBR.7>
<TS.1>20140706162713</TS.1>
</OBR.7>
<OBR.14>
<TS.1>20140706162713</TS.1>
</OBR.14>
<OBR.15>
<SPS.1>
<CE.1>Breast</CE.1>
</SPS.1>
</OBR.15>
<OBR.16>
<XCN.1>patho</XCN.1>
<XCN.2>
<FN.1>pathl</FN.1>
</XCN.2>
<XCN.3>pathf</XCN.3>
</OBR.16>
<OBR.19>image1</OBR.19>
<OBR.20>blk1</OBR.20>
<OBR.21>SPEC14</OBR.21>
</OBR>
<OML_O21.PRIOR_RESULT>
<OML_O21.ORDER_PRIOR>
<OBR>
<OBR.1>2</OBR.1>
<OBR.2>
<EI.1>LISCASEID15</EI.1>
</OBR.2>
<OBR.4>
<CE.1>28260</CE.1>
<CE.2>Her2</CE.2>
<CE.3>STAIN</CE.3>
</OBR.4>
<OBR.7>
<TS.1>20140706162713</TS.1>
</OBR.7>
<OBR.14>
<TS.1>20140706162713</TS.1>
</OBR.14>
<OBR.15>
<SPS.1>
<CE.1>Breast</CE.1>
</SPS.1>
</OBR.15>
<OBR.16>
<XCN.1>patho</XCN.1>
<XCN.2>
<FN.1>pathl</FN.1>
</XCN.2>
<XCN.3>pathf</XCN.3>
</OBR.16>
<OBR.19>image2</OBR.19>
<OBR.20>blk2</OBR.20>
<OBR.21>SPEC14</OBR.21>
</OBR>
</OML_O21.ORDER_PRIOR>
</OML_O21.PRIOR_RESULT>
</OML_O21.OBSERVATION_REQUEST>
</OML_O21.ORDER>
</OML_O21.ORDER_GENERAL>
</OML_O21>
不幸的是,这是许多解析器(如HAPI)的问题,它们确实根据类型(OML_O21)和版本来验证任何消息的结构。 因为如果从2.4更改为2.5,您将获得完全不同的结构。
如果您不关心这种结构,则可以使用其他类似HL7X的 HL7解析器,该解析器可以像分隔文件一样将hl7转换为xml-与hl7消息类型或版本无关。
在这里,您会发现关于stackoverflow的类似问题:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.