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

Unable to get OBR segment from HL7 REF^I12 message

我正在处理 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段?我做错了什么吗?如果有人能在这里帮助我,我会很高兴。

我能够获取 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);
        }
    }