001 package org.vmdb.hl7;
002
003 /**
004 * <p><Title:> Observation Request (OBR) Segment. </p>
005 * <p>Description: Network Connectivity For VMDB. </p>
006 * <p>Copyright: Copyright (c) 2002-2003. </p>
007 * <p>Company: Veterinary Medical Database (VMDB). </p>
008 * Now is the time
009 * <p>For VMDB reporting, the OBR defines the observations made during the
010 * patient visit. These fall into two general categories: physical
011 * observations about the patient and impressions concerning the patientŐs
012 * condition at the end of the visit. The values for these observations
013 * are reported in OBX segments, which are described below. There can
014 * be many OBXŐs per OBR, but only one OBR per PV1. Since all of the
015 * observations named in this segment are being reported after the fact for
016 * VMDB reporting, elements that are commonly used to track the status of an
017 * order as well as the specific filler and placer information are unneeded.
018 * Thus only a very few elements in this segment are needed by the ORU message.
019 * See HL7 Standard Chapter 4 for details.</p>
020 * @author Michael K. Martin
021 * @version 1.0
022 */
023
024 public class OBRSegment extends HL7Segment {
025 private String sNm = "OBR";
026 private String sRl =
027 "DT[SI][EI][EI]CE[ID][TS]TS[TS][CQ][XCN][ID][CE][ST][TS]" +
028 "[CM][XCN][XTN][ST][ST][ST][ST][TS][CM][ID]ID[CM][TQ][XCN]" +
029 "[CM][ID][CE][CM][CM][CM][CM][TS][NM][CE][CE][CE][ID][ID]" +
030 "[CE][CE][CE][CE][CE]";
031
032 /**
033 * Construct an empty OBR segment.
034 */
035 public OBRSegment() {
036 setName( sNm );
037 setRule( sRl );
038 }
039
040 /**
041 * Construct an empty OBR segment, setting its containing message
042 * object.
043 * @param msgParent HL7SegmentContainer (Message or Loop) object that
044 * contains this segment.
045 */
046 public OBRSegment( HL7SegmentContainer msgParent ) {
047 super( msgParent );
048 setName( sNm );
049 setRule( sRl );
050 }
051
052 /**
053 * Set the coded universal service identifier from the
054 * individual components of a CE element.
055 * @param sCode code value normally snomed
056 * @param sText spelled out term
057 * @param sSystem normally snomed
058 */
059 public void setUniversalServiceId( String sCode, String sText, String sCodeType ) {
060 CEElement ceE = new CEElement( sCode, sText, sCodeType );
061 ceE.setName( "OBR.4" );
062 try {
063 setField( ceE, 4 );
064 }
065 catch( ArrayIndexOutOfBoundsException ae ) {
066 ae.printStackTrace();
067 }
068 catch( MalformedSegmentException mfe ) {
069 mfe.printStackTrace();
070 }
071 }
072
073 /**
074 * Set the coded universal service identifier.
075 * This version takes a preformed CE element
076 * @param ceServiceId CEElement usually a constant from LOINC or SNOMED
077 */
078 public void setUniversalServiceId( CEElement ceServiceId ) {
079 ceServiceId.setName( "OBR.4" );
080 try {
081 setField( ceServiceId, 4 );
082 }
083 catch( ArrayIndexOutOfBoundsException ae ) {
084 ae.printStackTrace();
085 }
086 catch( MalformedSegmentException mfe ) {
087 mfe.printStackTrace();
088 }
089 }
090
091 /**
092 * Get the universal service identifier as the complete CEElement.
093 * @return CEElement with coded species
094 */
095 public CEElement getUniversalServiceId() {
096 return (CEElement)getField( 4 );
097 }
098
099 /**
100 * Get just the text of the Universal Service Id.
101 * @return String with id text spelled out.
102 */
103 public String getUniversalServiceIdText() {
104 CEElement ceE = (CEElement)getField( 4 );
105 if( ceE != null )
106 return ceE.getText();
107 else
108 return "";
109 }
110
111 /**
112 * Set the observation date/time of the message to string formatted date/time.
113 * @param sDateTime String with date/time in yyyyMMddHHmmss format
114 */
115 public void setObservationDateTime( String sDateTime ) {
116 TSElement tse = new TSElement();
117 tse.setName( "OBR.7" );
118 tse.setDateTime( sDateTime );
119 try {
120 setField( tse, 7 );
121 }
122 catch( ArrayIndexOutOfBoundsException ae ) {
123 ae.printStackTrace();
124 }
125 catch( MalformedSegmentException mfe ) {
126 mfe.printStackTrace();
127 }
128 }
129
130 /**
131 * Get the observation date/time as a string.
132 * @return String date/time
133 */
134 public String getObservationDateTime() {
135 TSElement tse = (TSElement)getField( 7 );
136 if( tse != null )
137 return tse.getDateTime();
138 else
139 return "";
140 }
141
142 /**
143 * Set the result status code.
144 * @param sStatus String with date in ISO format
145 */
146 public void setResultStatus( String sStatus ) {
147 try {
148 setField( sStatus, 25 );
149 }
150 catch( ArrayIndexOutOfBoundsException ae ) {
151 ae.printStackTrace();
152 }
153 }
154
155 /**
156 * Get Result status code.
157 * @return String with status code
158 */
159 public String getResultStatus() {
160 HL7Element e = getField(25);
161 if( e != null )
162 return e.getValue();
163 else
164 return "";
165 }
166
167 } // End class OBRSegment