View Javadoc
1   package ca.uhn.hl7v2.util;
2   
3   import ca.uhn.hl7v2.HL7Exception;
4   
5   /**
6    * <p>Maps local codes to interface codes and vice versa.  The default implementation
7    * of CodeMapper is FileCodeMapper.  An instance of FileCodeMapper can be obtained  
8    * by calling <code>CodeMapper.getInstance()</code>.  See FileCodeMapper for instructions
9    * on how to set up code map files.  </p>
10   * <p>Please note that this class is not intended for the purpose of enumerating valid codes. 
11   * If that is what you are looking for please see <code>ca.uhn.hl7v2.TableRepository</code></p>
12   * @author Bryan Tripp  
13   */
14  public abstract class CodeMapper {
15  
16      private static CodeMapper codeMapper = null;
17      
18      /**
19       * Returns a singleton instance of CodeMapper.  This is currently 
20       * a FileCodeMapper by default.  
21       */
22      public synchronized static CodeMapper getInstance() throws HL7Exception {
23          if (codeMapper == null) {
24              //create new file code mapper 
25              codeMapper = new FileCodeMapper();
26          }
27          return codeMapper;
28      }
29      
30      /** 
31       * A convenience method that returns a local code from an underlying 
32       * CodeMapper instance by calling <code>CodeMapper.getInstance().getLocalCode(...)</code>
33       */
34      public static String getLocal(String interfaceName, int hl7Table, String interfaceCode) throws HL7Exception {
35          return CodeMapper.getInstance().getLocalCode(interfaceName, hl7Table, interfaceCode);
36      }
37  
38      /** 
39       * A convenience method that returns an interface code from an underlying 
40       * CodeMapper instance by calling <code>CodeMapper.getInstance().getInterfaceCode(...)</code>
41       */
42      public static String getInt(String interfaceName, int hl7Table, String localCode) throws HL7Exception {
43          return CodeMapper.getInstance().getInterfaceCode(interfaceName, hl7Table, localCode);
44      }
45      
46      /**
47       * Returns the interface code for the given local code, for use in the context 
48       * of the given interface.  
49       */
50      public abstract String getInterfaceCode(String interfaceName, int hl7Table, String localCode) throws HL7Exception;
51       
52      /**
53       * Returns the local code for the given interface code as it appears in  
54       * the given interface.  
55       */
56      public abstract String getLocalCode(String interfaceName, int hl7Table, String interfaceCode) throws HL7Exception;
57      
58      /**
59       * Determines what happens if no matching code is found during a lookup.  If set to true, 
60       * an HL7Exception is thrown if there is no match.  If false, null is returned.  The default
61       * is false. 
62       */
63      public abstract void throwExceptionIfNoMatch(boolean throwException);
64      
65      /**
66       * If values are cached in such a way that they are not guaranteed to be current, a call 
67       * to this method refreshes the values.  
68       */
69      public abstract void refreshCache() throws HL7Exception; 
70      
71      /* may add these functions later to allow consistent maintenance e.g via a UI ... 
72      public abstract String[] getInterfaceNames();
73      public abstract void addInterface(String name);
74      public abstract void addCodeMap(String interface, int hl7table, String localCode, String interfaceCode);
75      */
76  }