2012-12-27 125 views
2

我需要解析HL7消息,首先验证消息然后解析。需要解析HL7消息

XMLParser xmlParser = new DefaultXMLParser(); 

//encode message in XML 
String hl7MessageInXML = null; 
try { 
     hl7MessageInXML = xmlParser.encode(message); 
} catch (HL7Exception e) { 
    e.printStackTrace(); 
} 
+0

这适用于: MSH | ^〜\&|梅格| XYZHospC | SurOE | XYCtr | 20060529090131-050 ​​|| ADT^A01^ADT_A01 | 01052901 | P | 2.5 EVN || 200605290901 |||| 200605290900 PID ||| 56782445 ^^^ UAReg^PI || KLEINSAMPLE^BARRY^Q^JR || 19620910 | M || 2-9 ^^ HL70005^RA93 ^^ XYZ | 260 GOODWIN CREST DRIVE ^^ BIRMINGHAM^AL^35 209 ^^ M〜NELLELL'S SQUARE^10000 W 100TH AVE^B IRMINGHAM^AL^35 ^^ O ||||||| 0105I30001 ^^^ 99DEF^AN PV1 || I | W^389^1^UABH ^^^^ 3 |||| 12345^MORGAN^REX^J ^^^ MD^0010^UAMC^L^678 90^GRAINGER^LUCY^X ^^^ MD^0010^UAMC^L | MED ||||| A0 || 13579^POTTER^SHER MAN^T^^^MD^0010^UAMC^L ||||||||||||||||||||||||||||||||||||||||||| 200605290900 OBX | 1 | NM | ^身高|| 1.80 | m ^米^ ISO + ||||| F – MaNn

+0

[你有什么试过?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – xyz

+0

对你有好处,哪里有这个问题? –

回答

2

示例代码:

import ca.uhn.hl7v2.parser.*; 
import ca.uhn.hl7v2.model.Message; 
import ca.uhn.hl7v2.model.v24.message.ACK; 

public class ParserDemo { 

    public static void main(String args[]) { 
     //for demo purposes, we just declare a literal message string 
     String ackMessageString 
      = "MSH|^~\\&|foo|foo||foo|200108151718||ACK^A01^ACK|1|D|2.4|\rMSA|AA\r"; 

     //instantiate a PipeParser, which handles the "traditional encoding" 
     PipeParser pipeParser = new PipeParser(); 

     try { 
      //parse the message string into a Message object 
      Message message = pipeParser.parse(ackMessageString); 

      //if it is an ACK message (as we know it is), cast it to an 
      // ACK object so that it is easier to work with, and change a value    
      if (message instanceof ACK) { 
       ACK ack = (ACK) message; 
       ack.getMSH().getProcessingID().getProcessingMode().setValue("P"); 
      } 

      //instantiate an XML parser 
      XMLParser xmlParser = new DefaultXMLParser(); 

      //encode message in XML 
      String ackMessageInXML = xmlParser.encode(message); 

      //print XML-encoded message to standard out 
      System.out.println(ackMessageInXML); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     }  
    } 
} 
+0

你能帮我解析这个 – MaNn

1

尝试使用HAPI分析器API(http://hl7api.sourceforge.net/)。在这里,你可以找到有关解析HL7消息的一些例子:

http://ignaciosuay.com/how-to-use-hapi-terser-with-hl7/

http://ignaciosuay.com/how-to-set-repetitions-in-hl7-messages-using-hapi-terser/

希望它可以帮助

+0

can terser可以从本地或国际定制的字段中提取字符串,例如HL7 v2.3的这一段REF REF mesaage:PRD | PP |请参阅T Tan^“”^“”^^“”|“”^^^^“”^新西兰||(08)569-7555 || 14134^NZMC – iceman

+0

是的,您可以!您可以在HL7消息中获得任何信息。在你的情况下,尝试terser.get(“/ PRD-”+组件)。例如:terser.get(“/ PRD-1)==”PP“。请让我知道如果你发现任何问题访问此段。 –

+0

谢谢。我试图读取目录中的一些HL7文件和启动terser有没有办法确定它来自MSH段的文件的版本(v2.3/v2.4),并启动适当的类模型并生成整个HL7文件的XML结构? – iceman