我正在尝试阅读我有多个ORC
段的HL7消息。 terser.get()
方法仅获取第一个ORC
段的值。尝试从/ORDER(2)/ORC-X-X
读取时,该方法不返回任何值。
Terser mesg = new Terser(next);
System.out.println(mesg.get("/ORDER(2)/ORC-2-1"));
该方法将返回mesg.get("/ORDER/ORC-2-1")
的值。我希望它也能返回"/ORDER(2)/ORC-2-1"
。
答案 0 :(得分:1)
解决方案是使用getOrderReps()
中的OMS_O05
方法,该方法将给出ORDERS的重复次数。还将OMS_O05
用作消息类型。
OMS_O05 omsMsg = (OMS_O05) next;
Terser t = new Terser(omsMsg);
for (int i = 0; i < omsMsg.getORDERReps(); i++)
{
System.out.println(t.get("/ORDER("+i+")/ORC-2-1"));
}
答案 1 :(得分:0)
我不是Terser的专家,但是...
根据documentation,以下是String get(String spec)
方法的说明:
获取指定字段的字符串值。有关位置规范的语法,请参见类文档。
如果对于重复的段或字段省略了重复,则使用第一个rep。如果未为Composite字段指定组件或子组件,则使用第一个组件(这使一个组件可以编写可与HL7标准的更高版本一起使用的代码)。
其中spec是字段规范。
通过此操作,如here所述,您可以使用以下代码获取特定网段中的特定组件:
@Test
public void testAccessSegmentRepetitions() throws Exception{
//First Next of Kin Id
assertEquals("1", terser.get("NK1(0)-1"));
//Second Next of Kin Id
assertEquals("2", terser.get("NK1(1)-1"));
}
输入的HL7消息为:
MSH|^~\\&|hl7Integration|hl7Integration|||||ADT^A01|||2.3|
EVN|A01|20130617154644
PID|1|465 306 5961||407623|Wood^Patrick^^^MR||19700101|1|||High Street^^Oxford^^Ox1 4DP~George St^^Oxford^^Ox1 5AP|||||||
NK1|1|Wood^John^^^MR|Father||999-9999
NK1|2|Jones^Georgie^^^MSS|MOTHER||999-9999
PV1|1||Location||||||||||||||||261938_6_201306171546|||||||||||||||||||||||||20130617134644|||||||||
我们可以使用方括号来进行特定的重复。根据我们放在方括号中的位置,我们将获取段重复,字段重复或组件重复。
类似地,在您的情况下,以下代码应该起作用:
mesg.get("/ORC(0)-2-1") //This will return value from first occurrence of segment
mesg.get("/ORC(1)-2-1") //This will return value from second occurrence of segment
更新您的编辑和评论:
关于ORDER
的东西,看来很有必要。在这种情况下,请使用以下代码:
mesg.get("/ORDER(2)/ORC(0)-2-1") //This will return value from first occurrence of segment
mesg.get("/ORDER(2)/ORC(1)-2-1") //This will return value from second occurrence of segment