/*******************************************************************************
 *  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.CWE;
import cdac.medinfo.sdk.hl7282.baselibs.DTM;
import cdac.medinfo.sdk.hl7282.baselibs.EI;
import cdac.medinfo.sdk.hl7282.baselibs.FN;
import cdac.medinfo.sdk.hl7282.baselibs.FT;
import cdac.medinfo.sdk.hl7282.baselibs.ID;
import cdac.medinfo.sdk.hl7282.baselibs.SAD;
import cdac.medinfo.sdk.hl7282.baselibs.XAD;
import cdac.medinfo.sdk.hl7282.baselibs.XPN;
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.InvalidSegmentException;
import cdac.medinfo.sdk.hl7282.utils.EnumSegments;
import cdac.medinfo.sdk.hl7282.utils.SingleCollection;

/**
 * PEO - Product Experience Observation Segment.<p>
 * Details related to a particular clinical experience or event are 
 * embodied in the PEO segment.  This segment can be used to characterize 
 * an event which might be attributed to a product to which the patient was exposed.
 * <p>Represents an HL7 PEO message segment. 
 * This segment has the following fields:</p><p>
 * PEO-1: Event Identifiers Used (CWE)<b>Optional</b><br> 
 * PEO-2: Event Symptom/Diagnosis Code (CWE)<b>Optional</b><br> 
 * PEO-3: Event Onset Date/Time (DTM)<b>Required</b><br> 
 * PEO-4: Event Exacerbation Date/Time (DTM)<b>Optional</b><br> 
 * PEO-5: Event Improved Date/Time (DTM)<b>Optional</b><br> 
 * PEO-6: Event Ended Data/Time (DTM)<b>Optional</b><br> 
 * PEO-7: Event Location Occurred Address (XAD)<b>Optional</b><br> 
 * PEO-8: Event Qualification (ID)<b>Optional</b><br> 
 * PEO-9: Event Serious (ID)<b>Optional</b><br> 
 * PEO-10: Event Expected (ID)<b>Optional</b><br> 
 * PEO-11: Event Outcome (ID)<b>Optional</b><br> 
 * PEO-12: Patient Outcome (ID)<b>Optional</b><br> 
 * PEO-13: Event Description From Others (FT)<b>Optional</b><br> 
 * PEO-14: Event From Original Reporter (FT)<b>Optional</b><br> 
 * PEO-15: Event Description From Patient (FT)<b>Optional</b><br> 
 * PEO-16: Event Description From Practitioner (FT)<b>Optional</b><br> 
 * PEO-17: Event Description From Autopsy (FT)<b>Optional</b><br> 
 * PEO-18: Cause Of Death (CWE)<b>Optional</b><br> 
 * PEO-19: Primary Observer Name (XPN)<b>Optional</b><br> 
 * PEO-20: Primary Observer Address (XAD)<b>Optional</b><br> 
 * PEO-21: Primary Observer Telephone (XTN)<b>Optional</b><br> 
 * PEO-22: Primary Observer's Qualification (ID)<b>Optional</b><br> 
 * PEO-23: Confirmation Provided By (ID)<b>Optional</b><br> 
 * PEO-24: Primary Observer Aware Date/Time (DTM)<b>Optional</b><br> 
 * PEO-25: Primary Observer's identity May Be Divulged (ID)<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 PEO extends Segment    
{
	

	/**
	 * Constructs the PEO segment.
	 */
	public PEO()
	{super(EnumSegments.HL7_SEG_PEO);
	}

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

	/**
	 * Retrieves the Cause Of Death.
	 * This field identify the cause of death.  
	 * @return ISingleCollection<CWE> - causeOfDeath
	 */
	public ISingleCollection<CWE> getCauseOfDeath() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1090);
		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 Confirmation Provided By.
	 * This field contains the qualification of the health professional who confirmed the 
	 * observation if the primary observer is not a health professional.  
	 * @return ID - confirmationProvidedBy
	 */
	public ID getConfirmationProvidedBy() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1095);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Event Description From Autopsy.
	 * This field contains a summary narrative text description of the autopsy results.  
	 * @return ISingleCollection<FT> - eventDescriptionFromAutopsy
	 */
	public ISingleCollection<FT> getEventDescriptionFromAutopsy() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1089);
		ISingleCollection<FT> objDataList = new SingleCollection<FT>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				FT objFT = (FT)objDataType;
				objDataList.add(objFT);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Event Description From Others.
	 * This field contains a summary narrative text description of the event that occur written by the sender.
	 * @return ISingleCollection<FT> - eventDescriptionFromOthers
	 */
	public ISingleCollection<FT> getEventDescriptionFromOthers() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1085);
		ISingleCollection<FT> objDataList = new SingleCollection<FT>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				FT objFT = (FT)objDataType;
				objDataList.add(objFT);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Event Description From Patient.
	 * This field contains a summary narrative text description of the event obtained directly from the patient.  
	 * @return ISingleCollection<FT> - eventDescriptionFromPatient
	 */
	public ISingleCollection<FT> getEventDescriptionFromPatient() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1087);
		ISingleCollection<FT> objDataList = new SingleCollection<FT>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				FT objFT = (FT)objDataType;
				objDataList.add(objFT);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Event Description From Practitioner.
	 * This field contains a summary narrative text description of the event provided by the practitioner most familiar with the event. 
	 * @return ISingleCollection<FT> - eventDescriptionFromPractitioner
	 */
	public ISingleCollection<FT> getEventDescriptionFromPractitioner() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1088);
		ISingleCollection<FT> objDataList = new SingleCollection<FT>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				FT objFT = (FT)objDataType;
				objDataList.add(objFT);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Event Ended Date Time.
	 * This field identify the best estimate of the date/time the event resolved.
	 * @return DTM - eventEndedDateTime
	 */
	public DTM getEventEndedDateTime() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1078);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Event Exacerbation Date Time.
	 * This field identify the best estimate of the date/time the event is exacerbated.
	 * @return DTM - eventExacerbationDateTime
	 */
	public DTM getEventExacerbationDateTime() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1076);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Event Expected.
	 * This field indicates whether the observed event is expected or unexpected as judged or not.  
	 * @return ID - eventExpected
	 */
	public ID getEventExpected() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1082);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Event From Original Reporter.
	 * This field contains a summary narrative text description of the event provided by the original reporter. 
	 * @return ISingleCollection<FT> - eventFromOriginalReporter
	 */
	public ISingleCollection<FT> getEventFromOriginalReporter() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1086);
		ISingleCollection<FT> objDataList = new SingleCollection<FT>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				FT objFT = (FT)objDataType;
				objDataList.add(objFT);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Event Identifiers Used.
	 * This field use to transmit the event identifier use by other entities for this event.  
	 * @return ISingleCollection<CWE> - eventIdentifiersUsed
	 */
	public ISingleCollection<CWE> getEventIdentifiersUsed() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1073);
		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 Event Improved Date Time.
	 * This field identify the best estimate the improve date/time of the event.
	 * @return DTM - eventImprovedDateTime
	 */
	public DTM getEventImprovedDateTime() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1077);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Event Location Occurred Address.
	 * This field identify the location at which the event start. 
	 * @return ISingleCollection<XAD> - eventLocationOccurredAddress
	 */
	public ISingleCollection<XAD> getEventLocationOccurredAddress() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1079);
		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 Event Onset Date Time.
	 * This field contains a report or best estimate of the date/time of onset of the event.  
	 * @return DTM - eventOnsetDateTime
	 */
	public DTM getEventOnsetDateTime() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1075);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Event Outcome.
	 * This field identify the consequence of the event on the patient. 
	 * @return ISingleCollection<ID> - eventOutcome
	 */
	public ISingleCollection<ID> getEventOutcome() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1083);
		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 Event Qualification.
	 * This field contains a classification of the type of product experience this event is considered to represent.  
	 * @return ISingleCollection<ID> - eventQualification
	 */
	public ISingleCollection<ID> getEventQualification() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1080);
		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 Event Serious.
	 * This field indicates whether the event is judged as serious or not.  
	 * @return ID - eventSerious
	 */
	public ID getEventSerious() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1081);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Event Symptom Diagnosis Code.
	 * This field is the code diagnosis or problem description, which best describes the event.
	 * @return ISingleCollection<CWE> - eventSymptomDiagnosisCode
	 */
	public ISingleCollection<CWE> getEventSymptomDiagnosisCode() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1074);
		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 Patient Outcome.
	 * This field represent the patient's overall outcome if that information is known.  
	 * @return ID - patientOutcome
	 */
	public ID getPatientOutcome() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1084);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Primary Observer Address.
	 * This field identify the address of the person who initially described the event.
	 * @return ISingleCollection<XAD> - primaryObserverAddress
	 */
	public ISingleCollection<XAD> getPrimaryObserverAddress() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1092);
		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 Primary Observer Aware Date Time.
	 * This field identify the date/time of the primary observer become aware of event.
	 * @return DTM - primaryObserverAwareDateTime
	 */
	public DTM getPrimaryObserverAwareDateTime() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1096);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Primary Observer Identity.
	 * This field indicates whether the primary observer, if known to the sender, 
	 * grants permission to disclose his or her identity to the product manufacturer for the 
	 * purpose of further investigating the event or not. 
	 * @return ID - primaryObserverIdentity
	 */
	public ID getPrimaryObserverIdentity() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1097);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Primary Observer Name.
	 * This field identify the name of the person who initially describe the event.  
	 * @return ISingleCollection<XPN> - primaryObserverName
	 */
	public ISingleCollection<XPN> getPrimaryObserverName() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1091);
		ISingleCollection<XPN> objDataList = new SingleCollection<XPN>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				XPN objXPN = (XPN)objDataType;
				objDataList.add(objXPN);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Primary Observer Qualification.
	 * This field contains the qualification of the primary observer which may assist in assessing the validity of the observations.  
	 * @return ID - primaryObserverQualification
	 */
	public ID getPrimaryObserverQualification() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1094);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Primary Observer Telephone.
	 * This field identify the telephone number of the person who initially described the event.
	 * @return ISingleCollection<XTN> - primaryObserverTelephone
	 */
	public ISingleCollection<XTN> getPrimaryObserverTelephone() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1093);
		ISingleCollection<XTN> objDataList = new SingleCollection<XTN>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				XTN objXTN = (XTN)objDataType;
				objDataList.add(objXTN);
			}
		}
		return objDataList;
	}

	/**
	 * Add the Cause Of Death.
	 * This field identify the cause of death.
	 * @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 addCauseOfDeath (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(1090);
		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); 
		addCauseOfDeath(cwe);

	} 

	/** 
	 * Add the Cause Of Death.
	 * This field identify the cause of death.
	 * @param objcauseOfDeath Object of Cause Of Death.
	 */ 
	public void addCauseOfDeath(CWE objcauseOfDeath)
	{
		addDataType(1090,objcauseOfDeath);

	}

	/** 
	 * Set the Cause Of Death.
	 * This field identify the cause of death.
	 * @param objcauseOfDeathList List of Cause Of Death.
	 */ 
	@SuppressWarnings("unchecked")
	public void setCauseOfDeath(ISingleCollection<CWE> objcauseOfDeathList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objcauseOfDeathList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1090,objCollection);
	}

	/**
	 * Sets the Confirmation Provided By.
	 * This field contains the qualification of the health professional who confirmed the 
	 * observation if the primary observer is not a health professional.  
	 * @param strConfirmationProvidedBy This field contains the String Value of Confirmation Provided By 
	 */ 
	public void setConfirmationProvidedBy (String strConfirmationProvidedBy) 
	{
		ID confirmationProvidedBy  = (ID)getDataElement(1095);
		confirmationProvidedBy.setValue(strConfirmationProvidedBy); 
		setConfirmationProvidedBy(confirmationProvidedBy);

	} 

	/** 
	 * Sets the Confirmation Provided By.
	 * This field contains the qualification of the health professional who confirmed the 
	 * observation if the primary observer is not a health professional.  
	 * @param objconfirmationProvidedBy Object of Confirmation Provided By.
	 */ 
	public void setConfirmationProvidedBy(ID objconfirmationProvidedBy)
	{
		setDataType(1095,objconfirmationProvidedBy);

	}

	/**
	 * Add the Event Description From Autopsy.
	 * This field contains a summary narrative text description of the autopsy results.  
	 * @param strEventDescriptionFromAutopsy This field contains the String Value of Event Description From Autopsy 
	 */ 
	public void addEventDescriptionFromAutopsy (String strEventDescriptionFromAutopsy) 
	{
		FT objEventDescriptionFromAutopsy  = (FT)getDataElement(1089);
		objEventDescriptionFromAutopsy.setValue(strEventDescriptionFromAutopsy); 
		addEventDescriptionFromAutopsy(objEventDescriptionFromAutopsy);

	} 

	/** 
	 * Add the Event Description From Autopsy.
	 * This field contains a summary narrative text description of the autopsy results.  
	 * @param objEventDescriptionFromAutopsy Object of  Event Description From Autopsy.
	 */ 
	public void addEventDescriptionFromAutopsy(FT objEventDescriptionFromAutopsy)
	{
		addDataType(1089,objEventDescriptionFromAutopsy);

	} 

	/** 
	 * set the Event Description From Autopsy.
	 * This field contains a summary narrative text description of the autopsy results.  
	 * @param objEventDescriptionFromAutopsyList List of  Event Description From Autopsy.
	 */ 
	@SuppressWarnings("unchecked")
	public void setEventDescriptionFromAutopsy(ISingleCollection<FT> objEventDescriptionFromAutopsyList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objEventDescriptionFromAutopsyList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1089,objCollection);
	}

	/**
	 * Add the Event Description From Others.
	 * This field contains a summary narrative text description of the event that occur written by the sender.
	 * @param strEventDescriptionFromAutopsy This field contains the String Value of Event Description From Others 
	 */
	public void addEventDescriptionFromOthers(String strEventDescriptionFromAutopsy) 
	{
		FT eventDescriptionFromOthers  = (FT)getDataElement(1085);
		eventDescriptionFromOthers.setValue(strEventDescriptionFromAutopsy);
		addEventDescriptionFromOthers(eventDescriptionFromOthers);
	}

	/**
	 * Add the Event Description From Others.
	 * This field contains a summary narrative text description of the event that occur written by the sender.
	 * @param objeventDescriptionFromOthers Object of Event Description From Others.
	 */
	public void addEventDescriptionFromOthers(FT objeventDescriptionFromOthers)
	{
		addDataType(1085,objeventDescriptionFromOthers);
	}

	/**
	 * Set the Event Description From Others.
	 * This field contains a summary narrative text description of the event that occur written by the sender.
	 * @param objeventDescriptionFromOthersList List of Event Description From Others.
	 */
	@SuppressWarnings("unchecked")
	public void setEventDescriptionFromOthers(ISingleCollection<FT> objeventDescriptionFromOthersList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objeventDescriptionFromOthersList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1085,objCollection);
	}

	/**
	 * Add the Event Description From Patient.
	 * This field contains a summary narrative text description of the event obtained directly from the patient.  
	 * @param strEventDescriptionFromPatient This field contains the String Value of Event Description From Patient 
	 */
	public void addEventDescriptionFromPatient(String strEventDescriptionFromPatient) 
	{
		FT eventDescriptionFromPatient  = (FT)getDataElement(1087);
		eventDescriptionFromPatient.setValue(strEventDescriptionFromPatient);
		addEventDescriptionFromPatient(eventDescriptionFromPatient);
	}

	/**
	 * Add the Event Description From Patient.
	 * This field contains a summary narrative text description of the event obtained directly from the patient.
	 * @param eventDescriptionFromPatient Object of Event Description From Patient.
	 */
	public void addEventDescriptionFromPatient(FT eventDescriptionFromPatient)
	{
		addDataType(1087,eventDescriptionFromPatient);
	}

	/**
	 * set the Event Description From Patient.
	 * This field contains a summary narrative text description of the event obtained directly from the patient.
	 * @param eventDescriptionFromPatientList List of Event Description From Patient.
	 */
	@SuppressWarnings("unchecked")
	public void setEventDescriptionFromPatient(ISingleCollection<FT> eventDescriptionFromPatientList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)eventDescriptionFromPatientList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1087,objCollection);
	}

	/**
	 * Add the Event Description From Practitioner.
	 * This field contains a summary narrative text description of the event provided by the practitioner most familiar with the event. 
	 * @param strEventDescriptionFromPractitioner This field contains the String Value of Event Description From Practitioner 
	 */ 
	public void addEventDescriptionFromPractitioner (String strEventDescriptionFromPractitioner) 
	{
		FT eventDescriptionFromPractitioner  = (FT)getDataElement(1088);
		eventDescriptionFromPractitioner.setValue(strEventDescriptionFromPractitioner); 
		addEventDescriptionFromPractitioner(eventDescriptionFromPractitioner);

	} 

	/** 
	 * Add the Event Description From Practitioner.
	 * This field contains a summary narrative text description of the event provided by the practitioner most familiar with the event. 
	 * @param objeventDescriptionFromPractitioner Object of Event Description From Practitioner.
	 */ 
	public void addEventDescriptionFromPractitioner(FT objeventDescriptionFromPractitioner)
	{
		addDataType(1088,objeventDescriptionFromPractitioner);

	} 

	/** Set the Event Description From Practitioner.
	 * This field contains a summary narrative text description of the event provided by the practitioner most familiar with the event. 
	 * @param objeventDescriptionFromPractitioneList List of Event Description From Practitioner. 
	 */ 
	@SuppressWarnings("unchecked")
	public void setEventDescriptionFromPractitioner(ISingleCollection<FT> objeventDescriptionFromPractitioneList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objeventDescriptionFromPractitioneList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1088,objCollection);
	}

	/**
	 * Set the Event Ended Date Time.
	 * This field identify the best estimate of the date/time the event resolved.
	 * @param strTime Specifies a point in time using a 24-hour clock notation.	 
	 */ 
	public void setEventEndedDataTime (String strTime) 
	{
		DTM eventEndedDateTime  = (DTM)getDataElement(1078);
		eventEndedDateTime.setValue(strTime);		 
		setEventEndedDataTime(eventEndedDateTime);

	} 

	/** 
	 * Set the Event Ended Date Time.
	 * This field identify the best estimate of the date/time the event resolved.
	 * @param objeventEndedDateTime Object of Event Ended Date Time.
	 */ 
	public void setEventEndedDataTime(DTM objeventEndedDateTime)
	{
		setDataType(1078,objeventEndedDateTime);

	}

	/**
	 * Set the Event Exacerbation Date Time.
	 * This field identify the best estimate of the date/time the event is exacerbated.
	 * @param strTime Specifies a point in time using a 24-hour clock notation.	 
	 */ 
	public void setEventExacerbationDateTime (String strTime) 
	{
		DTM eventExacerbationDateTime  = (DTM)getDataElement(1076);
		eventExacerbationDateTime.setValue(strTime);		 
		setEventExacerbationDateTime(eventExacerbationDateTime);

	} 

	/** 
	 * Set the Event Exacerbation Date Time.
	 * This field identify the best estimate of the date/time the event is exacerbated.
	 * @param objeventExacerbationDateTime Object of Event Exacerbation Date Time.
	 */ 
	public void setEventExacerbationDateTime(DTM objeventExacerbationDateTime)
	{
		setDataType(1076,objeventExacerbationDateTime);

	}

	/**
	 * Set the Event Expected.
	 * This field indicates whether the observed event is expected or unexpected as judged or not.  
	 * @param strEventExpected This field contains the String Value of Event Expected 
	 */ 
	public void setEventExpected (String strEventExpected) 
	{
		ID eventExpected  = (ID)getDataElement(1082);
		eventExpected.setValue(strEventExpected); 
		setEventExpected(eventExpected);

	} 

	/** 
	 * Set the Event Expected.
	 * This field indicates whether the observed event is expected or unexpected as judged or not.  
	 * @param objeventExpected Object of Event Expected. 
	 */ 
	public void setEventExpected(ID objeventExpected)
	{
		setDataType(1082,objeventExpected);

	}

	/**
	 * Add the Event From Original Reporter.
	 * This field contains a summary narrative text description of the event provided by the original reporter. 
	 * @param strEventFromOriginalReporter This field contains the String Value of Event From Original Reporter 
	 */
	public void addEventFromOriginalReporter(String strEventFromOriginalReporter) 
	{
		FT eventFromOriginalReporter  = (FT)getDataElement(1086);
		eventFromOriginalReporter.setValue(strEventFromOriginalReporter);
		addEventFromOriginalReporter(eventFromOriginalReporter);
	}

	/**
	 * Add the Event From Original Reporter.
	 * This field contains a summary narrative text description of the event provided by the original reporter.
	 * @param eventFromOriginalReporter Object of Event From Original Reporter.
	 */
	public void addEventFromOriginalReporter(FT eventFromOriginalReporter)
	{
		addDataType(1086,eventFromOriginalReporter);
	}

	/**
	 * Set the Event From Original Reporter.
	 * This field contains a summary narrative text description of the event provided by the original reporter.
	 * @param eventFromOriginalReporterList List of Event From Original Reporter.
	 */
	@SuppressWarnings("unchecked")
	public void setEventFromOriginalReporter(ISingleCollection<FT> eventFromOriginalReporterList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)eventFromOriginalReporterList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1086,objCollection);
	}

	/**
	 * Add the Event Identifiers Used.
	 * This field use to transmit the event identifier use by other entities for this event.
     * @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 addEventIdentifiersUsed (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(1073);
		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);
		addEventIdentifiersUsed(cwe);

	} 

	/** 
	 * Add the Event Identifiers Used.
	 * This field use to transmit the event identifier use by other entities for this event.
	 * @param objeventIdentifiersUsed Object of Event Identifiers Used.
	 */ 
	public void addEventIdentifiersUsed(CWE objeventIdentifiersUsed)
	{
		addDataType(1073,objeventIdentifiersUsed);

	} 

	/** 
	 * Add the Event Identifiers Used.
	 * This field use to transmit the event identifier use by other entities for this event.
	 * @param objeventIdentifiersUsedList List of Event Identifiers Used.
	 */ 
	@SuppressWarnings("unchecked")
	public void setEventIdentifiersUsed(ISingleCollection<CWE> objeventIdentifiersUsedList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objeventIdentifiersUsedList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1073,objCollection);
	}

	/**
	 * Set the Event Improved Date Time.
	 * This field identify the best estimate the improve date/time of the event.
	 * @param strTime Specifies a point in time using a 24-hour clock notation.	 
	 */ 
	public void setEventImprovedDateTime (String strTime) 
	{
		DTM eventImprovedDateTime  = (DTM)getDataElement(1077);
		eventImprovedDateTime.setValue(strTime);		
		setEventImprovedDateTime(eventImprovedDateTime);

	} 

	/** 
	 * Set the Event Improved Date Time.
	 * This field identify the best estimate the improve date/time of the event.
	 * @param objeventImprovedDateTime Object of Event Improved Date Time.
	 */ 
	public void setEventImprovedDateTime(DTM objeventImprovedDateTime)
	{
		setDataType(1077,objeventImprovedDateTime);

	}

	/**
	 * Add the Event Location Occurred Address.
	 * This field identify the location at which the event start. 
	 * @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 addEventLocationOccurredAddress (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(1079);
		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);
		addEventLocationOccurredAddress(xad);

	} 

	/** 
	 * Add the Event Location Occurred Address.
	 * This field identify the location at which the event start. 
	 * @param objeventLocationOccurredAddress Object of Event Location Occurred Address.
	 */ 
	public void addEventLocationOccurredAddress(XAD objeventLocationOccurredAddress)
	{
		addDataType(1079,objeventLocationOccurredAddress);

	} 

	/** 
	 * Set the Event Location Occurred Address.
	 * This field identify the location at which the event start. 
	 * @param objeventLocationOccurredAddressList List of Event Location Occurred Address.
	 */ 
	@SuppressWarnings("unchecked")
	public void setEventLocationOccurredAddress(ISingleCollection<XAD> objeventLocationOccurredAddressList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objeventLocationOccurredAddressList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1079,objCollection);
	}

	/**
	 * Set the Event Onset Date Time.
	 * This field contains a report or best estimate of the date/time of onset of the event.  
	 * @param strTime Specifies a point in time using a 24-hour clock notation.	 
	 */ 
	public void setEventOnsetDateTime (String strTime) 
	{
		DTM eventOnsetDateTime  = (DTM)getDataElement(1075);
		eventOnsetDateTime.setValue(strTime);		
		setEventOnsetDateTime(eventOnsetDateTime);

	} 

	/** 
	 * Set the Event Onset Date Time.
	 * This field contains a report or best estimate of the date/time of onset of the event.
	 * @param objeventOnsetDateTime Object of Event Onset Date Time.
	 */ 
	public void setEventOnsetDateTime(DTM objeventOnsetDateTime)
	{
		setDataType(1075,objeventOnsetDateTime);

	}

	/**
	 * Add the Event Outcome.
	 * This field identify the consequence of the event on the patient. 
	 * @param strEventOutcome This field contains the String Value of Event Outcome
	 */ 
	public void addEventOutcome (String strEventOutcome) 
	{
		ID eventOutcome  = (ID)getDataElement(1083);
		eventOutcome.setValue(strEventOutcome); 
		addEventOutcome(eventOutcome);

	} 

	/** 
	 * Add the Event Outcome.
	 * This field identify the consequence of the event on the patient. 
	 * @param objeventOutcome Object of Event Outcome.
	 */ 
	public void addEventOutcome(ID objeventOutcome)
	{
		addDataType(1083,objeventOutcome);

	} 

	/** 
	 * Set the Event Outcome.
	 * This field identify the consequence of the event on the patient. 
	 * @param objeventOutcomeList List ofEvent Outcome.
	 */ 
	@SuppressWarnings("unchecked")
	public void setEventOutcome(ISingleCollection<ID> objeventOutcomeList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objeventOutcomeList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1083,objCollection);
	}

	/**
	 * Add the Event Qualification.
	 * This field contains a classification of the type of product experience this event is considered to represent.
	 * @param strEventQualification This field contains the String Value of Event Qualification 
	 */ 
	public void addEventQualification (String strEventQualification) 
	{
		ID eventQualification  = (ID)getDataElement(1080);
		eventQualification.setValue(strEventQualification); 
		addEventQualification(eventQualification);

	} 

	/** 
	 * Add the Event Qualification.
	 * This field contains a classification of the type of product experience this event is considered to represent.
	 * @param objeventQualification Object of Event Qualification.
	 */ 
	public void addEventQualification(ID objeventQualification)
	{
		addDataType(1080,objeventQualification);

	} 

	/** 
	 * Set the Event Qualification.
	 * This field contains a classification of the type of product experience this event is considered to represent.
	 * @param objeventQualificationList List of Event Qualification.
	 */ 
	@SuppressWarnings("unchecked")
	public void setEventQualification(ISingleCollection<ID> objeventQualificationList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objeventQualificationList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1080,objCollection);
	}

	/**
	 * Set the Event Serious.
	 * This field indicates whether the event is judged as serious or not.  
	 * @param strEventSerious This field contains the String Value of Event Serious 
	 */ 
	public void setEventSerious (String strEventSerious) 
	{
		ID eventSerious  = (ID)getDataElement(1081);
		eventSerious.setValue(strEventSerious); 
		setEventSerious(eventSerious);

	} 

	/** 
	 * Set the Event Serious.
	 * This field indicates whether the event is judged as serious or not.  
	 * @param objeventSerious Object of Event Serious.
	 */ 
	public void setEventSerious(ID objeventSerious)
	{
		setDataType(1081,objeventSerious);

	}

	/**
	 * Add the Event Symptom Diagnosis Code.
	 * This field is the code diagnosis or problem description, which best describes the event.
	 * @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 addEventSymptomDiagnosisCode (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(1074);
		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); 
		addEventSymptomDiagnosisCode(cwe);

	} 

	/** 
	 * Add the Event Symptom Diagnosis Code.
	 * This field is the code diagnosis or problem description, which best describes the event.
	 * @param objeventSymptomDiagnosisCode Object of Event Symptom Diagnosis Code.
	 */ 
	public void addEventSymptomDiagnosisCode(CWE objeventSymptomDiagnosisCode)
	{
		addDataType(1074,objeventSymptomDiagnosisCode);

	} 

	/** 
	 * Set the Event Symptom Diagnosis Code.
	 * This field is the code diagnosis or problem description, which best describes the event.
	 * @param objeventSymptomDiagnosisCodeList List of Event Symptom Diagnosis Code.
	 */ 
	@SuppressWarnings("unchecked")
	public void setEventSymptomDiagnosisCode(ISingleCollection<CWE> objeventSymptomDiagnosisCodeList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objeventSymptomDiagnosisCodeList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1074,objCollection);
	}

	/**
	 * Set the Patient Outcome.
	 * This field represent the patient's overall outcome if that information is known.
	 * @param strPatientOutcome This field contains the String Value of Patient Outcome 
	 */ 
	public void setPatientOutcome (String strPatientOutcome) 
	{
		ID patientOutcome  = (ID)getDataElement(1084);
		patientOutcome.setValue(strPatientOutcome); 
		setPatientOutcome(patientOutcome);

	} 

	/** 
	 * Set the Patient Outcome.
	 * This field represent the patient's overall outcome if that information is known.
	 * @param objpatientOutcome Object of Patient Outcome.
	 */ 
	public void setPatientOutcome(ID objpatientOutcome)
	{
		setDataType(1084,objpatientOutcome);

	}

	/**
	 * Add the Primary Observer Address.
	 * This field identify the address of the person who initially described the event.
	 * @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 addPrimaryObserverAddress (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(1092);
		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); 
		addPrimaryObserverAddress(xad);

	} 

	/** 
	 * Add the Primary Observer Address.
	 * This field identify the address of the person who initially described the event.
	 * @param objprimaryObserverAddress Object of Primary Observer Address.
	 */ 
	public void addPrimaryObserverAddress(XAD objprimaryObserverAddress)
	{
		addDataType(1092,objprimaryObserverAddress);

	} 

	/** 
	 * Set the Primary Observer Address.
	 * This field identify the address of the person who initially described the event.
	 * @param objprimaryObserverAddressList List of Primary Observer Address.
	 */ 
	@SuppressWarnings("unchecked")
	public void setPrimaryObserverAddress(ISingleCollection<XAD> objprimaryObserverAddressList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objprimaryObserverAddressList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1092,objCollection);
	}

	/**
	 * Set the Primary Observer Aware Date Time.
	 * This field identify the date/time of the primary observer become aware of event.
	 * @param strTime Specifies a point in time using a 24-hour clock notation.	 
	 */ 
	public void setPrimaryObserverAwareDateTime (String strTime) 
	{
		DTM primaryObserverAwareDateTime  = (DTM)getDataElement(1096);
		primaryObserverAwareDateTime.setValue(strTime);		
		setPrimaryObserverAwareDateTime(primaryObserverAwareDateTime);

	} 

	/** 
	 * Set the Primary Observer Aware Date Time.
	 * This field identify the date/time of the primary observer become aware of event.
	 * @param objprimaryObserverAwareDateTime Object of Primary Observer Aware Date Time.
	 */ 
	public void setPrimaryObserverAwareDateTime(DTM objprimaryObserverAwareDateTime)
	{
		setDataType(1096,objprimaryObserverAwareDateTime);

	}

	/**
	 * Set the Primary Observer Identity.
	 * This field indicates whether the primary observer, if known to the sender, 
	 * grants permission to disclose his or her identity to the product manufacturer for the 
	 * purpose of further investigating the event or not. 
	 * @param strPrimaryObserverIdentity This field contains the String Value of Primary Observer Identity May Be Divulged
	 */ 
	public void setPrimaryObserverIdentityMayBeDivulged (String strPrimaryObserverIdentity) 
	{
		ID primaryObserverIdentity  = (ID)getDataElement(1097);
		primaryObserverIdentity.setValue(strPrimaryObserverIdentity); 
		setPrimaryObserverIdentityMayBeDivulged(primaryObserverIdentity);

	} 

	/** 
	 * Set the Primary Observer Identity.
	 * This field indicates whether the primary observer, if known to the sender, 
	 * grants permission to disclose his or her identity to the product manufacturer for the 
	 * purpose of further investigating the event or not. 
	 * @param objprimaryObserverIdentity Object of Primary Observer Identity.
	 */ 
	public void setPrimaryObserverIdentityMayBeDivulged(ID objprimaryObserverIdentity)
	{
		setDataType(1097,objprimaryObserverIdentity);

	}

	/**
	 * Add the Primary Observer Name.
	 * This field identify the name of the person who initially describe the event.  
	 *  name of the patient is reported first.
	 * @param objFamilyName Specifies the surname of a person. 
	 * @param strGivenName Specifies First name.
	 * @param strSecondAndFurtherGivenNamesOrInitialsThereof Specifies multiple middle names that may be included by separating them with spaces.
	 * @param strSuffix Used to specify a name suffix (e.g., Jr. or III).
	 * @param strPrefix Used to specify a name prefix (e.g., Dr.).
	 * @param strNameTypeCode Specifies a code that represents the type of name. Suggested values are A,B,C,D,I,L,M,N,P,R,S,T,U...[Refer table 0200.]
	 * @param strNameRepresentationCode Specifies representations of the same name/address Suggested values are I,A,P [Refer table 0465] 
	 * @param objNameContext Designates the context in which a name is used. [Refer User-defined Table 0448 ]
	 * @param strNameAssemblyOrder Specifies a code that represents the preferred display order of the components of this person name. Suggested values are G,F[Refer table 0444.]
	 * @param objEffectiveDate Specifies the first date, if known, on which the address is valid and active.
	 * @param objExpirationDate Specifies the last date, if known, on which the address is valid and active.
	 * @param strProfessionalSuffix Used to specify an abbreviation, or a string of abbreviations, denoting qualifications that support the person's profession, (e.g., licenses). 
	 * @param strCalledBy Used to specify the called name.
	 */ 
	public void addPrimaryObserverName (FN objFamilyName, String strGivenName, String strSecondAndFurtherGivenNamesOrInitialsThereof, 
			String strSuffix, String strPrefix, String strNameTypeCode, String strNameRepresentationCode, 
			CWE objNameContext, String strNameAssemblyOrder, DTM objEffectiveDate,
			DTM objExpirationDate, String strProfessionalSuffix, String strCalledBy)
	{
		XPN xpn = (XPN)getDataElement(1091);
		xpn.setFamilyName(objFamilyName);
		xpn.setGivenName(strGivenName);
		xpn.setSecondNameOrInitials(strSecondAndFurtherGivenNamesOrInitialsThereof);
		xpn.setSuffix(strSuffix);
		xpn.setPrefix(strPrefix);
//		xpn.setDegree(strDegree);
		xpn.setNameTypeCode(strNameTypeCode);
		xpn.setNameRepresentationCode(strNameRepresentationCode);
		xpn.setNameContext(objNameContext);
//		xpn.setNameValidityRange(objNameValidityRange);
		xpn.setNameAssemblyOrder(strNameAssemblyOrder);
		xpn.setEffectiveDate(objEffectiveDate);
		xpn.setExpirationDate(objExpirationDate);
		xpn.setProfessionalSuffix(strProfessionalSuffix); 
		xpn.setCalledBy(strCalledBy);
		addPrimaryObserverName(xpn);

	} 

	/** 
	 * Add the Primary Observer Name.
	 * This field identify the name of the person who initially describe the event.
	 * @param objprimaryObserverName Object of Primary Observer Name.
	 */ 
	public void addPrimaryObserverName(XPN objprimaryObserverName)
	{
		addDataType(1091,objprimaryObserverName);

	} 

	/** 
	 * Set the Primary Observer Name.
	 * This field identify the name of the person who initially describe the event.
	 * @param objprimaryObserverNameList List of Primary Observer Name.
	 */ 
	@SuppressWarnings("unchecked")
	public void setPrimaryObserverName(ISingleCollection<XPN> objprimaryObserverNameList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objprimaryObserverNameList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1091,objCollection);
	}

	/**
	 * Set the Primary Observer Qualification.
	 * This field contains the qualification of the primary observer which may assist in assessing the validity of the observations.  
	 * @param strPrimaryObserverQualification This field contains the String Value of Primary Observer Qualification
	 */ 
	public void setPrimaryObserverQualification (String strPrimaryObserverQualification) 
	{
		ID primaryObserverQualification  = (ID)getDataElement(1094);
		primaryObserverQualification.setValue(strPrimaryObserverQualification); 
		setPrimaryObserverQualification(primaryObserverQualification);

	} 

	/** 
	 * Set the Primary Observer Qualification.
	 * This field contains the qualification of the primary observer which may assist in assessing the validity of the observations.  
	 * @param objprimaryObserverQualification Object of Primary Observer Qualification.
	 */ 
	public void setPrimaryObserverQualification(ID objprimaryObserverQualification)
	{
		setDataType(1094,objprimaryObserverQualification);

	}

	/**
	 * Add the Primary Observer Telephone.
	 * This field identify the telephone number of the person who initially described the event.
	* @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 addPrimaryObserverTelephone (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(1093);
//		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); 
		addPrimaryObserverTelephone(xtn);

	} 

	/** 
	 * Add the Primary Observer Telephone.
	 * This field identify the telephone number of the person who initially described the event.
	 * @param objprimaryObserverTelephone Object of Primary Observer Telephone.
	 */ 
	public void addPrimaryObserverTelephone(XTN objprimaryObserverTelephone)
	{
		addDataType(1093,objprimaryObserverTelephone);

	} 

	/** 
	 * Set the Primary Observer Telephone.
	 * This field identify the telephone number of the person who initially described the event.
	 * @param objprimaryObserverTelephoneList List of Primary Observer Telephone.
	 */ 
	@SuppressWarnings("unchecked")
	public void setPrimaryObserverTelephone(ISingleCollection<XTN> objprimaryObserverTelephoneList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objprimaryObserverTelephoneList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1093,objCollection);
	}

	/**
	 * Validates HL7 Message objects .
	 * Validate method checks for validation each and every segments in side the Message object against specified message Structure. 
	 * Validation checks 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
	{
		/*
		 * Event Onset Date/Time is required field.
		 */
		try
		{
			super.validate();

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