【问题标题】:Unable to get OBR segment from HL7 REF^I12 message无法从 HL7 REF^I12 消息中获取 OBR 段
【发布时间】:2019-11-19 14:37:41
【问题描述】:

我正在处理 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 。下面是sn-p的代码:

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

【问题讨论】:

  • 可能会有所帮助:stackoverflow.com/a/56142603/5779732
  • 循环是获取所有 OBR 段。我确实尝试使用 OBR-28-1 和 OBR(0)-28-1。我仍然得到一个空值
  • 是的,我确实看过它。如果消息中的 PV1 段按照答案的输入消息 (stackoverflow.com/a/56142603/5779732) 中给出的那样移动到最后一个,则它可以正常工作。确实,上面的代码也可以正常工作。没有找到任何合适的文档证明它是正确的结构但是。

标签: hl7 hapi hl7-v2 terser


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    • 2020-09-13
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多