/*******************************************************************************
 *  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.CX;
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.HD;
import cdac.medinfo.sdk.hl7282.baselibs.ID;
import cdac.medinfo.sdk.hl7282.baselibs.NM;
import cdac.medinfo.sdk.hl7282.baselibs.SAD;
import cdac.medinfo.sdk.hl7282.baselibs.SI;
import cdac.medinfo.sdk.hl7282.baselibs.ST;
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;

/**
 * PID - Patient Identification Segment<p>
 * The PID segment is used by all applications as the primary means of communicating patient identification 
 * information.  This segment contains permanent patient identifying and demographic information that, for 
 * the most part, is not likely to change frequently.
 * <p>Represents an HL7 PID message segment. 
 * This segment has the following fields:</p><p>
 * PID-1: Set ID - PID (SI)<b>Optional</b><br> 
 * PID-3: Patient Identifier List (CX)<b>Required</b><br> 
 * PID-5: Patient Name (XPN)<b>Required</b><br> 
 * PID-6: Mother's Maiden Name (XPN)<b>Optional</b><br> 
 * PID-7: Date/Time of Birth (DTM)<b>Optional</b><br> 
 * PID-8: Administrative Sex (CWE)<b>Optional</b><br> 
 * PID-10: Race (CWE)<b>Optional</b><br> 
 * PID-11: Patient Address (XAD)<b>Optional</b><br> 
 * PID-13: Phone Number - Home (XTN)<b>Backward</b><br> 
 * PID-14: Phone Number - Business (XTN)<b>Backward</b><br> 
 * PID-15: Primary Language (CWE)<b>Optional</b><br> 
 * PID-16: Marital Status (CWE)<b>Optional</b><br> 
 * PID-17: Religion (CWE)<b>Optional</b><br> 
 * PID-18: Patient Account Number (CX)<b>Optional</b><br> 
 * PID-21: Mother's Identifier (CX)<b>Optional</b><br> 
 * PID-22: Ethnic Group (CWE)<b>Optional</b><br> 
 * PID-23: Birth Place (ST)<b>Optional</b><br> 
 * PID-24: Multiple Birth Indicator (ID)<b>Optional</b><br> 
 * PID-25: Birth Order (NM)<b>Optional</b><br> 
 * PID-26: Citizenship (CWE)<b>Optional</b><br> 
 * PID-27: Veterans Military Status (CWE)<b>Optional</b><br> 
 * PID-29: Patient Death Date and Time (DTM)<b>Optional</b><br> 
 * PID-30: Patient Death Indicator (ID)<b>Optional</b><br> 
 * PID-31: Identity Unknown Indicator (ID)<b>Optional</b><br> 
 * PID-32: Identity Reliability Code (CWE)<b>Optional</b><br> 
 * PID-33: Last Update Date/Time (DTM)<b>Optional</b><br> 
 * PID-34: Last Update Facility (HD)<b>Optional</b><br> 
 * PID-35: Taxonomic Classification Code (CWE)<b>Optional</b><br> 
 * PID-36: Breed Code (CWE)<b>Backward</b><br> 
 * PID-37: Strain (ST)<b>Optional</b><br> 
 * PID-38: Production Class Code (CWE)<b>Optional</b><br> 
 * PID-39: Tribal Citizenship (CWE)<b>Optional</b><br><p>
 * PID-40: Patient Telecommunication and Information (XTN)<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 PID extends Segment   
{

	

	/**
	 * Constucts the PID segment.
	 */
	public PID()
	{super(EnumSegments.HL7_SEG_PID);
	}
	//Integer values used in getter/setter is unique item id defined 
	//for each attribute.

	/**
	 * Retrieves the Administrative Sex.  
	 * @return String - administrativeSex
	 */
	public CWE getAdministrativeSex()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(111);
		if(objDataCollection != null) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}


	/**
	 * Retrieves the Birth Order.
	 * @return String - birthOrder
	 */
	public NM getBirthOrder() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(128);
		if(objDataCollection != null) 
			return (NM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Birth Place.
	 * This field indicates the location of the patient's birth, for example "St. Francis 
	 * Community Hospital of Lower South Side". 
	 * @return String - birthPlace
	 */
	public ST getBirthPlace() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(126);
		if(objDataCollection != null) 
			return (ST)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Breed Code.
	 * This field specify the breed of animal. This field, unlike Species and Strain is specific 
	 * to animals and cannot be generally used for all living organisms. 
	 * @return CE - breedCode
	 */
	public CWE getBreedCode() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1540);
		if(objDataCollection != null) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Citizenship.
	 * This field contains the information related to a person's country citizenship.
	 * @return ISingleCollection<CE> - citizenship
	 */
	public ISingleCollection<CWE> getCitizenship()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(129);
		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 Date Time Of Birth.
	 * This field contains the patient's date and time of birth.
	 * @return DTM - dateTimeOfBirth
	 */
	public DTM getDateTimeOfBirth() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(110);
		if(objDataCollection != null) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}


	/**
	 * Retrieves the Ethnic Group.
	 * This field defines the patient's ancestry. 
	 * @return ISingleCollection<CE> - ethnicGroup
	 */
	public ISingleCollection<CWE> getEthnicGroup()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(125);
		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 Identity Reliability Code.
	 * This field contains a coded value used to communicate information regarding the 
	 * reliability of patient/person identifying data transmitted via a transaction.
	 * @return ISingleCollection<CWE> - identityReliabilityCode
	 */
	public ISingleCollection<CWE> getIdentityReliabilityCode() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1536);
		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 Identity Unknown Indicator.
	 * This field indicates whether the patient's/person's identity is known or not.  
	 * @return String - identityUnknownIndicator
	 */
	public ID getIdentityUnknownIndicator() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1535);
		if(objDataCollection != null) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Last Update Date Time.
	 * This field contains the last update date and time for the patient's/person's identifying and demographic data, as defined in the PID segment.  
	 * @return TS - lastUpdateDateTime
	 */
	public DTM getLastUpdateDateTime() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1537);
		if(objDataCollection != null) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Last Update Facility.
	 * This field identify the facility of the last update to a patient's/person's identifying 
	 * and demographic data, as defined in the PID segment.  
	 * @return HD - lastUpdateFacility
	 */
	public HD getLastUpdateFacility()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1538);
		if(objDataCollection != null) 
			return (HD)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Marital Status.  
	 * @return CE - maritalStatus
	 */
	public CWE getMaritalStatus()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(119);
		if(objDataCollection != null) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Mother Identifier.
	 * This field contain multiple identifiers for the same mother.
	 * @return ISingleCollection<CX> - motherIdentifier
	 */
	public ISingleCollection<CX> getMotherIdentifier() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(124);
		ISingleCollection<CX> objDataList = new SingleCollection<CX>();
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				CX objCX = (CX)objDataType;
				objDataList.add(objCX);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Mother Maiden Name.
	 * This field contains the family name under which the mother is born.
	 * @return ISingleCollection<XPN> - motherMaidenName
	 */
	public ISingleCollection<XPN> getMotherMaidenName() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(109);
		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 Multiple Birth Indicator.
	 * This field indicates whether the patient is part of a multiple birth or not. 
	 * @return String - multipleBirthIndicator
	 */
	public ID getMultipleBirthIndicator()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(127);
		if(objDataCollection != null) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}


	/**
	 * Retrieves the Patient Account Number.
	 * This field contains the patient account number assigned by accounting to which all 
	 * charges, payments, etc., are recorded.
	 * @return CX - patientAccountNumber
	 */
	public CX getPatientAccountNumber()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(121);
		if(objDataCollection != null) 
			return (CX)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Patient Address.
	 * This field contains the mailing address of the patient.  
	 * @return ISingleCollection<XAD> - patientAddress
	 */
	public ISingleCollection<XAD> getPatientAddress() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(114);
		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 Patient Death Date Time.
	 * This field contains the date and time at which the patient death occurred.
	 * @return TS - patientDeathDateTime
	 */
	public DTM getPatientDeathDateTime() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(740);
		if(objDataCollection != null) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Patient Death Indicator.  
	 * @return String - patientDeathIndicator
	 */
	public ID getPatientDeathIndicator() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(741);
		if(objDataCollection != null) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}


	/**
	 * Retrieves the Patient Identifier List.
	 * This field contains the list of identifiers(one or more) used by the healthcare 
	 * facility to uniquely identify a patient.
	 * @return ISingleCollection<CX> - patientIdentifierList
	 */
	public ISingleCollection<CX> getPatientIdentifierList()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(106);
		ISingleCollection<CX> objDataList = new SingleCollection<CX>();
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				CX objCX = (CX)objDataType;
				objDataList.add(objCX);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Patient Name.
	 * This field contains the names of the patient, the primary or legal
	 *  name of the patient is reported first.
	 * @return ISingleCollection<XPN> - patientName
	 */
	public ISingleCollection<XPN> getPatientName()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(108);
		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 Phone Number Business.
	 * This field contains the patient's business telephone numbers.
	 * @return ISingleCollection<XTN> - phoneNumberBusiness
	 */
	public ISingleCollection<XTN> getPhoneNumberBusiness() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(117);
		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;
	}

	/**
	 * Retrieves the Phone Number Home.
	 * This field contains the patient's personal phone numbers.  
	 * @return ISingleCollection<XTN> - phoneNumberHome
	 */
	public ISingleCollection<XTN> getPhoneNumberHome()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(116);
		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;
	}
	
	/**
	 * Retrieves the Patient Telecommunication Identifier.  
	 * @return ISingleCollection<XTN> - Patient Telecommunication Identifier
	 */
	public ISingleCollection<XTN> getPatientTelecommunicationInformation()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2289);
		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;
	}

	/**
	 * Retrieves the Primary Language.
	 * This field contains the patient's primary language. 
	 * @return CE - primaryLanguage
	 */
	public CWE getPrimaryLanguage() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(118);
		if(objDataCollection != null) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Production Class Code.
	 * This field contains the code and/or text indicating the primary use for which the 
	 * living subject is bred or grown.
	 * @return ISingleCollection<CE> - productionClassCode
	 */
	public ISingleCollection<CWE> getProductionClassCode() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1542);
		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 Race.
	 * This field contains the patient's race.  
	 * @return ISingleCollection<CE> - race
	 */
	public ISingleCollection<CWE> getRace() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(113);
		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 Religion.
	 * This field contains the patient's religion. 
	 * @return CE - religion
	 */
	public CWE getReligion()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(120);
		if(objDataCollection != null) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Set ID PID.
	 * This field contains the number that identifies this transaction.  
	 * @return String - setID_PID
	 */
	public SI getSetID_PID() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(104);
		if(objDataCollection != null) 
			return (SI)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Species Code.
	 * This field identify species of living organism. This may include the common or 
	 * scientific name, based on the coding system(s) used.  
	 * @return CE - breedCode
	 */
	public CWE getTaxonomicClassificationCode()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1539);
		if(objDataCollection != null) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}


	/**
	 * Retrieves the Strain.
	 * This field contains the specific strain of animal. It can also be expanded to 
	 * include strain of any living organism and is not restricted to animals.
	 * @return String - strain
	 */
	public ST getStrain()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1541);
		if(objDataCollection != null) 
			return (ST)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Tribal Citizenship.
	 * This field contains the information related to a person's tribal citizenship.
	 * @return ISingleCollection<CWE> - tribalCitizenship
	 */
	public ISingleCollection<CWE> getTribalCitizenship()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1840);
		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 Veterans Military Status.
	 * This field contains the military status assigned to a veteran.
	 * @return CE - veteransMilitaryStatus
	 */
	public CWE getVeteransMilitaryStatus() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(130);
		if(objDataCollection != null) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Set the Set ID PID.
	 * This field contains the number that identifies this transaction.
	 * @param strSequenceID Use as SequenceID.
	 */ 
	public void setSetID_PID (String strSequenceID) 
	{
		SI SetID_PID  = (SI)getDataElement(104);
		SetID_PID.setValue(strSequenceID); 
		setSetID_PID(SetID_PID);

	} 

	/** Set the Set ID PID.
	 * This field contains the number that identifies this transaction.
	 * @param objSetID_PID object of SequenceID.
	 */ 
	public void setSetID_PID(SI objSetID_PID)
	{
		setDataType(104,objSetID_PID);

	}


	/**
	 * Set the Patient Identifier List.
	 * This field contains the list of identifiers(one or more) used by the healthcare 
	 * facility to uniquely identify a patient.
	 * @param strIDNumber Specifies the value of the identifier itself.
	 * @param strCheckDigit It is part of the identifying number used in the sending application. 
	 * @param strCheckDigitScheme Contains the code identifying the check digit scheme employed.
	 * 								Suggested Values NP,ISO,M10,M11.[Refer table No.0061].
	 * @param objAssigningAuthority The assigning authority is a unique name of the system (or organization or agency 
	 * 									or department) that creates the data. . 
	 * @param strIdentifierTypeCode Specifies a code corresponding to the type of identifier.In some cases, this code may be
	 * 								 used as a qualifier to the "Assigning authority" component.[Refer table No 0203]
	 * @param objAssigningFacility Specifies the place or location identifier where the identifier was first assigned 
	 * 									to the patient. 
	 * @param strEffectiveDate Specifies the first date, if known, on which the address is valid and active.
	 * @param strExpirationDate Specifies the last date, if known, on which the address is valid and active.
	 * @param objAssigningJurisdiction Specifies the geo-political body that assigned the identifier. 
	 * @param objAssigningAgencyOrDepartment Specifies agency or department that assigned the identifier. 
	 * @param strSecurityCheck is used to communicate the version code. 
	 * @param objSecurityCheckSCheme is used to transmit information intended to validate veracity of the supplied identifier
	 */ 
	public void addPatientIdentifierList (String strIDNumber,String strCheckDigit, String strCheckDigitScheme, HD objAssigningAuthority,
			String strIdentifierTypeCode,HD objAssigningFacility,String strEffectiveDate,String strExpirationDate, 
			CWE objAssigningJurisdiction, CWE objAssigningAgencyOrDepartment, String strSecurityCheck, String strSecurityCheckScheme)
	{
		CX PatientIdentifierList  = (CX)getDataElement(106);
		PatientIdentifierList.setIdNumber(strIDNumber);
		PatientIdentifierList.setCheckDigit(strCheckDigit);
		PatientIdentifierList.setCheckDigitScheme(strCheckDigitScheme);
		PatientIdentifierList.setAssigningAuthority(objAssigningAuthority);
		PatientIdentifierList.setIdentifierTypeCode(strIdentifierTypeCode);
		PatientIdentifierList.setAssigningFacility(objAssigningFacility);
		PatientIdentifierList.setEffectiveDate(strEffectiveDate);
		PatientIdentifierList.setExpirationDate(strExpirationDate);
		PatientIdentifierList.setAssigningJurisdiction(objAssigningJurisdiction);
		PatientIdentifierList.setAssigningAgencyOrDepartment(objAssigningAgencyOrDepartment); 
		PatientIdentifierList.setSecurityCheck(strCheckDigit);
		PatientIdentifierList.setSecurityCheckScheme(strSecurityCheckScheme);
		addPatientIdentifierList(PatientIdentifierList);

	} 

	/** Set the Patient Identifier List.
	 * This field contains the list of identifiers(one or more) used by the healthcare 
	 * facility to uniquely identify a patient.
	 * @param objPatientIdentifierList object of Patient IdentifierList. 
	 */ 
	public void addPatientIdentifierList(CX objPatientIdentifierList)
	{
		addDataType(106,objPatientIdentifierList);

	}
	/**
	 * Set the Patient Identifier List.
	 * @param objPatientIdentifierList List of Patient Identifier List.
	 */
	@SuppressWarnings("unchecked")
	public void setPatientIdentifierList(ISingleCollection<CX> objPatientIdentifierList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objPatientIdentifierList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(106,objCollection);
	}
	
	/**
	 * Set the Patient Name.
	 * This field contains the names of the patient, the primary or legal
	 *  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 addPatientName (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 PatientName = (XPN)getDataElement(108);
		PatientName.setFamilyName(objFamilyName);
		PatientName.setGivenName(strGivenName);
		PatientName.setSecondNameOrInitials(strSecondAndFurtherGivenNamesOrInitialsThereof);
		PatientName.setSuffix(strSuffix);
		PatientName.setPrefix(strPrefix);
		PatientName.setNameTypeCode(strNameTypeCode);
		PatientName.setNameRepresentationCode(strNameRepresentationCode);
		PatientName.setNameContext(objNameContext);
		PatientName.setNameAssemblyOrder(strNameAssemblyOrder);
		PatientName.setEffectiveDate(objEffectiveDate);
		PatientName.setExpirationDate(objExpirationDate);
		PatientName.setProfessionalSuffix(strProfessionalSuffix); 
		PatientName.setCalledBy(strCalledBy);
		addPatientName(PatientName);

	} 

	/** Sets the PatientName.  
	 * @param objPatientName object of objPatientName. 
	 */ 
	public void addPatientName(XPN objPatientName)
	{
		addDataType(108,objPatientName);

	}
	/***
	 * Set the Patient name.
	 * @param objPatientName List of Patient name.
	 */	
	@SuppressWarnings("unchecked")
	public void setPatientName(ISingleCollection<XPN> objPatientName)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objPatientName;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(108,objCollection);
	}
	/**
	 * Set the Mother Maiden Name.
	 * This field contains the family name under which the mother is born.
	 * @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 sed 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 addMotherMaidenName (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 MotherMaidenName = (XPN)getDataElement(109);
		MotherMaidenName.setFamilyName(objFamilyName);
		MotherMaidenName.setGivenName(strGivenName);
		MotherMaidenName.setSecondNameOrInitials(strSecondAndFurtherGivenNamesOrInitialsThereof);
		MotherMaidenName.setSuffix(strSuffix);
		MotherMaidenName.setPrefix(strPrefix);
		MotherMaidenName.setNameTypeCode(strNameTypeCode);
		MotherMaidenName.setNameRepresentationCode(strNameRepresentationCode);
		MotherMaidenName.setNameContext(objNameContext);
		MotherMaidenName.setNameAssemblyOrder(strNameAssemblyOrder);
		MotherMaidenName.setEffectiveDate(objEffectiveDate);
		MotherMaidenName.setExpirationDate(objExpirationDate);
		MotherMaidenName.setProfessionalSuffix(strProfessionalSuffix); 
		MotherMaidenName.setCalledBy(strCalledBy);
		addMotherMaidenName(MotherMaidenName);

	} 

	/**
	 * Sets the Mother Maiden Name.
	 * @param objMotherMaidenName object of MotherMaidenName 
	 */ 
	public void addMotherMaidenName(XPN objMotherMaidenName)
	{
		addDataType(109,objMotherMaidenName);
	}

	/***
	 * Set the MothersMaiden name.
	 * @param objPatientName List of MothersMaiden name.
	 */	
	@SuppressWarnings("unchecked")
	public void setMotherMaidenName(ISingleCollection<XPN> objMotherMaidenName)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objMotherMaidenName;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(109,objCollection);
	}
	/**
	 * Set the Date Time Of Birth.
	  * @param strDateTimeOfBirth Specifies recorded date time. 
	 */ 
	public void setDateTimeOfBirth (String strDateTimeOfBirth) 
	{
		DTM dateTimeOfBirth  = (DTM)getDataElement(110);
		dateTimeOfBirth.setValue(strDateTimeOfBirth); 
		setDateTimeOfBirth(dateTimeOfBirth);
	} 

	/** Set the Date Time Of Birth.
	 * This field contains the patient's date and time of birth.
	 * @param strTime Specifies a point in time using a 24-hour clock notation. 
	 * @param objdateTimeOfBirth object of DateTimeOfBirth
	 */ 
	public void setDateTimeOfBirth(DTM objdateTimeOfBirth)
	{
		setDataType(110,objdateTimeOfBirth);
	}

	/**
	 * Set the Administrative Sex.
	 * This field contains the reason 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 setAdministrativeSex (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 AdministrativeSex  = (CWE)getDataElement(111);
		AdministrativeSex.setIdentifier(strIdentifier);
		AdministrativeSex.setText(strText);
		AdministrativeSex.setNameOfCodingSystem(strNameOfCodingSystem);
		AdministrativeSex.setAlternateIdentifier(strAlternateIdentifier);
		AdministrativeSex.setAlternateText(strAlternateText);
		AdministrativeSex.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		AdministrativeSex.setCodingSystemVersionID(strCodingSystemVersionID);
		AdministrativeSex.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		AdministrativeSex.setOriginalText(strOriginalText);
		AdministrativeSex.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		AdministrativeSex.setSecondAlternateText(strSecondAlternateText);
		AdministrativeSex.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		AdministrativeSex.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		AdministrativeSex.setCodingSystemOID(strCodingSystemOID);
		AdministrativeSex.setValueSetOID(strValueSetOID);
		AdministrativeSex.setValueSetVersionID(strValueSetVersionID);
		AdministrativeSex.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		AdministrativeSex.setAlternateValueSetOID(strAlternateValueSetOID);
		AdministrativeSex.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		AdministrativeSex.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		AdministrativeSex.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		AdministrativeSex.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		setAdministrativeSex(AdministrativeSex);
	} 

	/** Set the Administrative Sex.
	 * @param objAdministrativeSex object of  AdministrativeSex.
	 */ 
	public void setAdministrativeSex(CWE objAdministrativeSex)
	{
		setDataType(111,objAdministrativeSex);
	}

	/**
	 * Set the Birth Order.
	 * @param strBirthOrder Use as BirthOrder.
	 */ 
	public void setBirthOrder (String strBirthOrder) 
	{
		NM birthOrder  = (NM)getDataElement(128);
		birthOrder.setValue(strBirthOrder); 
		setBirthOrder(birthOrder);
	} 

	/** Set the Birth Order.
	 * @param objbirthOrder object of  BirthOrder.
	 */ 
	public void setBirthOrder(NM objbirthOrder)
	{
		setDataType(128,objbirthOrder);
	}

	/**
	 * Set the Birth Place.
	 * This field indicates the location of the patient's birth, for example "St. Francis 
	 * Community Hospital of Lower South Side". 
	 * @param strBirthPlace Use as BirthPlace.
	 */ 
	public void setBirthPlace (String strBirthPlace)
	{
		ST birthPlace  = (ST)getDataElement(126);
		birthPlace.setValue(strBirthPlace); 
		setBirthPlace(birthPlace);
	} 

	/** Set the Birth Place.
	 * This field indicates the location of the patient's birth, for example "St. Francis 
	 * Community Hospital of Lower South Side". 
	 * @param objbirthPlace object of  BirthPlace.
	 */ 
	public void setBirthPlace(ST objbirthPlace)
	{
		setDataType(126,objbirthPlace);
	}

	/**
	 * Set the Breed Code.
	 * This field specify the breed of animal. This field, unlike Species and Strain is specific 
	 * @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 setBreedCode (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 breedCode  = (CWE)getDataElement(1540);
		breedCode.setIdentifier(strIdentifier);
		breedCode.setText(strText);
		breedCode.setNameOfCodingSystem(strNameOfCodingSystem);
		breedCode.setAlternateIdentifier(strAlternateIdentifier);
		breedCode.setAlternateText(strAlternateText);
		breedCode.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		breedCode.setCodingSystemVersionID(strCodingSystemVersionID);
		breedCode.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		breedCode.setOriginalText(strOriginalText);
		breedCode.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		breedCode.setSecondAlternateText(strSecondAlternateText);
		breedCode.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		breedCode.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		breedCode.setCodingSystemOID(strCodingSystemOID);
		breedCode.setValueSetOID(strValueSetOID);
		breedCode.setValueSetVersionID(strValueSetVersionID);
		breedCode.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		breedCode.setAlternateValueSetOID(strAlternateValueSetOID);
		breedCode.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		breedCode.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		breedCode.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		breedCode.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		setBreedCode(breedCode);
	} 

	/** Set the Breed Code.
	 * This field specify the breed of animal. This field, unlike Species and Strain is specific 
	 * to animals and cannot be generally used for all living organisms. 
	 * @param objbreedCode object of BreedCode
	 */ 
	public void setBreedCode(CWE objbreedCode)
	{
		setDataType(1540,objbreedCode);
	}

	/**
	 * Set the Citizenship.
	 * This field contains the information related to a person's country citizenship.
	 * @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 addCitizenship (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 Citizenship  = (CWE)getDataElement(129);
		Citizenship.setIdentifier(strIdentifier);
		Citizenship.setText(strText);
		Citizenship.setNameOfCodingSystem(strNameOfCodingSystem);
		Citizenship.setAlternateIdentifier(strAlternateIdentifier);
		Citizenship.setAlternateText(strAlternateText);
		Citizenship.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		Citizenship.setCodingSystemVersionID(strCodingSystemVersionID);
		Citizenship.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		Citizenship.setOriginalText(strOriginalText);
		Citizenship.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		Citizenship.setSecondAlternateText(strSecondAlternateText);
		Citizenship.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		Citizenship.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		Citizenship.setCodingSystemOID(strCodingSystemOID);
		Citizenship.setValueSetOID(strValueSetOID);
		Citizenship.setValueSetVersionID(strValueSetVersionID);
		Citizenship.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		Citizenship.setAlternateValueSetOID(strAlternateValueSetOID);
		Citizenship.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		Citizenship.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		Citizenship.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		Citizenship.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		addCitizenship(Citizenship);
	} 

	/** Set the Citizenship.
	 * This field contains the information related to a person's country citizenship.
	 * @param objCitizenship object of Citizenship.
	 */ 
	public void addCitizenship(CWE objCitizenship)
	{
		addDataType(129,objCitizenship);
	}
	/**
	 * Set the Citizenship.
	 * @param objCitizenship List of Citizenship.
	 */
	@SuppressWarnings("unchecked")
	public void setCitizenship(ISingleCollection<CWE> objCitizenship)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objCitizenship;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(129,objCollection);
	}


	/**
	 * Set the Ethnic Group.
	 * This field defines the patient's ancestry.
	 * @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 addEthnicGroup (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 tempEthnicGroup  = (CWE)getDataElement(125);
		tempEthnicGroup.setIdentifier(strIdentifier);
		tempEthnicGroup.setText(strText);
		tempEthnicGroup.setNameOfCodingSystem(strNameOfCodingSystem);
		tempEthnicGroup.setAlternateIdentifier(strAlternateIdentifier);
		tempEthnicGroup.setAlternateText(strAlternateText);
		tempEthnicGroup.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		tempEthnicGroup.setCodingSystemVersionID(strCodingSystemVersionID);
		tempEthnicGroup.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		tempEthnicGroup.setOriginalText(strOriginalText);
		tempEthnicGroup.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		tempEthnicGroup.setSecondAlternateText(strSecondAlternateText);
		tempEthnicGroup.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		tempEthnicGroup.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		tempEthnicGroup.setCodingSystemOID(strCodingSystemOID);
		tempEthnicGroup.setValueSetOID(strValueSetOID);
		tempEthnicGroup.setValueSetVersionID(strValueSetVersionID);
		tempEthnicGroup.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		tempEthnicGroup.setAlternateValueSetOID(strAlternateValueSetOID);
		tempEthnicGroup.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		tempEthnicGroup.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		tempEthnicGroup.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		tempEthnicGroup.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		addEthnicGroup(tempEthnicGroup);
	} 

	/** Set the Ethnic Group.
	 * This field defines the patient's ancestry.
	 * @param objtempEthnicGroup object of EthnicGroup
	 */ 
	public void addEthnicGroup(CWE objtempEthnicGroup)
	{
		addDataType(125,objtempEthnicGroup);
	}

	/**
	 * Set the Ethnic Group.
	 * @param objEthnicGroup List of Ethnic Group.
	 */
	@SuppressWarnings("unchecked")
	public void setEthnicGroup(ISingleCollection<CWE> objEthnicGroup)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objEthnicGroup;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(125,objCollection);
	}

	/**
	 * Set the Identity Reliability Code.
	 * This field contains a coded value used to communicate information regarding the 
	 * @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 addIdentityReliabilityCode (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 IdentityReliabilityCode  = (CWE)getDataElement(1536);
		IdentityReliabilityCode.setIdentifier(strIdentifier);
		IdentityReliabilityCode.setText(strText);
		IdentityReliabilityCode.setNameOfCodingSystem(strNameOfCodingSystem);
		IdentityReliabilityCode.setAlternateIdentifier(strAlternateIdentifier);
		IdentityReliabilityCode.setAlternateText(strAlternateText);
		IdentityReliabilityCode.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		IdentityReliabilityCode.setCodingSystemVersionID(strCodingSystemVersionID);
		IdentityReliabilityCode.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		IdentityReliabilityCode.setOriginalText(strOriginalText);
		IdentityReliabilityCode.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		IdentityReliabilityCode.setSecondAlternateText(strSecondAlternateText);
		IdentityReliabilityCode.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		IdentityReliabilityCode.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		IdentityReliabilityCode.setCodingSystemOID(strCodingSystemOID);
		IdentityReliabilityCode.setValueSetOID(strValueSetOID);
		IdentityReliabilityCode.setValueSetVersionID(strValueSetVersionID);
		IdentityReliabilityCode.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		IdentityReliabilityCode.setAlternateValueSetOID(strAlternateValueSetOID);
		IdentityReliabilityCode.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		IdentityReliabilityCode.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		IdentityReliabilityCode.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		IdentityReliabilityCode.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		addIdentityReliabilityCode(IdentityReliabilityCode);
	} 

	/**Sets the Identity Reliability Code.  
	 * @param objIdentityReliabilityCode object of  IdentityReliabilityCode.
	 */ 
	public void addIdentityReliabilityCode(CWE objIdentityReliabilityCode)
	{
		addDataType(1536,objIdentityReliabilityCode);
	}
	/**
	 * Set the Identity Reliability Code.
	 * @param objIdentityReliabilityCode List of Identity Reliability Code.
	 */
	@SuppressWarnings("unchecked")
	public void setIdentityReliabilityCode(ISingleCollection<CWE> objIdentityReliabilityCode)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objIdentityReliabilityCode;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1536,objCollection);
	}
	/**
	 * Set the Identity Unknown Indicator.
	 * This field indicates whether the patient's/person's identity is known or not.
	 * @param strIdentityUnknownIndicator Use as IdentityUnknownIndicator.
	 */ 
	public void setIdentityUnknownIndicator (String  strIdentityUnknownIndicator) 
	{
		ID identityUnknownIndicator  = (ID)getDataElement(1535);
		identityUnknownIndicator.setValue(strIdentityUnknownIndicator); 
		setIdentityUnknownIndicator(identityUnknownIndicator);
	} 

	/**Sets the Identity Unknown Indicator. 
	 * @param objidentityUnknownIndicator object of  IdentityUnknownIndicator.
	 */ 
	public void setIdentityUnknownIndicator(ID objidentityUnknownIndicator)
	{
		setDataType(1535,objidentityUnknownIndicator);
	}

	/**
	 * Set the Last Update Date Time.
	 * This field contains the last update date and time for the patient's/person's identifying and demographic data, as defined in the PID segment.
	  * @param strDateTimePlannedEvent This field contains the date/time that the event is planned. 
	 */ 
	public void setLastUpdateDateTime (String strDateTimePlannedEvent) 
	{
		DTM lastUpdateDateTime  = (DTM)getDataElement(1537);
		lastUpdateDateTime.setValue(strDateTimePlannedEvent); 
		setLastUpdateDateTime(lastUpdateDateTime);
	} 

	/** Sets the last Update DateTime.
	 * @param objlastUpdateDateTime object of lastUpdateDateTime
	 */ 
	public void setLastUpdateDateTime(DTM objlastUpdateDateTime)
	{
		setDataType(1537,objlastUpdateDateTime);
	}

	/**
	 * Set the Last Update Facility.
	 * This field identify the facility of the last update to a patient's/person's identifying 
	 * and demographic data, as defined in the PID segment.
	 * @param strNamespaceID Use as NamespaceID.
	 * @param strUniversalID Use as UniversalID.
	 * @param strUniversalIDType Use as UniversalIDType.
	 */ 
	public void setLastUpdateFacility (String strNamespaceID,String strUniversalID,String strUniversalIDType) 
	{
		HD lastUpdateFacility  = (HD)getDataElement(1538);
		lastUpdateFacility.setNamespaceId(strNamespaceID);
		lastUpdateFacility.setUniversalId(strUniversalID);
		lastUpdateFacility.setUniversalIdType(strUniversalIDType); 
		setLastUpdateFacility(lastUpdateFacility);
	} 

	/**Sets the LastUpdateFacility
	 * @param objlastUpdateFacility object of LastUpdateFacility
	 */ 
	public void setLastUpdateFacility(HD objlastUpdateFacility)
	{
		setDataType(1538,objlastUpdateFacility);
	}

	/**
	 * Set the Marital Status.  
	 * @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 setMaritalStatus (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 maritalStatus  = (CWE)getDataElement(119);
		maritalStatus.setIdentifier(strIdentifier);
		maritalStatus.setText(strText);
		maritalStatus.setNameOfCodingSystem(strNameOfCodingSystem);
		maritalStatus.setAlternateIdentifier(strAlternateIdentifier);
		maritalStatus.setAlternateText(strAlternateText);
		maritalStatus.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		maritalStatus.setCodingSystemVersionID(strCodingSystemVersionID);
		maritalStatus.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		maritalStatus.setOriginalText(strOriginalText);
		maritalStatus.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		maritalStatus.setSecondAlternateText(strSecondAlternateText);
		maritalStatus.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		maritalStatus.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		maritalStatus.setCodingSystemOID(strCodingSystemOID);
		maritalStatus.setValueSetOID(strValueSetOID);
		maritalStatus.setValueSetVersionID(strValueSetVersionID);
		maritalStatus.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		maritalStatus.setAlternateValueSetOID(strAlternateValueSetOID);
		maritalStatus.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		maritalStatus.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		maritalStatus.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		maritalStatus.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		setMaritalStatus(maritalStatus);
	} 

	/** Set the Marital Status.  
	 * @param objmaritalStatus object of Marital Status.  
	 */ 
	public void setMaritalStatus(CWE objmaritalStatus)
	{
		setDataType(119,objmaritalStatus);
	}

	/**
	 * Set the Mother Identifier.
	 * This field contain multiple identifiers for the same mother.
	 * @param strIDNumber Specifies the value of the identifier itself.
	 * @param strCheckDigit It is part of the identifying number used in the sending application. 
	 * @param strCheckDigitScheme Contains the code identifying the check digit scheme employed.
	 * 								Suggested Values NP,ISO,M10,M11.[Refer table No.0061].
	 * @param objAssigningAuthority The assigning authority is a unique name of the system (or organization or agency 
	 * 									or department) that creates the data. . 
	 * @param strIdentifierTypeCode Specifies a code corresponding to the type of identifier.In some cases, this code may be
	 * 								 used as a qualifier to the "Assigning authority" component.[Refer table No 0203]
	 * @param objAssigningFacility Specifies the place or location identifier where the identifier was first assigned 
	 * 									to the patient. 
	 * @param strEffectiveDate Specifies the first date, if known, on which the address is valid and active.
	 * @param strExpirationDate Specifies the last date, if known, on which the address is valid and active.
	 * @param objAssigningJurisdiction Specifies the geo-political body that assigned the identifier. 
	 * @param objAssigningAgencyOrDepartment Specifies agency or department that assigned the identifier. 
	 * @param strSecurityCheck is used to communicate the version code. 
	 * @param objSecurityCheckSCheme is used to transmit information intended to validate veracity of the supplied identifier
	 */ 
	public void addMotherIdentifier (String strIDNumber,String strCheckDigit, String strCheckDigitScheme, HD objAssigningAuthority,
			String strIdentifierTypeCode,HD objAssigningFacility,String strEffectiveDate,String strExpirationDate, 
			CWE objAssigningJurisdiction, CWE objAssigningAgencyOrDepartment, String strSecurityCheck, String strSecurityCheckScheme)
	{
		CX tempMotherIdentifier  = (CX)getDataElement(124);
		tempMotherIdentifier.setIdNumber(strIDNumber);
		tempMotherIdentifier.setCheckDigit(strCheckDigit);
		tempMotherIdentifier.setCheckDigitScheme(strCheckDigitScheme);
		tempMotherIdentifier.setAssigningAuthority(objAssigningAuthority);
		tempMotherIdentifier.setIdentifierTypeCode(strIdentifierTypeCode);
		tempMotherIdentifier.setAssigningFacility(objAssigningFacility);
		tempMotherIdentifier.setEffectiveDate(strEffectiveDate);
		tempMotherIdentifier.setExpirationDate(strExpirationDate);
		tempMotherIdentifier.setAssigningJurisdiction(objAssigningJurisdiction);
		tempMotherIdentifier.setAssigningAgencyOrDepartment(objAssigningAgencyOrDepartment); 
		tempMotherIdentifier.setSecurityCheck(strCheckDigit);
		tempMotherIdentifier.setSecurityCheckScheme(strSecurityCheckScheme); 
		addMotherIdentifier(tempMotherIdentifier);
	} 

	/** Set the Mother Identifier.
	 * This field contain multiple identifiers for the same mother.
	 * @param objtempMotherIdentifier object of MotherIdentifier  
	 */ 
	public void addMotherIdentifier(CX objtempMotherIdentifier)
	{
		addDataType(124,objtempMotherIdentifier);
	}

	/**
	 * Set the Mother Identifier.
	 * @param objMotherIdentifier List of MotherIdentifier.
	 */
	@SuppressWarnings("unchecked")
	public void setMotherIdentifier(ISingleCollection<CX> objMotherIdentifier)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objMotherIdentifier;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(124,objCollection);
	}

	/**
	 * Set the Multiple Birth Indicator.
	 * This field indicates whether the patient is part of a multiple birth or not. 
	 * @param strMultipleBirthIndicator Use as MultipleBirthIndicator.
	 */ 
	public void setMultipleBirthIndicator (String strMultipleBirthIndicator) 
	{
		ID multipleBirthIndicator  = (ID)getDataElement(127);
		multipleBirthIndicator.setValue(strMultipleBirthIndicator); 
		setMultipleBirthIndicator(multipleBirthIndicator);
	} 

	/** Set the Multiple Birth Indicator.
	 * This field indicates whether the patient is part of a multiple birth or not. 
	 * @param objmultipleBirthIndicator object of MultipleBirthIndicator.
	 */ 
	public void setMultipleBirthIndicator(ID objmultipleBirthIndicator)
	{
		setDataType(127,objmultipleBirthIndicator);
	}


	/**
	 * Set the Patient Account Number.
	 * This field contains the patient account number assigned by accounting to which all 
	 * charges, payments, etc., are recorded.
	 * @param strIDNumber Specifies the value of the identifier itself.
	 * @param strCheckDigit It is part of the identifying number used in the sending application. 
	 * @param strCheckDigitScheme Contains the code identifying the check digit scheme employed.
	 * 								Suggested Values NP,ISO,M10,M11.[Refer table No.0061].
	 * @param objAssigningAuthority The assigning authority is a unique name of the system (or organization or agency 
	 * 									or department) that creates the data. . 
	 * @param strIdentifierTypeCode Specifies a code corresponding to the type of identifier.In some cases, this code may be
	 * 								 used as a qualifier to the "Assigning authority" component.[Refer table No 0203]
	 * @param objAssigningFacility Specifies the place or location identifier where the identifier was first assigned 
	 * 									to the patient. 
	 * @param strEffectiveDate Specifies the first date, if known, on which the address is valid and active.
	 * @param strExpirationDate Specifies the last date, if known, on which the address is valid and active.
	 * @param objAssigningJurisdiction Specifies the geo-political body that assigned the identifier. 
	 * @param objAssigningAgencyOrDepartment Specifies agency or department that assigned the identifier. 
	 * @param strSecurityCheck is used to communicate the version code. 
	 * @param objSecurityCheckSCheme is used to transmit information intended to validate veracity of the supplied identifier
	 */ 
	public void setPatientAccountNumber (String strIDNumber,String strCheckDigit, String strCheckDigitScheme, HD objAssigningAuthority,
			String strIdentifierTypeCode,HD objAssigningFacility,String strEffectiveDate,String strExpirationDate, 
			CWE objAssigningJurisdiction, CWE objAssigningAgencyOrDepartment, String strSecurityCheck, String strSecurityCheckScheme)
	{
		CX patientAccountNumber  = (CX)getDataElement(121);
		patientAccountNumber.setIdNumber(strIDNumber);
		patientAccountNumber.setCheckDigit(strCheckDigit);
		patientAccountNumber.setCheckDigitScheme(strCheckDigitScheme);
		patientAccountNumber.setAssigningAuthority(objAssigningAuthority);
		patientAccountNumber.setIdentifierTypeCode(strIdentifierTypeCode);
		patientAccountNumber.setAssigningFacility(objAssigningFacility);
		patientAccountNumber.setEffectiveDate(strEffectiveDate);
		patientAccountNumber.setExpirationDate(strExpirationDate);
		patientAccountNumber.setAssigningJurisdiction(objAssigningJurisdiction);
		patientAccountNumber.setAssigningAgencyOrDepartment(objAssigningAgencyOrDepartment); 
		patientAccountNumber.setSecurityCheck(strCheckDigit);
		patientAccountNumber.setSecurityCheckScheme(strSecurityCheckScheme);
		setPatientAccountNumber(patientAccountNumber);

	} 

	/** Set the Patient Account Number.
	 * This field contains the patient account number assigned by accounting to which all 
	 * charges, payments, etc., are recorded.
	 * @param objpatientAccountNumber object of PatientAccountNumber 
	 */ 
	public void setPatientAccountNumber(CX objpatientAccountNumber)
	{
		setDataType(121,objpatientAccountNumber);

	}

	/**
	 * Set the Patient Address.
	 * This field contains the mailing address of the patient.  
	 * @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 addPatientAddress (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 tempPatientAddress = (XAD)getDataElement(114);
		tempPatientAddress.setStreetAddress(objStreetAddress);
		tempPatientAddress.setOtherDesignation(strOtherDesignation);
		tempPatientAddress.setCity(strCity);
		tempPatientAddress.setStateOrProvince(strStateOrProvince);
		tempPatientAddress.setZipOrPostalCode(strZipOrPostalCode);
		tempPatientAddress.setCountry(strCountry);
		tempPatientAddress.setAddressType(strAddressType);
		tempPatientAddress.setOtherGeographicDesignation(strOtherGeographicDesignation);
		tempPatientAddress.setCountyParishCode(objCountyParishCode);
		tempPatientAddress.setCensusTract(objCensusTract);
		tempPatientAddress.setAddressRepresentationCode(strAddressRepresentationCode);
		tempPatientAddress.setEffectiveDate(objEffectiveDate);
		tempPatientAddress.setExpirationDate(objExpirationDate); 
		tempPatientAddress.setExpirationReason(objEXpirationReason);
		tempPatientAddress.setTemporaryIndicator(strTemporaryIndicator);
		tempPatientAddress.setBadAddressIndicator(strBadAddressIndicator);
		tempPatientAddress.setAddressUsage(strAddressUsage);
		tempPatientAddress.setAddressee(strAddressee);
		tempPatientAddress.setComment(strComment);
		tempPatientAddress.setPreferenceOrder(strPreferenceOrder);
		tempPatientAddress.setProtectionCode(objProtectionCode);
		tempPatientAddress.setAddressIdentifier(objAddressIdentifier);
		addPatientAddress(tempPatientAddress);

	} 

	/**Sets the PatientAddress. 
	 * @param objtempPatientAddress object of PatientAddress
	 */ 
	public void addPatientAddress(XAD objtempPatientAddress)
	{
		addDataType(114,objtempPatientAddress);
	}

	/**
	 * Set the Patient Address.
	 * @param objPatientAddress List of Patient Address.
	 */
	@SuppressWarnings("unchecked")
	public void setPatientAddress(ISingleCollection<XAD> objPatientAddress)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objPatientAddress;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(114,objCollection);
	}


	/**
	 * Set the Patient Death Date Time.
	 * This field contains the date and time at which the patient death occurred.
	  * @param strDateTimePlannedEvent This field contains the date/time that the event is planned. 
	 */ 
	public void setPatientDeathDateTime (String strDateTimePlannedEvent) 
	{
		DTM patientDeathDateTime  = (DTM)getDataElement(740);
		patientDeathDateTime.setValue(strDateTimePlannedEvent);
		setPatientDeathDateTime(patientDeathDateTime);
	} 

	/** Set the Patient Death Date Time.
	 * This field contains the date and time at which the patient death occurred.
	 * @param objpatientDeathDateTime object of PatientDeathDateTime
	 */ 
	public void setPatientDeathDateTime(DTM objpatientDeathDateTime)
	{
		setDataType(740,objpatientDeathDateTime);
	}	


	/**
	 * Set the Patient Death Indicator.
	 * @param strPatientDeathIndicator Use as PatientDeathIndicator.
	 */ 
	public void setPatientDeathIndicator (String strPatientDeathIndicator) 
	{
		ID patientDeathIndicator = (ID)getDataElement(741);
		patientDeathIndicator.setValue(strPatientDeathIndicator); 
		setPatientDeathIndicator(patientDeathIndicator);
	} 

	/** Set the Patient Death Indicator.
	 * @param objpatientDeathIndicator object of PatientDeathIndicator.
	 */ 
	public void setPatientDeathIndicator(ID objpatientDeathIndicator)
	{
		setDataType(741,objpatientDeathIndicator);
	}

	/**
	 * Set the Phone Number Business.
	 * This field contains the patient's business telephone numbers.
	 * @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 addPhoneNumberBusiness (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 tempPhoneNumberBusiness  = (XTN)getDataElement(117);
		tempPhoneNumberBusiness.setTelecommunicationUseCode(strTeleCommunicationUseCode);
		tempPhoneNumberBusiness.setTelecommunicationEquipmentType(strTeleCommunicationEquipmentType);
		tempPhoneNumberBusiness.setCommuinicationAddress(strCommuinicationAddress);
		tempPhoneNumberBusiness.setCountryCode(strCountryCode);
		tempPhoneNumberBusiness.setAreaCityCode(strAreaCityCode);
		tempPhoneNumberBusiness.setLocalNumber(strLocalNumber);
		tempPhoneNumberBusiness.setExtension(strExtension);
		tempPhoneNumberBusiness.setAnyText(strAnyText);
		tempPhoneNumberBusiness.setExtensionPrefix(strExtensionPrefix);
		tempPhoneNumberBusiness.setSpeedDialCode(strSpeedDialCode);
		tempPhoneNumberBusiness.setUnformattedTelephonenumber(strUnformattedTelephoneNumber); 
		tempPhoneNumberBusiness.setEffectiveStartDate(strEffectiveStartDate);
		tempPhoneNumberBusiness.setExpirationDate(strExpirationDate);
		tempPhoneNumberBusiness.setExpirationReason(objExpirationReason);
		tempPhoneNumberBusiness.setProtectionCode(objProtectionCode);
		tempPhoneNumberBusiness.setSharedTelecommunicationIdentifier(objSharedTelecommunicationIdentifier);
		tempPhoneNumberBusiness.setPreferenceOrder(strPreferenceOrder);
		addPhoneNumberBusiness(tempPhoneNumberBusiness);
	} 

	/**
	 * Sets the Phone Number Business.
	 * @param objtempPhoneNumberBusiness object of PhoneNumberBusiness.  
	 */ 
	public void addPhoneNumberBusiness(XTN objtempPhoneNumberBusiness)
	{
		addDataType(117,objtempPhoneNumberBusiness);
	}

	/**
	 * Set the Phone Number Business.
	 * @param objPhoneNumberBusiness List of Phone Number Business.
	 */
	@SuppressWarnings("unchecked")
	public void setPhoneNumberBusiness(ISingleCollection<XTN> objPhoneNumberBusiness)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objPhoneNumberBusiness;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(117,objCollection);
	}
	/**
	 * Set the Phone Number Home.
	 * This field contains the patient's personal phone numbers.  
	 * @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 addPhoneNumberHome (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 tempPhoneNumberHome  = (XTN)getDataElement(116);
		tempPhoneNumberHome.setTelecommunicationUseCode(strTeleCommunicationUseCode);
		tempPhoneNumberHome.setTelecommunicationEquipmentType(strTeleCommunicationEquipmentType);
		tempPhoneNumberHome.setCommuinicationAddress(strCommuinicationAddress);
		tempPhoneNumberHome.setCountryCode(strCountryCode);
		tempPhoneNumberHome.setAreaCityCode(strAreaCityCode);
		tempPhoneNumberHome.setLocalNumber(strLocalNumber);
		tempPhoneNumberHome.setExtension(strExtension);
		tempPhoneNumberHome.setAnyText(strAnyText);
		tempPhoneNumberHome.setExtensionPrefix(strExtensionPrefix);
		tempPhoneNumberHome.setSpeedDialCode(strSpeedDialCode);
		tempPhoneNumberHome.setUnformattedTelephonenumber(strUnformattedTelephoneNumber); 
		tempPhoneNumberHome.setEffectiveStartDate(strEffectiveStartDate);
		tempPhoneNumberHome.setExpirationDate(strExpirationDate);
		tempPhoneNumberHome.setExpirationReason(objExpirationReason);
		tempPhoneNumberHome.setProtectionCode(objProtectionCode);
		tempPhoneNumberHome.setSharedTelecommunicationIdentifier(objSharedTelecommunicationIdentifier);
		tempPhoneNumberHome.setPreferenceOrder(strPreferenceOrder);
		addPhoneNumberHome(tempPhoneNumberHome);
	} 

	/** Sets the Phone Number Home.
	 * @param objtempPhoneNumberHome object of PhoneNumberHome.
	 */ 
	public void addPhoneNumberHome(XTN objtempPhoneNumberHome)
	{
		addDataType(116,objtempPhoneNumberHome);
	}

	/**
	 * Set the Phone Number Home.
	 * @param objPhoneNumberHome List of Phone Number Home.
	 */
	@SuppressWarnings("unchecked")
	public void setPhoneNumberHome(ISingleCollection<XTN> objPhoneNumberHome)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objPhoneNumberHome;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(116,objCollection);
	}

	/**
	 * Set the Patient Telecommunication Information.
	 * @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 addPatientTelecommunicationInformation (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 tempPatientTelecommunicationInformation  = (XTN)getDataElement(2289);
		tempPatientTelecommunicationInformation.setTelecommunicationUseCode(strTeleCommunicationUseCode);
		tempPatientTelecommunicationInformation.setTelecommunicationEquipmentType(strTeleCommunicationEquipmentType);
		tempPatientTelecommunicationInformation.setCommuinicationAddress(strCommuinicationAddress);
		tempPatientTelecommunicationInformation.setCountryCode(strCountryCode);
		tempPatientTelecommunicationInformation.setAreaCityCode(strAreaCityCode);
		tempPatientTelecommunicationInformation.setLocalNumber(strLocalNumber);
		tempPatientTelecommunicationInformation.setExtension(strExtension);
		tempPatientTelecommunicationInformation.setAnyText(strAnyText);
		tempPatientTelecommunicationInformation.setExtensionPrefix(strExtensionPrefix);
		tempPatientTelecommunicationInformation.setSpeedDialCode(strSpeedDialCode);
		tempPatientTelecommunicationInformation.setUnformattedTelephonenumber(strUnformattedTelephoneNumber); 
		tempPatientTelecommunicationInformation.setEffectiveStartDate(strEffectiveStartDate);
		tempPatientTelecommunicationInformation.setExpirationDate(strExpirationDate);
		tempPatientTelecommunicationInformation.setExpirationReason(objExpirationReason);
		tempPatientTelecommunicationInformation.setProtectionCode(objProtectionCode);
		tempPatientTelecommunicationInformation.setSharedTelecommunicationIdentifier(objSharedTelecommunicationIdentifier);
		tempPatientTelecommunicationInformation.setPreferenceOrder(strPreferenceOrder);
		addPhoneNumberHome(tempPatientTelecommunicationInformation);
	} 

	/** Sets the Patient Telecommunication Information.
	 * @param objtempPatientTelecommunicationInformation object of PhoneNumberHome.
	 */ 
	public void addPatientTelecommunicationInformation(XTN objtempPatientTelecommunicationInformation)
	{
		addDataType(2289,objtempPatientTelecommunicationInformation);
	}

	/**
	 * Set the Patient Telecommunication Information.
	 * @param objPatientTelecommunicationInformation List of Patient Telecommunication Information.
	 */
	@SuppressWarnings("unchecked")
	public void setPatientTelecommunicationInformation(ISingleCollection<XTN> objPatientTelecommunicationInformation)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objPatientTelecommunicationInformation;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(2289,objCollection);
	}

	/**
	 * Set the Primary Language.
	 * This field contains the patient's primary language. 
	 * @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 setPrimaryLanguage (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 primaryLanguage  = (CWE)getDataElement(118);
		primaryLanguage.setIdentifier(strIdentifier);
		primaryLanguage.setText(strText);
		primaryLanguage.setNameOfCodingSystem(strNameOfCodingSystem);
		primaryLanguage.setAlternateIdentifier(strAlternateIdentifier);
		primaryLanguage.setAlternateText(strAlternateText);
		primaryLanguage.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		primaryLanguage.setCodingSystemVersionID(strCodingSystemVersionID);
		primaryLanguage.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		primaryLanguage.setOriginalText(strOriginalText);
		primaryLanguage.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		primaryLanguage.setSecondAlternateText(strSecondAlternateText);
		primaryLanguage.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		primaryLanguage.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		primaryLanguage.setCodingSystemOID(strCodingSystemOID);
		primaryLanguage.setValueSetOID(strValueSetOID);
		primaryLanguage.setValueSetVersionID(strValueSetVersionID);
		primaryLanguage.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		primaryLanguage.setAlternateValueSetOID(strAlternateValueSetOID);
		primaryLanguage.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		primaryLanguage.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		primaryLanguage.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		primaryLanguage.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		setPrimaryLanguage(primaryLanguage);
	} 

	/** Set the Primary Language.
	 * This field contains the patient's primary language. 
	 * @param objprimaryLanguage object of PrimaryLanguage
	 */ 
	public void setPrimaryLanguage(CWE objprimaryLanguage)
	{
		setDataType(118,objprimaryLanguage);
	}

	/**
	 * Set the Production Class Code.
	 * This field contains the code and/or text indicating the primary use for which the 
	 * living subject is bred or grown.
	 * @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 addProductionClassCode (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 tempProductionClassCode  = (CWE)getDataElement(1542);
		tempProductionClassCode.setIdentifier(strIdentifier);
		tempProductionClassCode.setText(strText);
		tempProductionClassCode.setNameOfCodingSystem(strNameOfCodingSystem);
		tempProductionClassCode.setAlternateIdentifier(strAlternateIdentifier);
		tempProductionClassCode.setAlternateText(strAlternateText);
		tempProductionClassCode.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		tempProductionClassCode.setCodingSystemVersionID(strCodingSystemVersionID);
		tempProductionClassCode.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		tempProductionClassCode.setOriginalText(strOriginalText);
		tempProductionClassCode.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		tempProductionClassCode.setSecondAlternateText(strSecondAlternateText);
		tempProductionClassCode.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		tempProductionClassCode.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		tempProductionClassCode.setCodingSystemOID(strCodingSystemOID);
		tempProductionClassCode.setValueSetOID(strValueSetOID);
		tempProductionClassCode.setValueSetVersionID(strValueSetVersionID);
		tempProductionClassCode.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		tempProductionClassCode.setAlternateValueSetOID(strAlternateValueSetOID);
		tempProductionClassCode.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		tempProductionClassCode.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		tempProductionClassCode.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		tempProductionClassCode.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		addProductionClassCode(tempProductionClassCode);
	} 

	/**Sets the Production Class Code.
	 * @param objtempProductionClassCode object of ProductionClassCode
	 */ 
	public void addProductionClassCode(CWE objtempProductionClassCode)
	{
		addDataType(1542,objtempProductionClassCode);
	}

	/**
	 * Set the ProductionClassCode.
	 * @param objProductionClassCode List of ProductionClassCode.
	 */
	@SuppressWarnings("unchecked")
	public void setProductionClassCode(ISingleCollection<CWE> objProductionClassCode)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objProductionClassCode;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1542,objCollection);
	}

	/**
	 * Set the Race.
	 * This field contains the patient's race.
	 * @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 addRace (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 tempRace  = (CWE)getDataElement(113);
		tempRace.setIdentifier(strIdentifier);
		tempRace.setText(strText);
		tempRace.setNameOfCodingSystem(strNameOfCodingSystem);
		tempRace.setAlternateIdentifier(strAlternateIdentifier);
		tempRace.setAlternateText(strAlternateText);
		tempRace.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		tempRace.setCodingSystemVersionID(strCodingSystemVersionID);
		tempRace.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		tempRace.setOriginalText(strOriginalText);
		tempRace.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		tempRace.setSecondAlternateText(strSecondAlternateText);
		tempRace.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		tempRace.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		tempRace.setCodingSystemOID(strCodingSystemOID);
		tempRace.setValueSetOID(strValueSetOID);
		tempRace.setValueSetVersionID(strValueSetVersionID);
		tempRace.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		tempRace.setAlternateValueSetOID(strAlternateValueSetOID);
		tempRace.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		tempRace.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		tempRace.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		tempRace.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		addRace(tempRace);
	} 

	/** Set the Race.
	 * This field contains the patient's race.
	 * @param objtempRace object of Race.
	 */ 
	public void addRace(CWE objtempRace)
	{
		addDataType(113,objtempRace);
	}

	/**
	 * Set the Race.
	 * @param objRace List of Race.
	 */
	@SuppressWarnings("unchecked")
	public void setRace(ISingleCollection<CWE> objRace)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objRace;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(113,objCollection);
	}

	/**
	 * Set the Religion.
	 * This field contains the patient's religion.
	 * @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 setReligion (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 religion  = (CWE)getDataElement(120);
		religion.setIdentifier(strIdentifier);
		religion.setText(strText);
		religion.setNameOfCodingSystem(strNameOfCodingSystem);
		religion.setAlternateIdentifier(strAlternateIdentifier);
		religion.setAlternateText(strAlternateText);
		religion.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		religion.setCodingSystemVersionID(strCodingSystemVersionID);
		religion.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		religion.setOriginalText(strOriginalText);
		religion.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		religion.setSecondAlternateText(strSecondAlternateText);
		religion.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		religion.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		religion.setCodingSystemOID(strCodingSystemOID);
		religion.setValueSetOID(strValueSetOID);
		religion.setValueSetVersionID(strValueSetVersionID);
		religion.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		religion.setAlternateValueSetOID(strAlternateValueSetOID);
		religion.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		religion.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		religion.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		religion.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		setReligion(religion);
	} 

	/** Set the Religion.
	 * This field contains the patient's religion.
	 * @param objreligion object of Religion. 
	 */ 
	public void setReligion(CWE objreligion)
	{
		setDataType(120,objreligion);
	}

	/**
	 * Set the Species Code.
	 * This field identify species of living organism. This may include the common or 
	 * @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 taxonomicClassificationCode  = (CWE)getDataElement(1539);
		taxonomicClassificationCode.setIdentifier(strIdentifier);
		taxonomicClassificationCode.setText(strText);
		taxonomicClassificationCode.setNameOfCodingSystem(strNameOfCodingSystem);
		taxonomicClassificationCode.setAlternateIdentifier(strAlternateIdentifier);
		taxonomicClassificationCode.setAlternateText(strAlternateText);
		taxonomicClassificationCode.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		taxonomicClassificationCode.setCodingSystemVersionID(strCodingSystemVersionID);
		taxonomicClassificationCode.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		taxonomicClassificationCode.setOriginalText(strOriginalText);
		taxonomicClassificationCode.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		taxonomicClassificationCode.setSecondAlternateText(strSecondAlternateText);
		taxonomicClassificationCode.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		taxonomicClassificationCode.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		taxonomicClassificationCode.setCodingSystemOID(strCodingSystemOID);
		taxonomicClassificationCode.setValueSetOID(strValueSetOID);
		taxonomicClassificationCode.setValueSetVersionID(strValueSetVersionID);
		taxonomicClassificationCode.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		taxonomicClassificationCode.setAlternateValueSetOID(strAlternateValueSetOID);
		taxonomicClassificationCode.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		taxonomicClassificationCode.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		taxonomicClassificationCode.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		taxonomicClassificationCode.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		setTaxonomicClassificationCode(taxonomicClassificationCode);
	} 

	/** Set the Species Code.
	 * This field identify species of living organism. This may include the common or 
	 * scientific name, based on the coding system(s) used. 
	 * @param objspeciesCode object of SpeciesCode
	 */ 
	public void setTaxonomicClassificationCode(CWE objTaxonomicClassificationCode)
	{
		setDataType(1539,objTaxonomicClassificationCode);
	}


	/**
	 * Set the Strain.
	 * This field contains the specific strain of animal. It can also be expanded to 
	 * include strain of any living organism and is not restricted to animals.
	 * @param strStrain Use as Strain.
	 */ 
	public void setStrain (String strStrain) 
	{
		ST strain = (ST)getDataElement(1541);
		strain.setValue(strStrain); 
		setStrain(strain);
	} 

	/** Set the Strain.
	 * This field contains the specific strain of animal. It can also be expanded to 
	 * include strain of any living organism and is not restricted to animals.
	 * @param objstrain object of Strain.
	 */ 
	public void setStrain(ST objstrain)
	{
		setDataType(1541,objstrain);
	}

	/**
	 * Set the Tribal Citizenship.
	 * This field contains the information related to a person's tribal citizenship.
	  * @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 addTribalCitizenship(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 TribalCitizenship  = (CWE)getDataElement(1840);
		TribalCitizenship.setIdentifier(strIdentifier);
		TribalCitizenship.setText(strText);
		TribalCitizenship.setNameOfCodingSystem(strNameOfCodingSystem);
		TribalCitizenship.setAlternateIdentifier(strAlternateIdentifier);
		TribalCitizenship.setAlternateText(strAlternateText);
		TribalCitizenship.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		TribalCitizenship.setCodingSystemVersionID(strCodingSystemVersionID);
		TribalCitizenship.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		TribalCitizenship.setOriginalText(strOriginalText);
		TribalCitizenship.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		TribalCitizenship.setSecondAlternateText(strSecondAlternateText);
		TribalCitizenship.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		TribalCitizenship.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		TribalCitizenship.setCodingSystemOID(strCodingSystemOID);
		TribalCitizenship.setValueSetOID(strValueSetOID);
		TribalCitizenship.setValueSetVersionID(strValueSetVersionID);
		TribalCitizenship.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		TribalCitizenship.setAlternateValueSetOID(strAlternateValueSetOID);
		TribalCitizenship.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		TribalCitizenship.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		TribalCitizenship.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		TribalCitizenship.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		addTribalCitizenship(TribalCitizenship);

	} 

	/** Set the Tribal Citizenship.
	 * This field contains the information related to a person's tribal citizenship.
	 * @param objtempTribalCitizenship object of TribalCitizenship.
	 */ 
	public void addTribalCitizenship(CWE objtempTribalCitizenship)
	{
		addDataType(1840,objtempTribalCitizenship);
	}

	/**
	 * Set the Tribal Citizenship.
	 * @param objTribalCitizenship List of Tribal Citizenship.
	 */
	@SuppressWarnings("unchecked")
	public void setTribalCitizenship(ISingleCollection<CWE> objTribalCitizenship)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objTribalCitizenship;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1840,objCollection);
	}


	/**
	 * Set the Veterans Military Status.
	 * This field contains the military status assigned to a veteran.
	 * @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 setVeteransMilitaryStatus (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 veteransMilitaryStatus  = (CWE)getDataElement(130);
		veteransMilitaryStatus.setIdentifier(strIdentifier);
		veteransMilitaryStatus.setText(strText);
		veteransMilitaryStatus.setNameOfCodingSystem(strNameOfCodingSystem);
		veteransMilitaryStatus.setAlternateIdentifier(strAlternateIdentifier);
		veteransMilitaryStatus.setAlternateText(strAlternateText);
		veteransMilitaryStatus.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		veteransMilitaryStatus.setCodingSystemVersionID(strCodingSystemVersionID);
		veteransMilitaryStatus.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		veteransMilitaryStatus.setOriginalText(strOriginalText);
		veteransMilitaryStatus.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		veteransMilitaryStatus.setSecondAlternateText(strSecondAlternateText);
		veteransMilitaryStatus.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		veteransMilitaryStatus.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		veteransMilitaryStatus.setCodingSystemOID(strCodingSystemOID);
		veteransMilitaryStatus.setValueSetOID(strValueSetOID);
		veteransMilitaryStatus.setValueSetVersionID(strValueSetVersionID);
		veteransMilitaryStatus.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		veteransMilitaryStatus.setAlternateValueSetOID(strAlternateValueSetOID);
		veteransMilitaryStatus.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		veteransMilitaryStatus.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		veteransMilitaryStatus.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		veteransMilitaryStatus.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID); 
		setVeteransMilitaryStatus(veteransMilitaryStatus);
	} 

	/**
	 * Sets the Veterans Military Status.
	 * @param objveteransMilitaryStatus object of Veterans Military Status.
	 */ 
	public void setVeteransMilitaryStatus(CWE objveteransMilitaryStatus)
	{
		setDataType(130,objveteransMilitaryStatus);
	}

	/**
	 * 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
	{
		try
		{
			super.validate();
			return true;
		}
		catch(FieldMissingException ex)
		{
			throw new InvalidSegmentException(enumSegments.getValue(),ex);
		}
	}
}