簡體   English   中英

HAPI:Hl7解析器不分隔Hl7消息的段

[英]HAPI: Hl7 Parser do not separate the segment of the Hl7 message

我正在使用HAPI API進入Hl7。 我有一條Hl7測試消息(從實際情況中挑選),並且我想讀取各個段(MSH,PID,PV1等)的字段。問題是解析器不會將消息拆分為多個段,而是將所有郵件放在MSH段中。 我嘗試了PipeParser和GenericParser。 該消息是2.3.1版的ORU_R01消息(我使用debug和getVersion()方法獲取這些信息)

這是測試課

    import java.io.IOException;

import ca.uhn.hl7v2.DefaultHapiContext;
import ca.uhn.hl7v2.HL7Exception;
import ca.uhn.hl7v2.HapiContext;
import ca.uhn.hl7v2.model.Message;
import ca.uhn.hl7v2.model.v231.group.ORU_R01_PIDPD1NK1NTEPV1PV2;
import ca.uhn.hl7v2.model.v231.group.ORU_R01_PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI;
import ca.uhn.hl7v2.model.v231.message.ORU_R01;
import ca.uhn.hl7v2.model.v231.segment.MSH;
import ca.uhn.hl7v2.model.v231.segment.PID;
import ca.uhn.hl7v2.parser.Parser;

public class Hl7EncodeTester 
{
    public static void main (String[] args) throws HL7Exception, IOException
    {
        String msg = "MSH|^~\\&|REPO|BCS|THE|Theorema|201412170140||ORU^R01|20140012620415|P|2.3.1||||||||PID|||711697^^^^PI^PRIAMO~RSSMHL69B15B081W^^^^NN||ROSSINI^MICHELE||19690215|F|||VIA^POMPEI^6^ASSO^CO^22063||031700239|||M||RSSMHL69B15B081W|300CP102||||ASSO|||100|||||PV1|||265^INRCA Ospedale^^959^^^0310^^||||||||||||||||||||||||||||||||||||||||||||||||||OBR|1||2014047190|69^RADIOLOGIA||||201412162247||||||||||||0310692014047190||201412162247|||||||||||||||OBX|1|FT|20140001988995||REFERTO FORMATO P7M BASE64 ||||||F|||20141216||CFmedicorefertante^CognomeMedicoRefertante^NomeMedicoRefertante||||TXA|1||multipart|||20141216|||||CFmedicorefertante^^^^^^^^^^^^COMPILATORE||||2014047190||AU|||||||NTE|1|O||";
        HapiContext context = new DefaultHapiContext();
//      Parser p = context.getPipeParser();
        Parser p = context.getGenericParser();
        Message adt = p.parse(msg);
        ORU_R01 oruMsg = (ORU_R01) adt;
        System.out.println("ORU_RO1 message = " + oruMsg.encode());
        MSH msh = oruMsg.getMSH();
        System.out.println("MSH segment = " + msh.encode());
        ORU_R01_PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI segment1 = 
                            oruMsg.getPIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI();
        ORU_R01_PIDPD1NK1NTEPV1PV2 segment2= segment1.getPIDPD1NK1NTEPV1PV2();
        PID pid = segment2.getPID();
        System.out.println("Patient Name = " + pid.getPatientName(0).getXpn2_GivenName().getValue());
    }
}

這是控制台輸出:

ORU_RO1 message = MSH|^~\&|REPO|BCS|THE|Theorema|201412170140||ORU^R01|20140012620415|P|2.3.1||||||||PID|||711697^^^^PI^PRIAMO~RSSMHL69B15B081W^^^^NN||ROSSINI^MICHELE||19690215|F|||VIA^POMPEI^6^ASSO^CO^22063||031700239|||M||RSSMHL69B15B081W|300CP102||||ASSO|||100|||||PV1|||265^INRCA Ospedale^^959^^^0310||||||||||||||||||||||||||||||||||||||||||||||||||OBR|1||2014047190|69^RADIOLOGIA||||201412162247||||||||||||0310692014047190||201412162247|||||||||||||||OBX|1|FT|20140001988995||REFERTO FORMATO P7M BASE64 ||||||F|||20141216||CFmedicorefertante^CognomeMedicoRefertante^NomeMedicoRefertante||||TXA|1||multipart|||20141216|||||CFmedicorefertante^^^^^^^^^^^^COMPILATORE||||2014047190||AU|||||||NTE|1|O

MSH segment = MSH|^~\&|REPO|BCS|THE|Theorema|201412170140||ORU^R01|20140012620415|P|2.3.1||||||||PID|||711697^^^^PI^PRIAMO~RSSMHL69B15B081W^^^^NN||ROSSINI^MICHELE||19690215|F|||VIA^POMPEI^6^ASSO^CO^22063||031700239|||M||RSSMHL69B15B081W|300CP102||||ASSO|||100|||||PV1|||265^INRCA Ospedale^^959^^^0310||||||||||||||||||||||||||||||||||||||||||||||||||OBR|1||2014047190|69^RADIOLOGIA||||201412162247||||||||||||0310692014047190||201412162247|||||||||||||||OBX|1|FT|20140001988995||REFERTO FORMATO P7M BASE64 ||||||F|||20141216||CFmedicorefertante^CognomeMedicoRefertante^NomeMedicoRefertante||||TXA|1||multipart|||20141216|||||CFmedicorefertante^^^^^^^^^^^^COMPILATORE||||2014047190||AU|||||||NTE|1|O
Patient Name = null

整個消息和我獲得的MSH段是相同的,我無法將消息拆分為段(應該是:MSH,PID,PV1,OBR,OBX,TXA和NTE)有人知道我的問題的解決方案嗎?

您的消息中沒有句段終止符 因此,解析器找不到它。 請注意,此終結器是二進制的,並且在標准中進行了硬編碼

HL7 Messaging Standard版本2.5→控制→消息框架→ 2.5.4消息定界符

...段終止符始終是回車符(以ASCII ,十六進制0D )。 其他定界符在MSH段中定義,字段定界符在第4個字符位置...

也可以看看:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM