ca.uhn.hl7v2.model
Class Varies

java.lang.Object
  extended by ca.uhn.hl7v2.model.Varies
All Implemented Interfaces:
Type, Serializable

public class Varies
extends Object
implements Type

Varies is a Type used as a placeholder for another Type in cases where the appropriate Type is not known until run-time (e.g. OBX-5). Parsers and validators may have logic that enforces restrictions on the Type based on other features of a segment.

If you want to set both the type and the values of a Varies object, you should set the type first by calling setData(Type t), keeping a reference to your Type, and then set values by calling methods on the Type. Here is an example:

CN cn = new CN();
variesObject.setData(cn);
cn.getIDNumber().setValue("foo");

Author:
Bryan Tripp (bryan_tripp@users.sourceforge.net), Andy Pardue
See Also:
Serialized Form

Field Summary
static String DEFAULT_OBX2_TYPE_PROP
          System property key: The value may be set to provide a default datatype ("ST", "NM", etc) for an OBX segment with a missing OBX-2 value.
static String ESCAPE_SUBCOMPONENT_DELIM_IN_PRIMITIVE
           System property key: If this is not set, or set to "true", and a subcomponent delimiter is found within the value of a Varies of a primitive type, this subcomponent delimiter will be treated as a literal character instead of a subcomponent delimiter, and will therefore be escaped if the message is re-encoded.
static String INVALID_OBX2_TYPE_PROP
          System property key: The value may be set to provide a default datatype ("ST", "NM", etc) for an OBX segment with an invalid OBX-2 value type.
 
Constructor Summary
Varies(Message message)
          Creates new Varies.
 
Method Summary
 void clear()
          Clears all data from this type
 String encode()
          Encodes this type using HL7 encoding.
static void fixOBX5(Segment segment, ModelClassFactory factory)
           Sets the data type of field 5 in the given OBX segment to the value of OBX-2.
static void fixOBX5(Segment segment, ModelClassFactory factory, ParserConfiguration parserConfiguration)
           Sets the data type of field 5 in the given OBX segment to the value of OBX-2.
 Type getData()
          Returns the data contained by this instance of Varies.
 ExtraComponents getExtraComponents()
          Returns extra components from the underlying Type
 Message getMessage()
           
 String getName()
          Returns the name of the type (used in XML encoding and profile checking)
 void parse(String string)
           Parses the string into this type and replaces the current contents with the parsed value.
 void setData(Type data)
          Sets the data contained by this instance of Varies.
 String toString()
          
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

DEFAULT_OBX2_TYPE_PROP

public static final String DEFAULT_OBX2_TYPE_PROP
System property key: The value may be set to provide a default datatype ("ST", "NM", etc) for an OBX segment with a missing OBX-2 value.

See Also:
Constant Field Values

INVALID_OBX2_TYPE_PROP

public static final String INVALID_OBX2_TYPE_PROP
System property key: The value may be set to provide a default datatype ("ST", "NM", etc) for an OBX segment with an invalid OBX-2 value type. In other words, if OBX-2 has a value of "ZYZYZ", which is not a valid value, but this property is set to "ST", then OBX-5 will be parsed as an ST.

See Also:
Constant Field Values

ESCAPE_SUBCOMPONENT_DELIM_IN_PRIMITIVE

public static final String ESCAPE_SUBCOMPONENT_DELIM_IN_PRIMITIVE

System property key: If this is not set, or set to "true", and a subcomponent delimiter is found within the value of a Varies of a primitive type, this subcomponent delimiter will be treated as a literal character instead of a subcomponent delimiter, and will therefore be escaped if the message is re-encoded. This is handy when dealing with non-conformant sending systems which do not correctly escape ampersands in OBX-5 values.

For example, consider the following OBX-5 segment:

    OBX||ST|||Apples, Pears & Bananas|||
 
In this example, the data type is a primitive ST and does not support subcomponents, and the ampersand is obviously not intended to represent a subcomponent delimiter. If this property is set to true, the entire string will be treated as the value of OBX-5, and if the message is re-encoded the string will appear as "Apples, Pears \T\ Bananas".

If this property is set to anything other than "true", the subcomponent delimiter is treated as a component delimiter, so the value after the ampersand is placed into an extra component.

See Also:
Constant Field Values
Constructor Detail

Varies

public Varies(Message message)
Creates new Varies.

Parameters:
message - message to which this type belongs
Method Detail

getData

public Type getData()
Returns the data contained by this instance of Varies. Returns a GenericPrimitive unless setData() has been called.


getName

public String getName()
Description copied from interface: Type
Returns the name of the type (used in XML encoding and profile checking)

Specified by:
getName in interface Type
See Also:
Type.getName()

setData

public void setData(Type data)
             throws DataTypeException
Sets the data contained by this instance of Varies. If a data object already exists, then its values are copied to the incoming data object before the old one is replaced. For example, if getData() returns an ST with the value "19901012" and you call setData(new DT()), then subsequent calls to getData() will return the same DT, with the value set to "19901012".

Throws:
DataTypeException

getExtraComponents

public ExtraComponents getExtraComponents()
Returns extra components from the underlying Type

Specified by:
getExtraComponents in interface Type

getMessage

public Message getMessage()
Specified by:
getMessage in interface Type
Returns:
the message to which this Type belongs

fixOBX5

public static void fixOBX5(Segment segment,
                           ModelClassFactory factory)
                    throws HL7Exception

Sets the data type of field 5 in the given OBX segment to the value of OBX-2. The argument is a Segment as opposed to a particular OBX because it is meant to work with any version.

Note that if no value is present in OBX-2, or an invalid value is present in OBX-2, this method will throw an error. This behaviour can be corrected by using the following system properties: DEFAULT_OBX2_TYPE_PROP and INVALID_OBX2_TYPE_PROP, or by using configuration in ParserConfiguration

Throws:
HL7Exception

fixOBX5

public static void fixOBX5(Segment segment,
                           ModelClassFactory factory,
                           ParserConfiguration parserConfiguration)
                    throws HL7Exception

Sets the data type of field 5 in the given OBX segment to the value of OBX-2. The argument is a Segment as opposed to a particular OBX because it is meant to work with any version.

Note that if no value is present in OBX-2, or an invalid value is present in OBX-2, this method will throw an error. This behaviour can be corrected by using the following system properties: DEFAULT_OBX2_TYPE_PROP and INVALID_OBX2_TYPE_PROP or by using configuration in ParserConfiguration

Throws:
HL7Exception

parse

public void parse(String string)
           throws HL7Exception

Parses the string into this type and replaces the current contents with the parsed value. This method accepts HL7 encoded text and treats its input as such.

Note that this method is subtly different from calling Primitive.setValue(String), but can be quite powerful. For example, using the argument of "milk&cookies" on an ST datatype:

This method makes use of the parser which is stored within the enclosing Message. At this time, only PipeParsers are supported.

Specified by:
parse in interface Type
Throws:
HL7Exception

encode

public String encode()
              throws HL7Exception
Encodes this type using HL7 encoding.

Specified by:
encode in interface Type
Throws:
HL7Exception

clear

public void clear()
Clears all data from this type

Specified by:
clear in interface Type

toString

public String toString()

Overrides:
toString in class Object


Copyright © 2001-2012 University Health Network. All Rights Reserved.