/*******************************************************************************
 *  Copyright 2017 Centre for Development of Advanced Computing(C-DAC), Pune
 *  
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *  
 *    http://www.apache.org/licenses/LICENSE-2.0
 *  
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *******************************************************************************/
package cdac.medinfo.sdk.hl7282.baselibs.segments;

import cdac.medinfo.sdk.hl7282.baselibs.CQ;
import cdac.medinfo.sdk.hl7282.baselibs.CWE;
import cdac.medinfo.sdk.hl7282.baselibs.DTM;
import cdac.medinfo.sdk.hl7282.baselibs.EI;
import cdac.medinfo.sdk.hl7282.baselibs.ID;
import cdac.medinfo.sdk.hl7282.baselibs.NM;
import cdac.medinfo.sdk.hl7282.baselibs.NR;
import cdac.medinfo.sdk.hl7282.baselibs.SAD;
import cdac.medinfo.sdk.hl7282.baselibs.ST;
import cdac.medinfo.sdk.hl7282.baselibs.TX;
import cdac.medinfo.sdk.hl7282.baselibs.XAD;
import cdac.medinfo.sdk.hl7282.baselibs.XTN;
import cdac.medinfo.sdk.hl7282.commoninterface.IDataType;
import cdac.medinfo.sdk.hl7282.commoninterface.ISingleCollection;
import cdac.medinfo.sdk.hl7282.exceptions.FieldMissingException;
import cdac.medinfo.sdk.hl7282.exceptions.InvalidFieldException;
import cdac.medinfo.sdk.hl7282.exceptions.InvalidSegmentException;
import cdac.medinfo.sdk.hl7282.utils.EnumSegments;
import cdac.medinfo.sdk.hl7282.utils.SingleCollection;

/***
 * OM1 - General Segment (Fields That Apply to Most Observations).<p>
 * OM1 segment contains the attributes that apply to the definition of most observations. 
 * This segment also contains the field attributes that specify what additional segments 
 * might also be defined for this observation.
 * <p>Represents an HL7 OM1 message segment. 
 * This segment has the following fields:</p><p>
 * OM1-1: Sequence Number - Test/Observation Master File (NM)<b>Required</b><br> 
 * OM1-2: Producer's Service/Test/Observation ID (CWE)<b>Required</b><br> 
 * OM1-3: Permitted Data Types (ID)<b>Optional</b><br> 
 * OM1-4: Specimen Required (ID)<b>Required</b><br> 
 * OM1-5: Producer ID (CWE)<b>Required</b><br> 
 * OM1-6: Observation Description (TX)<b>Optional</b><br> 
 * OM1-7: Other Service/Test/Observation IDs for the Observation (CWE)<b>Optional</b><br> 
 * OM1-8: Other Names (ST)<b>Backward</b><br> 
 * OM1-9: Preferred Report Name for the Observation (ST)<b>Optional</b><br> 
 * OM1-10: Preferred Short Name or Mnemonic for Observation (ST)<b>Optional</b><br> 
 * OM1-11: Preferred Long Name for the Observation (ST)<b>Optional</b><br> 
 * OM1-12: Orderability (ID)<b>Optional</b><br> 
 * OM1-13: Identity of Instrument Used to Perform this Study (CWE)<b>Optional</b><br> 
 * OM1-14: Coded Representation of Method (CWE)<b>Optional</b><br> 
 * OM1-15: Portable Device Indicator (ID)<b>Optional</b><br> 
 * OM1-16: Observation Producing Department/Section (CWE)<b>Backward</b><br> 
 * OM1-17: Telephone Number of Section (XTN)<b>Backward</b><br> 
 * OM1-18: Nature of Service/Test/Observation (CWE)<b>Required</b><br> 
 * OM1-19: Report Subheader (CWE)<b>Optional</b><br> 
 * OM1-20: Report Display Order (ST)<b>Optional</b><br> 
 * OM1-21: Date/Time Stamp for any change in Definition for the Observation (DTM)<b>Optional</b><br> 
 * OM1-22: Effective Date/Time of Change (DTM)<b>Optional</b><br> 
 * OM1-23: Typical Turn-Around Time (NM)<b>Backward</b><br> 
 * OM1-24: Processing Time (NM)<b>Optional</b><br> 
 * OM1-25: Processing Priority (ID)<b>Optional</b><br> 
 * OM1-26: Reporting Priority (ID)<b>Optional</b><br> 
 * OM1-27: Outside Site(s) Where Observation may be Performed (CWE)<b>Backward</b><br> 
 * OM1-28: Address of Outside Site(s) (XAD)<b>Backward</b><br> 
 * OM1-29: Phone Number of Outside Site (XTN)<b>Backward</b><br> 
 * OM1-30: Confidentiality Code (CWE)<b>Optional</b><br> 
 * OM1-31: Observations Required to Interpret the Observation (CWE)<b>Backward</b><br> 
 * OM1-32: Interpretation of Observations (TX)<b>Optional</b><br> 
 * OM1-33: Contraindications to Observations (CWE)<b>Optional</b><br> 
 * OM1-34: Reflex Tests/Observations (CWE)<b>Optional</b><br> 
 * OM1-35: Rules that Trigger Reflex Testing (TX)<b>Optional</b><br> 
 * OM1-36: Fixed Canned Message (CWE)<b>Optional</b><br> 
 * OM1-37: Patient Preparation (TX)<b>Optional</b><br> 
 * OM1-38: Procedure Medication (CWE)<b>Optional</b><br> 
 * OM1-39: Factors that may Affect the Observation (TX)<b>Optional</b><br> 
 * OM1-40: Service/Test/Observation Performance Schedule (ST)<b>Optional</b><br> 
 * OM1-41: Description of Test Methods (TX)<b>Optional</b><br> 
 * OM1-42: Kind of Quantity Observed (CWE)<b>Optional</b><br> 
 * OM1-43: Point Versus Interval (CWE)<b>Optional</b><br> 
 * OM1-44: Challenge Information (TX)<b>Optional</b><br> 
 * OM1-45: Relationship Modifier (CWE)<b>Optional</b><br> 
 * OM1-46: Target Anatomic Site Of Test (CWE)<b>Optional</b><br> 
 * OM1-47: Modality Of Imaging Measurement (CWE)<b>Optional</b><br>
 * OM1-48: Exclusive Test (ID)<b>Optional</b><br> 
 * OM1-49: Diagnostic Serv Sect ID (ID)<b>Optional</b><br> 
 * OM1-50: Taxonomic Classification Code (CWE)<b>Optional</b><br> 
 * OM1-51: Other Names (ST)<b>Optional</b><br> 
 * OM1-52: Replacement Producer's Service/Test/Observation ID (CWE)<b>Optional</b><br> 
 * OM1-53: Prior Resuts Instructions (TX)<b>Optional</b><br> 
 * OM1-54: Special Instructions (TX)<b>Optional</b><br> 
 * OM1-55: Test Category (CWE)<b>Optional</b><br> 
 * OM1-56: Observation/Identifier associated with Producer's Service/Test/Observation ID (CWE)<b>Optional</b><br> 
 * OM1-57: Typical Turn-Around Time (CQ)<b>Optional</b><br> 
 * OM1-58: Gender Restriction (CWE)<b>Optional</b><br> 
 * OM1-59: Age Restriction (NR)<b>Optional</b><br><p>
 * This class provides mechanism to validate message against HL7 v 2.8.2 standard.
 * The class provides accessors & mutators for the elements mentioned above.
 * The class has validate method which validates Message against HL7 v 2.8.2 standard.
 *
 * <p>User can also create Segment through {@link SegmentFactory}
 */
 public class OM1 extends Segment    
{
	

	/**
	 * Constructs the OM1 segment.
	 */
	public OM1()
	{super(EnumSegments.HL7_SEG_OM1);
	}

	//Integer values used in getter/setter is unique item id defined 
	//for each attribute.

	/**
	 * Retrieves the AddressvofvOutsidevSite.
	 * This field contains the address of the outside services listed in OM1-28-Address of Outside Site(s) where observation is performed. 
	 * @return ISingleCollection<XAD> - addressofOutsideSite
	 */
	public ISingleCollection<XAD> getAddressofOutsideSite() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(613);
		ISingleCollection<XAD> objDataList = new SingleCollection<XAD>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				XAD objXAD = (XAD)objDataType;
				objDataList.add(objXAD);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Challenge Information.
	 * This field provides information for classifying observations by the challenge 
	 * component of the test, if a challenge does speciate the observation. 
	 * @return TX - challengeInformation
	 */
	public TX getChallengeInformation() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(939);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (TX)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Coded Representation of Method.
	 * This field contains the method(s) use to produce the observation and should be
	 *  recorded in a computer-understandable (coded) form here. 
	 * @return ISingleCollection<CWE> - codedRepresentationofMethod
	 */
	public ISingleCollection<CWE> getCodedRepresentationofMethod() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(599);
		ISingleCollection<CWE> objDataList = new SingleCollection<CWE>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				CWE objCE = (CWE)objDataType;
				objDataList.add(objCE);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Confidentiality Code.
	 * This field contains the degree to which special confidentiality protection should be applied to the observation.
	 * @return CWE - confidentialityCode
	 */
	public CWE getConfidentialityCode() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(615);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Contraindications to Observations.
	 * This field contains the diagnosis or problem for which the test is a contraindication or of possible danger.
	 * @return CWE - contraindicationstoObservations
	 */
	public CWE getContraindicationstoObservations() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(618);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Date Time Stamp for any change in Definition for the Observation.
	 * This field contains the date and time that the last of any field change is made and 
	 * in the host's record corresponding to the OM1 segment.
	 * @return DTM - dateTimeStampforanychangeinDefinitionfortheObservation
	 */
	public DTM getDateTimeStampforanychangeinDefinitionfortheObservation() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(606);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Description of Test Methods.
	 * This field contains the text description of the methods used to perform the text and 
	 * generate the observations. 
	 * @return TX - descriptionofTestMethods
	 */
	public TX getDescriptionofTestMethods() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(626);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (TX)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Effective Date Time of Change.
	 * This field contains the date and time of the last change in the test procedure that 
	 * would make previous results incompatible with new results.
	 * @return DTM - effectiveDateTimeofChange
	 */
	public DTM getEffectiveDateTimeofChange() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(607);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Factors that may Affect the Observation.
	 * This field contains the text description of the foods, diagnoses, drugs, or other 
	 * conditions that may influence the interpretation of the observation. 
	 * @return TX - factorsthatmayAffecttheObservation
	 */
	public TX getFactorsthatmayAffecttheObservation() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(624);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (TX)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Fixed Canned Message.
	 * This field contains the codes and a fixed text message that is always associated with an abbreviation. 
	 * @return CWE - fixedCannedMessage
	 */
	public CWE getFixedCannedMessage() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(621);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Identity of Instrument Used to Perform this Study.
	 * This field identify the instrument or device that is used to generate this observation or battery. 
	 * @return ISingleCollection<CWE> - identityofInstrumentUsedtoPerformthisStudy
	 */
	public ISingleCollection<CWE> getIdentityofInstrumentUsedtoPerformthisStudy() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(598);
		ISingleCollection<CWE> objDataList = new SingleCollection<CWE>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				CWE objCE = (CWE)objDataType;
				objDataList.add(objCE);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Interpretation of Observations.
	 * This field contains the clinical information about interpreting test results.  
	 * @return TX - interpretationofObservations
	 */
	public TX getInterpretationofObservations() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(617);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (TX)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Kind of Quantity Observed.
	 * This field describes the underlying kind of property represented by this observation.
	 * @return CWE - kindofQuantityObserved
	 */
	public CWE getKindofQuantityObserved() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(937);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Modality Of Imaging Measurement.
	 * This field attribute describes the modality used to classify the observations.
	 * @return CWE - modalityOfImagingMeasurement
	 */
	public CWE getModalityOfImagingMeasurement() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(942);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Nature of Service Test Observation.
	 * This field indicates whether the definition entry identify a test battery, an entire
	 *  functional procedure or study.
	 * @return CWE - natureofServiceTestObservation
	 */
	public CWE getNatureofServiceTestObservation() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(603);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Observation Description.
	 * This field contains a text description of this observation.
	 * @return TX - observationDescription
	 */
	public TX getObservationDescription() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(591);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (TX)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Observation Producing Department Section.
	 * This field permits the sorting of observation orders and values by the providing service's department/section.
	 * @return ISingleCollection<CWE> - observationProducingDepartmentSection
	 */
	public ISingleCollection<CWE> getObservationProducingDepartmentSection() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(601);
		ISingleCollection<CWE> objDataList = new SingleCollection<CWE>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				CWE objCE = (CWE)objDataType;
				objDataList.add(objCE);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Observations Required to Interpret the Observation.
	 * This field contains the list of variables that the diagnostic service needs to 
	 * interpret the results of an ordered study. 
	 * @return CWE - observationsRequiredtoInterprettheObservation
	 */
	public CWE getObservationsRequiredtoInterprettheObservation() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(616);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Orderability.
	 * This field indicates whether or not a service/test/observation is an orderable code.
	 * @return ID - orderability
	 */
	public ID getOrderability() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(597);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Other Names.
	 * This field contains any test aliases or synonyms for the name in the context of the ordering service.
	 * @return ISingleCollection<ST> - otherNames
	 */
	/*	@Deprecated
	public ISingleCollection<ST> getOtherNames() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(593);
		ISingleCollection<ST> objDataList = new SingleCollection<ST>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				ST objST = (ST)objDataType;
				objDataList.add(objST);
			}
		}
		return objDataList;
	}*/

	/**
	 * Retrieves the Other Service Test Observation IDs for the Observation.
	 * This field contains all alias codes/identifiers for this observation.
	 * @return CWE - otherServiceTestObservationIDsfortheObservation
	 */
	public CWE getOtherServiceTestObservationIDsfortheObservation() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(592);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Outside Site Where Observation may be Performed.
	 * This field contains the identification(s) of the outside service(s) that produce(s) the observation.  
	 * @return ISingleCollection<CWE> - outsideSiteWhereObservationmaybePerformed
	 */
	public ISingleCollection<CWE> getOutsideSiteWhereObservationmaybePerformed() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(612);
		ISingleCollection<CWE> objDataList = new SingleCollection<CWE>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				CWE objCE = (CWE)objDataType;
				objDataList.add(objCE);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Patient Preparation.
	 * This field contains the tests or observations that require special patient preparation,
	 *  diet, or medications.
	 * @return TX - patientPreparation
	 */
	public TX getPatientPreparation() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(622);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (TX)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Permitted Data Types.
	 * This field contains the allowed data type(s) for this observation.  
	 * @return ISingleCollection<ID> - permittedDataTypes
	 */
	public ISingleCollection<ID> getPermittedDataTypes() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(588);
		ISingleCollection<ID> objDataList = new SingleCollection<ID>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				ID objID = (ID)objDataType;
				objDataList.add(objID);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Phone Number of Outside Site.
	 * This field contains the telephone number of the outside site.
	 * @return XTN - phoneNumberofOutsideSite
	 */
	public XTN getPhoneNumberofOutsideSite() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(614);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (XTN)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Point Versus Interval.
	 * This field allows master files to classify observations as measuring the patient's 
	 * state at a point in time.
	 * @return CWE - pointVersusInterval
	 */
	public CWE getPointVersusInterval() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(938);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Portable Device Indicator.
	 * This field indicates whether a portable device may be used for the service/test/observation or not.  
	 * @return ID - portableDeviceIndicator
	 */
	public ID getPortableDeviceIndicator() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(600);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Preferred Long Name for the Observation.
	 * This contains the fully-specified name for the observation or battery.
	 * @return ST - preferredLongNamefortheObservation
	 */
	public ST getPreferredLongNamefortheObservation() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(596);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ST)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Preferred Report Name for the Observation.
	 * This field contains the preferred name for reporting the observation or battery.  
	 * @return ST - preferredReportNamefortheObservation
	 */
	public ST getPreferredReportNamefortheObservation() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(594);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ST)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Preferred Short Name or Mnemonic for Observation.
	 * This field contains the name that can be used in space-limited reports (e.g., specimen labels) 
	 * to identify the observation for the convenience of human readers.  
	 * @return ST - preferredShortNameorMnemonicforObservation
	 */
	public ST getPreferredShortNameorMnemonicforObservation() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(595);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ST)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Procedure Medication.
	 * This field contains the treatments that may be needed as part of the procedure.  
	 * @return CWE - procedureMedication
	 */
	public CWE getProcedureMedication() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(623);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Processing Priority.
	 * This field contains one or more available priorities for performing the observation or test.  
	 * @return ISingleCollection<ID> - processingPriority
	 */
	public ISingleCollection<ID> getProcessingPriority() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(610);
		ISingleCollection<ID> objDataList = new SingleCollection<ID>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				ID objID = (ID)objDataType;
				objDataList.add(objID);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Processing Time.
	 * This field contains the usual length of time (in minutes) between the start of a test process
	 *  and its completion.
	 * @return NM - processingTime
	 */
	public NM getProcessingTime() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(609);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (NM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Producer ID.
	 * This field uniquely identify the service producing the observation described in this segment.  
	 * @return CWE - producerID
	 */
	public CWE getProducerID() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(590);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Producer Service Test Observation ID.
	 * This field contains the producer's usual or preferred identification of the test or observation.   
	 * @return CWE - producerServiceTestObservationID
	 */
	public CWE getProducerServiceTestObservationID() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(587);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Reflex Tests Observations.
	 * This field contains the test names as type CWE. 
	 * @return ISingleCollection<CWE> - reflexTestsObservations
	 */
	public ISingleCollection<CWE> getReflexTestsObservations() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(619);
		ISingleCollection<CWE> objDataList = new SingleCollection<CWE>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				CWE objCE = (CWE)objDataType;
				objDataList.add(objCE);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Relationship Modifier.
	 * This field provides a mechanism for classifying observations according to the subject, in
	 *  relation to the patient whose results might be stored with as "patient" data.  
	 * @return CWE - relationshipModifier
	 */
	public CWE getRelationshipModifier() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(940);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Report Display Order.
	 * This field contains an optional string that defines the sort order in which this observation 
	 * is presented in a standard report or display that contains the many observations.
	 * @return ST - reportDisplayOrder
	 */
	public ST getReportDisplayOrder() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(605);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ST)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Reporting Priority.
	 * This field contains the available priorities reporting the test results when the user is 
	 * asked to specify the reporting priority independent of the processing priority.
	 * @return ID - reportingPriority
	 */
	public ID getReportingPriority() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(611);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Report Sub header.
	 * This field contains an optional string that defines the preferred header under which this
	 *  observation should be listed on a standard display.  
	 * @return CWE - reportSubheader
	 */
	public CWE getReportSubheader() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(604);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Rules that Trigger Reflex Testing.
	 * This field contains the rules that trigger the reflex tests.
	 * @return TX - rulesthatTriggerReflexTesting
	 */
	public TX getRulesthatTriggerReflexTesting() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(620);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (TX)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Sequence Number Test Observation Master File.
	 * This field contains the first OM1 segment in a message.
	 * @return NM - sequenceNumberTestObservationMasterFile
	 */
	public NM getSequenceNumberTestObservationMasterFile() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(586);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (NM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Service Test Observation Performance Schedule.
	 * This field contains the diagnostic studies/tests that are performed only at certain times
	 *  during the course of a work day or work week.  
	 * @return ISingleCollection<ST> - serviceTestObservationPerformanceSchedule
	 */
	public ISingleCollection<ST> getServiceTestObservationPerformanceSchedule() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(625);
		ISingleCollection<ST> objDataList = new SingleCollection<ST>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				ST objST = (ST)objDataType;
				objDataList.add(objST);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Specimen Required.
	 * This field contains a flag indicating whether at least one specimen is required for 
	 * the service/test/observation or not.
	 * @return ID - specimenRequired
	 */
	public ID getSpecimenRequired() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(589);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Target Anatomic Site Of Test.
	 * This field formally indicates the site of the observation.
	 * @return CWE - targetAnatomicSiteOfTest
	 */
	public CWE getTargetAnatomicSiteOfTest() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(941);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Telephone Number of Section.
	 * This field contains the telephone number for calling responsible parties in this section 
	 * to ask results or advice about the use of this test.
	 * @return XTN - telephoneNumberofSection
	 */
	public XTN getTelephoneNumberofSection() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(602);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (XTN)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Typical Turn Around Time.
	 * This field contains the typical processing time for single test/observation.  
	 * @return NM - typicalTurnAroundTime
	 */
	/*@Deprecated
	public NM getTypicalTurnAroundTime() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(608);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (NM)objDataCollection.elementAt(0);
		else
			return null;
	}*/
	
	/**
	 * Retrieves the Exclusive Test.
	 * This field defines if this test should be a specific event with no other tests to be performed with this test.
	 * @return ID - ExclusiveTest
	 */
	public ID getExclusiveTest() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(3310);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Diagnostic Serv Sect ID.
	 * This field is the section of the diagnostic service where the observation was performed. 
	 * @return ID - DiagnosticServSectID
	 */
	public ID getDiagnosticServSectID() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(257);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Taxonomic Classification Code.
	 * The species of living organism. This may include the common or scientific name, based on the coding system(s) used. SNOMED is the recommended coding system.   
	 * @return String - TaxonomicClassificationCode
	 */
	public CWE getTaxonomicClassificationCode() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1539);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Other Names.
	 * This field contains any test aliases or synonyms for the name in the context of the ordering service.   
	 * @return ISingleCollection<ST> - OtherNames
	 */
	public ISingleCollection<ST> getOtherNames() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(3399);
		ISingleCollection<ST> objDataList = new SingleCollection<ST>();
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				ST objST = (ST)objDataType;
				objDataList.add(objST);
			}
		}

		return objDataList;
	}
	
	/**
	 * Retrieves the Replacement Producer's Service/Test/Observation ID.
	 * @return ISingleCollection<CWE> - ReplacementProducersServiceTestObservationID
	 */
	public ISingleCollection<CWE> getReplacementProducersServiceTestObservationID() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(3433);
		ISingleCollection<CWE> objDataList = new SingleCollection<CWE>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				CWE objCWE = (CWE)objDataType;
				objDataList.add(objCWE);
			}
		}
		return objDataList;
	}
	
	/**
	 * Retrieves the Prior Resuts Instructions.
	 * This field is used to indicate when the test in OM1-2 Producer's Service/Test/Observation ID is ordered, prior results  should accompany the order (OML^O21^OML_O21: Laboratory Order Message).  
	 * @return ISingleCollection<TX> - PriorResutsInstructions
	 */
	public ISingleCollection<TX> getPriorResutsInstructions()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(3434);
		ISingleCollection<TX> objDataList = new SingleCollection<TX>();
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				TX objTX = (TX)objDataType;
				objDataList.add(objTX);
			}
		}

		return objDataList;
	}
	
	/**
	 * Retrieves the Special Instructions.
	 * This field is used to convey special instructions for the test
	 * @return String - SpecialInstructions
	 */
	public TX getSpecialInstructions() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(3435);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (TX)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Test Category.
	 * This field may be used to organize tests for display or other user defined purpose.    
	 * @return ISingleCollection<CWE> - TestCategory
	 */
	public ISingleCollection<CWE> getTestCategory() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(3436);
		ISingleCollection<CWE> objDataList = new SingleCollection<CWE>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				CWE objCWE = (CWE)objDataType;
				objDataList.add(objCWE);
			}
		}
		return objDataList;
	}
	
	/**
	 * Retrieves the Observation/Identifier associated with Producer’s Service/Test/Observation ID.
	 * :  This field contains the code for resulted tests, which are associated with the Producer’s Service/Test/Observation ID code in OM1-2 and will appear in OBX-3 Observation Identifier in a result message.  
	 * @return String - ObservationIdentifierAssociatedWithProducersServiceTestObservationID
	 */
	public CWE getObservationIdentifierAssociatedWithProducersServiceTestObservationID() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(3437);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Typical Turn-Around Time.
	 * This field specify the quantity and units administered for the blood code identified in field 1.
	 * @return CQ - TypicalTurnAroundTime
	 */
	public CQ getTypicalTurnAroundTime() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(3438);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CQ)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Gender Restriction.
	 * This field is used to convey gender restrictions for ordering the test specified in OM1-2 Producer's Service/Test/Observation ID.  
	 * @return ISingleCollection<CWE> - GenderRestriction
	 */
	public ISingleCollection<CWE> getGenderRestriction() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(3439);
		ISingleCollection<CWE> objDataList = new SingleCollection<CWE>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				CWE objCWE = (CWE)objDataType;
				objDataList.add(objCWE);
			}
		}
		return objDataList;
	}
	
	/**
	 * Retrieves the Age Restriction.
	 * This field is used to convey age restrictions for ordering the test specified in OM1-2 Producer's Service/Test/Observation ID.  
	 * @return ISingleCollection<NR> - AgeRestriction
	 */
	public ISingleCollection<NR> getAgeRestriction() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(3440);
		ISingleCollection<NR> objDataList = new SingleCollection<NR>();
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				NR objNR = (NR)objDataType;
				objDataList.add(objNR);
			}
		}

		return objDataList;
	}

	/**
	 * Add the AddressvofvOutsidevSite.
	 * This field contains the address of the outside services listed in OM1-28-Address of Outside Site(s) where observation is performed.
	 * @param objStreetAddress Specifies the street address.
	 * @param strOtherDesignation Specifies the Second line of address. 
	 * @param strCity The city, or district or place where the addressee is located. 
	 * @param strStateOrProvince Specifies the state or province where the addressee is located.
	 * @param strZipOrPostalCode Specifies the zip or postal code where the addressee is located. 
	 * @param strCountry Specifies the country where the addressee is located.
	 * @param strAddressType Specifies the kind or type of address.
	 * @param strOtherGeographicDesignation Specifies any other geographic designation. 
	 * @param objCountyParishCode Specifies a code that represents the county in which the specified address resides. 
	 * @param objCensusTract Specifies a code that represents the census tract in which the specified address resides. 
	 * @param strAddressRepresentationCode Specifies representations of the same name/address Suggested values are I,A,P [Refer table 0465]
	 * @param objEffectiveDate It is The first date, if known, on which the address is valid and active.
	 * @param objExpirationDate It is The last date, if known, on which the address is valid and active.
	 * @param objExpirationReason indicates why this address was marked as ended.
	 * @param strTemporaryIndicator indicates whether address is considered temporary .
	 * @param strBadAddressIndicator indicates whether it is possible to contact the owning entity.
	 * @param strAddressUsage indicates how the address is intended to be used.
	 * @param strAddressee indicates the name of the person whose address is intended to be used.
	 * @param strComment indicated descriptive information
	 * @param strPreferenceOrder preference order
	 * @param objProtectionCode indicates that an address need to be protected
	 * @param objAdressIdentifier indicates a unique identifier for address
	 */	
	public void addAddressofOutsideSite(SAD objStreetAddress,String strOtherDesignation,String strCity,
			String strStateOrProvince,String strZipOrPostalCode,String strCountry,String strAddressType,
			String strOtherGeographicDesignation,CWE objCountyParishCode,CWE objCensusTract,
			String strAddressRepresentationCode,DTM objEffectiveDate,
			DTM objExpirationDate, CWE objEXpirationReason, String strTemporaryIndicator,
			String strBadAddressIndicator, String strAddressUsage, String strAddressee, String strComment,
			String strPreferenceOrder, CWE objProtectionCode, EI objAddressIdentifier)
	{
		XAD xad = (XAD)getDataElement(613);
		xad.setStreetAddress(objStreetAddress);
		xad.setOtherDesignation(strOtherDesignation);
		xad.setCity(strCity);
		xad.setStateOrProvince(strStateOrProvince);
		xad.setZipOrPostalCode(strZipOrPostalCode);
		xad.setCountry(strCountry);
		xad.setAddressType(strAddressType);
		xad.setOtherGeographicDesignation(strOtherGeographicDesignation);
		xad.setCountyParishCode(objCountyParishCode);
		xad.setCensusTract(objCensusTract);
		xad.setAddressRepresentationCode(strAddressRepresentationCode);
 
		xad.setEffectiveDate(objEffectiveDate);
		xad.setExpirationDate(objExpirationDate); 
		xad.setExpirationReason(objEXpirationReason);
		xad.setTemporaryIndicator(strTemporaryIndicator);
		xad.setBadAddressIndicator(strBadAddressIndicator);
		xad.setAddressUsage(strAddressUsage);
		xad.setAddressee(strAddressee);
		xad.setComment(strComment);
		xad.setPreferenceOrder(strPreferenceOrder);
		xad.setProtectionCode(objProtectionCode);
		xad.setAddressIdentifier(objAddressIdentifier);
		addAddressofOutsideSite(xad);
	}

	/**
	 * Add the AddressvofvOutsidevSite.
	 * This field contains the address of the outside services listed in OM1-28-Address of Outside Site(s) where observation is performed.
	 * @param objAddressofOutsideSite Object of AddressvofvOutsidevSite.
	 */
	public void addAddressofOutsideSite(XAD objAddressofOutsideSite)
	{
		addDataType(613,objAddressofOutsideSite);
	}

	/**
	 * Set the AddressvofvOutsidevSite.
	 * This field contains the address of the outside services listed in OM1-28-Address of Outside Site(s) where observation is performed.
	 * @param objAddressofOutsideSiteList List of AddressvofvOutsidevSite.
	 */
	@SuppressWarnings("unchecked")
	public void setAddressofOutsideSite(ISingleCollection<XAD> objAddressofOutsideSiteList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objAddressofOutsideSiteList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(613,objCollection);
	}

	/**
	 * Set the Challenge Information.
	 * This field provides information for classifying observations by the challenge 
	 * component of the test, if a challenge does speciate the observation.
	 * @param strChallengeInformation String to be passed as Challenge Information
	 */ 
	public void setChallengeInformation (String strChallengeInformation) 
	{
		TX challengeInformation  = (TX)getDataElement(939);
		challengeInformation.setValue(strChallengeInformation); 
		setChallengeInformation(challengeInformation);

	} 

	/** Set the Challenge Information.
	 * This field provides information for classifying observations by the challenge 
	 * component of the test, if a challenge does speciate the observation.
	 * @param strChallengeInformation String to be passed as Challenge Information
	 */ 
	public void setChallengeInformation(TX objchallengeInformation)
	{
		setDataType(939,objchallengeInformation);

	}

	/**
	 * Add the Coded Representation of Method.
	 * This field contains the method(s) use to produce the observation and should be
	 *  recorded in a computer-understandable (coded) form here. 
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */
	public void addCodedRepresentationofMethod(String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(599);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		addCodedRepresentationofMethod(cwe);
	}

	/**
	 * Add the Coded Representation of Method.
	 * This field contains the method(s) use to produce the observation and should be
	 *  recorded in a computer-understandable (coded) form here. 
	 * @param objCodedRepresentationofMethod Object of Coded Representation of Method.
	 */
	public void addCodedRepresentationofMethod(CWE objCodedRepresentationofMethod)
	{
		addDataType(599,objCodedRepresentationofMethod);

	}

	/**
	 * Set the Coded Representation of Method.
	 * This field contains the method(s) use to produce the observation and should be
	 *  recorded in a computer-understandable (coded) form here. 
	 * @param objCodedRepresentationofMethodList List of Coded Representation of Method.
	 */
	@SuppressWarnings("unchecked")
	public void setCodedRepresentationofMethod(ISingleCollection<CWE> objCodedRepresentationofMethodList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objCodedRepresentationofMethodList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(599,objCollection);
	}

	/**
	 * Set the Confidentiality Code.
	 * This field contains the degree to which special confidentiality protection should be applied to the observation.
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */
	public void setConfidentialityCode(String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(615);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		setConfidentialityCode(cwe);

	} 

	/** 
	 * Set the Confidentiality Code.
	 * This field contains the degree to which special confidentiality protection should be applied to the observation.
	 * @param objconfidentialityCode Object of Confidentiality Code.
	 */ 
	public void setConfidentialityCode(CWE objconfidentialityCode)
	{
		setDataType(615,objconfidentialityCode);

	}

	/**
	 * Set the Contraindications to Observations.
	 * This field contains the diagnosis or problem for which the test is a contraindication or of possible danger.
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */ 
	public void setContraindicationstoObservations (String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(618);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		setContraindicationstoObservations(cwe);

	} 

	/** 
	 * Set the Contraindications to Observations.
	 * This field contains the diagnosis or problem for which the test is a contraindication or of possible danger.
	 * @param objcontraindicationstoObservations Object of Contraindications to Observations.
	 */ 
	public void setContraindicationstoObservations(CWE objcontraindicationstoObservations)
	{
		setDataType(618,objcontraindicationstoObservations);

	}

	/**
	 * Set the Date Time Stamp for any change in Definition for the Observation.
	 * This field contains the date and time that the last of any field change is made and 
	 * in the host's record corresponding to the OM1 segment.
	 * @param strTime Specifies a point in time using a 24-hour clock notation. 
	 */ 
	public void setDateTimeStampforanychangeinDefinitionfortheObservation (String strTime) 
	{
		DTM dateTimeStampforanychangeinDefinitionfortheObservation  = (DTM)getDataElement(606);
		dateTimeStampforanychangeinDefinitionfortheObservation.setValue(strTime);
		setDateTimeStampforanychangeinDefinitionfortheObservation(dateTimeStampforanychangeinDefinitionfortheObservation);
	} 

	/** 
	 * Set the Date Time Stamp for any change in Definition for the Observation.
	 * This field contains the date and time that the last of any field change is made and 
	 * in the host's record corresponding to the OM1 segment.
	 * @param objdateTimeStampforanychangeinDefinitionfortheObservation Object of Date Time Stamp for any change in Definition for the Observation.
	 */ 
	public void setDateTimeStampforanychangeinDefinitionfortheObservation(DTM objdateTimeStampforanychangeinDefinitionfortheObservation)
	{
		setDataType(606,objdateTimeStampforanychangeinDefinitionfortheObservation);

	}

	/**
	 * Set the Description of Test Methods.
	 * This field contains the text description of the methods used to perform the text and 
	 * generate the observations.
	 * @param strDescriptionofTestMethods String to be passed as Description of Test Methods
	 */ 
	public void setDescriptionofTestMethods (String strDescriptionofTestMethods) 
	{
		TX descriptionofTestMethods  = (TX)getDataElement(626);
		descriptionofTestMethods.setValue(strDescriptionofTestMethods); 
		setDescriptionofTestMethods(descriptionofTestMethods);

	} 

	/** 
	 * Set the Description of Test Methods.
	 * This field contains the text description of the methods used to perform the text and 
	 * generate the observations.
	 * @param strDescriptionofTestMethods String to be passed as Description of Test Methods
	 */ 
	public void setDescriptionofTestMethods(TX objdescriptionofTestMethods)
	{
		setDataType(626,objdescriptionofTestMethods);

	}

	/**
	 * Set the Effective Date Time of Change.
	 * This field contains the date and time of the last change in the test procedure that 
	 * would make previous results incompatible with new results.
	 * @param strTime Specifies a point in time using a 24-hour clock notation. 
	 * @param strDegreeOfPrecision The degree of precision of the time stamp .Suggested Values Y,L,D,H,M,S [Refer to HL7 Table 0529].
	 */ 
	public void setEffectiveDateTimeofChange (String strTime) 
	{
		DTM effectiveDateTimeofChange  = (DTM)getDataElement(607);
		effectiveDateTimeofChange.setValue(strTime);
		setEffectiveDateTimeofChange(effectiveDateTimeofChange);
	} 

	/** Set the Effective Date Time of Change.
	 * This field contains the date and time of the last change in the test procedure that 
	 * would make previous results incompatible with new results.
	 * @param strTime Specifies a point in time using a 24-hour clock notation. 
	 * @param strDegreeOfPrecision The degree of precision of the time stamp .Suggested Values Y,L,D,H,M,S [Refer to HL7 Table 0529].
	 */ 
	public void setEffectiveDateTimeofChange(DTM objeffectiveDateTimeofChange)
	{
		setDataType(607,objeffectiveDateTimeofChange);

	}

	/**
	 * Set the Factors that may Affect the Observation.
	 * This field contains the text description of the foods, diagnoses, drugs, or other 
	 * conditions that may influence the interpretation of the observation.
	 * @param strFactorsthatmayAffecttheObservation String to be passed as 'Factors that may Affect the Observation'
	 */ 
	public void setFactorsthatmayAffecttheObservation (String strFactorsthatmayAffecttheObservation) 
	{
		TX factorsthatmayAffecttheObservation  = (TX)getDataElement(624);
		factorsthatmayAffecttheObservation.setValue(strFactorsthatmayAffecttheObservation); 
		setFactorsthatmayAffecttheObservation(factorsthatmayAffecttheObservation);

	} 

	/** Set the Factors that may Affect the Observation.
	 * This field contains the text description of the foods, diagnoses, drugs, or other 
	 * conditions that may influence the interpretation of the observation.
	 * @param strFactorsthatmayAffecttheObservation String to be passed as 'Factors that may Affect the Observation'
	 */ 
	public void setFactorsthatmayAffecttheObservation(TX objfactorsthatmayAffecttheObservation)
	{
		setDataType(624,objfactorsthatmayAffecttheObservation);

	}

	/**
	 * Set the Fixed Canned Message.
	 * This field contains the codes and a fixed text message that is always associated with an abbreviation. 
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */ 
	public void setFixedCannedMessage (String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(621);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		setFixedCannedMessage(cwe);

	} 

	/** Set the Fixed Canned Message.
	 * This field contains the codes and a fixed text message that is always associated with an abbreviation. 
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 */ 
	public void setFixedCannedMessage(CWE objfixedCannedMessage)
	{
		setDataType(621,objfixedCannedMessage);

	}

	/**
	 * Add the Identity of Instrument Used to Perform this Study.
	 * This field identify the instrument or device that is used to generate this observation or battery. 
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */
	public void addIdentityofInstrumentUsedtoPerformthisStudy(String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(598);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		addIdentityofInstrumentUsedtoPerformthisStudy(cwe);
	}

	/**
	 * Add the Identity of Instrument Used to Perform this Study.
	 * This field identify the instrument or device that is used to generate this observation or battery.
	 * @param objIdentityofInstrumentUsedtoPerformthisStudy Object of Identity of Instrument Used to Perform this Study.
	 */
	public void addIdentityofInstrumentUsedtoPerformthisStudy(CWE objIdentityofInstrumentUsedtoPerformthisStudy)
	{
		addDataType(598,objIdentityofInstrumentUsedtoPerformthisStudy);
	}

	/**
	 * Set the Identity of Instrument Used to Perform this Study.
	 * This field identify the instrument or device that is used to generate this observation or battery.
	 * @param objIdentityofInstrumentUsedtoPerformthisStudyList List of Identity of Instrument Used to Perform this Study.
	 */
	@SuppressWarnings("unchecked")
	public void setIdentityofInstrumentUsedtoPerformthisStudy(ISingleCollection<CWE> objIdentityofInstrumentUsedtoPerformthisStudyList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objIdentityofInstrumentUsedtoPerformthisStudyList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(598,objCollection);
	}

	/**
	 * Set the Interpretation of Observations.
	 * This field contains the clinical information about interpreting test results.  
	 * @param strInterpretationofObservations String to be passed as Interpretation of Observations
	 */ 
	public void setInterpretationofObservations (String strInterpretationofObservations) 
	{
		TX interpretationofObservations  = (TX)getDataElement(617);
		interpretationofObservations.setValue(strInterpretationofObservations); 
		setInterpretationofObservations(interpretationofObservations);

	} 

	/** Set the Interpretation of Observations.
	 * This field contains the clinical information about interpreting test results.  
	 * @param strInterpretationofObservations String to be passed as Interpretation of Observations
	 */ 
	public void setInterpretationofObservations(TX objinterpretationofObservations)
	{
		setDataType(617,objinterpretationofObservations);

	}

	/**
	 * Set the Kind of Quantity Observed.
	 * This field describes the underlying kind of property represented by this observation.
	* @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */
	public void setKindofQuantityObserved(String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(937);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		setKindofQuantityObserved(cwe);

	} 

	/** Set the Kind of Quantity Observed.
	 * This field describes the underlying kind of property represented by this observation.
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 */ 
	public void setKindofQuantityObserved(CWE objkindofQuantityObserved)
	{
		setDataType(937,objkindofQuantityObserved);

	}

	/**
	 * Set the Modality Of Imaging Measurement.
	 * This field attribute describes the modality used to classify the observations.
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */ 
	public void setModalityOfImagingMeasurement (String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(942);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		setModalityOfImagingMeasurement(cwe);

	} 

	/** Set the Modality Of Imaging Measurement.
	 * This field attribute describes the modality used to classify the observations.
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 */ 
	public void setModalityOfImagingMeasurement(CWE objmodalityOfImagingMeasurement)
	{
		setDataType(942,objmodalityOfImagingMeasurement);

	}

	/**
	 * Set the Nature of Service Test Observation.
	 * This field indicates whether the definition entry identify a test battery, an entire
	 *  functional procedure or study.
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */ 
	public void setNatureofServiceTestObservation(String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(603);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		setNatureofServiceTestObservation(cwe);

	} 

	/** @throws InvalidFieldException Thrown when Field Validation fails.
	 */ 
	public void setNatureofServiceTestObservation(CWE objnatureofServiceTestObservation)
	{
		setDataType(603,objnatureofServiceTestObservation);

	}

	/**
	 * Set the Observation Description.
	 * This field contains a text description of this observation.
	 * @param strObservationDescription String to be passed as Observation Description
	 */ 
	public void setObservationDescription (String strObservationDescription) 
	{
		TX observationDescription  = (TX)getDataElement(591);
		observationDescription.setValue(strObservationDescription); 
		setObservationDescription(observationDescription);

	} 

	/** Set the Observation Description.
	 * This field contains a text description of this observation.
	 * @param strObservationDescription String to be passed as Observation Description
	 */ 
	public void setObservationDescription(TX objobservationDescription)
	{
		setDataType(591,objobservationDescription);

	}

	/**
	 * Add the Observation Producing Department Section.
	 * This field permits the sorting of observation orders and values by the providing service's department/section.
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */
	public void addObservationProducingDepartmentSection(String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(601);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		addObservationProducingDepartmentSection(cwe);
	}

	/**
	 * Add the Observation Producing Department Section.
	 * This field permits the sorting of observation orders and values by the providing service's department/section.
	 * @param objObservationProducingDepartmentSection Object of Observation Producing Department Section.
	 */
	public void addObservationProducingDepartmentSection(CWE objObservationProducingDepartmentSection)
	{
		addDataType(601,objObservationProducingDepartmentSection);
	}

	/**
	 * Set the Observation Producing Department Section.
	 * This field permits the sorting of observation orders and values by the providing service's department/section.
	 * @param objObservationProducingDepartmentSectionList List of Observation Producing Department Section.
	 */
	@SuppressWarnings("unchecked")
	public void setObservationProducingDepartmentSection(ISingleCollection<CWE> objObservationProducingDepartmentSectionList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objObservationProducingDepartmentSectionList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(601,objCollection);
	}

	/**
	 * Set the Observations Required to Interpret the Observation.
	 * This field contains the list of variables that the diagnostic service needs to 
	 * interpret the results of an ordered study. 
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */ 
	public void setObservationsRequiredtoInterprettheObservation (String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(616);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		setObservationsRequiredtoInterprettheObservation(cwe);

	} 

	/** 
	 * Set the Observations Required to Interpret the Observation.
	 * This field contains the list of variables that the diagnostic service needs to 
	 * interpret the results of an ordered study. 
	 * @param objobservationsRequiredtoInterprettheObservation Object of Observations Required to Interpret the Observation.
	 */ 
	public void setObservationsRequiredtoInterprettheObservation(CWE objobservationsRequiredtoInterprettheObservation)
	{
		setDataType(616,objobservationsRequiredtoInterprettheObservation);

	}

	/**
	 * Set the Orderability.
	 * This field indicates whether or not a service/test/observation is an orderable code.
	 * @param strOrderability String to be passed as  Orderability
	 */ 
	public void setOrderability (String strOrderability) 
	{
		ID orderability  = (ID)getDataElement(597);
		orderability.setValue(strOrderability); 
		setOrderability(orderability);

	} 

	/** 
	 * Set the Orderability.
	 * This field indicates whether or not a service/test/observation is an orderable code.
	 * @param objorderability Object of Orderability.
	 */ 
	public void setOrderability(ID objorderability)
	{
		setDataType(597,objorderability);

	}

	/**
	 * Add the field which contains any test aliases or synonyms for the name in the context of the ordering service.
	 * @param strOtherNames String to be passed as Other Names
	 */
	/*	@Deprecated
	public void addOtherNames(String strOtherNames) 
	{
		ST otherNames  = (ST)getDataElement(593);
		otherNames.setValue(strOtherNames); 
		addOtherNames(otherNames);
	}

	/**
	 * Add the field which contains any test aliases or synonyms for the name in the context of the ordering service.
	 * @param objOtherNames Object of Other Names.
	 */
	/*	@Deprecated
	public void addOtherNames(ST objOtherNames)
	{
		addDataType(593,objOtherNames);
	}

	/**
	 * Set the field which contains any test aliases or synonyms for the name in the context of the ordering service.
	 * @param objOtherNamesList List of Other Names.
	 */
	/*	@Deprecated
	@SuppressWarnings("unchecked")
	public void setOtherNames(ISingleCollection<ST> objOtherNamesList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objOtherNamesList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(593,objCollection);
	}*/

	/**
	 * Set the Other Service Test Observation IDs for the Observation.
	 * This field contains all alias codes/identifiers for this observation.
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */ 
	public void setOtherServiceTestObservationIDsfortheObservation (String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(592);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		setOtherServiceTestObservationIDsfortheObservation(cwe);

	} 

	/** 
	 * Set the Other Service Test Observation IDs for the Observation.
	 * This field contains all alias codes/identifiers for this observation.
	 * @param objotherServiceTestObservationIDsfortheObservation Object of Other Service Test Observation IDs for the Observation.
	 */ 
	public void setOtherServiceTestObservationIDsfortheObservation(CWE objotherServiceTestObservationIDsfortheObservation)
	{
		setDataType(592,objotherServiceTestObservationIDsfortheObservation);

	}

	/**
	 * Add the Outside Site Where Observation may be Performed.
	 * This field contains the identification(s) of the outside service(s) that produce(s) the observation.  
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */
	public void addOutsideSiteWhereObservationmaybePerformed(String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(612);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		addOutsideSiteWhereObservationmaybePerformed(cwe);
	}

	/**
	 * Add the Outside Site Where Observation may be Performed.
	 * This field contains the identification(s) of the outside service(s) that produce(s) the observation.
	 * @param objOutsideSiteWhereObservationmaybePerformed Object of Outside Site Where Observation may be Performed.
	 */
	public void addOutsideSiteWhereObservationmaybePerformed(CWE objOutsideSiteWhereObservationmaybePerformed)
	{
		addDataType(612,objOutsideSiteWhereObservationmaybePerformed);
	}

	/**
	 * Set the Outside Site Where Observation may be Performed.
	 * This field contains the identification(s) of the outside service(s) that produce(s) the observation.
	 * @param objOutsideSiteWhereObservationmaybePerformedList List of Outside Site Where Observation may be Performed.
	 */
	@SuppressWarnings("unchecked")
	public void setOutsideSiteWhereObservationmaybePerformed(ISingleCollection<CWE> objOutsideSiteWhereObservationmaybePerformedList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objOutsideSiteWhereObservationmaybePerformedList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(612,objCollection);
	}

	/**
	 * Set the Patient Preparation.
	 * This field contains the tests or observations that require special patient preparation,
	 *  diet, or medications.
	 * @param strPatientPreparation String to be passed as Patient Preparation
	 */ 
	public void setPatientPreparation (String strPatientPreparation) 
	{
		TX patientPreparation  = (TX)getDataElement(622);
		patientPreparation.setValue(strPatientPreparation); 
		setPatientPreparation(patientPreparation);

	} 

	/** 
	 * Set the Patient Preparation.
	 * This field contains the tests or observations that require special patient preparation,
	 *  diet, or medications.
	 * @param objpatientPreparation Object of Patient Preparation.
	 */ 
	public void setPatientPreparation(TX objpatientPreparation)
	{
		setDataType(622,objpatientPreparation);

	}

	/**
	 * Add the Permitted Data Types.
	 * This field contains the allowed data type(s) for this observation.  
	 * @param strPermittedDataTypes String to be passed as Permitted Data Types 
	 */
	public void addPermittedDataTypes(String strPermittedDataTypes) 
	{
		ID permittedDataTypes  = (ID)getDataElement(588);
		permittedDataTypes.setValue(strPermittedDataTypes); 
		addPermittedDataTypes(permittedDataTypes);
	}

	/**
	 * Add the Permitted Data Types.
	 * This field contains the allowed data type(s) for this observation.
	 * @param ObjPermittedDataTypes Object of Permitted Data Types.
	 */
	public void addPermittedDataTypes(ID ObjPermittedDataTypes)
	{
		addDataType(588,ObjPermittedDataTypes);
	}

	/**
	 * Set the Permitted Data Types.
	 * This field contains the allowed data type(s) for this observation.
	 * @param ObjPermittedDataTypesList List of Permitted Data Types.
	 */
	@SuppressWarnings("unchecked")
	public void setPermittedDataTypes(ISingleCollection<ID> ObjPermittedDataTypesList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)ObjPermittedDataTypesList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(588,objCollection);
	}

	/**
	 * Set the Phone Number of Outside Site.
	 * This field contains the telephone number of the outside site.
	 * @param strTeleCommunicationUseCode Specifies a code that represents a specific use of a telecommunication number.
	 										Suggested values are PRN,ORN,WPN,VHN,ASN,EMR,NET,BPN  [Refer table 0201.]
	 * @param strTeleCommunicationEquipmentType Specifies a code that represents the type of telecommunication equipment.
	 * 											  Suggested values are PH,FX,MD,CP,BP,Internet,X.400,TDD,TTY  [Refer table 0202.]
	 * @param strCommuinicationAddress Specifies Email address.
	 * @param strCountryCode Specifies the Country code.
	 * @param strAreaCityCode Specifies the area /City Code.
	 * @param strLocalNumber Specifies an Local Number.
	 * @param strExtension Specifies an Extension.
	 * @param strAnyText Contains comments with respect to the telephone number.
	 * @param strExtensionPrefix Specifies the characters established within a company's 
	 * 							   internal telephone system network used as a prefix to the Extension component for internal dialing. 
	 * @param strSpeedDialCode Specifies The characters established within a 
	 * 							 company's internal telephone system used in place of the (external) telephone number.
	 * @param strUnformattedTelephoneNumber Specifies an expression of the telephone number as an unparsible string.
	 * @param strEffectiveStartDate Specifies start date.
	 * @param strExpirationDate Specifies expiration date.
	 * @param objExpirationReason Specifies reason why this contact is marked as ended.
	 * @param objProtectionCode Specifies reason why this information is sensitive or protected.
	 * @param objSharedTelecommunicationIdentifier Specifies a unique phone number phone telephone number or email-id.
	 * @param strPreferenceOrder Specifies the preference order for an entity..
	 */  
	public void setPhoneNumberofOutsideSite (String strTeleCommunicationUseCode,String strTeleCommunicationEquipmentType
			,String strCommuinicationAddress,String strCountryCode,String strAreaCityCode,String strLocalNumber,String strExtension,String strAnyText,
			String strExtensionPrefix,String strSpeedDialCode,String strUnformattedTelephoneNumber, String strEffectiveStartDate, String strExpirationDate,
			CWE objExpirationReason, CWE objProtectionCode, EI objSharedTelecommunicationIdentifier, String strPreferenceOrder)
	{
		XTN xtn  = (XTN)getDataElement(614);
//		xtn.setTelephoneNumber(strTelephoneNumber);
		xtn.setTelecommunicationUseCode(strTeleCommunicationUseCode);
		xtn.setTelecommunicationEquipmentType(strTeleCommunicationEquipmentType);
		xtn.setCommuinicationAddress(strCommuinicationAddress);
		xtn.setCountryCode(strCountryCode);
		xtn.setAreaCityCode(strAreaCityCode);
		xtn.setLocalNumber(strLocalNumber);
		xtn.setExtension(strExtension);
		xtn.setAnyText(strAnyText);
		xtn.setExtensionPrefix(strExtensionPrefix);
		xtn.setSpeedDialCode(strSpeedDialCode);
		xtn.setUnformattedTelephonenumber(strUnformattedTelephoneNumber); 
		xtn.setEffectiveStartDate(strEffectiveStartDate);
		xtn.setExpirationDate(strExpirationDate);
		xtn.setExpirationReason(objExpirationReason);
		xtn.setProtectionCode(objProtectionCode);
		xtn.setSharedTelecommunicationIdentifier(objSharedTelecommunicationIdentifier);
		xtn.setPreferenceOrder(strPreferenceOrder); 
		setPhoneNumberofOutsideSite(xtn);

	} 

	/** 
	 * Set the Phone Number of Outside Site.
	 * This field contains the telephone number of the outside site.
	 * @param objphoneNumberofOutsideSite Object of Phone Number of Outside Site.
	 */ 
	public void setPhoneNumberofOutsideSite(XTN objphoneNumberofOutsideSite)
	{
		setDataType(614,objphoneNumberofOutsideSite);

	}

	/**
	 * Set the Point Versus Interval.
	 * This field allows master files to classify observations as measuring the patient's 
	 * state at a point in time. 
	* @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */ 
	public void setPointVersusInterval(String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(938);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		setPointVersusInterval(cwe);

	} 

	/** 
	 * Set the Point Versus Interval.
	 * This field allows master files to classify observations as measuring the patient's 
	 * state at a point in time. 
	 * @param objpointVersusInterval Object of Point Versus Interval.
	 */ 
	public void setPointVersusInterval(CWE objpointVersusInterval)
	{
		setDataType(938,objpointVersusInterval);

	}

	/**
	 * Set the Portable Device Indicator.
	 * This field indicates whether a portable device may be used for the service/test/observation or not.  
	 * @param strPortableDeviceIndicator Use as PortableDeviceIndicator.
	 */ 
	public void setPortableDeviceIndicator (String strPortableDeviceIndicator) 
	{
		ID portableDeviceIndicator  = (ID)getDataElement(600);
		portableDeviceIndicator.setValue(strPortableDeviceIndicator); 
		setPortableDeviceIndicator(portableDeviceIndicator);

	} 

	/** 
	 * Set the Portable Device Indicator.
	 * This field indicates whether a portable device may be used for the service/test/observation or not.
	 * @param objportableDeviceIndicator Object of Portable Device Indicator.
	 */ 
	public void setPortableDeviceIndicator(ID objportableDeviceIndicator)
	{
		setDataType(600,objportableDeviceIndicator);

	}

	/**
	 * Set the Preferred Long Name for the Observation.
	 * This contains the fully-specified name for the observation or battery.
	 * @param strPreferredLongNamefortheObservation String to be passed as Preferred Long Name for the Observation
	 */ 
	public void setPreferredLongNamefortheObservation (String strPreferredLongNamefortheObservation) 
	{
		ST preferredLongNamefortheObservation  = (ST)getDataElement(596);
		preferredLongNamefortheObservation.setValue(strPreferredLongNamefortheObservation); 
		setPreferredLongNamefortheObservation(preferredLongNamefortheObservation);

	} 

	/**
	 * Set the Preferred Long Name for the Observation.
	 * This contains the fully-specified name for the observation or battery.
	 * @param objpreferredLongNamefortheObservation Object of Preferred Long Name for the Observation.
	 */ 
	public void setPreferredLongNamefortheObservation(ST objpreferredLongNamefortheObservation)
	{
		setDataType(596,objpreferredLongNamefortheObservation);

	}

	/**
	 * Set the Preferred Report Name for the Observation.
	 * This field contains the preferred name for reporting the observation or battery.  
	 * @param strPreferredReportNamefortheObservation String to be passed as Preferred Report Name for the Observation
	 */ 
	public void setPreferredReportNamefortheObservation (String strPreferredReportNamefortheObservation) 
	{
		ST preferredReportNamefortheObservation  = (ST)getDataElement(594);
		preferredReportNamefortheObservation.setValue(strPreferredReportNamefortheObservation); 
		setPreferredReportNamefortheObservation(preferredReportNamefortheObservation);

	} 

	/** 
	 * Set the Preferred Report Name for the Observation.
	 * This field contains the preferred name for reporting the observation or battery.
	 * @param objpreferredReportNamefortheObservation Object of Preferred Report Name for the Observation.
	 */ 
	public void setPreferredReportNamefortheObservation(ST objpreferredReportNamefortheObservation)
	{
		setDataType(594,objpreferredReportNamefortheObservation);

	}

	/**
	 * Set the Preferred Short Name or Mnemonic for Observation.
	 * This field contains the name that can be used in space-limited reports (e.g., specimen labels) 
	 * to identify the observation for the convenience of human readers.  
	 * @param strPreferredShortNameorMnemonicforObservation String to be passed as Preferred Short Name or Mnemonic for Observation
	 */ 
	public void setPreferredShortNameorMnemonicforObservation (String strPreferredShortNameorMnemonicforObservation) 
	{
		ST preferredShortNameorMnemonicforObservation  = (ST)getDataElement(595);
		preferredShortNameorMnemonicforObservation.setValue(strPreferredShortNameorMnemonicforObservation); 
		setPreferredShortNameorMnemonicforObservation(preferredShortNameorMnemonicforObservation);

	} 

	/** 
	 * Set the Preferred Short Name or Mnemonic for Observation.
	 * This field contains the name that can be used in space-limited reports (e.g., specimen labels) 
	 * to identify the observation for the convenience of human readers.
	 * @param objpreferredShortNameorMnemonicforObservation Object of Preferred Short Name or Mnemonic for Observation.
	 */ 
	public void setPreferredShortNameorMnemonicforObservation(ST objpreferredShortNameorMnemonicforObservation)
	{
		setDataType(595,objpreferredShortNameorMnemonicforObservation);

	}

	/**
	 * Set the Procedure Medication.
	 * This field contains the treatments that may be needed as part of the procedure.  
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */ 
	public void setProcedureMedication (String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(623);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		setProcedureMedication(cwe);

	} 

	/** 
	 * Set the Procedure Medication.
	 * This field contains the treatments that may be needed as part of the procedure.  
	 * @param objprocedureMedication Object of Procedure Medication.
	 */ 
	public void setProcedureMedication(CWE objprocedureMedication)
	{
		setDataType(623,objprocedureMedication);

	}

	/**
	 * Add the Processing Priority.
	 * This field contains one or more available priorities for performing the observation or test.  
	 * @param strProcessingPriority String to be passed as Processing Priority
	 */
	public void addProcessingPriority(String strProcessingPriority) 
	{
		ID processingPriority  = (ID)getDataElement(610);
		processingPriority.setValue(strProcessingPriority); 
		addProcessingPriority(processingPriority);
	}

	/**
	 * Add the Processing Priority.
	 * This field contains one or more available priorities for performing the observation or test.
	 * @param objProcessingPriority Object of Processing Priority.
	 */
	public void addProcessingPriority(ID objProcessingPriority)
	{
		addDataType(610,objProcessingPriority);
	}

	/**
	 * Set the Processing Priority.
	 * This field contains one or more available priorities for performing the observation or test.
	 * @param objProcessingPriorityList List of Processing Priority.
	 */
	@SuppressWarnings("unchecked")
	public void setProcessingPriority(ISingleCollection<ID> objProcessingPriorityList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objProcessingPriorityList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(610,objCollection);
	}

	/**
	 * Set the Processing Time.
	 * This field contains the usual length of time (in minutes) between the start of a test process
	 *  and its completion.
	 * @param strProcessingTime String to be passed as Processing Time
	 */ 
	public void setProcessingTime (String strProcessingTime) 
	{
		NM processingTime  = (NM)getDataElement(609);
		processingTime.setValue(strProcessingTime); 
		setProcessingTime(processingTime);

	} 

	/** 
	 * Set the Processing Time.
	 * This field contains the usual length of time (in minutes) between the start of a test process
	 *  and its completion.
	 * @param objprocessingTime Object of Processing Time.
	 */ 
	public void setProcessingTime(NM objprocessingTime)
	{
		setDataType(609,objprocessingTime);

	}

	/**
	 * Set the Producer ID.
	 * This field uniquely identify the service producing the observation described in this segment.  
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */ 
	public void setProducerID (String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(590);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		setProducerID(cwe);

	} 

	/** 
	 * Set the Producer ID.
	 * This field uniquely identify the service producing the observation described in this segment.  
	 * @param objproducerID OBject of Producer ID.
	 */ 
	public void setProducerID(CWE objproducerID)
	{
		setDataType(590,objproducerID);

	}

	/**
	 * Set the Producer Service Test Observation ID.
	 * This field contains the producer's usual or preferred identification of the test or observation.   
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */ 
	public void setProducerServiceTestObservationID (String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(587);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		setProducerServiceTestObservationID(cwe);

	} 

	/** 
	 * Set the Producer Service Test Observation ID.
	 * This field contains the producer's usual or preferred identification of the test or observation.   
	 * @param objproducerServiceTestObservationID Object of Producer Service Test Observation ID.
	 */ 
	public void setProducerServiceTestObservationID(CWE objproducerServiceTestObservationID)
	{
		setDataType(587,objproducerServiceTestObservationID);

	}

	/**
	 * Add the Reflex Tests Observations.
	 * This field contains the test names as type CWE.
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */
	public void addReflexTestsObservations(String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(619);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		addReflexTestsObservations(cwe);
	}

	/**
	 * Add the Reflex Tests Observations.
	 * This field contains the test names as type CWE.
	 * @param objReflexTestsObservations Object of Reflex Tests Observations.
	 */
	public void addReflexTestsObservations(CWE objReflexTestsObservations)
	{
		addDataType(619,objReflexTestsObservations);
	}

	/**
	 * Set the Reflex Tests Observations.
	 * This field contains the test names as type CWE.
	 * @param objReflexTestsObservationsList List of Reflex Tests Observations.
	 */
	@SuppressWarnings("unchecked")
	public void setReflexTestsObservations(ISingleCollection<CWE> objReflexTestsObservationsList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objReflexTestsObservationsList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(619,objCollection);
	}


	/**
	 * Set the Relationship Modifier.
	 * This field provides a mechanism for classifying observations according to the subject, in
	 *  relation to the patient whose results might be stored with as "patient" data.  
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */ 
	public void setRelationshipModifier (String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(940);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		setRelationshipModifier(cwe);

	} 

	/** 
	 * Set the Relationship Modifier.
	 * This field provides a mechanism for classifying observations according to the subject, in
	 *  relation to the patient whose results might be stored with as "patient" data.  
	 * @param objrelationshipModifier Object of Relationship Modifier.
	 */ 
	public void setRelationshipModifier(CWE objrelationshipModifier)
	{
		setDataType(940,objrelationshipModifier);

	}

	/**
	 * Set the Report Display Order.
	 * This field contains an optional string that defines the sort order in which this observation 
	 * is presented in a standard report or display that contains the many observations.
	 * @param strReportDisplayOrder String to be passed as Report Display Order
	 */ 
	public void setReportDisplayOrder (String strReportDisplayOrder) 
	{
		ST reportDisplayOrder  = (ST)getDataElement(605);
		reportDisplayOrder.setValue(strReportDisplayOrder); 
		setReportDisplayOrder(reportDisplayOrder);

	} 

	/** 
	 * Set the Report Display Order.
	 * This field contains an optional string that defines the sort order in which this observation 
	 * is presented in a standard report or display that contains the many observations.
	 * @param objreportDisplayOrder Object of Report Display Order.
	 */ 
	public void setReportDisplayOrder(ST objreportDisplayOrder)
	{
		setDataType(605,objreportDisplayOrder);

	}

	/**
	 * Set the Reporting Priority.
	 * This field contains the available priorities reporting the test results when the user is 
	 * asked to specify the reporting priority independent of the processing priority.
	 * @param strReportingPriority String to be passed as Processing Priority
	 */ 
	public void setReportingPriority (String strReportingPriority) 
	{
		ID reportingPriority  = (ID)getDataElement(611);
		reportingPriority.setValue(strReportingPriority); 
		setReportingPriority(reportingPriority);

	} 

	/** 
	 * Set the Reporting Priority.
	 * This field contains the available priorities reporting the test results when the user is 
	 * asked to specify the reporting priority independent of the processing priority.
	 * @param objreportingPriority Object of Reporting Priority.
	 */ 
	public void setReportingPriority(ID objreportingPriority)
	{
		setDataType(611,objreportingPriority);

	}

	/**
	 * Set the Report Sub header.
	 * This field contains an optional string that defines the preferred header under which this
	 *  observation should be listed on a standard display.  
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */ 
	public void setReportSubheader (String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(604);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		setReportSubheader(cwe);

	} 

	/** 
	 * Set the Report Sub header.
	 * This field contains an optional string that defines the preferred header under which this
	 *  observation should be listed on a standard display.
	 * @param objreportSubheader Object of Report Sub header.
	 */ 
	public void setReportSubheader(CWE objreportSubheader)
	{
		setDataType(604,objreportSubheader);

	}

	/**
	 * Set the Rules that Trigger Reflex Testing.
	 * This field contains the rules that trigger the reflex tests. 
	 * @param strRulesthatTriggerReflexTesting String to be passed as Rules that Trigger Reflex Testing.
	 */ 
	public void setRulesthatTriggerReflexTesting (String strRulesthatTriggerReflexTesting) 
	{
		TX rulesthatTriggerReflexTesting  = (TX)getDataElement(620);
		rulesthatTriggerReflexTesting.setValue(strRulesthatTriggerReflexTesting); 
		setRulesthatTriggerReflexTesting(rulesthatTriggerReflexTesting);

	} 

	/** 
	 * Set the Rules that Trigger Reflex Testing.
	 * This field contains the rules that trigger the reflex tests. 
	 * @param objrulesthatTriggerReflexTesting Object of Rules that Trigger Reflex Testing.
	 */ 
	public void setRulesthatTriggerReflexTesting(TX objrulesthatTriggerReflexTesting)
	{
		setDataType(620,objrulesthatTriggerReflexTesting);

	}

	/**
	 * Set the Sequence Number Test Observation Master File.
	 * This field contains the first OM1 segment in a message.
	 * @param strSequenceNumberTestObservationMasterFile String to be passed as Sequence Number - Test/Observation Master File.
	 */ 
	public void setSequenceNumberTestObservationMasterFile (String strSequenceNumberTestObservationMasterFile) 
	{
		NM sequenceNumberTestObservationMasterFile  = (NM)getDataElement(586);
		sequenceNumberTestObservationMasterFile.setValue(strSequenceNumberTestObservationMasterFile); 
		setSequenceNumberTestObservationMasterFile(sequenceNumberTestObservationMasterFile);

	} 

	/** 
	 * Set the Sequence Number Test Observation Master File.
	 * This field contains the first OM1 segment in a message.
	 * @param objsequenceNumberTestObservationMasterFile Object of Sequence Number Test Observation Master File.
	 */ 
	public void setSequenceNumberTestObservationMasterFile(NM objsequenceNumberTestObservationMasterFile)
	{
		setDataType(586,objsequenceNumberTestObservationMasterFile);

	}

	/**
	 * Add the Service Test Observation Performance Schedule.
	 * This field contains the diagnostic studies/tests that are performed only at certain times
	 *  during the course of a work day or work week.  
	 * @param strServiceTestObservationPerformanceSchedule String to be passed as Service/Test/Observation Performance Schedule.
	 */
	public void addServiceTestObservationPerformanceSchedule(String strServiceTestObservationPerformanceSchedule) 
	{
		ST serviceTestObservationPerformanceSchedule  = (ST)getDataElement(625);
		serviceTestObservationPerformanceSchedule.setValue(strServiceTestObservationPerformanceSchedule); 
		addServiceTestObservationPerformanceSchedule(serviceTestObservationPerformanceSchedule);
	}

	/**
	 * Add the Service Test Observation Performance Schedule.
	 * This field contains the diagnostic studies/tests that are performed only at certain times
	 *  during the course of a work day or work week.
	 * @param objServiceTestObservationPerformanceSchedule Object of Service Test Observation Performance Schedule.
	 */
	public void addServiceTestObservationPerformanceSchedule(ST objServiceTestObservationPerformanceSchedule)
	{
		addDataType(625,objServiceTestObservationPerformanceSchedule);
	}

	/**
	 * Set the Service Test Observation Performance Schedule.
	 * This field contains the diagnostic studies/tests that are performed only at certain times
	 *  during the course of a work day or work week.
	 * @param objServiceTestObservationPerformanceScheduleList List of Service Test Observation Performance Schedule.
	 */
	@SuppressWarnings("unchecked")
	public void setServiceTestObservationPerformanceSchedule(ISingleCollection<ST> objServiceTestObservationPerformanceScheduleList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objServiceTestObservationPerformanceScheduleList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(625,objCollection);
	}

	/**
	 * Set the Specimen Required.
	 * This field contains a flag indicating whether at least one specimen is required for 
	 * the service/test/observation or not.
	 * @param strSpecimenRequired String to be passed as Specimen Required
	 */ 
	public void setSpecimenRequired (String strSpecimenRequired) 
	{
		ID specimenRequired  = (ID)getDataElement(589);
		specimenRequired.setValue(strSpecimenRequired); 
		setSpecimenRequired(specimenRequired);

	} 

	/** 
	 * Set the Specimen Required.
	 * This field contains a flag indicating whether at least one specimen is required for 
	 * the service/test/observation or not.
	 * @param objspecimenRequired Object of Specimen Required.
	 */ 
	public void setSpecimenRequired(ID objspecimenRequired)
	{
		setDataType(589,objspecimenRequired);

	}

	/**
	 * Set the Target Anatomic Site Of Test.
	 * This field formally indicates the site of the observation.
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */ 
	public void setTargetAnatomicSiteOfTest(String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(941);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		setTargetAnatomicSiteOfTest(cwe);

	} 

	/** 
	 * Set the Target Anatomic Site Of Test.
	 * This field formally indicates the site of the observation.
	 * @param objtargetAnatomicSiteOfTest Object of Target Anatomic Site Of Test.
	 */ 
	public void setTargetAnatomicSiteOfTest(CWE objtargetAnatomicSiteOfTest)
	{
		setDataType(941,objtargetAnatomicSiteOfTest);

	}

	/**
	 * Set the Telephone Number of Section.
	 * This field contains the telephone number for calling responsible parties in this section 
	 * to ask results or advice about the use of this test.
	 * @param strTeleCommunicationUseCode Specifies a code that represents a specific use of a telecommunication number.
	 										Suggested values are PRN,ORN,WPN,VHN,ASN,EMR,NET,BPN  [Refer table 0201.]
	 * @param strTeleCommunicationEquipmentType Specifies a code that represents the type of telecommunication equipment.
	 * 											  Suggested values are PH,FX,MD,CP,BP,Internet,X.400,TDD,TTY  [Refer table 0202.]
	 * @param strCommuinicationAddress Specifies Email address.
	 * @param strCountryCode Specifies the Country code.
	 * @param strAreaCityCode Specifies the area /City Code.
	 * @param strLocalNumber Specifies an Local Number.
	 * @param strExtension Specifies an Extension.
	 * @param strAnyText Contains comments with respect to the telephone number.
	 * @param strExtensionPrefix Specifies the characters established within a company's 
	 * 							   internal telephone system network used as a prefix to the Extension component for internal dialing. 
	 * @param strSpeedDialCode Specifies The characters established within a 
	 * 							 company's internal telephone system used in place of the (external) telephone number.
	 * @param strUnformattedTelephoneNumber Specifies an expression of the telephone number as an unparsible string.
	 * @param strEffectiveStartDate Specifies start date.
	 * @param strExpirationDate Specifies expiration date.
	 * @param objExpirationReason Specifies reason why this contact is marked as ended.
	 * @param objProtectionCode Specifies reason why this information is sensitive or protected.
	 * @param objSharedTelecommunicationIdentifier Specifies a unique phone number phone telephone number or email-id.
	 * @param strPreferenceOrder Specifies the preference order for an entity..
	 */ 
	public void setTelephoneNumberofSection (String strTeleCommunicationUseCode,String strTeleCommunicationEquipmentType
			,String strCommuinicationAddress,String strCountryCode,String strAreaCityCode,String strLocalNumber,String strExtension,String strAnyText,
			String strExtensionPrefix,String strSpeedDialCode,String strUnformattedTelephoneNumber, String strEffectiveStartDate, String strExpirationDate,
			CWE objExpirationReason, CWE objProtectionCode, EI objSharedTelecommunicationIdentifier, String strPreferenceOrder)
	{
		XTN xtn  = (XTN)getDataElement(602);
//		xtn.setTelephoneNumber(strTelephoneNumber);
		xtn.setTelecommunicationUseCode(strTeleCommunicationUseCode);
		xtn.setTelecommunicationEquipmentType(strTeleCommunicationEquipmentType);
		xtn.setCommuinicationAddress(strCommuinicationAddress);
		xtn.setCountryCode(strCountryCode);
		xtn.setAreaCityCode(strAreaCityCode);
		xtn.setLocalNumber(strLocalNumber);
		xtn.setExtension(strExtension);
		xtn.setAnyText(strAnyText);
		xtn.setExtensionPrefix(strExtensionPrefix);
		xtn.setSpeedDialCode(strSpeedDialCode);
		xtn.setUnformattedTelephonenumber(strUnformattedTelephoneNumber); 
		xtn.setEffectiveStartDate(strEffectiveStartDate);
		xtn.setExpirationDate(strExpirationDate);
		xtn.setExpirationReason(objExpirationReason);
		xtn.setProtectionCode(objProtectionCode);
		xtn.setSharedTelecommunicationIdentifier(objSharedTelecommunicationIdentifier);
		xtn.setPreferenceOrder(strPreferenceOrder);
		setTelephoneNumberofSection(xtn);

	} 

	/** 
	 * Set the Telephone Number of Section.
	 * This field contains the telephone number for calling responsible parties in this section 
	 * to ask results or advice about the use of this test.
	 * @param objtelephoneNumberofSection Object of Telephone Number of Section.
	 */ 
	public void setTelephoneNumberofSection(XTN objtelephoneNumberofSection)
	{
		setDataType(602,objtelephoneNumberofSection);

	}

	/**
	 * Set the Typical Turn Around Time.
	 * This field contains the typical processing time for single test/observation.  
	 * @param strTypicalTurnAroundTime String to be passed as Sequence Number - Test/Observation Master File.
	 */
	/*@Deprecated
	public void setTypicalTurnAroundTime(String strTypicalTurnAroundTime) 
	{
		NM typicalTurnAroundTime  = (NM)getDataElement(608);
		typicalTurnAroundTime.setValue(strTypicalTurnAroundTime);
		setTypicalTurnAroundTime(typicalTurnAroundTime);
	}*/

	/**
	 * Set the Typical Turn Around Time.
	 * This field contains the typical processing time for single test/observation.
	 * @param objtypicalTurnAroundTime Object of Typical Turn Around Time.
	 */
	/*@Deprecated
	public void setTypicalTurnAroundTime(NM objtypicalTurnAroundTime)
	{
		setDataType(608,objtypicalTurnAroundTime);

	}*/
	
	/**
	 * Set the Exclusive Test.
	 * @param strExclusiveTest This field defines if this test should be a specific event with no other tests to be performed with this test. .
	 * 
	 */ 
	public void setExclusiveTest (String strExclusiveTest) 
	{
		ID ExclusiveTest  = (ID)getDataElement(3310);
		ExclusiveTest.setValue(strExclusiveTest); 
		setExclusiveTest(ExclusiveTest);

	} 

	/** Set the Exclusive Test.
	 * @param objExclusiveTest This field defines if this test should be a specific event with no other tests to be performed with this test. .
	 * 
	 */ 
	public void setExclusiveTest(ID objExclusiveTest)
	{
		setDataType(3310,objExclusiveTest);

	}
	
	/**
	 * Set the Diagnostic Serv Sect ID.
	 * This field is the section of the diagnostic service where the observation was performed. 
	 * @param strDiagnosticServSectID This field is the section of the diagnostic service where the observation was performed. 
	 * 
	 */ 
	public void setDiagnosticServSectID (String strDiagnosticServSectID) 
	{
		ID DiagnosticServSectID  = (ID)getDataElement(257);
		DiagnosticServSectID.setValue(strDiagnosticServSectID); 
		setDiagnosticServSectID(DiagnosticServSectID);

	} 

	/** Set the Diagnostic Serv Sect ID.
	 * This field is the section of the diagnostic service where the observation was performed. 
	 * @param objDiagnosticServSectID This field is the section of the diagnostic service where the observation was performed. 
	 * 
	 */ 
	public void setDiagnosticServSectID(ID objDiagnosticServSectID)
	{
		setDataType(257,objDiagnosticServSectID);
	}
	
	/**
	 * Set the Taxonomic Classification Code.
	 * The species of living organism. This may include the common or scientific name, based on the coding system(s) used. SNOMED is the recommended coding system.   
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */	 
	public void setTaxonomicClassificationCode(String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe = (CWE)getDataElement(1539);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		setTaxonomicClassificationCode(cwe);
	} 

	/** Set the Taxonomic Classification Code.
	 * The species of living organism. This may include the common or scientific name, based on the coding system(s) used. SNOMED is the recommended coding system.   
	 * @param objTaxonomicClassificationCode object of TaxonomicClassificationCode.
	 */ 
	public void setTaxonomicClassificationCode(CWE objTaxonomicClassificationCode)
	{
		setDataType(1539,objTaxonomicClassificationCode);
	}
	
	/**
	 * Set the Other Names.
	 * This field contains any test aliases or synonyms for the name in the context of the ordering service.    
	 * @param strOtherNames Contains specific allergic reaction that was documented.  
	 */ 
	public void addOtherNames (String strOtherNames) 
	{
		ST tempOtherNames  = (ST)getDataElement(3399);
		tempOtherNames.setValue(strOtherNames); 
		addOtherNames(tempOtherNames);

	} 

	/** Set the Other Names.
	 * This field contains any test aliases or synonyms for the name in the context of the ordering service.  
	 * @param objtempOtherNames object of Other Names.  
	 */ 
	public void addOtherNames(ST objtempOtherNames)
	{
		addDataType(3399,objtempOtherNames);

	}	
	/**
	 * Set the Other Names.
	 * This field contains any test aliases or synonyms for the name in the context of the ordering service.  
	 * @param objOtherNames List of Other Names
	 */	
	@SuppressWarnings("unchecked")
	public void setOtherNames(ISingleCollection<ST> objOtherNames)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objOtherNames;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(3399,objCollection);
	}
	
	/**
	 * Set the field Replacement Producer's Service/Test/Observation ID.
	 * This field is used in conjunction with a MFE-1 Record-Level Event Code 'MDC' defined as:  "Deactivate:  discontinue using record in master file, but do not delete from database", 
	 * in conjunction with an OM1 segment providing detail for the deactivate code.  When the OM1-2 Producer's 
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */
	public void addReplacementProducersServiceTestObservationID (String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(3433);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		addReplacementProducersServiceTestObservationID(cwe);

	} 

	/** Set the field Replacement Producer's Service/Test/Observation ID.
	 * This field is used in conjunction with a MFE-1 Record-Level Event Code 'MDC' defined as:  "Deactivate:  discontinue using record in master file, but do not delete from database", 
	 * in conjunction with an OM1 segment providing detail for the deactivate code.  When the OM1-2 Producer's 
	 * @param objReplacementProducersServiceTestObservationID 
	 */ 
	public void addReplacementProducersServiceTestObservationID(CWE objReplacementProducersServiceTestObservationID)
	{
		addDataType(3433,objReplacementProducersServiceTestObservationID);

	}

	/**
	 * Set the Replacement Producer's Service/Test/Observation ID.
	 * This field is used in conjunction with a MFE-1 Record-Level Event Code 'MDC' defined as:  "Deactivate:  discontinue using record in master file, but do not delete from database", 
	 * in conjunction with an OM1 segment providing detail for the deactivate code.  When the OM1-2 Producer's 
	 * @param objReplacementProducersServiceTestObservationIDList List of Replacement Producer's Service/Test/Observation ID
	 */	
	@SuppressWarnings("unchecked")
	public void setReplacementProducersServiceTestObservationID(ISingleCollection<CWE> objReplacementProducersServiceTestObservationIDList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objReplacementProducersServiceTestObservationIDList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(3433,objCollection);
	}

	/**
	 * Add the Prior Resuts Instructions.
	 * This field is used to indicate when the test in OM1-2 Producer's Service/Test/Observation ID is ordered, prior results  should accompany the order (OML^O21^OML_O21: Laboratory Order Message).  
	 * @param strObservationDescription String to be passed identifies the parameters of the command.
	 */
	public void addPriorResutsInstructions(String strObservationDescription) 
	{
		TX PriorResutsInstructions  = (TX)getDataElement(3434);
		PriorResutsInstructions.setValue(strObservationDescription);		
		addPriorResutsInstructions(PriorResutsInstructions);
	}

	/**
	 * Add the Prior Resuts Instructions.
	 * This field is used to indicate when the test in OM1-2 Producer's Service/Test/Observation ID is ordered, prior results  should accompany the order (OML^O21^OML_O21: Laboratory Order Message).  
	 * @param objPriorResutsInstructions Object of Prior Resuts Instructions.
	 */
	public void addPriorResutsInstructions(TX objPriorResutsInstructions)
	{
		addDataType(3434,objPriorResutsInstructions);
	}

	/**
	 * Set the Prior Resuts Instructions.
	 * This field is used to indicate when the test in OM1-2 Producer's Service/Test/Observation ID is ordered, prior results  should accompany the order (OML^O21^OML_O21: Laboratory Order Message).  
	 * @param objPriorResutsInstructionsList List of Prior Resuts Instructions.
	 */
	@SuppressWarnings("unchecked")
	public void setPriorResutsInstructions(ISingleCollection<TX> objPriorResutsInstructionsList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objPriorResutsInstructionsList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(3434,objCollection);
	}
	
	/**
	 * Set the Special Instructions.
	 * This field is used to convey special instructions for the test
	 * @param strSpecialInstructions Use as SpecialInstructions
	 */ 
	public void setSpecialInstructions (String strSpecialInstructions) 
	{
		TX SpecialInstructions  = (TX)getDataElement(3435);
		SpecialInstructions.setValue(strSpecialInstructions); 
		setSpecialInstructions(SpecialInstructions);

	} 

	/** 
	 * Set the Special Instructions.
	 * This field is used to convey special instructions for the test
	 * @param objSpecialInstructions Object of Special Instructions.
	 */ 
	public void setSpecialInstructions(TX objSpecialInstructions)
	{
		setDataType(3435,objSpecialInstructions);

	}
	
	/**
	 * Set the Test Category.
	 * This field may be used to organize tests for display or other user defined purpose.  
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */
	public void addTestCategory (String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID) 
	{
		CWE cwe  = (CWE)getDataElement(3436);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		addTestCategory(cwe);
	} 

	/** Set the Test Category.
	 * This field may be used to organize tests for display or other user defined purpose.  
	 * @param objTestCategory No suggested Values specified
	 */ 
	public void addTestCategory(CWE objTestCategory)
	{
		addDataType(3436,objTestCategory);

	}

	/**
	 * Set the TestCategory list.
	 * This field may be used to organize tests for display or other user defined purpose.  
	 * @param objTestCategoryList List of TestCategory
	 */	
	@SuppressWarnings("unchecked")
	public void setTestCategory(ISingleCollection<CWE> objTestCategoryList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objTestCategoryList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(3436,objCollection);
	}
	
	/**
	 * Set the Observation/Identifier associated with Producer’s Service/Test/Observation ID.
	 * :  This field contains the code for resulted tests, which are associated with the Producer’s Service/Test/Observation ID code in OM1-2 and will appear in OBX-3 Observation Identifier in a result message.  
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */	 
	public void setObservationIdentifierAssociatedWithProducersServiceTestObservationID(String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe = (CWE)getDataElement(3437);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		setObservationIdentifierAssociatedWithProducersServiceTestObservationID(cwe);
	} 

	/** Set the Observation/Identifier associated with Producer’s Service/Test/Observation ID.
	 * :  This field contains the code for resulted tests, which are associated with the Producer’s Service/Test/Observation ID code in OM1-2 and will appear in OBX-3 Observation Identifier in a result message.  
	 * @param objObservationIdentifierAssociatedWithProducersServiceTestObservationID object of ObservationIdentifierAssociatedWithProducersServiceTestObservationID.
	 */ 
	public void setObservationIdentifierAssociatedWithProducersServiceTestObservationID(CWE objObservationIdentifierAssociatedWithProducersServiceTestObservationID)
	{
		setDataType(3437,objObservationIdentifierAssociatedWithProducersServiceTestObservationID);
	}
	
	/**
	 * Set the Typical Turn-Around Time.
	 * This field specify the quantity and units administered for the blood code identified in field 1.
	 * @param strQuantity Specifies the numeric quantity or amount of an entity.
	 * @param objUnits Specifies the units in which the quantity is expressed. 
	 */
	public void setTypicalTurnAroundTime(String strQuantity,CWE objUnits) 
	{
		CQ TypicalTurnAroundTime  = (CQ)getDataElement(3438);
		TypicalTurnAroundTime.setQuantity(strQuantity);
		TypicalTurnAroundTime.setUnits(objUnits);
		setTypicalTurnAroundTime(TypicalTurnAroundTime);
	}

	/**
	 * Set the Typical Turn-Around Time.
	 * This field specify the quantity and units administered for the blood code identified in field 1.
	 * @param TypicalTurnAroundTime
	 */
	public void setTypicalTurnAroundTime(CQ TypicalTurnAroundTime)
	{
		setDataType(3438,TypicalTurnAroundTime);
	}
	
	/**
	 * Set the Gender Restriction.
	 * This field is used to convey gender restrictions for ordering the test specified in OM1-2 Producer's Service/Test/Observation ID.
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */
	public void addGenderRestriction (String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID) 
	{
		CWE cwe  = (CWE)getDataElement(3439);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		addGenderRestriction(cwe);
	} 

	/** Set the Gender Restriction.
	 * This field is used to convey gender restrictions for ordering the test specified in OM1-2 Producer's Service/Test/Observation ID.
	 * @param objGenderRestriction 
	 */ 
	public void addGenderRestriction(CWE objGenderRestriction)
	{
		addDataType(3439,objGenderRestriction);

	}

	/**
	 * Set the GenderRestriction list.
	 * This field is used to convey gender restrictions for ordering the test specified in OM1-2 Producer's Service/Test/Observation ID.
	 * @param objGenderRestrictionList List of GenderRestriction
	 */	
	@SuppressWarnings("unchecked")
	public void setGenderRestriction(ISingleCollection<CWE> objGenderRestrictionList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objGenderRestrictionList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(3439,objCollection);
	}
	
	/**
	 * Add the Age Restriction.
	 * This field is used to convey age restrictions for ordering the test specified in OM1-2 Producer's Service/Test/Observation ID.   
	 * @param objLowValue Specifies Low value
	 * @param objHighValue Specifies High Value. 
	 */ 
	public void addAgeRestriction (NM objLowValue,NM objHighValue) 
	{
		NR AgeRestriction  = (NR)getDataElement(3440);
		AgeRestriction.setLowValue(objLowValue);
		AgeRestriction.setHighValue(objHighValue);
		addAgeRestriction(AgeRestriction);

	} 

	/** 
	 * Add the Age Restriction.
	 * This field is used to convey age restrictions for ordering the test specified in OM1-2 Producer's Service/Test/Observation ID.   
	 * @param objAgeRestriction Object of Age Restriction.
	 */ 
	public void addAgeRestriction(NR objAgeRestriction)
	{
		addDataType(3440,objAgeRestriction);

	}

	/**
	 * Set the Age Restriction.
	 * This field is used to convey age restrictions for ordering the test specified in OM1-2 Producer's Service/Test/Observation ID.   
	 * @param objAgeRestriction List of Age Restriction.
	 */
	@SuppressWarnings("unchecked")
	public void setAgeRestriction(ISingleCollection<NR> objAgeRestriction)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objAgeRestriction;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(3440,objCollection);
	}
	
	/**
	 * Validates HL7 Message objects .
	 * Validate method checks for validation each and every segments in side the Message object against specified message Structure. 
	 * Validation chcecks include optionality of segment or group.
	 * It also verifies the number of times segment or group is repeated in message.
	 * e.g 
	 * {PSH} while parsing PSH segment validate method will check for its mandatory presence.
	 * [PSH] in this case validate will throw exception if one tries to enter more than one PSH segment.
	 * @return boolean - true or false.
	 * @throws InvalidSegmentException Throws when Segment Validation fails
	 */
	public boolean validate() throws InvalidSegmentException
	{
		try
		{
			/*
			 * Sequence Number - Test/Observation Master File,Producer's Service/Test/Observation ID,Specimen Required,
			 * Producer ID,Other Names & Nature of Service/Test/Observation are required fields.
			 */
			super.validate();

			return true;
		}
		catch(FieldMissingException ex)
		{
			throw new InvalidSegmentException(enumSegments.getValue(),ex);
		}
	}
}