001    package org.vmdb.hl7;
002    
003    /**
004     * <p><Title:> Time Stamp (TS) Element. </p>
005     * <p>Description: HL7 Network Connectivity For VMDB. </p>
006     * <p>Copyright: Copyright (c) 2002-2003. </p>
007     * <p>Company: Veterinary Medical Database (VMDB). </p>
008     * @author Michael K. Martin
009     * @version 1.0
010     */
011    
012    public class TSElement extends HL7Element {
013       private String sNm = "TS";
014       private String sRl = "ST[ST]";
015    
016       /**
017        * Construct a Date/Time Element using the default name and type constants.
018        * @param iLevel One of the constants for specifying level as FIELD, COMPONENT, or
019        * SUBCOMPONENT.  Default FIELD.
020        */
021       public TSElement( int iLevel ) {
022          super( iLevel );
023          setName( sNm );
024          setRule( sRl );
025          setType( "TS" );
026       }
027    
028       /**
029        * Construct a Date/Time Element using the default name and type constants
030        * at the default level FIELD.
031        */
032       public TSElement() {
033          super( FIELD );
034          setName( sNm );
035          setRule( sRl );
036          setType( "TS" );
037       }
038    
039       /**
040        * Set the actual ISO formatted datetime string.<br><br>
041        * TODO: Add a convenience method to set this from normal strings or date variables
042        * @param sDateTime String is ISO format.
043        */
044       public void setDateTime( String sDateTime ) {
045          if( size() > 1 ) {
046             HL7Element e = new SimpleElement( iLevel + 1 );
047             e.setType( "ST" );
048             e.setName( "TS.1" );
049             e.setValue( sDateTime );
050             try {
051                setComponent( e, 1 );
052             } catch( MalformedFieldException mfe ) {
053                mfe.printStackTrace();
054             }
055          }
056          else {
057             setValue( sDateTime );
058          }
059       }
060    
061       /**
062        * Get the actual ISO formatted datetime string.
063        * @return String date/time in ISO format.
064        */
065       public String getDateTime() {
066          HL7Element e = getComponent( 1 );
067          if( e != null )
068             return e.getValue();
069          else
070             return "";
071       }
072    
073       /**
074        * Set precision.<br><br>
075        * Note: From the HL7 documentation,
076        * "In prior versions of HL7, an optional second component indicates the degree of
077        * precision of the time stamp (Y = year, L = month, D = day, H = hour,
078        * M = minute, S = second). This optional second component is retained only for
079        * purposes of backward compatibility."
080        * @param sPrecision String with the precision of the date/time
081        */
082       public void setPrecision( String sPrecision ) {
083          HL7Element e = new SimpleElement( iLevel + 1 );
084          e.setType( "ST" );
085          e.setName( "TS.2" );
086          e.setValue( sPrecision );
087          try {
088             setComponent( e, 2 );
089          } catch( MalformedFieldException mfe ) {
090             mfe.printStackTrace();
091          }
092       }
093    
094       /**
095        * Get precision.<br><br>
096        * Note: From the HL7 documentation,
097        * "In prior versions of HL7, an optional second component indicates the degree of
098        * precision of the time stamp (Y = year, L = month, D = day, H = hour,
099        * M = minute, S = second). This optional second component is retained only for
100        * purposes of backward compatibility."
101        * @return String with the precision of the date/time
102        */
103       public String getPrecision() {
104          HL7Element e = getComponent( 2 );
105          if( e != null )
106             return e.toString();
107          else
108             return "";
109       }
110    
111    } // end class TSElement
112