package cdac.medinfo.sdk.hl7282.baselibs.segments;

import cdac.medinfo.sdk.hl7282.baselibs.CNE;
import cdac.medinfo.sdk.hl7282.baselibs.CP;
import cdac.medinfo.sdk.hl7282.baselibs.CWE;
import cdac.medinfo.sdk.hl7282.baselibs.EI;
import cdac.medinfo.sdk.hl7282.baselibs.MO;
import cdac.medinfo.sdk.hl7282.baselibs.NM;
import cdac.medinfo.sdk.hl7282.baselibs.SI;
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;

/**
 * IVT - Material Location Segment <p>
 * The Material Location segment (IVT) contains information specific to an inventory location for 
 * the inventory supply item in the Material Item (ITM) segment. 
 *<p>Represents an HL7 IVT message segment. 
 * This segment has the following fields:</p><p>
 * IVT-1 : Set Id – IVT (SI) <b>Required</b><br>
 * IVT-2 : Inventory Location Identifier(EI) <b>Required</b><br>
 * IVT-3 : Inventory Location Name(ST) <b>Optional</b><br>
 * IVT-4 : Source Location Identifier(EI) <b>Optional</b><br>
 * IVT-5 : Source Location Name(ST) <b>Optional</b><br>
 * IVT-6 : Item Status(CWE) <b>Optional</b><br>
 * IVT-7 : Bin Location Identifier(EI) <b>Optional</b><br>
 * IVT-8 : Order Packaging(CWE) <b>Optional</b><br>
 * IVT-9 : Issue Packaging(CWE) <b>Optional</b><br>
 * IVT-10 : Default Inventory Asset Account(EI) <b>Optional</b><br>
 * IVT-11 : Patient Chargeable Indicator(CNE) <b>Optional</b><br>
 * IVT-12 : Transaction Code(CWE) <b>Optional</b><br>
 * IVT-13 : Transaction Amount - Unit(CP) <b>Optional</b><br>
 * IVT-14 : Item Importance Code(CWE) <b>Optional</b><br>
 * IVT-15 : Stocked Item Indicator (CNE) <b>Optional</b><br>
 * IVT-16 : Consignment Item Indicator(CNE) <b>Optional</b><br>
 * IVT-17 : Reusable Item Indicator(CNE) <b>Optional</b><br>
 * IVT-18 : Reusable Cost(CP) <b>Optional</b><br>
 * IVT-19 : Substitute Item Identifier(EI) <b>Optional</b><br>
 * IVT-20 : Latex-Free Substitute Item Identifier(EI) <b>Optional</b><br>
 * IVT-21 : Recommended Reorder Theory(CWE) <b>Optional</b><br>
 * IVT-22 : Recommended Safety Stock Days(NM) <b>Optional</b><br>
 * IVT-23 : Recommended Maximum Days Inventory(NM) <b>Optional</b><br>
 * IVT-24 : Recommended Order Point(NM) <b>Optional</b><br>
 * IVT-25 : Recommended Order Amount(NM) <b>Optional</b><br>
 * IVT-26 : Operating Room Par Level Indicator(CNE) <b>Optional</b><br>
 * 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 IVT extends Segment
{
	/**
	 *  Constructs the IVT segment. 
	 */
	public IVT()
	{super(EnumSegments.HL7_SEG_IVT);
	}
	
	//Integer values used in getter/setter is unique item id defined 
	//for each attribute.
	
	/**
	 * Retrieves the Set Id – IVT.
	 * This field contains a sequential number that identifies this segment within a given Material Location segment group.
	 * @return SI - setID_IVT
	 */
	public SI getSetID_IVT() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2062);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (SI)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Inventory Location Identifier.
	 * This field contains the code identifying an inventory supply location that stocks or purchases this item.
	 * @return EI - inventoryLocationIdentifier
	 */
	public EI getInventoryLocationIdentifier() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2063);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (EI)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Inventory Location Name.
	 * This field contains the name of the inventory supply location identified in IVT-2
	 * @return ST - inventoryLocationName
	 */
	public ST getInventoryLocationName() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2277);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ST)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Source Location Identifier.
	 * This field contains the code identifying the source location that purchases and stocks 
	 * items in addition to filling supply requests for the location specified in IVT-2, Inventory Location Identifier.
	 * @return EI - sourceLocationIdentifier
	 */
	public EI getSourceLocationIdentifier() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2064);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (EI)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Source Location Name.
	 * This field contains the name of the source supply location identified in IVT-4, Source Location Identifier.
	 * @return ST - sourceLocationName
	 */
	public ST getSourceLocationName() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2278);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ST)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Item Status.
	 * This field contains the status that applies to the inventory supply item for the inventory location specified in IVT-2.  
	 * @return CWE - itemStatus
	 */
	public CWE getItemStatus() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2065);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	
	/**
	 * Retrieves the Bin Location Identifier.
	 * A unique code assigned to a bin location located within the inventory location in IVT-2, where the inventory supply item may be stored.  
	 * @return ISingleCollection<EI> - binLocationIdentifier
	 */
	public ISingleCollection<EI> getBinLocationIdentifier() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2066);
		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 Order Packaging.
	 * This field contains the primary packaging unit by which 
	 * the item can be requisitioned or ordered to replenish the inventory supply item for the corresponding inventory location specified in IVT-2.  
	 * @return CWE - orderPackaging
	 */
	public CWE getOrderPackaging() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2067);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Issue Packaging.
	 * This field contains the primary issue packaging unit by which the inventory supply 
	 * item can be issued to departments or other locations by the corresponding inventory location specified in IVT-2.
	 * @return CWE - issuePackaging
	 */
	public CWE getIssuePackaging() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2068);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Default Inventory Asset Account.
	 * This field contains the general ledger number for the default inventory asset account 
	 * used in journal transactions associated with items stored in this inventory location.  
	 * @return EI - defaultInventoryAssetAccount
	 */
	public EI getDefaultInventoryAssetAccount() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2069);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (EI)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Patient Chargeable Indicator.
	 * This field indicates whether the item is patient chargeable at this inventory location.    
	 * @return CNE - patientChargeableIndicator 
	 */
	public CNE getPatientChargeableIndicator() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2070);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CNE)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Transaction Code.
	 * This field contains a code that is used by a billing system to charge for the inventory supply item, 
	 * the descriptive name of the patient charge for that system (as it may appear on a patient's bill or charge labels) and 
	 * the name of the coding system that assigned the charge code.     
	 * @return CWE - transactionCode
	 */
	public CWE getTransactionCode() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(361);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Transaction Amount - Unit.
	 * The price that a department charges to a patient for this inventory supply item when using the Patient Charge Billing code present in this segment. 
	 * @return CP - transactionAmountUnit
	 */
	public CP getTransactionAmountUnit() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(366);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CP)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Item Importance Code.
	 * This field contains an indicator of the level of importance of an item considered for this inventory location, 
	 * such as an indicator signifying whether the item is considered critical for this inventory location.   
	 * @return CWE - itemImportanceCode
	 */
	public CWE getItemImportanceCode() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2073);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Stocked Item Indicator.
	 * This field contains an indicator that identifies whether the item is regularly stocked in this inventory location.    
	 * @return CNE - stockedItemIndicator 
	 */
	public CNE getStockedItemIndicator() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2074);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CNE)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Consignment Item Indicator.
	 * This field contains an indicator signifying whether the inventory supply item is purchased on consignment.    
	 * @return CNE - consignmentItemIndicator
	 */
	public CNE getConsignmentItemIndicator() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2075);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CNE)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Reusable Item Indicator.
	 * This field contains an indicator signifying that the inventory supply item is reusable, for example, after sterilization.      
	 * @return CNE - reusableItemIndicator
	 */
	public CNE getReusableItemIndicator() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2076);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CNE)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Reusable Cost.
	 * This field contains the issue cost charged to a department or patient for a reusable item.        
	 * @return CP - reusableCost
	 */
	public CP getReusableCost() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2077);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CP)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	
	/**
	 * Retrieves the Substitute Item Identifier.
	 * The substitute item is an item that is recommended as a substitute for the corresponding item in ITM-1.  
	 * @return ISingleCollection<EI> - substituteItemIdentifier
	 */
	public ISingleCollection<EI> getSubstituteItemIdentifier() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2078);
		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 Latex-Free Substitute Item Identifier.
	 * The latex-free substitute item is an item that is latex-free, recommended as a substitute for 
	 * the corresponding item in the ITM-1 segment when a latex-free item is needed.      
	 * @return EI - latexFreeSubstituteItemIdentifier
	 */
	public EI getLatexFreeSubstituteItemIdentifier() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2079);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (EI)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Recommended Reorder Theory.
	 * This field contains the method used to calculate a recommendation for when and how much of an inventory supply item to reorder.          
	 * @return CWE - recommendedReorderTheory
	 */
	public CWE getRecommendedReorderTheory() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2080);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Recommended Safety Stock Days.
	 * This field contains the number of days for stock to be kept on-hand to cushion against a stock-out for this item.            
	 * @return NM - recommendedSafetyStockDays
	 */
	public NM getRecommendedSafetyStockDays() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2081);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (NM)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Recommended Maximum Days Inventory.
	 * This field contains the maximum number of days of inventory to have on-hand at any one point in time.            
	 * @return NM - recommendedMaximumDaysInventory
	 */
	public NM getRecommendedMaximumDaysInventory() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2082);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (NM)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Recommended Order Point.
	 * This field contains the on-hand quantity referencing the recommended level of inventory at which the item should be re-ordered.            
	 * @return NM - recommendedOrderPoint
	 */
	public NM getRecommendedOrderPoint() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2083);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (NM)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Recommended Order Amount.
	 * This field contains the quantity that the system should recommend to order when the on-hand quantity is equal to or less than the reorder point.              
	 * @return NM - recommendedOrderAmount
	 */
	public NM getRecommendedOrderAmount() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2084);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (NM)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Retrieves the Operating Room Par Level Indicator.
	 * This field contains an indicator that determines whether on-hands inventory will be decremented when performing Preference List Issues.               
	 * @return CNE - operatingRoomParLevelIndicator
	 */
	public CNE getOperatingRoomParLevelIndicator() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2085);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CNE)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	/**
	 * Set the Set Id – IVT.
	 * This field contains a sequential number that identifies this segment within a given Material Location segment group.  
	 * @param strSetId_IVT Specifies Set Id - IVT
	 */ 
	public void setSetId_IVT (String strSetId_IVT) 
	{
		SI objSI  = (SI)getDataElement(2062);
		objSI.setValue(strSetId_IVT); 
		setSetId_IVT(objSI);

	} 

	/** 
	 * Set the Set Id – IVT.
	 * This field contains a sequential number that identifies this segment within a given Material Location segment group.
	 * @param objSetId_IVT Specifies Set Id - IVT
	 */ 
	public void setSetId_IVT(SI objSetId_IVT)
	{
		setDataType(2062,objSetId_IVT);

	}
	
	/**
	 * Set the Inventory Location Identifier.
	 * This field contains the code identifying an inventory supply location that stocks or purchases this item. 
	 * @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 setInventoryLocationIdentifier(String strEntityIdentifier,String strNamespaceId,String strUniversalId,
			String strUniversalIdType)
	{
		EI objEI  = (EI)getDataElement(2063);
		objEI.setEntityIdentifier(strEntityIdentifier);
		objEI.setNamespaceId(strNamespaceId);
		objEI.setUniversalId(strUniversalId);
		objEI.setUniversalIdType(strUniversalIdType);
		setInventoryLocationIdentifier(objEI);

	} 
	
	/** 
	 * Set the Inventory Location Identifier.
	 * This field contains the code identifying an inventory supply location that stocks or purchases this item.
	 * @param objInventoryLocationIdentifier Object of Inventory Location Identifier
	 */ 
	public void setInventoryLocationIdentifier(EI objInventoryLocationIdentifier)
	{
		setDataType(2063,objInventoryLocationIdentifier);

	}
	
	/**
	 * Set the Inventory Location Name.
	 * This field contains the name of the inventory supply location identified in IVT-2
	 * @param strInventoryLocationName Used as Inventory Location Name.
	 */ 
	public void setInventoryLocationName(String strInventoryLocationName) 
	{
		ST objST  = (ST)getDataElement(2277);
		objST.setValue(strInventoryLocationName); 
		setInventoryLocationName(objST);

	} 

	/** 
	 * Set the Inventory Location Name.
	 * This field contains the name of the inventory supply location identified in IVT-2
	 * @param objInventoryLocationName Object of Inventory Location Name.
	 */ 
	public void setInventoryLocationName(ST objInventoryLocationName)
	{
		setDataType(2277,objInventoryLocationName);

	}
	
	/**
	 * Set the Source Location Identifier.
	 * This field contains the code identifying the source location that purchases and stocks 
	 * items in addition to filling supply requests for the location specified in IVT-2, Inventory Location Identifier.
	 * @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 setSourceLocationIdentifier(String strEntityIdentifier,String strNamespaceId,String strUniversalId,
			String strUniversalIdType)
	{
		EI objEI  = (EI)getDataElement(2064);
		objEI.setEntityIdentifier(strEntityIdentifier);
		objEI.setNamespaceId(strNamespaceId);
		objEI.setUniversalId(strUniversalId);
		objEI.setUniversalIdType(strUniversalIdType);
		setSourceLocationIdentifier(objEI);

	} 
	
	/** 
	 * Set the Source Location Identifier.
	 * This field contains the code identifying the source location that purchases and stocks 
	 * items in addition to filling supply requests for the location specified in IVT-2, Inventory Location Identifier.
	 * @param objSourceLocationIdentifier Object of Source Location Identifier
	 */ 
	public void setSourceLocationIdentifier(EI objSourceLocationIdentifier)
	{
		setDataType(2064,objSourceLocationIdentifier);

	}
	
	/**
	 * Set the Source Location Name.
	 * This field contains the name of the source supply location identified in IVT-4, Source Location Identifier.
	 * @param strSourceLocationName Used as Source Location Name.
	 */ 
	public void setSourceLocationName(String strSourceLocationName) 
	{
		ST objST  = (ST)getDataElement(2278);
		objST.setValue(strSourceLocationName); 
		setSourceLocationName(objST);

	} 

	/** 
	 * Set the Source Location Name.
	 * This field contains the name of the source supply location identified in IVT-4, Source Location Identifier.
	 * @param objSourceLocationName Object of Source Location Name.
	 */ 
	public void setSourceLocationName(ST objSourceLocationName)
	{
		setDataType(2278,objSourceLocationName);

	}
	
	/**
	 * Set the Item Status.
	 * This field contains the status that applies to the inventory supply item for the inventory location specified in IVT-2.     
	 * @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 setItemStatus(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(2065);
		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); 
		setItemStatus(cwe);

	} 
	
	/** 
	 * Set the Item Status.
	 * This field contains the status that applies to the inventory supply item for the inventory location specified in IVT-2.   
	 * @param objItemStatus Object of Item Status.
	 */ 
	public void setItemStatus(CWE objItemStatus)
	{
		setDataType(2065,objItemStatus);

	}
	
	/**
	 * Adds the Bin Location Identifier.
	 * A unique code assigned to a bin location located within the inventory location in IVT-2, where the inventory supply item may be stored. 
	 * @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 addBinLocationIdentifier(String strEntityIdentifier,String strNamespaceId,String strUniversalId,
			String strUniversalIdType)
	{
		EI objEI  = (EI)getDataElement(2066);
		objEI.setEntityIdentifier(strEntityIdentifier);
		objEI.setNamespaceId(strNamespaceId);
		objEI.setUniversalId(strUniversalId);
		objEI.setUniversalIdType(strUniversalIdType);
		addBinLocationIdentifier(objEI);

	} 
	
	/** 
	 * Adds the Bin Location Identifier.
	 * A unique code assigned to a bin location located within the inventory location in IVT-2, where the inventory supply item may be stored. 
	 * @param objBinLocationIdentifier Object of Bin Location Identifier
	 */ 
	public void addBinLocationIdentifier(EI objBinLocationIdentifier)
	{
		setDataType(2066,objBinLocationIdentifier);

	}
	
	/**
	 * Set the Bin Location Identifier.
	 * A unique code assigned to a bin location located within the inventory location in IVT-2, where the inventory supply item may be stored. 
	 * @param objBinLocationIdentifierList List of Bin Location Identifier.
	 */	
	@SuppressWarnings("unchecked")
	public void setBinLocationIdentifier(ISingleCollection<EI> objBinLocationIdentifierList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objBinLocationIdentifierList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(2066,objCollection);
	}
	
	/**
	 * Set the Order Packaging.
	 * This field contains the primary packaging unit by which 
	 * the item can be requisitioned or ordered to replenish the inventory supply item for the corresponding inventory location specified in IVT-2.     
	 * @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 setOrderPackaging(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(2067);
		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); 
		setOrderPackaging(cwe);

	} 
	
	/** 
	 * Set the Order Packaging.
	 * This field contains the primary packaging unit by which 
	 * the item can be requisitioned or ordered to replenish the inventory supply item for the corresponding inventory location specified in IVT-2.    
	 * @param objOrderPackaging Object of Order Packaging.
	 */ 
	public void setOrderPackaging(CWE objOrderPackaging)
	{
		setDataType(2067,objOrderPackaging);

	}
	
	/**
	 * Set the Issue Packaging.
	 * This field contains the primary issue packaging unit by which the inventory supply 
	 * item can be issued to departments or other locations by the corresponding inventory location specified in IVT-2.     
	 * @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 setIssuePackaging(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(2068);
		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); 
		setIssuePackaging(cwe);

	} 
	
	/** 
	 * Set the Issue Packaging.
	 * This field contains the primary issue packaging unit by which the inventory supply 
	 * item can be issued to departments or other locations by the corresponding inventory location specified in IVT-2.    
	 * @param objIssuePackaging Object of Issue Packaging.
	 */ 
	public void setIssuePackaging(CWE objIssuePackaging)
	{
		setDataType(2068,objIssuePackaging);

	}
	
	/**
	 * Set the Default Inventory Asset Account.
	 * This field contains the general ledger number for the default inventory asset account 
	 * used in journal transactions associated with items stored in this inventory location. 
	 * @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 setDefaultInventoryAssetAccount(String strEntityIdentifier,String strNamespaceId,String strUniversalId,
			String strUniversalIdType)
	{
		EI objEI  = (EI)getDataElement(2069);
		objEI.setEntityIdentifier(strEntityIdentifier);
		objEI.setNamespaceId(strNamespaceId);
		objEI.setUniversalId(strUniversalId);
		objEI.setUniversalIdType(strUniversalIdType);
		setDefaultInventoryAssetAccount(objEI);

	} 
	
	/** 
	 * Set the Default Inventory Asset Account.
	 * This field contains the general ledger number for the default inventory asset account 
	 * used in journal transactions associated with items stored in this inventory location. 
	 * @param objDefaultInventoryAssetAccount Object of Default Inventory Asset Account
	 */ 
	public void setDefaultInventoryAssetAccount(EI objDefaultInventoryAssetAccount)
	{
		setDataType(2069,objDefaultInventoryAssetAccount);

	}
	
	/**
	 * Set the Patient Chargeable Indicator.
	 * This field indicates whether the item is patient chargeable at this inventory location. 
	 * @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 setPatientChargeableIndicator(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(2070);
		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); 
		setPatientChargeableIndicator(cne);

	} 

	/** 
	 * Set the Patient Chargeable Indicator.
	 * This field indicates whether the item is patient chargeable at this inventory location.      
	 * @param objPatientChargeableIndicator Object of Patient Chargeable Indicator. 
	 */ 
	public void setPatientChargeableIndicator(CNE objPatientChargeableIndicator)
	{
		setDataType(2070,objPatientChargeableIndicator);

	}
	
	/**
	 * Set the Transaction Code.
	 * This field contains a code that is used by a billing system to charge for 
	 * the inventory supply item, the descriptive name of the patient charge for that 
	 * system (as it may appear on a patient's bill or charge labels) and the name of the coding system that assigned the charge code.  
	 * @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 setTransactionCode(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(361);
		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); 
		setTransactionCode(cwe);

	} 
	
	/** 
	 * Set the Transaction Code.
	 * This field contains a code that is used by a billing system to charge for 
	 * the inventory supply item, the descriptive name of the patient charge for that 
	 * system (as it may appear on a patient's bill or charge labels) and the name of the coding system that assigned the charge code. 
	 * @param objTransactionCode Object of Transaction Code.
	 */ 
	public void setTransactionCode(CWE objTransactionCode)
	{
		setDataType(361,objTransactionCode);

	}
	
	/**
	 * Set the Transaction Amount - Unit.
	 * The price that a department charges to a patient for this inventory supply item when using the Patient Charge Billing code present in this segment.
	 * @param objPrice Specifies an amount of money and the denomination in which it is expressed.
	 * @param strPriceType Specifies a coded value, data type ID.[Refer to HL7 Table 0205]
	 * 						  Suggested Values AP,DC,IC,PF,TF,TP,UP. 
	 * @param strFromValue Specifies the "range" along with strToValue.  
	 * @param strToValue Specifies the "range" along with strFromValue.
	 * @param objRangeUnits Specifies This describes the units associated with the range, e.g., seconds, minutes
	 * @param strRangeType Refer to HL7 Table 0298 - CP range type for valid values.(P,F)
	 */ 
	public void setTransactionAmountUnit(MO objPrice,String strPriceType,
			String strFromValue,String strToValue,CWE objRangeUnits,String strRangeType)
	{
		CP objCP = (CP)getDataElement(366);
		objCP.setPrice(objPrice);
		objCP.setPriceType(strPriceType);
		objCP.setFromValue(strFromValue);
		objCP.setToValue(strToValue);
		objCP.setRangeUnits(objRangeUnits);
		objCP.setRangeType(strRangeType); 
		setTransactionAmountUnit(objCP);

	} 

	/** 
	 * Set the Transaction Amount - Unit.
	 * The price that a department charges to a patient for this inventory supply item when using the Patient Charge Billing code present in this segment.
	 * @param objTransactionAmountUnit Object of Transaction Amount - Unit
	 */ 
	public void setTransactionAmountUnit(CP objTransactionAmountUnit)
	{
		setDataType(366,objTransactionAmountUnit);

	}
	
	/**
	 * Set  the Item Importance Code.
	 * This field contains an indicator of the level of importance of an item considered for this inventory location, 
	 * such as an indicator signifying whether the item is considered critical for this inventory location.     
	 * @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 setItemImportanceCode(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(2073);
		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); 
		setItemImportanceCode(cwe);

	} 
	
	/** 
	 * Set  the Item Importance Code.
	 * This field contains an indicator of the level of importance of an item considered for this inventory location, 
	 * such as an indicator signifying whether the item is considered critical for this inventory location.   
	 * @param objItemImportanceCode Object of Item Importance Code.
	 */ 
	public void setItemImportanceCode(CWE objItemImportanceCode)
	{
		setDataType(2073,objItemImportanceCode);

	}
	
	/**
	 * Set the Stocked Item Indicator.
	 * This field contains an indicator that identifies whether the item is regularly stocked in this inventory location.  
	 * @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 setStockedItemIndicator(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(2074);
		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); 
		setStockedItemIndicator(cne);

	} 

	/** 
	 * Set the Stocked Item Indicator.
	 * This field contains an indicator that identifies whether the item is regularly stocked in this inventory location.    
	 * @param objStockedItemIndicator Object of Stocked Item Indicator. 
	 */ 
	public void setStockedItemIndicator(CNE objStockedItemIndicator)
	{
		setDataType(2074,objStockedItemIndicator);

	}
	
	
	/**
	 * Set the Consignment Item Indicator.
	 * This field contains an indicator signifying whether the inventory supply item is purchased on consignment.  
	 * @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 setConsignmentItemIndicator(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(2075);
		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); 
		setConsignmentItemIndicator(cne);

	} 

	/** 
	 * Set the Consignment Item Indicator.
	 * This field contains an indicator signifying whether the inventory supply item is purchased on consignment.    
	 * @param objConsignmentItemIndicator Object of Consignment Item Indicator. 
	 */ 
	public void setConsignmentItemIndicator(CNE objConsignmentItemIndicator)
	{
		setDataType(2075,objConsignmentItemIndicator);

	}
	
	/**
	 * Set the Reusable Item Indicator.
	 * This field contains an indicator signifying that the inventory supply item is reusable, for example, after sterilization.       
	 * @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 setReusableItemIndicator(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(2076);
		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); 
		setReusableItemIndicator(cne);

	} 

	/** 
	 * Set the Reusable Item Indicator.
	 * This field contains an indicator signifying that the inventory supply item is reusable, for example, after sterilization.      
	 * @param objConsignmentItemIndicator Object of Reusable Item Indicator. 
	 */ 
	public void setReusableItemIndicator(CNE objReusableItemIndicator)
	{
		setDataType(2076,objReusableItemIndicator);

	}
	
	/**
	 * Set the Reusable Cost.
	 * This field contains the issue cost charged to a department or patient for a reusable item.
	 * @param objPrice Specifies an amount of money and the denomination in which it is expressed.
	 * @param strPriceType Specifies a coded value, data type ID.[Refer to HL7 Table 0205]
	 * 						  Suggested Values AP,DC,IC,PF,TF,TP,UP. 
	 * @param strFromValue Specifies the "range" along with strToValue.  
	 * @param strToValue Specifies the "range" along with strFromValue.
	 * @param objRangeUnits Specifies This describes the units associated with the range, e.g., seconds, minutes
	 * @param strRangeType Refer to HL7 Table 0298 - CP range type for valid values.(P,F)
	 */ 
	public void setReusableCost(MO objPrice,String strPriceType,
			String strFromValue,String strToValue,CWE objRangeUnits,String strRangeType)
	{
		CP objCP = (CP)getDataElement(2077);
		objCP.setPrice(objPrice);
		objCP.setPriceType(strPriceType);
		objCP.setFromValue(strFromValue);
		objCP.setToValue(strToValue);
		objCP.setRangeUnits(objRangeUnits);
		objCP.setRangeType(strRangeType); 
		setReusableCost(objCP);

	} 

	/** 
	 * Set the Reusable Cost.
	 * This field contains the issue cost charged to a department or patient for a reusable item.
	 * @param objReusableCost Object of Reusable Cost
	 */ 
	public void setReusableCost(CP objReusableCost)
	{
		setDataType(2077,objReusableCost);

	}
	
	/**
	 * Adds the Substitute Item Identifier.
	 * The substitute item is an item that is recommended as a substitute for the corresponding item in ITM-1.
	 * @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 addSubstituteItemIdentifier(String strEntityIdentifier,String strNamespaceId,String strUniversalId,
			String strUniversalIdType)
	{
		EI objEI  = (EI)getDataElement(2078);
		objEI.setEntityIdentifier(strEntityIdentifier);
		objEI.setNamespaceId(strNamespaceId);
		objEI.setUniversalId(strUniversalId);
		objEI.setUniversalIdType(strUniversalIdType);
		addSubstituteItemIdentifier(objEI);

	} 
	
	/** 
	 * Adds the Substitute Item Identifier.
	 * The substitute item is an item that is recommended as a substitute for the corresponding item in ITM-1.
	 * @param objSubstituteItemIdentifier Object of Bin Location Identifier
	 */ 
	public void addSubstituteItemIdentifier(EI objSubstituteItemIdentifier)
	{
		setDataType(2078,objSubstituteItemIdentifier);

	}
	
	/**
	 * Set the Substitute Item Identifier.
	 * The substitute item is an item that is recommended as a substitute for the corresponding item in ITM-1.
	 * @param objSubstituteItemIdentifierList List of Substitute Item Identifier.
	 */	
	@SuppressWarnings("unchecked")
	public void setSubstituteItemIdentifier(ISingleCollection<EI> objSubstituteItemIdentifierList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objSubstituteItemIdentifierList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(2078,objCollection);
	}
	
	/**
	 * Set the Latex-Free Substitute Item Identifier.
	 * The latex-free substitute item is an item that is latex-free, recommended as a substitute for 
	 * the corresponding item in the ITM-1 segment when a latex-free item is needed.      
	 * @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 setLatexFreeSubstituteItemIdentifier(String strEntityIdentifier,String strNamespaceId,String strUniversalId,
			String strUniversalIdType)
	{
		EI objEI  = (EI)getDataElement(2079);
		objEI.setEntityIdentifier(strEntityIdentifier);
		objEI.setNamespaceId(strNamespaceId);
		objEI.setUniversalId(strUniversalId);
		objEI.setUniversalIdType(strUniversalIdType);
		setLatexFreeSubstituteItemIdentifier(objEI);

	} 
	
	/** 
	 * Set the Latex-Free Substitute Item Identifier.
	 * The latex-free substitute item is an item that is latex-free, recommended as a substitute for 
	 * the corresponding item in the ITM-1 segment when a latex-free item is needed.      
	 * @param objLatexFreeSubstituteItemIdentifier Object of Latex-Free Substitute Item Identifier
	 */ 
	public void setLatexFreeSubstituteItemIdentifier(EI objLatexFreeSubstituteItemIdentifier)
	{
		setDataType(2079,objLatexFreeSubstituteItemIdentifier);

	}
	
	/**
	 * Set  the Recommended Reorder Theory.
	 * This field contains the method used to calculate a recommendation for when and how much of an inventory supply item to reorder.
	 * @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 setRecommendedReorderTheory(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(2080);
		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); 
		setRecommendedReorderTheory(cwe);

	} 
	
	/** 
	 * Set the Recommended Reorder Theory.
	 * This field contains the method used to calculate a recommendation for when and how much of an inventory supply item to reorder.   
	 * @param objRecommendedReorderTheory Object of Recommended Reorder Theory.
	 */ 
	public void setRecommendedReorderTheory(CWE objRecommendedReorderTheory)
	{
		setDataType(2080,objRecommendedReorderTheory);

	}
	
	/**
	 * Set the Recommended Safety Stock Days.
	 * This field contains the number of days for stock to be kept on-hand to cushion against a stock-out for this item. 
	 * @param strRecommendedSafetyStockDays Use as Recommended Safety Stock Days.
	 */ 
	public void setRecommendedSafetyStockDays(String strRecommendedSafetyStockDays) 
	{
		NM objNM  = (NM)getDataElement(2081);
		objNM.setValue(strRecommendedSafetyStockDays); 
		setRecommendedSafetyStockDays(objNM);

	} 

	/** 
	 * Set the Recommended Safety Stock Days.
	 * This field contains the number of days for stock to be kept on-hand to cushion against a stock-out for this item. 
	 * @param objRecommendedSafetyStockDays Use as Recommended Safety Stock Days.
	 */ 
	public void setRecommendedSafetyStockDays(NM objRecommendedSafetyStockDays)
	{
		setDataType(2081,objRecommendedSafetyStockDays);

	}
	
	/**
	 * Set the Recommended Maximum Days Inventory.
	 * This field contains the maximum number of days of inventory to have on-hand at any one point in time. 
	 * @param strRecommendedMaximumDaysInventory Use as Recommended Maximum Days Inventory.
	 */ 
	public void setRecommendedMaximumDaysInventory(String strRecommendedMaximumDaysInventory) 
	{
		NM objNM  = (NM)getDataElement(2082);
		objNM.setValue(strRecommendedMaximumDaysInventory); 
		setRecommendedMaximumDaysInventory(objNM);

	} 

	/** 
	 * Set the Recommended Maximum Days Inventory.
	 * This field contains the maximum number of days of inventory to have on-hand at any one point in time.
	 * @param objRecommendedMaximumDaysInventory Use as Recommended Maximum Days Inventory.
	 */ 
	public void setRecommendedMaximumDaysInventory(NM objRecommendedMaximumDaysInventory)
	{
		setDataType(2082,objRecommendedMaximumDaysInventory);

	}
	
	/**
	 * Set the Recommended Order Point.
	 * This field contains the on-hand quantity referencing the recommended level of inventory at which the item should be re-ordered. 
	 * @param strRecommendedOrderPoint Use as Recommended Order Point.
	 */ 
	public void setRecommendedOrderPoint(String strRecommendedOrderPoint) 
	{
		NM objNM  = (NM)getDataElement(2083);
		objNM.setValue(strRecommendedOrderPoint); 
		setRecommendedOrderPoint(objNM);

	} 

	/** 
	 * Set the Recommended Order Point.
	 * This field contains the on-hand quantity referencing the recommended level of inventory at which the item should be re-ordered.
	 * @param objRecommendedOrderPoint Use as Recommended Order Point.
	 */ 
	public void setRecommendedOrderPoint(NM objRecommendedOrderPoint)
	{
		setDataType(2083,objRecommendedOrderPoint);

	}
	
	/**
	 * Set the Recommended Order Amount.
	 * This field contains the quantity that the system should recommend to order when the on-hand quantity is equal to or less than the reorder point.  
	 * @param strRecommendedOrderAmount Use as Recommended Order Amount.
	 */ 
	public void setRecommendedOrderAmount(String strRecommendedOrderAmount) 
	{
		NM objNM  = (NM)getDataElement(2084);
		objNM.setValue(strRecommendedOrderAmount); 
		setRecommendedOrderAmount(objNM);

	} 

	/** 
	 * Set the Recommended Order Amount.
	 * This field contains the quantity that the system should recommend to order when the on-hand quantity is equal to or less than the reorder point.  
	 * @param objRecommendedOrderAmount Use as Recommended Order Amount.
	 */ 
	public void setRecommendedOrderAmount(NM objRecommendedOrderAmount)
	{
		setDataType(2084,objRecommendedOrderAmount);

	}
	
	/**
	 * Set the Operating Room Par Level Indicator.
	 * This field contains an indicator that determines whether on-hands inventory will be decremented when performing Preference List Issues. 
	 * @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 setOperatingRoomParLevelIndicator(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(2085);
		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); 
		setOperatingRoomParLevelIndicator(cne);

	} 

	/** 
	 * Set the Operating Room Par Level Indicator.
	 * This field contains an indicator that determines whether on-hands inventory will be decremented when performing Preference List Issues.    
	 * @param objOperatingRoomParLevelIndicator Object of Operating Room Par Level Indicator. 
	 */ 
	public void setOperatingRoomParLevelIndicator(CNE objOperatingRoomParLevelIndicator)
	{
		setDataType(2085,objOperatingRoomParLevelIndicator);

	}
	
	/**
	 * 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 If Segment Validation fails 
	 */
	@Override
	public boolean validate() throws InvalidSegmentException 
	{
		try
		{
			/*
			 * Item Identifier is required fields of this segment.
			 */
			super.validate();

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

