/*******************************************************************************
 *  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.CNE;
import cdac.medinfo.sdk.hl7282.baselibs.CWE;
import cdac.medinfo.sdk.hl7282.baselibs.DTM;
import cdac.medinfo.sdk.hl7282.baselibs.EI;
import cdac.medinfo.sdk.hl7282.baselibs.FN;
import cdac.medinfo.sdk.hl7282.baselibs.HD;
import cdac.medinfo.sdk.hl7282.baselibs.ID;
import cdac.medinfo.sdk.hl7282.baselibs.PL;
import cdac.medinfo.sdk.hl7282.baselibs.SAD;
import cdac.medinfo.sdk.hl7282.baselibs.ST;
import cdac.medinfo.sdk.hl7282.baselibs.XAD;
import cdac.medinfo.sdk.hl7282.baselibs.XCN;
import cdac.medinfo.sdk.hl7282.baselibs.XON;
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.utils.EnumSegments;
import cdac.medinfo.sdk.hl7282.utils.SingleCollection;

/**
 * PRT - Participation Information Segment.<p>
 * The Participation Information segment contains the data necessary to add, update, correct, and delete from the record persons, organizations, devices, or locations (participants) participating in the activity being transmitted. 
 * <p>Represents an HL7 PRT message segment. 
 * This segment has the following fields:</p><p>
 * PRT-1: Participation Instance ID (EI)<b>Conditional</b><br> 
 * PRT-2: Action Code (ID)<b>Required</b><br> 
 * PRT-3: Action Reason (CWE)<b>Optional</b><br> 
 * PRT-4: Participation (CWE)<b>Required</b><br> 
 * PRT-5: Participation Person (XCN)<b>Conditional</b><br> 
 * PRT-6: Participation Person Provider Type (CWE)<b>Conditional</b><br> 
 * PRT-7: Participant Organization Unit Type (CWE)<b>Conditional</b><br> 
 * PRT-8: Participation Organization (XON)<b>Conditional</b><br> 
 * PRT-9: Participant Location (PL)<b>Conditional</b><br> 
 * PRT-10: Participation Device (EI)<b>Conditional</b><br> 
 * PRT-11: Participation Begin Date/Time (arrival time) (DTM)<b>Optional</b><br> 
 * PRT-12: Participation End Date/Time (departure time) (DTM)<b>Optional</b><br> 
 * PRT-13: Participation Qualitative Duration (CWE)<b>Optional</b><br> 
 * PRT-14: Participation Address (XAD)<b>Conditional</b><br> 
 * PRT-15: Participant Telecommunication Address (XTN)<b>Optional</b><br> 
 * PRT-16: Participant Device Identifier (EI)<b>Optional</b><br> 
 * PRT-17: Participant Device Manufacture Date (DTM)<b>Optional</b><br> 
 * PRT-18: Participant Device Expiry Date (DTM)<b>Optional</b><br> 
 * PRT-19: Participant Device Lot Number (ST)<b>Optional</b><br> 
 * PRT-20: Participant Device Serial Number (ST)<b>Optional</b><br> 
 * PRT-21: Participant Device Donation Identification (EI)<b>Optional</b><br> 
 * PRT-22: Participation Device Type (CNE)<b>Conditional</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 PRT extends Segment {

	

	/**
	 *	Constructs the PRT segment.
	 */
	public PRT()
	{
		super(EnumSegments.HL7_SEG_PRT);
	}

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

	/**
	 * Retrieves the Participation Instance ID.
	 * This field contains a unique identifier of the specific participation record.
	 * @return EI - ParticipationInstanceID
	 */
	public EI getParticipationInstanceID() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2379);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (EI)objDataCollection.elementAt(0);
		else
			return null;
	}
	/**
	 * Retrieves the Action Code.  
	 * This field reveals the intent of the message.
	 * @return String - actionCode.
	 */
	public ID getActionCode() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(816);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}
	/**
	 * Retrieves the Action Reason.
	 * This field indicates the reason why the person, organization, location, or device is assuming (or changing) the role (e.g., shift change, new primary nurse, etc.).
	 * @return CWE - actionReason.
	 */
	public CWE getActionReason() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2380);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Participation.
	 * This field indicates the functional involvement with the activity being transmitted.
	 * @return CWE - participation   
	 */
	public CWE getParticipation() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2381);
		if(objDataCollection != null && objDataCollection.size() != 0)
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}
	/**
	 * Retrieves the Participation Person.
	 * This field contains the identity of the person who is represented in the participation that is being transmitted.
	 * @return ISingleCollection<XCN> - participationPerson.
	 */
	public ISingleCollection<XCN> getParticipationPerson()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2382);
		ISingleCollection<XCN> objDataList = new SingleCollection<XCN>();
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				XCN objXCN = (XCN)objDataType;
				objDataList.add(objXCN);
			}
		}

		return objDataList;
	}
	/**
	 * Retrieves the Participation Person Provider Type.
	 * This field contains a code identifying the provider type for the participating person.
	 * @return CWE - participationPersonProviderType.   
	 */
	public CWE getParticipationPersonProviderType() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2383);
		if(objDataCollection != null && objDataCollection.size() != 0)
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}
	/**
	 * Retrieves the Participation Organization Unit Type.
	 * This field identifies the environment in which the participant acts in the role.
	 * @return CWE - participationOrganizationUnitType. 
	 */
	public CWE getParticipationOrganizationUnitType() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2384);
		if(objDataCollection != null && objDataCollection.size() != 0)
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}
			
	/**
	  * Retrieves the Participation Organization.
	 * The organization that is involved in the participation.
	 * @return ISingleCollection<XON> - participationOrganization.
	 */
	public ISingleCollection<XON> getParticipationOrganization()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2385);
		ISingleCollection<XON> objDataList = new SingleCollection<XON>();
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				XON objXON = (XON)objDataType;
				objDataList.add(objXON);
			}
		}

		return objDataList;
	}
	/**
	  * Retrieves the Participation Location.
	 * This field specifies the physical location (e.g., nurse station, ancillary service location, clinic, or floor) that is participating.
	 * @return ISingleCollection<PL> - participationLocation.
	 */
	public ISingleCollection<PL> getParticipationLocation()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2386);
		ISingleCollection<PL> objDataList = new SingleCollection<PL>();
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				PL objPL = (PL)objDataType;
				objDataList.add(objPL);
			}
		}

		return objDataList;
	}
	
	/**
	 * Retrieves the Participation Device.
	 * Identifier for the device participating. This may reflect an unstructured or a structured identifier such as FDA UDI, RFID, IEEE EUI-64 identifiers, or bar codes.
	 * @return ISingleCollection<EI> - participationDevice.
	 */
	public ISingleCollection<EI> getParticipationDevice()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2348);
		ISingleCollection<EI> objDataList = new SingleCollection<EI>();
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				EI objEI = (EI)objDataType;
				objDataList.add(objEI);
			}
		}

		return objDataList;
	}
	/**
	 * Retrieves the Participation Begin Date Time.
	 * This field contains the date/time when the participation began. 
	 * @return DTM - participationBeginDateTime
	 */
	public DTM getParticipationBeginDateTime() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2387);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}
	/**
	 * Retrieves the Participation End Date Time.
	 * This field contains the date/time when the participation ended. 
	 * @return DTM - participationEndDateTime
	 */
	public DTM getParticipationEndDateTime() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2388);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Participation Qualitative Duration.
	 * This field indicates the functional involvement with the activity being transmitted.
	 * @return CWE - participationQualitativeDuration   
	 */
	public CWE getParticipationQualitativeDuration() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2389);
		if(objDataCollection != null && objDataCollection.size() != 0)
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Participation Address.
	 * This field contains addresses associated with the participation.
	 * @return ISingleCollection<XAD> - participationAddress.
	 */
	public ISingleCollection<XAD> getParticipationAddress()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2390);
		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 Participant Telecommunication Address.
	 * The waypoint telecommunication address field carries telecommunications addresses for the waypoint.
	 * @return ISingleCollection<XTN> - participationTelecommunicationAddress.
	 */
	public ISingleCollection<XTN> getParticipationTelecommunicationAddress()
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2391);
		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 Participation Device Identifier.
	 * This field provides the U.S. FDA UDI device identifier (DI) element.
	 * @return EI - participationDeviceIdentifier
	 */
	public EI getParticipationDeviceIdentifier() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(3476);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (EI)objDataCollection.elementAt(0);
		else
			return null;
	}
	/**
	 * Retrieves the Participation Device Manufacture Date.
	 * This field contains the date and time when the device was manufacturered. 
	 * @return DTM - participationDeviceManufactureDate
	 */
	public DTM getParticipationDeviceManufactureDate() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(3477);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}
		 
	/**
	 * Retrieves the Participation Device Expiry Date.
	 * This field contains the date and time when the device is no longer approved for use. 
	 * @return DTM - participationDeviceExpiryDate
	 */
	public DTM getParticipationDeviceExpiryDate() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(3478);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Participation Device Lot Number.
	 * This field specifies alphanumeric string that identifies the device’s production lot number.  
	 * @return ST - participationDeviceLotNumber
	 */
	public ST getParticipationDeviceLotNumber() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(3479);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ST)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Participation Device Serial Number.
	 * This field specifies the Manufacturer’s serial number for this device.  
	 * @return ST - participationDeviceSerialNumber
	 */
	public ST getParticipationDeviceSerialNumber() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(3480);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ST)objDataCollection.elementAt(0);
		else
			return null;
	}
	

	/**
	 * Retrieves the Participation Device Donation Identification.
	 * This field identifies a device related to a donation (e.g., whole blood).
	 * @return EI - participationDeviceDonationIdentification
	 */
	public EI getParticipationDeviceDonationIdentification() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(3481);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (EI)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Participation Device Type.
	 * This field contains the type of device used in the participation. 
	 * @return CNE - participationDeviceType.
	 */
	public CNE getParticipationDeviceType() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(3483);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CNE)objDataCollection.elementAt(0);
		else
			return null;
	}
		
	/**
	 * Set the Participation Instance ID.
	 * This field contains a unique identifier of the specific participation record.
	 * @param strEntityIdentifier Specifies to be unique within the series of identifiers created by the 
	 * 								assigning authority, defined by a hierarchic designator
	 * @param strNamespaceId Specifies the assigning authority is a unique identifier of the system 
	 * 							(or organization or agency or department) that creates the data. 
	 * @param strUniversalId Specifies a string formatted according to the scheme defined by the third component universal ID type.
	 * 							It is intended to be unique over time within the UID type.
	 * @param strUniversalIdType Governs the interpretation of the Universal ID.  
	 */
	public void setParticipationInstanceID(String strEntityIdentifier,String strNamespaceId,String strUniversalId,
			String strUniversalIdType)
	{
		EI ei  = (EI)getDataElement(2379);
		ei.setEntityIdentifier(strEntityIdentifier);
		ei.setNamespaceId(strNamespaceId);
		ei.setUniversalId(strUniversalId);
		ei.setUniversalIdType(strUniversalIdType);
		setParticipationInstanceID(ei);
	}

	/** 
	 * Set the Participation Instance ID.
	 * This field contains a unique identifier of the specific participation record. 
	 * @param objParticipationInstanceID Object of Participation Instance ID.
	 */ 
	public void setParticipationInstanceID(EI objParticipationInstanceID)
	{
		setDataType(2379,objParticipationInstanceID);

	}
	/**
	 * Set the Action code.
	 * This field reveals the intent of the message.
	 * @param strActioncode This field contains the String Value of Action code.
	 */ 
	public void setActionCode (String strActioncode)
	{
		ID actionCode  = (ID)getDataElement(816);
		actionCode.setValue(strActioncode); 
		setActionCode(actionCode);

	} 

	/** 
	 * Set the Action code.
	 * This field reveals the intent of the message.
	 * @param objActionCode Object of Action Code.
	 */ 
	public void setActionCode(ID objActionCode)
	{
		setDataType(816,objActionCode);

	}
	/**
	 * Set the Action Reason.
	 * This field indicates the reason why the person, organization, location, or device is assuming (or changing) the role (e.g., shift change, new primary nurse, etc.). 
	 * @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 setActionReason  (String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(2380);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		setActionReason(cwe);
	} 

	/** Set the Action Reason.
	 * This field indicates the reason why the person, organization, location, or device is assuming (or changing) the role (e.g., shift change, new primary nurse, etc.).
	 * @param objactionReason Object of Action Reason. 
	 */ 
	public void setActionReason(CWE objactionReason)
	{
		setDataType(2380,objactionReason);

	}

	/**
	 * Set the Participation.
	 * This field indicates the functional involvement with the activity being transmitted. 
	 * @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 setParticipation  (String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(2381);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		setParticipation(cwe);

	} 

	/** Set the Participation.
	 * This field indicates the functional involvement with the activity being transmitted.
	 * @param objParticipation Object of Participation.
	 */ 
	public void setParticipation (CWE objParticipation)
	{
		setDataType(2381,objParticipation);

	}
	
	/**
	 * Add the Participation Person.
	 * This field contains the identity of the person who is represented in the participation that is being transmitted.
	 * @param strIDNumber Refers to the coded ID according to a user-defined table
	 * @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 strSourceTable Used as the HL7 identifier for the user-defined table of values for this component. [Refer User-defined Table 0297 - CN ID.]
	 * @param objAssigningAuthority Specifies a unique identifier of the system (or organization or agency of department)
	 * 								  that creates the data. [Refer User-defined Table 0363 - Assigning authority]
	 * @param strNameTypeCode Specifies a code that represents the type of name. 
	 * @param strIdentifierCheckDigit Specifies part of the identifying number used in the sending application. 
	 * @param strCheckDigitScheme Specifies the code identifying the check digit scheme employed.[Refer HL7 Table 0061 - Check digit scheme].
	 * @param strIdentifierTypeCode Specifies A code corresponding to the type of identifier.[Refer HL7 Table 0203 - Identifier type].
	 * @param objAssigningFacility Specifies the place or location identifier where the identifier was first assigned to the person
	 * @param strNameRepresentationCode Provides an indication of the representation provided by the data item.  
	 * @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 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 strProfessionalSuffix Used to specify an abbreviation, or a string of abbreviations, denoting qualifications that support the person's profession, (e.g., licenses).
	 * @param objAssigningJurisdiction Specifies the geo-political body that assigned the identifier.
	 * @param objAssigningAgencyOrDepratment Specifies the agency or department that assigned the identifier
	 * @param strSecurityCheck Specifies the version code that may be assigned to the person identifier
	 * @param strSecurityCheckScheme Specifies the check digit scheme.
	 */	 
	public void addParticipationPerson (String strIDNumber,FN objFamilyName,String strGivenName,String strSecondAndFurtherGivenNamesOrInitialsThereof,
			String 	strSuffix,String strPrefix,CWE objSourceTable,HD objAssigningAuthority,
			String strNameTypeCode,String strIdentifierCheckDigit,String strCheckDigitScheme,String strIdentifierTypeCode,
			HD objAssigningFacility,String strNameRepresentationCode,CWE objNameContext,
			String strNameAssemblyOrder, String strEffectiveDate,String strExpirationDate,String strProfessionalSuffix,
			CWE objAssigningJurisdiction,CWE objAssigningAgencyOrDepratment, String strSecurityCheck, String strSecurityCheckScheme)
	{
		XCN xcn  = (XCN)getDataElement(2382);
		xcn.setIdNumber(strIDNumber);
		xcn.setFamilyName(objFamilyName);
		xcn.setGivenName(strGivenName);
		xcn.setSecondNameOrInitials(strSecondAndFurtherGivenNamesOrInitialsThereof);
		xcn.setSuffix(strSuffix);
		xcn.setPrefix(strPrefix);
 
		xcn.setSourceTable(objSourceTable);
		xcn.setAssigningAuthority(objAssigningAuthority);
		xcn.setNameTypeCode(strNameTypeCode);
		xcn.setIdentifierCheckDigit(strIdentifierCheckDigit);
		xcn.setCheckDigitScheme(strCheckDigitScheme);
		xcn.setIdentifierTypeCode(strIdentifierTypeCode);
		xcn.setAssigningFacility(objAssigningFacility);
		xcn.setNameRepresentationCode(strNameRepresentationCode);
		xcn.setNameContext(objNameContext);
 
		xcn.setNameAssemblyOrder(strNameAssemblyOrder);
		xcn.setEffectiveDate(strEffectiveDate);
		xcn.setExpirationDate(strExpirationDate);
		xcn.setProfessionalSuffix(strProfessionalSuffix);
		xcn.setAssigningJurisdiction(objAssigningJurisdiction);
		xcn.setAssigningAgencyOrDepartment(objAssigningAgencyOrDepratment); 
		xcn.setSecurityCheck(strSecurityCheck);
		xcn.setSecurityCheckScheme(strSecurityCheckScheme);
		addParticipationPerson(xcn);
	} 

	/** 
	 * Add the Participation Person.
	 * This field contains the identity of the person who is represented in the participation that is being transmitted.
	 * @param objParticipationPerson Object of Participation Person.
	 */ 
	public void addParticipationPerson(XCN objParticipationPerson)
	{
		addDataType(2382,objParticipationPerson);

	} 

	/** 
	 * Set the Participation Person.
	 * This field contains the identity of the person who is represented in the participation that is being transmitted.
	 * @param objParticipationPersonList List of Participation Person.
	 */ 
	@SuppressWarnings("unchecked")
	public void setParticipationPerson(ISingleCollection<XCN> objParticipationPersonList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objParticipationPersonList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(2382,objCollection);
	}
	/**
	 * Set the Participation Person Provider Type.
	 * This field contains a code identifying the provider type for the participating person. 
	 * @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 setParticipationPersonProviderType  (String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(2383);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		setParticipationPersonProviderType(cwe);

	} 

	/**
	 * Set the Participation Person Provider Type.
	 * This field contains a code identifying the provider type for the participating person.
	 * @param objParticipationPersonProviderType Object of Participation Person Provider Type.
	 */ 
	public void setParticipationPersonProviderType (CWE objParticipationPersonProviderType)
	{
		setDataType(2383,objParticipationPersonProviderType);

	}
	
	/**
	 * Set the Participant Organization Unit Type.
	 * This field identifies the environment in which the participant acts in the role.
	 * @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 setParticipationOrganizationUnitType  (String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(2384);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		setParticipationOrganizationUnitType(cwe);
	} 

	/**
	 * Set the Participation Organization Unit Type.
	 * This field identifies the environment in which the participant acts in the role.
	 * @param objParticipationOrganizationUnitType Object of Participation Organization Unit Type.
	 */ 
	public void setParticipationOrganizationUnitType (CWE objParticipationOrganizationUnitType)
	{
		setDataType(2384,objParticipationOrganizationUnitType);

	}

	/**
	 * Add the Participation Organization.
	 * The organization that is involved in the participation.
	 * @param strOrganizationName Specifies name of the specified organization.
	 * @param strOrganizationNameTypeCode Specifies a code that represents the type of name i.e., legal name, display name.
	 * 										Suggested Values A,L,D,SL.[Refer to table No.0204]  
	 * @param objAssigningAuthority Specifies The assigning authority is a unique identifier of the system 
	 * 									(or organization or agency or department) that creates the data. 
	 * @param strIdentifierTypeCode Specifies a code corresponding to the type of identifier. 
	 * @param objAssigningFacility Specifies The place or location identifier where the identifier was first assigned to the person. 
	 * @param strNameRepresentationCode Specifies representations of the same name/address Suggested values are I,A,P [Refer table 0465] 
	 * @param strOrganizationIdentifier This component contains the sequence of characters (the code) that uniquely 
	 * 									  identifies the item being referenced by XON.1 Organization Name. 
	 * 									  This component replaces XON.3 ID Number as of v 2.5.
	 */ 
	public void addParticipationOrganization  (String strOrganizationName, CWE objOrganizationNameTypeCode,
			 HD objAssigningAuthority,
			String strIdentifierTypeCode, HD objAssigningFacility, String strNameRepresentationCode,
			String strOrganizationIdentifier)
	{
		XON xon  = (XON)getDataElement(2385);
		xon.setOrganizationName(strOrganizationName);
		xon.setOrganizationNameTypeCode(objOrganizationNameTypeCode);
		xon.setAssigningAuthority(objAssigningAuthority);
		xon.setIdentifierTypeCode(strIdentifierTypeCode);
		xon.setAssigningFacility(objAssigningFacility);
		xon.setNameRepresentationCode(strNameRepresentationCode);
		xon.setOrganizationIdentifier(strOrganizationIdentifier); 
		addParticipationOrganization(xon);
	} 

	/**
	 * Add the Participation Organization.
	 * The organization that is involved in the participation.
	 * @param objParticipationOrganization Object of Participation Organization.
	 */ 
	public void addParticipationOrganization (XON objParticipationOrganization)
	{
		setDataType(2385,objParticipationOrganization);

	}
	/** 
	 * Set the Participation Organization.
	 * The organization that is involved in the participation.
	 * @param objParticipationPersonList List of Participation Organization.
	 */ 
	@SuppressWarnings("unchecked")
	public void setParticipationOrganization(ISingleCollection<XON> objParticipationOrganizationList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objParticipationOrganizationList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(2385,objCollection);
	}
	
	/**
	 * Add the Participation Location.
	 * This field specifies the physical location (e.g., nurse station, ancillary service location, clinic, or floor) that is participating.
	 * @param strPointOfCare Use as PointOfCare.
	 * @param strRoom Use as Room.
	 * @param strBed Use as Bed.
	 * @param objFacility Use as Facility.
	 * @param strLocationStatus Use as LocationStatus.
	 * @param strPersonLocationType Use as PersonLocationType.
	 * @param strBuilding Use as Building.
	 * @param strFloor Use as Floor.
	 * @param strLocationDescription Use as LocationDescription.
	 * @param objComprehensiveLocationIdentifier Use as ComprehensiveLocationIdentifier.
	 * @param objAssigningAuthorityForLocation Use as AssigningAuthorityForLocation.
	 */	 
	public void addParticipationLocation (HD objPointOfCare, HD objRoom, HD objBed, HD objFacility,
			String strLocationStatus, String strPersonLocationType, HD objBuilding, HD objFloor, 
			String strLocationDescription, EI objComprehensiveLocationIdentifier, HD objAssigningAuthorityForLocation)
	{
		PL pl  = (PL)getDataElement(2386);
		pl.setPointOfCare(objPointOfCare);
		pl.setRoom(objRoom);
		pl.setBed(objBed);
		pl.setFacility(objFacility);
		pl.setLocationStatus(strLocationStatus);
		pl.setPersonLocationType(strPersonLocationType);
		pl.setBuilding(objBuilding);
		pl.setFloor(objFloor);
		pl.setLocationDescription(strLocationDescription);
		pl.setComprehensiveLocationIdentifier(objComprehensiveLocationIdentifier);
		pl.setAssigningAuthorityForLocation(objAssigningAuthorityForLocation);  
		addParticipationLocation(pl);
	} 

	/**
	 * Add the Participation Location.
	 * This field specifies the physical location (e.g., nurse station, ancillary service location, clinic, or floor) that is participating.
	 * @param objParticipationLocation Object of Participation Location.
	 */ 
	public void addParticipationLocation (PL objParticipationLocation)
	{
		setDataType(2386,objParticipationLocation);

	}
	/** 
	 * Set the Participation Location.
	 * This field specifies the physical location (e.g., nurse station, ancillary service location, clinic, or floor) that is participating.
	 * @param objParticipationOrganizationList List of Participation Location.
	 */ 
	@SuppressWarnings("unchecked")
	public void setParticipationLocation(ISingleCollection<PL> objParticipationOrganizationList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objParticipationOrganizationList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(2386,objCollection);
	}
	
	/**
	 * Add the Participation Device.
	 * Identifier for the device participating. This may reflect an unstructured or a structured identifier such as FDA UDI, RFID, IEEE EUI-64 identifiers, or bar codes.
	 * @param strEntityIdentifier Specifies to be unique within the series of identifiers created by the 
	 * 								assigning authority, defined by a hierarchic designator
	 * @param strNamespaceId Specifies the assigning authority is a unique identifier of the system 
	 * 							(or organization or agency or department) that creates the data. 
	 * @param strUniversalId Specifies a string formatted according to the scheme defined by the third component universal ID type.
	 * 							It is intended to be unique over time within the UID type.
	 * @param strUniversalIdType Governs the interpretation of the Universal ID.  
	 */ 
	public void addParticipationDevice (String strEntityIdentifier,String strNamespaceId,String strUniversalId,
			String strUniversalIdType)
	{
		EI ei  = (EI)getDataElement(2348);
		ei.setEntityIdentifier(strEntityIdentifier);
		ei.setNamespaceId(strNamespaceId);
		ei.setUniversalId(strUniversalId);
		ei.setUniversalIdType(strUniversalIdType);
		addParticipationDevice(ei);
	} 

	/**
	 * Add the Participation Device.
	 * Identifier for the device participating. This may reflect an unstructured or a structured identifier such as FDA UDI, RFID, IEEE EUI-64 identifiers, or bar codes.
	 * @param objParticipationDevice Object of Participation Device.
	 */ 
	public void addParticipationDevice (EI objParticipationDevice)
	{
		setDataType(2348,objParticipationDevice);

	}
	/** 
	 * Set the Participation Device.
	 * Identifier for the device participating. This may reflect an unstructured or a structured identifier such as FDA UDI, RFID, IEEE EUI-64 identifiers, or bar codes.
	 * @param objParticipationDeviceList List of Participation Device.
	 */ 
	@SuppressWarnings("unchecked")
	public void setParticipationDevice(ISingleCollection<EI> objParticipationDeviceList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objParticipationDeviceList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(2348,objCollection);
	}
	
	/**
	 * Set the Participation Begin Date Time.
	 * This field contains the date/time when the participation began.
	 * @param strTime Specifies a point in time using a 24-hour clock notation.	 * 
	 */ 
	public void setParticipationBeginDateTime (String strTime)
	{
		DTM participationBeginDateTime  = (DTM)getDataElement(2387);
		participationBeginDateTime.setValue(strTime);		 
		setParticipationBeginDateTime(participationBeginDateTime);
	} 

	/** 
	 * Set the Participation Begin Date Time.
	 * This field contains the date/time when the participation began.
	 * @param objParticipationBeginDateTime Object of Participation Begin Date Time.
	 */ 
	public void setParticipationBeginDateTime(DTM objParticipationBeginDateTime)
	{
		setDataType(2387,objParticipationBeginDateTime);

	}
	
	/**
	 * Set the Participation End Date Time.
	 * This field contains the date/time when the participation ended.
	 * @param strTime Specifies a point in time using a 24-hour clock notation. 
	 */ 
	public void setParticipationEndDateTime (String strTime)
	{
		DTM participationEndDateTime  = (DTM)getDataElement(2388);
		participationEndDateTime.setValue(strTime);		 
		setParticipationEndDateTime(participationEndDateTime);
	} 

	/** 
	 * Set the Participation End Date Time.
	 * This field contains the date/time when the participation ended.
	 * @param objParticipationBeginDateTime Object of Participation End Date Time.
	 */ 
	public void setParticipationEndDateTime(DTM objParticipationEndDateTime)
	{
		setDataType(2388,objParticipationEndDateTime);

	}
	
	/**
	 * Set the Participation Qualitative Duration.
	 * This field contains the qualitative length of time for participation (e.g., until the next assessment, four days, until discharge, etc.). 
	 * @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 setParticipationQualitativeDuration  (String strIdentifier,String strText,String strNameOfCodingSystem,
			String strAlternateIdentifier,String strAlternateText,String strNameOfAlternateCodingSystem, String strCodingSystemVersionID, String 				strAlternateCodingSystemVersionId,
			String strOriginalText, String  strSecondAlternateIdentifier, String strSecondAlternateText, 
			String strNameofSecondAlternateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, String strValueSetOID,
			String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID, String strAlternateValueSetVersionID,
			String  strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID, String strSecondAlternateValueSetVersionID)
	{
		CWE cwe  = (CWE)getDataElement(2389);
		cwe.setIdentifier(strIdentifier);
		cwe.setText(strText);
		cwe.setNameOfCodingSystem(strNameOfCodingSystem);
		cwe.setAlternateIdentifier(strAlternateIdentifier);
		cwe.setAlternateText(strAlternateText);
		cwe.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem); 
		cwe.setCodingSystemVersionID(strCodingSystemVersionID);
		cwe.setAlternateCodingSystemVersionId(strAlternateCodingSystemVersionId);
		cwe.setOriginalText(strOriginalText);
		cwe.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cwe.setSecondAlternateText(strSecondAlternateText);
		cwe.setNameofSecondAlternateCodingSystem(strNameofSecondAlternateCodingSystem);
		cwe.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cwe.setCodingSystemOID(strCodingSystemOID);
		cwe.setValueSetOID(strValueSetOID);
		cwe.setValueSetVersionID(strValueSetVersionID);
		cwe.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cwe.setAlternateValueSetOID(strAlternateValueSetOID);
		cwe.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cwe.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cwe.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cwe.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		setParticipation(cwe);
	} 

	/** 
	 * Set the Participation Qualitative Duration.
	 * This field contains the qualitative length of time for participation (e.g., until the next assessment, four days, until discharge, etc.).
	 * @param objParticipationQualitativeDuration Object of Participation Qualitative Duration.
	 */ 
	public void setParticipationQualitativeDuration (CWE objParticipationQualitativeDuration)
	{
		setDataType(2389,objParticipationQualitativeDuration);

	}
	
	/**
	 * Set the Participation Address.
	 * This field contains addresses associated with the participation.
	 * @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 addParticipationAddress(SAD objStreetAddress,String strOtherDesignation,String strCity,
			String strStateOrProvince,String strZipOrPostalCode,String strCountry,String strAddressType,
			String strOtherGeographicDesignation,CWE objCountyParishCode,CWE objCensusTract,
			String strAddressRepresentationCode,DTM objEffectiveDate,
			DTM objExpirationDate, CWE objEXpirationReason, String strTemporaryIndicator,
			String strBadAddressIndicator, String strAddressUsage, String strAddressee, String strComment,
			String strPreferenceOrder, CWE objProtectionCode, EI objAddressIdentifier)
	{
		XAD xad = (XAD)getDataElement(2390);
		xad.setStreetAddress(objStreetAddress);
		xad.setOtherDesignation(strOtherDesignation);
		xad.setCity(strCity);
		xad.setStateOrProvince(strStateOrProvince);
		xad.setZipOrPostalCode(strZipOrPostalCode);
		xad.setCountry(strCountry);
		xad.setAddressType(strAddressType);
		xad.setOtherGeographicDesignation(strOtherGeographicDesignation);
		xad.setCountyParishCode(objCountyParishCode);
		xad.setCensusTract(objCensusTract);
		xad.setAddressRepresentationCode(strAddressRepresentationCode);
 
		xad.setEffectiveDate(objEffectiveDate);
		xad.setExpirationDate(objExpirationDate); 
		xad.setExpirationReason(objEXpirationReason);
		xad.setTemporaryIndicator(strTemporaryIndicator);
		xad.setBadAddressIndicator(strBadAddressIndicator);
		xad.setAddressUsage(strAddressUsage);
		xad.setAddressee(strAddressee);
		xad.setComment(strComment);
		xad.setPreferenceOrder(strPreferenceOrder);
		xad.setProtectionCode(objProtectionCode);
		xad.setAddressIdentifier(objAddressIdentifier);
		addParticipationAddress(xad);
	} 

	/**
	 * Add the Participation Address.
	 * This field contains addresses associated with the participation.
	 * @param objParticipationAddress Object of Participation Address.
	 */ 
	public void addParticipationAddress (XAD objParticipationAddress)
	{
		setDataType(2390,objParticipationAddress);
	}
	
	/** 
	 * Set the Participation Address.
	 * This field contains addresses associated with the participation.
	 * @param objParticipationAddressList List of Participation Address.
	 */ 
	@SuppressWarnings("unchecked")
	public void setParticipationAddress(ISingleCollection<XAD> objParticipationAddressList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objParticipationAddressList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(2390,objCollection);
	}
	
	/**
	 * Add the Participation Telecommunication Address.
	 * The waypoint telecommunication address field carries telecommunications addresses for the waypoint.
	 * @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 addParticipantTelecommunicationAddress(String strTeleCommunicationUseCode,String strTeleCommunicationEquipmentType
			,String strCommuinicationAddress,String strCountryCode,String strAreaCityCode,String strLocalNumber,String strExtension,String strAnyText,
			String strExtensionPrefix,String strSpeedDialCode,String strUnformattedTelephoneNumber, String strEffectiveStartDate, String strExpirationDate,
			CWE objExpirationReason, CWE objProtectionCode, EI objSharedTelecommunicationIdentifier, String strPreferenceOrder)
	{		
		XTN xtn  = (XTN)getDataElement(2391);
//		xtn.setTelephoneNumber(strTelephoneNumber);
		xtn.setTelecommunicationUseCode(strTeleCommunicationUseCode);
		xtn.setTelecommunicationEquipmentType(strTeleCommunicationEquipmentType);
		xtn.setCommuinicationAddress(strCommuinicationAddress);
		xtn.setCountryCode(strCountryCode);
		xtn.setAreaCityCode(strAreaCityCode);
		xtn.setLocalNumber(strLocalNumber);
		xtn.setExtension(strExtension);
		xtn.setAnyText(strAnyText);
		xtn.setExtensionPrefix(strExtensionPrefix);
		xtn.setSpeedDialCode(strSpeedDialCode);
		xtn.setUnformattedTelephonenumber(strUnformattedTelephoneNumber); 
		xtn.setEffectiveStartDate(strEffectiveStartDate);
		xtn.setExpirationDate(strExpirationDate);
		xtn.setExpirationReason(objExpirationReason);
		xtn.setProtectionCode(objProtectionCode);
		xtn.setSharedTelecommunicationIdentifier(objSharedTelecommunicationIdentifier);
		xtn.setPreferenceOrder(strPreferenceOrder);	
		addParticipantTelecommunicationAddress(xtn);
	} 

	/**
	 * Add Participant Telecommunication Address.
	 * The waypoint telecommunication address field carries telecommunications addresses for the waypoint.
	 * @param objParticipantTelecommunicationAddress Object of Participant Telecommunication Address.
	 */ 
	public void addParticipantTelecommunicationAddress (XTN objParticipationAddress)
	{
		setDataType(2391,objParticipationAddress);
	}
	
	/** 
	 * Set Participant Telecommunication Address.
	 * The waypoint telecommunication address field carries telecommunications addresses for the waypoint.
	 * @param objParticipantTelecommunicationAddress List of Participant Telecommunication Address.
	 */ 
	@SuppressWarnings("unchecked")
	public void setParticipantTelecommunicationAddress(ISingleCollection<XTN> objParticipantTelecommunicationAddress)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objParticipantTelecommunicationAddress;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(2391,objCollection);
	}
	
	/**
	 * Set the Participant Device Identifier.
	 * This field provides the U.S. FDA UDI device identifier (DI) element. 
	 * @param strEntityIdentifier Specifies to be unique within the series of identifiers created by the 
	 * 								assigning authority, defined by a hierarchic designator
	 * @param strNamespaceId Specifies the assigning authority is a unique identifier of the system 
	 * 							(or organization or agency or department) that creates the data. 
	 * @param strUniversalId Specifies a string formatted according to the scheme defined by the third component universal ID type.
	 * 							It is intended to be unique over time within the UID type.
	 * @param strUniversalIdType Governs the interpretation of the Universal ID.  
	 */
	public void setParticipantDeviceIdentifier(String strEntityIdentifier,String strNamespaceId,String strUniversalId,
			String strUniversalIdType)
	{
		EI ei  = (EI)getDataElement(3476);
		ei.setEntityIdentifier(strEntityIdentifier);
		ei.setNamespaceId(strNamespaceId);
		ei.setUniversalId(strUniversalId);
		ei.setUniversalIdType(strUniversalIdType);
		setParticipantDeviceIdentifier(ei);
	}

	/** 
	 * Set the Participant Device Identifier.
	 * This field provides the U.S. FDA UDI device identifier (DI) element. 
	 * @param objParticipantDeviceIdentifier Object of Participant Device Identifier.
	 */ 
	public void setParticipantDeviceIdentifier(EI objParticipantDeviceIdentifier)
	{
		setDataType(3476,objParticipantDeviceIdentifier);

	}
	

	/**
	 * Set the Participation Device Manufacture Date.
	 * This field contains the date and time when the device was manufacturered.
	 * @param strTime Specifies a point in time using a 24-hour clock notation.	 * 
	 */ 
	public void setParticipationDeviceManufactureDate (String strTime)
	{
		DTM participationDeviceManufactureDate  = (DTM)getDataElement(3477);
		participationDeviceManufactureDate.setValue(strTime);		 
		setParticipationDeviceManufactureDate(participationDeviceManufactureDate);
	} 

	/** 
	 * Set the Participation Device Manufacture Date.
	 * This field contains the date and time when the device was manufacturered.
	 * @param objParticipationDeviceManufactureDate Object of Participation Device Manufacture Date.
	 */ 
	public void setParticipationDeviceManufactureDate(DTM objParticipationDeviceManufactureDate)
	{
		setDataType(3477,objParticipationDeviceManufactureDate);

	}
	
	/**
	 * Set the Participation Device Expiry Date.
	 * This field contains the date and time when the device is no longer approved for use.
	 * @param strTime Specifies a point in time using a 24-hour clock notation.	  
	 */ 
	public void setParticipationDeviceExpiryDate (String strTime)
	{
		DTM participationDeviceExpiryDate  = (DTM)getDataElement(3478);
		participationDeviceExpiryDate.setValue(strTime);		 
		setParticipationDeviceExpiryDate(participationDeviceExpiryDate);
	} 

	/** 
	 * Set the Participation Device Expiry Date.
	 * This field contains the date and time when the device is no longer approved for use.
	 * @param objParticipationDeviceExpiryDate Object of Participation Device Expiry Date.
	 */ 
	public void setParticipationDeviceExpiryDate(DTM objParticipationDeviceExpiryDate)
	{
		setDataType(3478,objParticipationDeviceExpiryDate);

	}
	/**
	 * Set the Participation Device Lot Number.
	 * This field specifies alphanumeric string that identifies the device’s production lot number.  
	 * @param strparticipationDeviceLotNumber Specifies the Participation Device Lot Number. 
	 */ 
	public void setParticipationDeviceLotNumber (String strParticipationDeviceLotNumber)
	{
		ST participationDeviceLotNumber  = (ST)getDataElement(3479);
		participationDeviceLotNumber.setValue(strParticipationDeviceLotNumber); 
		setParticipationDeviceLotNumber(participationDeviceLotNumber);

	} 

	/**
	 * Set the Participation Device Lot Number.
	 * This field specifies alphanumeric string that identifies the device’s production lot number.  
	 * @param objParticipationDeviceLotNumbersetParticipationDeviceLotNumber is object of Participation Device Lot Number.  
	 */ 
	public void setParticipationDeviceLotNumber(ST objParticipationDeviceLotNumbersetParticipationDeviceLotNumber)
	{
		setDataType(3479,objParticipationDeviceLotNumbersetParticipationDeviceLotNumber);

	}
	
	/**
	 * Set the Participation Device Serial Number.
	 * This field specifies the Manufacturer’s serial number for this device.  
	 * @param strparticipationDeviceSerialNumber Specifies the Participation Device Serial Number. 
	 */ 
	public void setParticipationDeviceSerialNumber (String strparticipationDeviceSerialNumber)
	{
		ST participationDeviceSerialNumber  = (ST)getDataElement(3480);
		participationDeviceSerialNumber.setValue(strparticipationDeviceSerialNumber); 
		setParticipationDeviceLotNumber(participationDeviceSerialNumber);

	} 

	/**
	 * Set the Participation Device Serial Number.
	 * This field specifies the Manufacturer’s serial number for this device.  
	 * @param objParticipationDeviceSerialNumbersetParticipationDeviceSerialNumber is object of Participation Device Serial Number.  
	 */ 
	public void setParticipationDeviceSerialNumber(ST objParticipationDeviceSerialNumbersetParticipationDeviceLotNumber)
	{
		setDataType(3480,objParticipationDeviceSerialNumbersetParticipationDeviceLotNumber);

	}
	
	/**
	 * Set the Participation Device Donation Identification.
	 * This field identifies a device related to a donation (e.g., whole blood). 
	 * @param strEntityIdentifier Specifies to be unique within the series of identifiers created by the 
	 * 								assigning authority, defined by a hierarchic designator
	 * @param strNamespaceId Specifies the assigning authority is a unique identifier of the system 
	 * 							(or organization or agency or department) that creates the data. 
	 * @param strUniversalId Specifies a string formatted according to the scheme defined by the third component universal ID type.
	 * 							It is intended to be unique over time within the UID type.
	 * @param strUniversalIdType Governs the interpretation of the Universal ID.  
	 */
	public void setParticipationDeviceDonationIdentification(String strEntityIdentifier,String strNamespaceId,String strUniversalId,
			String strUniversalIdType)
	{
		EI ei  = (EI)getDataElement(3481);
		ei.setEntityIdentifier(strEntityIdentifier);
		ei.setNamespaceId(strNamespaceId);
		ei.setUniversalId(strUniversalId);
		ei.setUniversalIdType(strUniversalIdType);
		setParticipantDeviceIdentifier(ei);
	}

	/** 
	 * Set the Participation Device Donation Identification.
	 * This field identifies a device related to a donation (e.g., whole blood). 
	 * @param objParticipationDeviceDonationIdentification Object of Participation Device Donation Identification.
	 */ 
	public void setParticipationDeviceDonationIdentification(EI objParticipationDeviceDonationIdentification)
	{
		setDataType(3481,objParticipationDeviceDonationIdentification);

	}
	
	/**
	 * Set the Participation Device Type.
	 * This field contains the type of device used in the participation.
	 * @param strIdentifier Specifies sequence of characters (the code) that uniquely identifies
	 * 						 the item being referenced by the CNE.
	 * @param strText Specifies descriptive or textual name of the identifier, e.g., myocardial infarction 
	 * @param strNameOfCodingSystem Specifies the coding scheme being used in the identifier component. 
	 * @param strAlternateIdentifier Specifies the local or user seen code as described. 
	 * @param strAlternateText Specifies descriptive or textual name of the alternate identifier.  
	 * @param strNameOfAlternateCodingSystem Specifies the coding scheme being used in the alternate identifier 
	 * 											component.  
	 * @param strCodingSystemVersionID Specifies the version ID for the coding system. 
	 * @param strAlternateCodingSystemVersionID Specifies the version ID for the coding system .
	 * @param strOriginalText Specifies the original text that was available to an automated process or a human 
	 * 							before a specific code was assigned.
	 * @param strSecondAlternateIdentifier Specifies a sequence of characters that uniquely identifies the second alternate code
	 * @param strSecondAlternateText Specifies a the textual information of the second alternate code
	 * @param strNameOfSecondAltenateCodingSystem Specifies the second coding scheme being used in the identifier component.
	 * @param strSecondAlternateCodingSystemVersionID Specifies version ID of Second alternative coding system.
	 * @param strCodingSystemOID contains the ISO Object identifier for the coding system.
	 * @param strValueSetOID contains the value set from which CNE-1 is obtained 
	 * @param strValueSetVersionID contains the version of the value set identified by CNE-15. 
	 * @param strAlternateCodingSystemOID contains the ISO Object identifier for the alternate coding system
	 * @param strAlternateValueSetOID contains the value set from which CNE-4 is obtained
	 * @param strAlternateValueSetVersionID contains the version of the value set identified by CNE-18. 
	 * @param strSecondAlternateCodingSystemOID contains the value set from which CNE-12 is obtained
	 * @param strSecondAlternateValueSetOID contains the value set from which CNE-10 is obtained
	 * @param strSecondAlternateValueSetVersionID contains the version of the value set identified by CNE-21. 
	 */
	public void setParticipationDeviceType(String strIdentifier,String strText,String strNameOfCodingSystem,String strAlternateIdentifier,
			String strAlternateText,String strNameOfAlternateCodingSystem,String strCodingSystemVersionID,
			String strAlternateCodingSystemVersionID,String strOriginalText, String strSecondAlternateIdentifier, String strSecondAlternateText,
			String strNameOfSecondAltenateCodingSystem, String strSecondAlternateCodingSystemVersionID, String strCodingSystemOID, 
			String strValueSetOID, String strValueSetVersionID, String strAlternateCodingSystemOID, String strAlternateValueSetOID,
			String strAlternateValueSetVersionID, String strSecondAlternateCodingSystemOID, String strSecondAlternateValueSetOID,
			String strSecondAlternateValueSetVersionID)
	{
		CNE cne  = (CNE)getDataElement(3483);
		cne.setIdentifier(strIdentifier);
		cne.setText(strText);
		cne.setNameOfCodingSystem(strNameOfCodingSystem);
		cne.setAlternateIdentifier(strAlternateIdentifier);
		cne.setAlternateText(strAlternateText);
		cne.setNameOfAlternateCodingSystem(strNameOfAlternateCodingSystem);
		cne.setCodingSystemVersionID(strCodingSystemVersionID);
		cne.setAlternateCodingSystemVersionID(strAlternateCodingSystemVersionID);
		cne.setOriginalText(strOriginalText); 
		cne.setSecondAlternateIdentifier(strSecondAlternateIdentifier);
		cne.setSecondAlternateText(strSecondAlternateText);
		cne.setNameofSecondAlternateCodingSystem(strNameOfSecondAltenateCodingSystem);
		cne.setSecondAlternateCodingSystemVersionID(strSecondAlternateCodingSystemVersionID);
		cne.setCodingSystemOID(strCodingSystemOID);
		cne.setValueSetOID(strValueSetOID);
		cne.setValueSetVersionID(strValueSetVersionID);
		cne.setAlternateCodingSystemOID(strAlternateCodingSystemOID);
		cne.setAlternateValueSetOID(strAlternateValueSetOID);
		cne.setAlternateValueSetVersionID(strAlternateValueSetVersionID);
		cne.setSecondAlternateCodingSystemOID(strSecondAlternateCodingSystemOID);
		cne.setSecondAlternateValueSetOID(strSecondAlternateValueSetOID);
		cne.setSecondAlternateValueSetVersionID(strSecondAlternateValueSetVersionID);
		setParticipationDeviceType(cne);
	}

	/**
	 * Set the Participation Device Type.
	 * This field contains the type of device used in the participation.
	 * @param objParticipationDeviceType Object of Participation Device Type.
	 */
	public void setParticipationDeviceType(CNE objParticipationDeviceType)
	{
		setDataType(3483,objParticipationDeviceType);
	}

}
