|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectca.uhn.hl7v2.parser.Parser
ca.uhn.hl7v2.parser.XMLParser
public abstract class XMLParser
Parses and encodes HL7 messages in XML form, according to HL7's normative XML encoding
specification. This is an abstract class that handles datatype and segment parsing/encoding,
but not the parsing/encoding of entire messages. To use the XML parser, you should create a
subclass for a certain message structure. This subclass must be able to identify the Segment
objects that correspond to various Segment nodes in an XML document, and call the methods
parse(Segment segment, ElementNode segmentNode) and encode(Segment segment, ElementNode segmentNode)
as appropriate. XMLParser uses the Xerces parser, which must be installed in your classpath.
| Constructor Summary | |
|---|---|
XMLParser()
Constructor |
|
XMLParser(ModelClassFactory theFactory)
Constructor |
|
| Method Summary | |
|---|---|
protected String |
doEncode(Message source)
Formats a Message object into an HL7 message string using this parser's default encoding (XML encoding). |
protected String |
doEncode(Message source,
String encoding)
Formats a Message object into an HL7 message string using the given encoding. |
String |
doEncode(Segment structure,
EncodingCharacters encodingCharacters)
Throws unsupported operation exception |
String |
doEncode(Type type,
EncodingCharacters encodingCharacters)
Throws unsupported operation exception |
protected Message |
doParse(String message,
String version)
Parses a message string and returns the corresponding Message object. |
protected Message |
doParseForSpecificPackage(String theMessage,
String theVersion,
String thePackageName)
Throws unsupported operation exception |
boolean |
encode(Segment segmentObject,
Element segmentElement)
Populates the given Element with data from the given Segment, by inserting Elements corresponding to the Segment's fields, their components, etc. |
abstract Document |
encodeDocument(Message source)
Creates an XML Document that corresponds to the given Message object. |
String |
getAckID(String message)
For response messages, returns the value of MSA-2 (the message ID of the message sent by the sending system). |
Segment |
getCriticalResponseData(String message)
Returns a minimal amount of data from a message string, including only the data needed to send a response to the remote system. |
String |
getDefaultEncoding()
|
String |
getEncoding(String message)
Returns a String representing the encoding of the given message, if the encoding is recognized. |
String[] |
getKeepAsOriginalNodes()
Sets the keepAsOriginalNodes |
String |
getTextEncoding()
Returns the text encoding to be used in generating new messages. |
String |
getVersion(String message)
Returns the version ID (MSH-12) from the given message, without fully parsing the message. |
protected boolean |
keepAsOriginal(Node node)
Checks if Node content should be kept as original (ie.: whitespaces won't be removed) |
static void |
main(String[] args)
Test harness |
void |
parse(Segment segmentObject,
Element segmentElement)
Populates the given Segment object with data from the given XML Element. |
void |
parse(Segment segment,
String string,
EncodingCharacters encodingCharacters)
Throws unsupported operation exception |
void |
parse(Type datatypeObject,
Element datatypeElement)
Populates the given Type object with data from the given XML Element. |
void |
parse(Type type,
String string,
EncodingCharacters encodingCharacters)
Throws unsupported operation exception |
abstract Message |
parseDocument(Document XMLMessage,
String version)
Creates and populates a Message object from an XML Document that contains an XML-encoded HL7 message. |
protected String |
parseLeaf(String message,
String tagName,
int startAt)
Attempts to retrieve the value of a leaf tag without using DOM or SAX. |
protected Document |
parseStringIntoDocument(String message)
Parses a string containing an XML document into a Document object. |
protected String |
removeWhitespace(String s)
Removes all unecessary whitespace from the given String (intended to be used with Primitive values). |
void |
setKeepAsOriginalNodes(String[] keepAsOriginalNodes)
Sets the keepAsOriginalNodes The nodes whose names match the keepAsOriginalNodes will be kept as original, meaning that no white space treaming will occur on them |
void |
setTextEncoding(String textEncoding)
Sets the text encoding to be used in generating new messages. |
boolean |
supportsEncoding(String encoding)
Returns true if and only if the given encoding is supported by this Parser. |
| Methods inherited from class ca.uhn.hl7v2.parser.Parser |
|---|
encode, encode, getFactory, getMessageStructureForEvent, getMessageStructures, getParserConfiguration, getValidationContext, instantiateMessage, instantiateMessageInASpecificPackage, makeControlMSH, parse, parse, parseForSpecificPackage, setParserConfiguration, setValidationContext, validVersion |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public XMLParser()
public XMLParser(ModelClassFactory theFactory)
theFactory - custom factory to use for model class lookup| Method Detail |
|---|
public String getEncoding(String message)
getEncoding in class Parserpublic boolean supportsEncoding(String encoding)
supportsEncoding in class Parserpublic String getDefaultEncoding()
getDefaultEncoding in class Parserpublic void setKeepAsOriginalNodes(String[] keepAsOriginalNodes)
public String[] getKeepAsOriginalNodes()
public abstract Message parseDocument(Document XMLMessage,
String version)
throws HL7Exception
Creates and populates a Message object from an XML Document that contains an XML-encoded HL7 message.
The easiest way to implement this method for a particular message structure is as follows:
parse(Segment segmentObject, Element segmentElement),
providing the appropriate Segment from your Message object, and the corresponding Element.
HL7Exception - if the message is not correctly formatted.
EncodingNotSupportedException - if the message encoded
is not supported by this parser.
protected Message doParse(String message,
String version)
throws HL7Exception,
EncodingNotSupportedException
Parses a message string and returns the corresponding Message
object. This method checks that the given message string is XML encoded, creates an
XML Document object (using Xerces) from the given String, and calls the abstract
method parse(Document XMLMessage)
doParse in class Parsermessage - a String that contains an HL7 messageversion - the name of the HL7 version to which the message belongs (eg "2.5")
HL7Exception - if the message is not correctly formatted.
EncodingNotSupportedException - if the message encoded
is not supported by this parser.
protected Document parseStringIntoDocument(String message)
throws HL7Exception
HL7Exception
protected String doEncode(Message source,
String encoding)
throws HL7Exception,
EncodingNotSupportedException
doEncode in class Parsersource - a Message object from which to construct an encoded message stringencoding - the name of the HL7 encoding to use (eg "XML"; most implementations support only
one encoding)
HL7Exception - if the data fields in the message do not permit encoding
(e.g. required fields are null)
EncodingNotSupportedException - if the requested encoding is not
supported by this parser.
protected String doEncode(Message source)
throws HL7Exception
encodeDocument(...) in order to obtain XML Document object
representation of the Message, then serializes it to a String.
doEncode in class Parsersource - a Message object from which to construct an encoded message string
HL7Exception - if the data fields in the message do not permit encoding
(e.g. required fields are null)
public abstract Document encodeDocument(Message source)
throws HL7Exception
Creates an XML Document that corresponds to the given Message object.
If you are implementing this method, you should create an XML Document, and insert XML Elements
into it that correspond to the groups and segments that belong to the message type that your subclass
of XMLParser supports. Then, for each segment in the message, call the method
encode(Segment segmentObject, Element segmentElement) using the Element for
that segment and the corresponding Segment object from the given Message.
HL7Exception
public void parse(Segment segmentObject,
Element segmentElement)
throws HL7Exception
HL7Exception - if the XML Element does not have the correct name and structure
for the given Segment, or if there is an error while setting individual field values.
public boolean encode(Segment segmentObject,
Element segmentElement)
throws HL7Exception
HL7Exception
public void parse(Type datatypeObject,
Element datatypeElement)
throws DataTypeException
DataTypeExceptionprotected boolean keepAsOriginal(Node node)
Node content should be kept as original (ie.: whitespaces won't be removed)
node - The target Node
true if whitespaces should not be removed from node content,
false otherwiseprotected String removeWhitespace(String s)
public Segment getCriticalResponseData(String message)
throws HL7Exception
Returns a minimal amount of data from a message string, including only the data needed to send a response to the remote system. This includes the following fields:
getCriticalResponseData in class ParserHL7Exceptionpublic String getAckID(String message)
getAckID in class Parser
public String getVersion(String message)
throws HL7Exception
Parser
getVersion in class ParserHL7Exception - if the version field can not be found.
protected String parseLeaf(String message,
String tagName,
int startAt)
throws HL7Exception
message - a string message in XML formtagName - the name of the XML tag, e.g. "MSA.2"startAt - the character location at which to start searching
HL7Exception - if the tag can not be found
public String doEncode(Segment structure,
EncodingCharacters encodingCharacters)
throws HL7Exception
doEncode in class Parserstructure - The structure to encodeencodingCharacters - The encoding characters
Unsupported - operation exception
HL7Exception - If there is a problem encoding
protected Message doParseForSpecificPackage(String theMessage,
String theVersion,
String thePackageName)
throws HL7Exception,
EncodingNotSupportedException
doParseForSpecificPackage in class ParserUnsupported - operation exception
HL7Exception
EncodingNotSupportedException
public String doEncode(Type type,
EncodingCharacters encodingCharacters)
throws HL7Exception
doEncode in class Parsertype - The type to encodeencodingCharacters - The encoding characters
Unsupported - operation exception
HL7Exception - If there is a problem encoding
public void parse(Type type,
String string,
EncodingCharacters encodingCharacters)
throws HL7Exception
parse in class Parsertype - The type to encodestring - The string to parseencodingCharacters - The encoding characters
Unsupported - operation exception
HL7Exception - If there is a problem encoding
public void parse(Segment segment,
String string,
EncodingCharacters encodingCharacters)
throws HL7Exception
parse in class Parsersegment - The segment to encodestring - The string to parseencodingCharacters - The encoding characters
Unsupported - operation exception
HL7Exception - If there is a problem encodingpublic static void main(String[] args)
public String getTextEncoding()
public void setTextEncoding(String textEncoding)
textEncoding - The encoding. Default is the platform default.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||