Class CanonicalModelClassFactory

All Implemented Interfaces:
ModelClassFactory, Serializable

Specialized version of ModelClassFactory that always returns the same version or even structure. This is useful when designing applications which are expected to handle multiple versions of HL7. The recommended approach is to configure this factory to handle the newest version of HL7 you intend to support. Since HL7 is a backwards compatible protocol, older versions should always be able to parse correctly into a newer message structure.
Version:
$Revision: 1.2 $ updated on $Date: 2009-10-03 15:25:46 $ by $Author: jamesagnew $
Author:
This ModelClassFactory implementation is modified by Niranjan.Sharma@med.ge.com on 27-Jul-2009 for CanonicalModel of V2.6
See Also:
  • Constructor Details

  • Method Details

    • getGroupClass

      public Class<? extends Group> getGroupClass(String theName, String theVersion) throws HL7Exception
      Specified by:
      getGroupClass in interface ModelClassFactory
      Overrides:
      getGroupClass in class DefaultModelClassFactory
      Parameters:
      theName - name of group
      theVersion - HL7 version
      Returns:
      a class that implements the specified group
      Throws:
      HL7Exception - if the version if not recognized or an appropriate class can not be found
      See Also:
    • getMessageClass

      public Class<? extends Message> getMessageClass(String theName, String theVersion, boolean theIsExplicit) throws HL7Exception

      Attempts to return the message class corresponding to the given name, by searching through default and user-defined (as per packageList()) packages. Returns GenericMessage if the class is not found.

      It is important to note that there can only be one implementation of a particular message structure (i.e. one class with the message structure name, regardless of its package) among the packages defined as per the packageList() method. If there are duplicates (e.g. two ADT_A01 classes) the first one in the search order will always be used. However, this restriction only applies to message classes, not (normally) segment classes, etc. This is because classes representing parts of a message are referenced explicitly in the code for the message class, rather than being looked up (using findMessageClass() ) based on the String value of MSH-9. The exception is that Segments may have to be looked up by name when they appear in unexpected locations (e.g. by local extension) -- see findSegmentClass().

      Note: the current implementation will be slow if there are multiple user- defined packages, because the JVM will try to load a number of non-existent classes every parse. This should be changed so that specific classes, rather than packages, are registered by name.

      Specified by:
      getMessageClass in interface ModelClassFactory
      Overrides:
      getMessageClass in class DefaultModelClassFactory
      Parameters:
      theName - name of the desired structure in the form XXX_YYY
      theVersion - HL7 version (e.g. "2.3")
      theIsExplicit - true if the structure was specified explicitly in MSH-9-3, false if it was inferred from MSH-9-1 and MSH-9-2. If false, a lookup may be performed to find an alternate structure corresponding to that message type and event.
      Returns:
      corresponding message subclass if found; GenericMessage otherwise
      Throws:
      HL7Exception - if the version if not recognized or an appropriate class can not be found
    • getSegmentClass

      public Class<? extends Segment> getSegmentClass(String theName, String theVersion) throws HL7Exception
      Specified by:
      getSegmentClass in interface ModelClassFactory
      Overrides:
      getSegmentClass in class DefaultModelClassFactory
      Parameters:
      theName - name of segment
      theVersion - HL7 version
      Returns:
      a class that implements the specified segment
      Throws:
      HL7Exception - if the version if not recognized or an appropriate class can not be found
      See Also:
    • getTypeClass

      public Class<? extends Type> getTypeClass(String theName, String theVersion) throws HL7Exception
      Specified by:
      getTypeClass in interface ModelClassFactory
      Overrides:
      getTypeClass in class DefaultModelClassFactory
      Parameters:
      theName - name of type
      theVersion - HL7 version
      Returns:
      a class that implements the specified type
      Throws:
      HL7Exception - if the version if not recognized or an appropriate class can not be found
      See Also: