I need to parse HL7 message ,firstly ,validate the message and then parse.
XMLParser xmlParser = new DefaultXMLParser();
//encode message in XML
String hl7MessageInXML = null;
try {
hl7MessageInXML = xmlParser.encode(message);
} catch (HL7Exception e) {
e.printStackTrace();
}
Example code:
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();
}
}
}
Try using HAPI Parser api (http://hl7api.sourceforge.net/). Here you can find some examples about parsing HL7 messages:
http://ignaciosuay.com/how-to-use-hapi-terser-with-hl7/
http://ignaciosuay.com/how-to-set-repetitions-in-hl7-messages-using-hapi-terser/
Hope it helps
来源:https://stackoverflow.com/questions/14050402/need-to-parse-hl7-message