我正在处理 REF^I12 类型的 HL7 (2.3.1) 消息。我正在尝试使用 terser 从消息中获取 OBR 段,但是,每当我尝试获取 OBR 或 OBX 段值时,我都会得到空值。下面是我试图解析的 hl7 消息-
MSH|^~\&|Sample test hospital|TEST|||20191105154020||REF^I12|178038310|P|2.3.1
PID|1||179790^^^test||infection3^Test||19881128|F|||29 Mousehole Cresent^^Yanchep^WA^6035|||
PV1|1|O|29677|||||873250^Cailes^Jeremy^^^^^^test|muddu^Aung^Htun^TEST^^^^^
OBR|1|0175671960^test|0175671960^test|test123 Letter^Letter^testletter||20180725|20180719||20180725|||||||^Cailes^Jeremy^^^^^^testletter||||||||||||sunil^Shizaraj^Suma^(testpartner)^^^^^test~X0012622^Hess^Sally^(OPA)^^^^^test~I96766753^Doctor 1^Mail^^^^^^test~X20180713013100^Doctor 2^Mail^Business Name^^^^^test~FAX356^Doctor 3^Fax^(FAX)^^^^^test~||||||||20180719
OBX|1|FT|OLETTER^^test||Sample test hospital||||||F
我实际上是在使用 terser 来解析并从 OBR-28-1 段中获取值。但是每当我尝试获取值时,我的代码总是返回 null 。以下是代码片段:
public void getReceipientFromOBRTest(Message messageobject) throws Exception {
String provider;
String id;
Map<String, String> map = new HashMap<>();
Terser terser = new Terser(messageObject);
for (int i = 0; i <= 10; i++) {
provider = terser.get("/.OBR-28(" + i + ")-4");
id = terser.get("/.OBR-28(" + i + ")-1");
if (provider != null && id != null) {
map.put(id, provider);
}
}
if (map.values().isEmpty()) {
System.out.println(map);
}
}
当我从消息中删除 PV1 段时,我可以获得 OBR 段值。但是,如果存在 PV1 段,则 terser 无法识别 OBR 甚至 OBX 段。当我通过在线解析器解析时,HL7 文件似乎是有效的。
如何从消息中获取 OBR 段?有什么我做错了吗?如果有人可以在这里帮助我,我会很高兴。