无法从HL7 REF ^ I12消息中获取OBR段

问题描述 投票:0回答:1

我正在处理REF ^ I12类型的HL7(2.3.1)消息。我正在尝试使用terser从消息中获取OBR段,但是,每当我尝试获取OBR或OBX段值时,我都将为null。以下是我要解析的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段?我做错什么了吗?如果有人可以在这里帮助我,我会很乐意的。

hl7 hapi hl7-v2 terser
1个回答
0
投票

我能够获得OBR段值,以下是工作代码:

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("/.PV1PV2/OBR-28(" + i + ")-4");
            id = terser.get("/.PV1PV2/OBR-28(" + i + ")-1");
            if (provider != null && id != null) {
                map.put(id, provider);
            }
        }
        if (map.values().isEmpty()) {
            System.out.println(map);
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.