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

import cdac.medinfo.sdk.hl7282.baselibs.CQ;
import cdac.medinfo.sdk.hl7282.baselibs.CWE;
import cdac.medinfo.sdk.hl7282.baselibs.DTM;
import cdac.medinfo.sdk.hl7282.baselibs.ID;
import cdac.medinfo.sdk.hl7282.baselibs.IS;
import cdac.medinfo.sdk.hl7282.baselibs.ST;
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;

/**
 * PCR - Possible Causal Relationship Segment.<p>
 * The PCR segment is used to communicate a potential or suspected relationship between
 * a product (drug or device) or test and an event with detrimental effect on a patient.
 * This segment identifies a potential causal relationship between the product 
 * identified in this segment and the event identified in the PEO segment.
 * <p>Represents an HL7 PCR message segment. 
 * This segment has the following fields:</p><p>
 * PCR-1: Implicated Product (CWE)<b>Required</b><br> 
 * PCR-2: Generic Product (IS)<b>Optional</b><br> 
 * PCR-3: Product Class (CWE)<b>Optional</b><br> 
 * PCR-4: Total Duration Of Therapy (CQ)<b>Optional</b><br> 
 * PCR-5: Product Manufacture Date (DTM)<b>Optional</b><br> 
 * PCR-6: Product Expiration Date (DTM)<b>Optional</b><br> 
 * PCR-7: Product Implantation Date (DTM)<b>Optional</b><br> 
 * PCR-8: Product Explantation Date (DTM)<b>Optional</b><br> 
 * PCR-9: Single Use Device (CWE)<b>Optional</b><br> 
 * PCR-10: Indication For Product Use (CWE)<b>Optional</b><br> 
 * PCR-11: Product Problem (CWE)<b>Optional</b><br> 
 * PCR-12: Product Serial/Lot Number (ST)<b>Optional</b><br> 
 * PCR-13: Product Available For Inspection (CWE)<b>Optional</b><br> 
 * PCR-14: Product Evaluation Performed (CWE)<b>Optional</b><br> 
 * PCR-15: Product Evaluation Status (CWE)<b>Optional</b><br> 
 * PCR-16: Product Evaluation Results (CWE)<b>Optional</b><br> 
 * PCR-17: Evaluated Product Source (ID)<b>Optional</b><br> 
 * PCR-18: Date Product Returned To Manufacturer (DTM)<b>Optional</b><br> 
 * PCR-19: Device Operator Qualifications (ID)<b>Optional</b><br> 
 * PCR-20: Relatedness Assessment (ID)<b>Optional</b><br> 
 * PCR-21: Action Taken In Response To The Event (ID)<b>Optional</b><br> 
 * PCR-22: Event Causality Observations (ID)<b>Optional</b><br> 
 * PCR-23: Indirect Exposure Mechanism (ID)<b>Optional</b><br><p> 
 * This class provides mechanism to validate message against HL7 v 2.8.2 standard.
 * The class provides accessors & mutators for the elements mentioned above.
 * The class has validate method which validates Message against HL7 v 2.8.2 standard.
 *
 * <p>User can also create Segment through {@link SegmentFactory}
 */
 public class PCR extends Segment    
{
	

	/**
	 * Constructs the PCR segment.
	 */
	public PCR()
	{super(EnumSegments.HL7_SEG_PCR);
	}

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

	/**
	 * Retrieves the Action Taken In Response To The Event.
	 * This field indicates the action taken as a result of the event.  
	 * @return ISingleCollection<ID> - actionTakenInResponseToTheEvent
	 */
	public ISingleCollection<ID> getActionTakenInResponseToTheEvent() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1118);
		ISingleCollection<ID> objDataList = new SingleCollection<ID>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				ID objID = (ID)objDataType;
				objDataList.add(objID);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Date Product Returned To Manufacturer.
	 * This field contains the date it is returned may be reported.
	 * @return DTM - dateProductReturnedToManufacturer
	 */
	public DTM getDateProductReturnedToManufacturer() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1115);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Device Operator Qualifications.
	 * This field identify the qualification of the person operating the device when the event occurred. 
	 * @return ID - deviceOperatorQualifications
	 */
	public ID getDeviceOperatorQualifications() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1116);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Evaluated Product Source.
	 * This field contains the source of the product evaluated.  
	 * @return ID - evaluatedProductSource
	 */
	public ID getEvaluatedProductSource() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1114);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Event Causality Observations.
	 * This field contains observations made about the event which may bear on causality.  
	 * @return ISingleCollection<ID> - eventCausalityObservations
	 */
	public ISingleCollection<ID> getEventCausalityObservations() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1119);
		ISingleCollection<ID> objDataList = new SingleCollection<ID>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				ID objID = (ID)objDataType;
				objDataList.add(objID);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Generic Product.
	 * This field indicates whether the product used is a generic or a branded product.  
	 * @return IS - genericProduct
	 */
	public IS getGenericProduct() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1099);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (IS)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Implicated Product.
	 * This field contains the coded identity of the product (drug, device, etc.) which is 
	 * possibly causally related to the event. 
	 * @return CWE - implicatedProduct
	 */
	public CWE getImplicatedProduct() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1098);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Indication For Product Use.
	 * This field contains coded representation of the problem or diagnosis for which the product is used.
	 * @return CWE - indicationForProductUse
	 */
	public CWE getIndicationForProductUse() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1107);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Indirect Exposure Mechanism.
	 * @return ISingleCollection<ID> - indirectExposureMechanism
	 */
	public ISingleCollection<ID> getIndirectExposureMechanism() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1120);
		ISingleCollection<ID> objDataList = new SingleCollection<ID>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				ID objID = (ID)objDataType;
				objDataList.add(objID);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Product Available For Inspection.
	 * This field indicates that the product is available for analysis.  
	 * @return CWE - productAvailableForInspection
	 */
	public CWE getProductAvailableForInspection() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1110);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Product Class.
	 * This field contains the coded classification of the implicated product.
	 * @return CWE - productClass
	 */
	public CWE getProductClass() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1100);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Product Evaluation Performed.
	 * This field indicates the type of product evaluation performed.
	 * @return CWE - productEvaluationPerformed
	 */
	public CWE getProductEvaluationPerformed() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1111);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Product Evaluation Results.
	 * This field contains the results of the product evaluation.
	 * @return CWE - productEvaluationResults
	 */
	public CWE getProductEvaluationResults() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1113);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Product Evaluation Status.
	 * This field identify the status of product evaluation.
	 * @return CWE - productEvaluationStatus
	 */
	public CWE getProductEvaluationStatus() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1112);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Product Expiration Date.
	 * This field contains the expiration date indicated on the product packaging.
	 * @return DTM - productExpirationDate
	 */
	public DTM getProductExpirationDate() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1103);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Product Explantation Date.
	 * This field identify the date that product is removed.
	 * @return DTM - productExplantationDate
	 */
	public DTM getProductExplantationDate() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1105);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Product Implantation Date.
	 * This field identify the date that device is implanted.
	 * @return DTM - productImplantationDate
	 */
	public DTM getProductImplantationDate() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1104);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Product Manufacture Date.
	 * This field indicates the date the product is manufactured.
	 * @return DTM - productManufactureDate
	 */
	public DTM getProductManufactureDate() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1102);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Product Problem.
	 * This product problem would exist if a product malfunction could lead to death or serious injury.  
	 * @return CWE - productProblem
	 */
	public CWE getProductProblem() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1108);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Product Serial Lot Number.
	 * This field is an alphanumeric descriptor which identify the specific item or lot of drug.  
	 * @return ISingleCollection<ST> - productSerialLotNumber
	 */
	public ISingleCollection<ST> getProductSerialLotNumber() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1109);
		ISingleCollection<ST> objDataList = new SingleCollection<ST>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				ST objST = (ST)objDataType;
				objDataList.add(objST);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Relatedness Assessment.
	 * This field represents the assessment of relatedness of the product to the event.  
	 * @return ID - relatednessAssessment
	 */
	public ID getRelatednessAssessment() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1117);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Single Use Device.
	 * This field indicates whether the product is designed for a single use or not. 
	 * @return CWE - singleUseDevice
	 */
	public CWE getSingleUseDevice() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1106);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Total Duration Of Therapy.
	 * This field represents the total duration of therapy with product listed. 
	 * @return CQ - totalDurationOfTherapy
	 */
	public CQ getTotalDurationOfTherapy() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1101);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CQ)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Add the Action Taken In Response To The Event.
	 * This field indicates the action taken as a result of the event.  
	 * @param strActionTakenInResponseToTheEvent This field contains the String Value of Action Taken
	 * 											 In Response To The Event
	 */ 
	public void addActionTakenInResponseToTheEvent (String strActionTakenInResponseToTheEvent)  
	{
		ID actionTakenInResponseToTheEvent  = (ID)getDataElement(1118);
		actionTakenInResponseToTheEvent.setValue(strActionTakenInResponseToTheEvent); 
		addActionTakenInResponseToTheEvent(actionTakenInResponseToTheEvent);

	} 

	/** 
	 * Add the Action Taken In Response To The Event.
	 * This field indicates the action taken as a result of the event.  
	 * @param objactionTakenInResponseToTheEvent Object of Action Taken In Response To The Event.
	 */ 
	public void addActionTakenInResponseToTheEvent(ID objactionTakenInResponseToTheEvent)
	{
		addDataType(1118,objactionTakenInResponseToTheEvent);

	}

	/** 
	 * Set the Action Taken In Response To The Event.
	 * This field indicates the action taken as a result of the event.  
	 * @param objactionTakenInResponseToTheEventList List of Action Taken In Response To The Event.
	 */ 
	@SuppressWarnings("unchecked")
	public void setActionTakenInResponseToTheEvent(ISingleCollection<ID> objactionTakenInResponseToTheEventList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objactionTakenInResponseToTheEventList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1118,objCollection);
	}

	/**
	 * Set the Date Product Returned To Manufacturer.
	 * This field contains the date it is returned may be reported.
	 * @param strTime Specifies a point in time using a 24-hour clock notation.	 
	 */ 
	public void setDateProductReturnedToManufacturer (String strTime)  
	{
		DTM dateProductReturnedToManufacturer  = (DTM)getDataElement(1115);
		dateProductReturnedToManufacturer.setValue(strTime);		 
		setDateProductReturnedToManufacturer(dateProductReturnedToManufacturer);

	} 

	/** 
	 * Set the Date Product Returned To Manufacturer.
	 * This field contains the date it is returned may be reported.
	 * @param objdateProductReturnedToManufacturer Object of Date Product Returned To Manufacturer.
	 */ 
	public void setDateProductReturnedToManufacturer(DTM objdateProductReturnedToManufacturer)
	{
		setDataType(1115,objdateProductReturnedToManufacturer);

	}

	/**
	 * Set the Device Operator Qualifications.
	 * This field identify the qualification of the person operating the device when the event occurred. 
	 * @param strDeviceOperatorQualifications This field contains the String Value of Device Operator Qualifications 
	 */ 
	public void setDeviceOperatorQualifications (String strDeviceOperatorQualifications) 
	{
		ID deviceOperatorQualifications  = (ID)getDataElement(1116);
		deviceOperatorQualifications.setValue(strDeviceOperatorQualifications); 
		setDeviceOperatorQualifications(deviceOperatorQualifications);

	} 

	/** 
	 * Set the Device Operator Qualifications.
	 * This field identify the qualification of the person operating the device when the event occurred. 
	 * @param objdeviceOperatorQualifications Object of Device Operator Qualifications.
	 */ 
	public void setDeviceOperatorQualifications(ID objdeviceOperatorQualifications)
	{
		setDataType(1116,objdeviceOperatorQualifications);

	}

	/**
	 * Set the Evaluated Product Source.
	 * This field contains the source of the product evaluated.  
	 * @param strEvaluatedProductSource This field contains the String Value of Evaluated Product Source 
	 */ 
	public void setEvaluatedProductSource (String strEvaluatedProductSource)  
	{
		ID evaluatedProductSource  = (ID)getDataElement(1114);
		evaluatedProductSource.setValue(strEvaluatedProductSource); 
		setEvaluatedProductSource(evaluatedProductSource);

	} 

	/** 
	 * Set the Evaluated Product Source.
	 * This field contains the source of the product evaluated.  
	 * @param objevaluatedProductSource Object of Evaluated Product Source.
	 */ 
	public void setEvaluatedProductSource(ID objevaluatedProductSource)
	{
		setDataType(1114,objevaluatedProductSource);

	}
	/**
	 * Add the Event Causality Observations.
	 * This field contains observations made about the event which may bear on causality.  
	 * @param strEventCausalityObservations This field contains the String Value of Event Causality Observations 
	 */ 
	public void addEventCausalityObservations (String strEventCausalityObservations)  
	{
		ID eventCausalityObservations  = (ID)getDataElement(1119);
		eventCausalityObservations.setValue(strEventCausalityObservations); 
		addEventCausalityObservations(eventCausalityObservations);

	} 

	/** 
	 * Add the Event Causality Observations.
	 * This field contains observations made about the event which may bear on causality.  
	 * @param objeventCausalityObservations Object of Event Causality Observations.
	 */ 
	public void addEventCausalityObservations(ID objeventCausalityObservations)
	{
		addDataType(1119,objeventCausalityObservations);

	} 

	/** 
	 * Set the Event Causality Observations.
	 * This field contains observations made about the event which may bear on causality.  
	 * @param objeventCausalityObservationsList List of Event Causality Observations.
	 */ 
	@SuppressWarnings("unchecked")
	public void setEventCausalityObservations(ISingleCollection<ID> objeventCausalityObservationsList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objeventCausalityObservationsList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1119,objCollection);
	}

	/**
	 * Set the Generic Product.
	 * This field indicates whether the product used is a generic or a branded product.  
	 * @param strGenericProduct This field contains the String Value of Generic Product 
	 */ 
	public void setGenericProduct (String strGenericProduct) 
	{
		IS genericProduct  = (IS)getDataElement(1099);
		genericProduct.setValue(strGenericProduct); 
		setGenericProduct(genericProduct);

	} 

	/** 
	 * Set the Generic Product.
	 * This field indicates whether the product used is a generic or a branded product.  
	 * @param objgenericProduct Object of Generic Product.
	 */ 
	public void setGenericProduct(IS objgenericProduct)
	{
		setDataType(1099,objgenericProduct);

	}

	/**
	 * Set the Implicated Product.
	 * This field contains the coded identity of the product (drug, device, etc.) which is 
	 * possibly causally related to the event. 
	 * @param strIdentifier Specifies of characters (the code) that uniquely identifies the item being referenced. 
	 * @param strText Specifies The descriptive or textual name of the identifier, e.g., myocardial infarction. 
	 * @param strNameOfCodingSystem Identifies the coding scheme being used in the identifier component.
	 * @param strAlternateIdentifier Specifies an alternate sequence of characters (the code) that uniquely identifies the item being referenced.
	 * @param strAlternateText Specifies the descriptive or textual name of the alternate identifier. See usage note in section introduction.
	 * @param strNameOfAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component. 
	 * @param strCodingSystemVersionID A sequence of characters that uniquely identifies a second alternate code.
	 * @param strAlternateCodingSystemVersionId This component carries the version for the coding system identified by components 4-6.
	 * @param strOriginalText The text as seen and/or selected by the user who entered the data.
	 * @param strSecondAlternateIdentifier A sequence of characters that uniquely identifies a second alternate code.
	 * @param strSecondAlternateText The descriptive or textual name of the alternate identifier.
	 * @param strNameofSecondAlternateCodingSystem Identifies the coding scheme being used in the alternate identifier component.
	 * @param strSecondAlternateCodingSystemVersionID This component carries the version for the coding system identified by components 10-12.
	 * @param strCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.3.
	 * @param strValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.1 is obtained.
	 * @param strValueSetVersionID This component carries the version for the value set identified by CWE.15. The version is a date. The date is the date/time that the value set being used was published.
	 * @param strAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.6.
	 * @param strAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.4 is obtained.
	 * @param strAlternateValueSetVersionID This component carries the version for the value set identified by CWE.18. The version is a date.
	 * @param strSecondAlternateCodingSystemOID This component contains the ISO Object Identifier (OID) for the coding system or value set named in CWE.12.
	 * @param strSecondAlternateValueSetOID This component contains the ISO Object Identifier (OID) to allow identification of the value set from which the value in CWE.10 is obtained.
	 * @param strSecondAlternateValueSetVersionID This component carries the version for the value set identified by CWE.21. The version is a date.
	 */ 
	public void setImplicatedProduct (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(1098);
		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); 
		setImplicatedProduct(cwe);

	} 

	/** 
	 * Set the Implicated Product.
	 * This field contains the coded identity of the product (drug, device, etc.) which is 
	 * possibly causally related to the event. 
	 * @param objimplicatedProduct Object of Implicated Product.
	 */ 
	public void setImplicatedProduct(CWE objimplicatedProduct)
	{
		setDataType(1098,objimplicatedProduct);

	}

	/**
	 * Set the Indication For Product Use.
	 * This field contains coded representation of the problem or diagnosis for which the product is used.
	 * @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 setIndicationForProductUse (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(1107);
		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);
		setIndicationForProductUse(cwe);

	} 

	/** 
	 * Set the Indication For Product Use.
	 * This field contains coded representation of the problem or diagnosis for which the product is used.
	 * @param objindicationForProductUse Object of Indication For Product Use.
	 */ 
	public void setIndicationForProductUse(CWE objindicationForProductUse)
	{
		setDataType(1107,objindicationForProductUse);

	}

	/**
	 * Add the Indirect Exposure Mechanism.
	 * @param strIndirectExposureMechanism This field contains the String Value of Indirect Exposure Mechanism
	 */ 
	public void addIndirectExposureMechanism (String strIndirectExposureMechanism) 
	{
		ID indirectExposureMechanism  = (ID)getDataElement(1120);
		indirectExposureMechanism.setValue(strIndirectExposureMechanism); 
		addIndirectExposureMechanism(indirectExposureMechanism);

	} 

	/** 
	 * Add the Indirect Exposure Mechanism.
	 * @param objindirectExposureMechanism Object of Indirect Exposure Mechanism.
	 */ 
	public void addIndirectExposureMechanism(ID objindirectExposureMechanism)
	{
		addDataType(1120,objindirectExposureMechanism);

	} 

	/** 
	 * Set the Indirect Exposure Mechanism.
	 * @param objindirectExposureMechanismList List of Indirect Exposure Mechanism.
	 */ 
	@SuppressWarnings("unchecked")
	public void setIndirectExposureMechanism(ISingleCollection<ID> objindirectExposureMechanismList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objindirectExposureMechanismList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1120,objCollection);
	}

	/**
	 * Set the Product Available For Inspection.
	 * This field indicates that the product is available for analysis.  
	 * @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 setProductAvailableForInspection (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(1110);
		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);
		setProductAvailableForInspection(cwe);

	} 

	/** 
	 * Set the Product Available For Inspection.
	 * This field indicates that the product is available for analysis.  
	 * @param objproductAvailableForInspection Object of Product Available For Inspection. 
	 */ 
	public void setProductAvailableForInspection(CWE objproductAvailableForInspection)
	{
		setDataType(1110,objproductAvailableForInspection);

	}

	/**
	 * Set the Product Class.
	 * This field contains the coded classification of the implicated product.
	 * @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 setProductClass (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(1100);
		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); 
		setProductClass(cwe);

	} 

	/** 
	 * Set the Product Class.
	 * This field contains the coded classification of the implicated product.
	 * @param objproductClass Object of Product Class.
	 */ 
	public void setProductClass(CWE objproductClass)
	{
		setDataType(1100,objproductClass);

	}

	/**
	 * Set the Product Evaluation Performed.
	 * This field indicates the type of product evaluation performed.
	 * @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 setProductEvaluationPerformed (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(1111);
		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);
		setProductEvaluationPerformed(cwe);

	} 

	/** 
	 * Set the Product Evaluation Performed.
	 * This field indicates the type of product evaluation performed.
	 * @param objproductEvaluationPerformed Object of Product Evaluation Performed.
	 */ 
	public void setProductEvaluationPerformed(CWE objproductEvaluationPerformed)
	{
		setDataType(1111,objproductEvaluationPerformed);

	}

	/**
	 * Set the Product Evaluation Results.
	 * This field contains the results of the product evaluation.
	 * @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 setProductEvaluationResults (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(1113);
		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); 
		setProductEvaluationResults(cwe);

	} 

	/** 
	 * Set the Product Evaluation Results.
	 * This field contains the results of the product evaluation.
	 * @param objproductEvaluationResults Object of Product Evaluation Results.
	 */ 
	public void setProductEvaluationResults(CWE objproductEvaluationResults)
	{
		setDataType(1113,objproductEvaluationResults);

	}

	/**
	 * Set the Product Evaluation Status.
	 * This field identify the status of product evaluation.
	 * @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 setProductEvaluationStatus (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(1112);
		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);
		setProductEvaluationStatus(cwe);

	} 

	/** 
	 * Set the Product Evaluation Status.
	 * This field identify the status of product evaluation.
	 * @param objproductEvaluationStatus Object of Product Evaluation Status.
	 */ 
	public void setProductEvaluationStatus(CWE objproductEvaluationStatus)
	{
		setDataType(1112,objproductEvaluationStatus);

	}

	/**
	 * Set the Product Expiration Date.
	 * This field contains the expiration date indicated on the product packaging.
	 * @param strTime Specifies a point in time using a 24-hour clock notation. 
	 * @param strDegreeOfPrecision The degree of precision of the time stamp .Suggested Values Y,L,D,H,M,S [Refer to HL7 Table 0529].
	 */ 
	public void setProductExpirationDate (String strTime) 
	{
		DTM productExpirationDate  = (DTM)getDataElement(1103);
		productExpirationDate.setValue(strTime);		 
		setProductExpirationDate(productExpirationDate);

	} 

	/** 
	 * Set the Product Expiration Date.
	 * This field contains the expiration date indicated on the product packaging.
	 * @param objproductExpirationDate Object of Product Expiration Date.
	 */ 
	public void setProductExpirationDate(DTM objproductExpirationDate)
	{
		setDataType(1103,objproductExpirationDate);

	}

	/**
	 * Set the Product Explanation Date.
	 * This field identify the date that product is removed.
	 * @param strTime Specifies a point in time using a 24-hour clock notation.	 
	 */ 
	public void setProductExplantationDate (String strTime) 
	{
		DTM productExplantationDate  = (DTM)getDataElement(1105);
		productExplantationDate.setValue(strTime);		
		setProductExplantationDate(productExplantationDate);

	} 

	/** 
	 * Set the Product Explanation Date.
	 * This field identify the date that product is removed.
	 * @param objproductExplantationDate Object of Product Explanation Date.
	 */ 
	public void setProductExplantationDate(DTM objproductExplantationDate)
	{
		setDataType(1105,objproductExplantationDate);

	}

	/**
	 * Set the Product Implantation Date.
	 * This field identify the date that device is implanted.
	 * @param strTime Specifies a point in time using a 24-hour clock notation.	 
	 */ 
	public void setProductImplantationDate (String strTime) 
	{
		DTM productImplantationDate  = (DTM)getDataElement(1104);
		productImplantationDate.setValue(strTime);		 
		setProductImplantationDate(productImplantationDate);

	} 

	/** 
	 * Set the Product Implantation Date.
	 * This field identify the date that device is implanted.
	 * @param objproductImplantationDate Object of Product Implantation Date.
	 */ 
	public void setProductImplantationDate(DTM objproductImplantationDate)
	{
		setDataType(1104,objproductImplantationDate);

	}

	/**
	 * Set the Product Manufacture Date.
	 * This field indicates the date the product is manufactured.
	 * @param strTime Specifies a point in time using a 24-hour clock notation.	 
	 */ 
	public void setProductManufactureDate (String strTime) 
	{
		DTM productManufactureDate  = (DTM)getDataElement(1102);
		productManufactureDate.setValue(strTime);		 
		setProductManufactureDate(productManufactureDate);

	} 

	/** 
	 * Set the Product Manufacture Date.
	 * This field indicates the date the product is manufactured.
	 * @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 setProductManufactureDate(DTM objproductManufactureDate)
	{
		setDataType(1102,objproductManufactureDate);

	}

	/**
	 * Set the Product Problem.
	 * This product problem would exist if a product malfunction could lead to death or serious injury.  
	 * @param strProductProblem This field contains the String Value of Product Problem 
	 */ 
	public void setProductProblem (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(1108);
		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);
		setProductProblem(cwe);

	} 

	/** 
	 * Set the Product Problem.
	 * This product problem would exist if a product malfunction could lead to death or serious injury.  
	 * @param objproductProblem Object of Product Problem.
	 */ 
	public void setProductProblem(CWE objproductProblem)
	{
		setDataType(1108,objproductProblem);

	}

	/**
	 * Add the Product Serial Lot Number.
	 * This field is an alphanumeric descriptor which identify the specific item or lot of drug.  
	 * @param strProductSerialLotNumber This field contains the String Value of Product Serial Lot Number 
	 */ 
	public void addProductSerialLotNumber (String strProductSerialLotNumber)
	{
		ST productSerialLotNumber  = (ST)getDataElement(1109);
		productSerialLotNumber.setValue(strProductSerialLotNumber); 
		addProductSerialLotNumber(productSerialLotNumber);

	} 

	/** 
	 * Add the Product Serial Lot Number.
	 * This field is an alphanumeric descriptor which identify the specific item or lot of drug.  
	 * @param objproductSerialLotNumber Object of Product Serial Lot Number.
	 */ 
	public void addProductSerialLotNumber(ST objproductSerialLotNumber)
	{
		addDataType(1109,objproductSerialLotNumber);

	} 

	/** 
	 * Set the Product Serial Lot Number.
	 * This field is an alphanumeric descriptor which identify the specific item or lot of drug.  
	 * @param objproductSerialLotNumberList List of Product Serial Lot Number.
	 */ 
	@SuppressWarnings("unchecked")
	public void setProductSerialLotNumber(ISingleCollection<ST> objproductSerialLotNumberList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objproductSerialLotNumberList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1109,objCollection);
	}

	/**
	 * Set the Relatedness Assessment.
	 * This field represents the assessment of relatedness of the product to the event.  
	 * @param strRelatednessAssessment This field contains the String Value of Relatedness Assessment 
	 */ 
	public void setRelatednessAssessment (String strRelatednessAssessment) 
	{
		ID relatednessAssessment  = (ID)getDataElement(1117);
		relatednessAssessment.setValue(strRelatednessAssessment); 
		setRelatednessAssessment(relatednessAssessment);

	} 

	/** 
	 * Set the Relatedness Assessment.
	 * This field represents the assessment of relatedness of the product to the event.  
	 * @param objrelatednessAssessment Object of Relatedness Assessment. 
	 */ 
	public void setRelatednessAssessment(ID objrelatednessAssessment)
	{
		setDataType(1117,objrelatednessAssessment);

	}

	/**
	 * Set the Single Use Device.
	 * This field indicates whether the product is designed for a single use or not. 
	 * @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 setSingleUseDevice (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(1106);
		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); 
		setSingleUseDevice(cwe);

	} 

	/** 
	 * Set the Single Use Device.
	 * This field indicates whether the product is designed for a single use or not. 
	 * @param objsingleUseDevice Object of Single Use Device.
	 */ 
	public void setSingleUseDevice(CWE objsingleUseDevice)
	{
		setDataType(1106,objsingleUseDevice);

	}

	/**
	 * Set the Total Duration Of Therapy.
	 * This field represents the total duration of therapy with product listed. 
	 * @param strQuantity Specifies the numeric quantity or amount of an entity.
	 * @param objUnits Specifies the units in which the quantity is expressed. 
	 */ 
	public void setTotalDurationOfTherapy (String strQuantity,CWE objUnits)
	{
		CQ totalDurationOfTherapy  = (CQ)getDataElement(1101);
		totalDurationOfTherapy.setQuantity(strQuantity);
		totalDurationOfTherapy.setUnits(objUnits); 
		setTotalDurationOfTherapy(totalDurationOfTherapy);

	} 

	/** 
	 * Set the Total Duration Of Therapy.
	 * This field represents the total duration of therapy with product listed. 
	 * @param objtotalDurationOfTherapy Object of Total Duration Of Therapy.
	 */ 
	public void setTotalDurationOfTherapy(CQ objtotalDurationOfTherapy)
	{
		setDataType(1101,objtotalDurationOfTherapy);

	}

	/**
	 * 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
	{
		/*
		 * Implicated Product is required field.
		 */
		try
		{
			super.validate();

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