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 }