|
||||||||||
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 java.lang.String |
doEncode(Message source)
Formats a Message object into an HL7 message string using this parser's default encoding (XML encoding). |
protected java.lang.String |
doEncode(Message source,
java.lang.String encoding)
Formats a Message object into an HL7 message string using the given encoding. |
java.lang.String |
doEncode(Segment structure,
EncodingCharacters encodingCharacters)
Throws unsupported operation exception |
java.lang.String |
doEncode(Type type,
EncodingCharacters encodingCharacters)
Throws unsupported operation exception |
protected Message |
doParse(java.lang.String message,
java.lang.String version)
Parses a message string and returns the corresponding Message object. |
boolean |
encode(Segment segmentObject,
org.w3c.dom.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 org.w3c.dom.Document |
encodeDocument(Message source)
Creates an XML Document that corresponds to the given Message object. |
java.lang.String |
getAckID(java.lang.String message)
For response messages, returns the value of MSA-2 (the message ID of the message sent by the sending system). |
Segment |
getCriticalResponseData(java.lang.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. |
java.lang.String |
getDefaultEncoding()
|
java.lang.String |
getEncoding(java.lang.String message)
Returns a String representing the encoding of the given message, if the encoding is recognized. |
java.lang.String[] |
getKeepAsOriginalNodes()
Sets the keepAsOriginalNodes |
java.lang.String |
getTextEncoding()
Returns the text encoding to be used in generating new messages. |
java.lang.String |
getVersion(java.lang.String message)
Returns the version ID (MSH-12) from the given message, without fully parsing the message. |
protected boolean |
keepAsOriginal(org.w3c.dom.Node node)
Checks if Node content should be kept as original (ie.: whitespaces won't be removed) |
static void |
main(java.lang.String[] args)
Test harness |
void |
parse(Message message,
java.lang.String string)
Throws unsupported operation exception |
void |
parse(Segment segmentObject,
org.w3c.dom.Element segmentElement)
Populates the given Segment object with data from the given XML Element. |
void |
parse(Segment segment,
java.lang.String string,
EncodingCharacters encodingCharacters)
Throws unsupported operation exception |
void |
parse(Type datatypeObject,
org.w3c.dom.Element datatypeElement)
Populates the given Type object with data from the given XML Element. |
void |
parse(Type type,
java.lang.String string,
EncodingCharacters encodingCharacters)
Throws unsupported operation exception |
abstract Message |
parseDocument(org.w3c.dom.Document XMLMessage,
java.lang.String version)
Creates and populates a Message object from an XML Document that contains an XML-encoded HL7 message. |
protected java.lang.String |
parseLeaf(java.lang.String message,
java.lang.String tagName,
int startAt)
Attempts to retrieve the value of a leaf tag without using DOM or SAX. |
protected java.lang.String |
removeWhitespace(java.lang.String s)
Removes all unecessary whitespace from the given String (intended to be used with Primitive values). |
void |
setKeepAsOriginalNodes(java.lang.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(java.lang.String textEncoding)
Sets the text encoding to be used in generating new messages. |
boolean |
supportsEncoding(java.lang.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, getValidationContext, getValidVersions, instantiateMessage, makeControlMSH, parse, 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 lookupMethod Detail |
---|
public java.lang.String getEncoding(java.lang.String message)
getEncoding
in class Parser
public boolean supportsEncoding(java.lang.String encoding)
supportsEncoding
in class Parser
public java.lang.String getDefaultEncoding()
getDefaultEncoding
in class Parser
public void setKeepAsOriginalNodes(java.lang.String[] keepAsOriginalNodes)
public java.lang.String[] getKeepAsOriginalNodes()
public abstract Message parseDocument(org.w3c.dom.Document XMLMessage, java.lang.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(java.lang.String message, java.lang.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 Parser
message
- 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 java.lang.String doEncode(Message source, java.lang.String encoding) throws HL7Exception, EncodingNotSupportedException
doEncode
in class Parser
source
- 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 java.lang.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 Parser
source
- 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 org.w3c.dom.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, org.w3c.dom.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, org.w3c.dom.Element segmentElement) throws HL7Exception
HL7Exception
public void parse(Type datatypeObject, org.w3c.dom.Element datatypeElement) throws DataTypeException
DataTypeException
protected boolean keepAsOriginal(org.w3c.dom.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 java.lang.String removeWhitespace(java.lang.String s)
public Segment getCriticalResponseData(java.lang.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 Parser
HL7Exception
public java.lang.String getAckID(java.lang.String message)
getAckID
in class Parser
public java.lang.String getVersion(java.lang.String message) throws HL7Exception
Parser
getVersion
in class Parser
HL7Exception
- if the version field can not be found.protected java.lang.String parseLeaf(java.lang.String message, java.lang.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 foundpublic java.lang.String doEncode(Segment structure, EncodingCharacters encodingCharacters) throws HL7Exception
doEncode
in class Parser
structure
- The structure to encodeencodingCharacters
- The encoding characters
Unsupported
- operation exception
HL7Exception
- If there is a problem encodingpublic void parse(Message message, java.lang.String string) throws HL7Exception
parse
in class Parser
message
- The message to encodestring
- The string to parse
Unsupported
- operation exception
HL7Exception
- If there is a problem encodingpublic java.lang.String doEncode(Type type, EncodingCharacters encodingCharacters) throws HL7Exception
doEncode
in class Parser
type
- The type to encodeencodingCharacters
- The encoding characters
Unsupported
- operation exception
HL7Exception
- If there is a problem encodingpublic void parse(Type type, java.lang.String string, EncodingCharacters encodingCharacters) throws HL7Exception
parse
in class Parser
type
- The type to encodestring
- The string to parseencodingCharacters
- The encoding characters
Unsupported
- operation exception
HL7Exception
- If there is a problem encodingpublic void parse(Segment segment, java.lang.String string, EncodingCharacters encodingCharacters) throws HL7Exception
parse
in class Parser
segment
- The segment to encodestring
- The string to parseencodingCharacters
- The encoding characters
Unsupported
- operation exception
HL7Exception
- If there is a problem encodingpublic static void main(java.lang.String[] args)
public java.lang.String getTextEncoding()
public void setTextEncoding(java.lang.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 |