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

import cdac.medinfo.sdk.hl7282.baselibs.CWE;
import cdac.medinfo.sdk.hl7282.baselibs.DTM;
import cdac.medinfo.sdk.hl7282.baselibs.EI;
import cdac.medinfo.sdk.hl7282.baselibs.FN;
import cdac.medinfo.sdk.hl7282.baselibs.HD;
import cdac.medinfo.sdk.hl7282.baselibs.ID;
import cdac.medinfo.sdk.hl7282.baselibs.PPN;
import cdac.medinfo.sdk.hl7282.baselibs.SI;
import cdac.medinfo.sdk.hl7282.baselibs.ST;
import cdac.medinfo.sdk.hl7282.baselibs.XCN;
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;

/**
 * TXA - Transcription Document Header Segment.<p>
 * The TXA segment contains information specific to a transcribed document but does not include the text of the 
 * document.  The message is created as a result of a document status change.  This information updates other 
 * health care systems and allows them to identify reports that are available in the transcription system. 
 * <p>Represents an HL7 TXA message segment. 
 * This segment has the following fields:</p><p>
 * TXA-1: Set ID- TXA (SI)<b>Required</b><br> 
 * TXA-2: Document Type (CWE)<b>Required</b><br> 
 * TXA-3: Document Content Presentation (ID)<b>Conditional</b><br> 
 * TXA-4: Activity Date/Time (DTM)<b>Optional</b><br> 
 * TXA-5: Primary Activity Provider Code/Name (XCN)<b>Conditional</b><br> 
 * TXA-6: Origination Date/Time (DTM)<b>Optional</b><br> 
 * TXA-7: Transcription Date/Time (DTM)<b>Conditional</b><br> 
 * TXA-8: Edit Date/Time (DTM)<b>Optional</b><br> 
 * TXA-9: Originator Code/Name (XCN)<b>Optional</b><br> 
 * TXA-10: Assigned Document Authenticator (XCN)<b>Optional</b><br> 
 * TXA-11: Transcriptionist Code/Name (XCN)<b>Conditional</b><br> 
 * TXA-12: Unique Document Number (EI)<b>Required</b><br> 
 * TXA-13: Parent Document Number (EI)<b>Conditional</b><br> 
 * TXA-14: Placer Order Number (EI)<b>Optional</b><br> 
 * TXA-15: Filler Order Number (EI)<b>Optional</b><br> 
 * TXA-16: Unique Document File Name (ST)<b>Optional</b><br> 
 * TXA-17: Document Completion Status (ID)<b>Required</b><br> 
 * TXA-18: Document Confidentiality Status (ID)<b>Optional</b><br> 
 * TXA-19: Document Availability Status (ID)<b>Optional</b><br> 
 * TXA-20: Document Storage Status (ID)<b>Optional</b><br> 
 * TXA-21: Document Change Reason (ST)<b>Optional</b><br> 
 * TXA-22: Authentication Person, Time Stamp (PPN)<b>Conditional</b><br> 
 * TXA-23: Distributed Copies (Code and Name of Recipients) (XCN)<b>Optional</b><br></p>
 * TXA-24: Folder Assignment (CWE)<b>Optional</b><br> 
 * TXA-25: Document Title (ST)<b>Optional</b><br> 
 * TXA-26: Agreed Due Date/Time (DTM)<b>Optional</b><br></p>
 * This class provides mechanism to validate message against HL7 v 2.8.2 standard.
 * The class provides accessors & mutators for the elements mentioned above.
 * The class has validate method which validates Message against HL7 v 2.8.2 standard.
 *
 * <p>User can also create Segment through {@link SegmentFactory}
 */
 public class TXA extends Segment   
{
	

	/**
	 * Constucts the TXA segment.
	 */
	public TXA()
	{
		super(EnumSegments.HL7_SEG_TXA);
	}

	/**
	 * Retrieves the Set ID-TXA.
	 * This field specifies the number that uniquely identifies this transaction for the purpose of adding, changing, or deleting the transaction.
	 * @return SI - setID_TXA
	 */
	public SI getSetID_TXA() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(914);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (SI)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Document Type. 
	 * This field identifies the type of document (as defined in the transcription system).
	 * @return CWE - documentType
	 */
	public CWE getDocumentType() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(915);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}
	
	
	/**
	 * Retrieves the Document Content Presentation.
	 * This field identifies the method by which this document was obtained or originated.
	 * @return ID - documentContentPresentation
	 */
	public ID getDocumentContentPresentation() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(916);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Activity Date Time.
	 * This field specify the date/time identified in the document as the date a procedure or activity is performed.
	 * @return DTM - activityDateTime
	 */
	public DTM getActivityDateTime() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(917);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Primary Activity Provider Code Name.
	 * This field specify the name of the person identified in the document as being responsible for performing the procedure or activity.
	 * @return ISingleCollection<XCN> - primaryActivityProviderCodeName
	 */
	public ISingleCollection<XCN> getPrimaryActivityProviderCodeName() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(918);
		ISingleCollection<XCN> objDataList = new SingleCollection<XCN>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				XCN objXCN = (XCN)objDataType;
				objDataList.add(objXCN);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Origination Date Time.
	 * This field contains the date and time the document was created (i.e., dictated, recorded, etc.).
	 * @return DTM - originationDateTime
	 */
	public DTM getOriginationDateTime() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(919);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Transcription Date Time.
	 * This field contains the date and time the input was actually transcribed.
	 * @return DTM - transcriptionDateTime
	 */
	public DTM getTranscriptionDateTime() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(920);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Edit Date Time.
	 * This field contains the date and time the document was edited.
	 * @return ISingleCollection<DTM> - editDateTime
	 */
	public ISingleCollection<DTM> getEditDateTime() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(921);
		ISingleCollection<DTM> objDataList = new SingleCollection<DTM>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				DTM objDTM = (DTM)objDataType;
				objDataList.add(objDTM);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Originator Code Name.
	 * This field identifies the person who originated (i.e., dictated) the document.
	 * @return ISingleCollection<XCN> - originatorCodeName
	 */
	public ISingleCollection<XCN> getOriginatorCodeName() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(922);
		ISingleCollection<XCN> objDataList = new SingleCollection<XCN>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				XCN objXCN = (XCN)objDataType;
				objDataList.add(objXCN);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Assigned Document Authenticator.
	 * This field identifies the person(s) responsible for authenticating the document, who may differ from the originator.
	 * @return ISingleCollection<XCN> - assignedDocumentAuthenticator
	 */
	public ISingleCollection<XCN> getAssignedDocumentAuthenticator() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(923);
		ISingleCollection<XCN> objDataList = new SingleCollection<XCN>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				XCN objXCN = (XCN)objDataType;
				objDataList.add(objXCN);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Transcriptionist Code Name.
	 * This field identifies the person transcribing the document.
	 * @return ISingleCollection<XCN> - transcriptionistCodeName
	 */
	public ISingleCollection<XCN> getTranscriptionistCodeName() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(924);
		ISingleCollection<XCN> objDataList = new SingleCollection<XCN>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				XCN objXCN = (XCN)objDataType;
				objDataList.add(objXCN);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Unique Document Number.
	 * This field contains a unique document identification number assigned by the sending system.
	 * @return EI - uniqueDocumentNumber
	 */
	public EI getUniqueDocumentNumber() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(925);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (EI)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Parent Document Number.
	 * This field contains a document number that identifies the parent document to which this document belongs.
	 * @return EI - parentDocumentNumber
	 */
	public EI getParentDocumentNumber() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(926);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (EI)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Placer Order Number.
	 * This field specifies the placer application's order number.
	 * @return ISingleCollection<EI> - placerOrderNumber
	 */
	public ISingleCollection<EI> getPlacerOrderNumber() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(216);
		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 Filler Order Number.
	 * This field specifies the order number associated with the filling application. 
	 * @return EI - fillerOrderNumber
	 */
	public EI getFillerOrderNumber() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(217);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (EI)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Unique Document File Name.
	 * This field contains a unique name assigned to a document by the sending system.
	 * @return ST - uniqueDocumentFileName
	 */
	public ST getUniqueDocumentFileName() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(927);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ST)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Document Completion Status.
	 * This field identifies the current completion state of the document.
	 * @return ID - documentCompletionStatus
	 */
	public ID getDocumentCompletionStatus() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(928);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Document Confidentiality Status.
	 * This field specifies the degree to which special confidentiality protection should be applied to this information.
	 * @return ID - documentConfidentialityStatus
	 */
	public ID getDocumentConfidentialityStatus() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(929);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Document Availability Status.
	 * This field identifies a document's availability for use in patient care.
	 * @return ID - documentAvailabilityStatus
	 */
	public ID getDocumentAvailabilityStatus() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(930);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Document Storage Status.
	 * This field identifies the storage status of the document.
	 * @return ID - documentStorageStatus
	 */
	public ID getDocumentStorageStatus() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(932);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Document Change Reason.
	 * This field contains the reason for document status change.
	 * @return ST - documentChangeReason
	 */
	public ST getDocumentChangeReason() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(933);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ST)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Authentication Person Time Stamp.
	 * This field contains a set of components describing by whom and when authentication was performed (either manually or electronically).
	 * @return ISingleCollection<PPN> - authenticationPersonTimeStamp
	 */
	public ISingleCollection<PPN> getAuthenticationPersonTimeStamp() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(934);
		ISingleCollection<PPN> objDataList = new SingleCollection<PPN>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				PPN objPPN = (PPN)objDataType;
				objDataList.add(objPPN);
			}
		}
		return objDataList;
	}

	/**
	 * Retrieves the Distributed Copies.
	 * This field identifies the persons who received a copy of this document.
	 * @return ISingleCollection<XCN> - distributedCopies
	 */
	public ISingleCollection<XCN> getDistributedCopies() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(935);
		ISingleCollection<XCN> objDataList = new SingleCollection<XCN>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				XCN objXCN = (XCN)objDataType;
				objDataList.add(objXCN);
			}
		}
		return objDataList;
	}
	
	/**
	 * Retrieves the Folder Assignment.
	 * This field is used to assign documents to folders.
	 * @return ISingleCollection<CWE> - folderAssignment
	 */
	public ISingleCollection<CWE> getFolderAssignment() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(2378);
		ISingleCollection<CWE> objDataList = new SingleCollection<CWE>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				CWE objCWE = (CWE)objDataType;
				objDataList.add(objCWE);
			}
		}
		return objDataList;
	}
	
	/**
	 * Retrieves the Document Title.
	 * This field identifies the document title.
	 * @return ISingleCollection<ST> - documentTitle
	 */
	public ISingleCollection<ST> getDocumentTitle() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(3301);
		ISingleCollection<ST> objDataList = new SingleCollection<ST>(); 
		if(objDataCollection != null && objDataCollection.size() != 0)
		{
			for(IDataType objDataType : objDataCollection)
			{
				ST objST = (ST)objDataType;
				objDataList.add(objST);
			}
		}
		return objDataList;
	}
	
	/**
	 * Retrieves the Agreed Due Date/Time.
	 * This field contains the date and time the document is or will be due back to the original author or dictator from the transcriptionist.
	 * @return DTM - agreedDueDateTime
	 */
	public DTM getAgreedDueDateTime() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(3302);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Set the Set ID-TXA.
	 * This field specifies the number that uniquely identifies this transaction for the purpose of adding, changing, or deleting the transaction.
	 * @param strSetID_TXA specifies setID_TXA. 
	 */ 
	public void setSetID_TXA (String strSetID_TXA) 
	{
		SI setID_TXA  = (SI)getDataElement(914);
		setID_TXA.setValue(strSetID_TXA); 
		setSetID_TXA (setID_TXA);

	} 

	/** Set the Set ID-TXA.
	 * This field specify the number that uniquely identifies this transaction for the purpose of adding, changing, or deleting the transaction.
	 * @param objsetID_TXA specifies setID_TXA. 
	 */ 
	public void setSetID_TXA(SI objsetID_TXA)
	{
		setDataType(914,objsetID_TXA);

	}


	/**
	 * Set the Document Type.
	 * This field identifies the type of document (as defined in the transcription system).
	 * @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 setDocumentType  (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(915);
		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);
		setDocumentType(cwe);
	} 

	/**
	 * Set the Document Type.
	 * This field identifies the type of document (as defined in the transcription system).
	 * @param objDocumentType Object of Document Type.
	 */ 
	public void setDocumentType (CWE objDocumentType)
	{
		setDataType(915,objDocumentType);
	}
	

	/**
	 * Set the Document Content Presentation.
	 * This field identifies the method by which this document was obtained or originated.  
	 * @param strDocumentContentPresentation specifies Document Content Presentation.
	 */
	public void setDocumentContentPresentation(String strDocumentContentPresentation) 
	{
		/*
		 * In the document, the maximum length is specififed as 2 in the segment table. But in the suggested values table 191
		 * for this field, the maximum length value "multipart" has length 9. So we are creating this object with length 9
		 * instead of 2. 
		 */
		ID documentContentPresentation  = (ID)getDataElement(916);
		documentContentPresentation.setValue(strDocumentContentPresentation);
		setDocumentContentPresentation(documentContentPresentation);
	}

	/**
	 * Set the Document Content Presentation.
	 * This field identifies the method by which this document was obtained or originated.     
	 * @param documentContentPresentation Use as Document Content Presentation.
	 */
	public void setDocumentContentPresentation(ID documentContentPresentation) 
	{
		/*
		 * In the document, the maximum length is specififed as 2 in the segment table. But in the suggested values table 191
		 * for this field, the maximum length value "multipart" has length 9. So we are creating this object with length 9
		 * instead of 2. 
		 */
		setDataType(916, documentContentPresentation);
	}
	
	
	/**
	 * Set the Activity Date/Time.
	 * This field contains the date/time identified in the document as the date a procedure or activity was performed.
	 * @param strTime Specifies a point in time using a 24-hour clock notation.	 * 
	 */ 
	public void setActivityDateTime (String strTime)
	{
		DTM activityDateTime  = (DTM)getDataElement(917);
		activityDateTime.setValue(strTime);		 
		setActivityDateTime(activityDateTime);
	} 

	/** 
	 * Set the Activity Date/Time.
	 * This field contains the date/time identified in the document as the date a procedure or activity was performed.
	 * @param objActivityDateTime Object of Activity Date/Time.
	 */ 
	public void setActivityDateTime(DTM objActivityDateTime)
	{
		setDataType(917,objActivityDateTime);

	}
	
	
   /**
     * Set Primary Activity Provide Code/Name
     * This field specify the name of the person identified in the document as being responsible for performing the procedure or activity.  
     * @param strIDNumber Refers to the coded ID according to a user-defined table
	 * @param objFamilyName Specifies the surname of a person.
	 * @param strGivenName Specifies First name.
	 * @param strSecondAndFurtherGivenNamesOrInitialsThereof Specifies multiple middle names that may be included by 
	 * 														   separating them with spaces.
	 * @param strSuffix Used to specify a name suffix (e.g., Jr. or III).
	 * @param strPrefix Used to specify a name prefix (e.g., Dr.).
	 * @param objSourceTable Used as the HL7 identifier for the user-defined table of values for this component. [Refer User-defined Table 0297 - CN ID.]
	 * @param objAssigningAuthority Specifies a unique identifier of the system (or organization or agency of department)
	 * 								  that creates the data. [Refer User-defined Table 0363 - Assigning authority]
	 * @param strNameTypeCode Specifies a code that represents the type of name. 
	 * @param strIdentifierCheckDigit Specifies part of the identifying number used in the sending application. 
	 * @param strCheckDigitScheme Specifies the code identifying the check digit scheme employed.[Refer HL7 Table 0061 - Check digit scheme].
	 * @param strIdentifierTypeCode Specifies A code corresponding to the type of identifier.[Refer HL7 Table 0203 - Identifier type].
	 * @param objAssigningFacility Specifies the place or location identifier where the identifier was first assigned to the person
	 * @param strNameRepresentationCode Provides an indication of the representation provided by the data item.  
	 * @param objNameContext Designates the context in which a name is used. [Refer User-defined Table 0448 ]
	 * @param strNameAssemblyOrder Specifies a code that represents the preferred display order of the components of this person name. Suggested values are G,F[Refer table 0444.]
	 * @param strEffectiveDate Specifies the first date, if known, on which the address is valid and active.
	 * @param strExpirationDate Specifies the last date, if known, on which the address is valid and active.
	 * @param strProfessionalSuffix Used to specify an abbreviation, or a string of abbreviations, denoting qualifications that support the person's profession, (e.g., licenses).
	 * @param objAssigningJurisdiction Specifies the geo-political body that assigned the identifier.
	 * @param objAssigningAgencyOrDepratment Specifies the agency or department that assigned the identifier
	 * @param strSecurityCheck Specifies the version code that may be assigned to the person identifier
	 * @param strSecurityCheckScheme Specifies the check digit scheme.
	 */ 
	public void setPrimaryActivityProviderCodeName (String strIDNumber,FN objFamilyName,String strGivenName,String strSecondAndFurtherGivenNamesOrInitialsThereof,
			String 	strSuffix,String strPrefix,CWE objSourceTable,HD objAssigningAuthority,
			String strNameTypeCode,String strIdentifierCheckDigit,String strCheckDigitScheme,String strIdentifierTypeCode,
			HD objAssigningFacility,String strNameRepresentationCode,CWE objNameContext,
			String strNameAssemblyOrder, String strEffectiveDate,String strExpirationDate,String strProfessionalSuffix,
			CWE objAssigningJurisdiction,CWE objAssigningAgencyOrDepratment, String strSecurityCheck, String strSecurityCheckScheme)
	{
		XCN xcn  = (XCN)getDataElement(918);
		xcn.setIdNumber(strIDNumber);
		xcn.setFamilyName(objFamilyName);
		xcn.setGivenName(strGivenName);
		xcn.setSecondNameOrInitials(strSecondAndFurtherGivenNamesOrInitialsThereof);
		xcn.setSuffix(strSuffix);
		xcn.setPrefix(strPrefix);
 
		xcn.setSourceTable(objSourceTable);
		xcn.setAssigningAuthority(objAssigningAuthority);
		xcn.setNameTypeCode(strNameTypeCode);
		xcn.setIdentifierCheckDigit(strIdentifierCheckDigit);
		xcn.setCheckDigitScheme(strCheckDigitScheme);
		xcn.setIdentifierTypeCode(strIdentifierTypeCode);
		xcn.setAssigningFacility(objAssigningFacility);
		xcn.setNameRepresentationCode(strNameRepresentationCode);
		xcn.setNameContext(objNameContext);
 
		xcn.setNameAssemblyOrder(strNameAssemblyOrder);
		xcn.setEffectiveDate(strEffectiveDate);
		xcn.setExpirationDate(strExpirationDate);
		xcn.setProfessionalSuffix(strProfessionalSuffix);
		xcn.setAssigningJurisdiction(objAssigningJurisdiction);
		xcn.setAssigningAgencyOrDepartment(objAssigningAgencyOrDepratment); 
		xcn.setSecurityCheck(strSecurityCheck);
		xcn.setSecurityCheckScheme(strSecurityCheckScheme);
		addPrimaryActivityProviderCodeName(xcn);

	} 

	/**
	 * Set the Primary Activity Provider Code Name.
	 * This field specify the name of the person identified in the document as being responsible for performing the procedure or activity.  
	 * @param objtempPrimaryActivityProviderCodeName Primary Activity Provider Code Name
	 */ 
	public void addPrimaryActivityProviderCodeName(XCN objtempPrimaryActivityProviderCodeName)
	{
		addDataType(918,objtempPrimaryActivityProviderCodeName);

	}

	/**
	 * Set the PrimaryActivityProviderCodeName
	 * This field specify the name of the person identified in the document as being responsible for performing the procedure or activity. 
	 * @param objPrimaryActivityProviderCodeNameList List of PrimaryActivityProviderCodeName
	 */
	@SuppressWarnings("unchecked")
	public void setPrimaryActivityProviderCodeName(ISingleCollection<XCN> objPrimaryActivityProviderCodeNameList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objPrimaryActivityProviderCodeNameList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(918,objCollection);
	}
	
	/**
	 * Set the Origination Date/Time.
	 * This field contains the date/time the document was created(i.e dictated ,recorded etc.)
	 * @param strTime Specifies a point in time using a 24-hour clock notation.	 * 
	 */ 
	public void setOriginationDateTime (String strTime)
	{
		DTM originationDateTime  = (DTM)getDataElement(919);
		originationDateTime.setValue(strTime);		 
		setOriginationDateTime(originationDateTime);
	} 

	/** 
	 * Set the Origination Date/Time.
	 * This field contains the date/time the document was created(i.e dictated ,recorded etc.)
	 * @param objOrginationDateTime Object of Origination Date/Time.
	 */ 
	public void setOriginationDateTime(DTM objOriginationDateTime)
	{
		setDataType(919,objOriginationDateTime);

	}
	
	/**
	 * Set the Transcription Date/Time.
	 * This field contains the date and time the input was actually transcribed.
	 * @param strTime Specifies a point in time using a 24-hour clock notation.	 * 
	 */ 
	public void setTranscriptionDateTime (String strTime)
	{
		DTM transcriptionDateTime  = (DTM)getDataElement(920);
		transcriptionDateTime.setValue(strTime);		 
		setTranscriptionDateTime(transcriptionDateTime);
	} 

	/** 
	 * Set the Transcription Date/Time.
	 * This field contains the date and time the input was actually transcribed.
	 * @param objTranscriptionDateTime Object of Transcription Date/Time.
	 */ 
	public void setTranscriptionDateTime(DTM objTranscriptionDateTime)
	{
		setDataType(920,objTranscriptionDateTime);

	}

	
	/**
	 * Set the Edit Date/Time.
	 * This field contains the date and time the input was actually transcribed.
	 * @param strTime Specifies a point in time using a 24-hour clock notation.	 * 
	 */ 
	public void addEditDateTime (String strTime)
	{
		DTM editDateTime  = (DTM)getDataElement(921);
		editDateTime.setValue(strTime);		 
		addEditDateTime(editDateTime);
	} 

	/** 
	 * Set the Edit Date/Time.
	 * This field contains the date and time the input was actually transcribed.
	 * @param objEditDateTime Object of Edit Date/Time.
	 */ 
	public void addEditDateTime(DTM objEditDateTime)
	{
		setDataType(921,objEditDateTime);

	}

	/**
	 * Set the Edit Date/Time.
	 * @param objEditDateTimeList List of Edit DateTime
	 */
	@SuppressWarnings("unchecked")
	public void setEditDateTime(ISingleCollection<DTM> objEditDateTimeList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objEditDateTimeList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(921,objCollection);
	}
	
	/**
     * Set Originator Code/Name
     * This field specify the name of the person identified in the document as being responsible for performing the procedure or activity.  
     * @param strIDNumber Refers to the coded ID according to a user-defined table
	 * @param objFamilyName Specifies the surname of a person.
	 * @param strGivenName Specifies First name.
	 * @param strSecondAndFurtherGivenNamesOrInitialsThereof Specifies multiple middle names that may be included by 
	 * 														   separating them with spaces.
	 * @param strSuffix Used to specify a name suffix (e.g., Jr. or III).
	 * @param strPrefix Used to specify a name prefix (e.g., Dr.).
	 * @param objSourceTable Used as the HL7 identifier for the user-defined table of values for this component. [Refer User-defined Table 0297 - CN ID.]
	 * @param objAssigningAuthority Specifies a unique identifier of the system (or organization or agency of department)
	 * 								  that creates the data. [Refer User-defined Table 0363 - Assigning authority]
	 * @param strNameTypeCode Specifies a code that represents the type of name. 
	 * @param strIdentifierCheckDigit Specifies part of the identifying number used in the sending application. 
	 * @param strCheckDigitScheme Specifies the code identifying the check digit scheme employed.[Refer HL7 Table 0061 - Check digit scheme].
	 * @param strIdentifierTypeCode Specifies A code corresponding to the type of identifier.[Refer HL7 Table 0203 - Identifier type].
	 * @param objAssigningFacility Specifies the place or location identifier where the identifier was first assigned to the person
	 * @param strNameRepresentationCode Provides an indication of the representation provided by the data item.  
	 * @param objNameContext Designates the context in which a name is used. [Refer User-defined Table 0448 ]
	 * @param strNameAssemblyOrder Specifies a code that represents the preferred display order of the components of this person name. Suggested values are G,F[Refer table 0444.]
	 * @param strEffectiveDate Specifies the first date, if known, on which the address is valid and active.
	 * @param strExpirationDate Specifies the last date, if known, on which the address is valid and active.
	 * @param strProfessionalSuffix Used to specify an abbreviation, or a string of abbreviations, denoting qualifications that support the person's profession, (e.g., licenses).
	 * @param objAssigningJurisdiction Specifies the geo-political body that assigned the identifier.
	 * @param objAssigningAgencyOrDepratment Specifies the agency or department that assigned the identifier
	 * @param strSecurityCheck Specifies the version code that may be assigned to the person identifier
	 * @param strSecurityCheckScheme Specifies the check digit scheme.
	 */ 
	public void addOriginatorCodeName (String strIDNumber,FN objFamilyName,String strGivenName,String strSecondAndFurtherGivenNamesOrInitialsThereof,
			String 	strSuffix,String strPrefix,CWE objSourceTable,HD objAssigningAuthority,
			String strNameTypeCode,String strIdentifierCheckDigit,String strCheckDigitScheme,String strIdentifierTypeCode,
			HD objAssigningFacility,String strNameRepresentationCode,CWE objNameContext,
			String strNameAssemblyOrder, String strEffectiveDate,String strExpirationDate,String strProfessionalSuffix,
			CWE objAssigningJurisdiction,CWE objAssigningAgencyOrDepratment, String strSecurityCheck, String strSecurityCheckScheme)
	{
		XCN xcn  = (XCN)getDataElement(922);
		xcn.setIdNumber(strIDNumber);
		xcn.setFamilyName(objFamilyName);
		xcn.setGivenName(strGivenName);
		xcn.setSecondNameOrInitials(strSecondAndFurtherGivenNamesOrInitialsThereof);
		xcn.setSuffix(strSuffix);
		xcn.setPrefix(strPrefix);
 
		xcn.setSourceTable(objSourceTable);
		xcn.setAssigningAuthority(objAssigningAuthority);
		xcn.setNameTypeCode(strNameTypeCode);
		xcn.setIdentifierCheckDigit(strIdentifierCheckDigit);
		xcn.setCheckDigitScheme(strCheckDigitScheme);
		xcn.setIdentifierTypeCode(strIdentifierTypeCode);
		xcn.setAssigningFacility(objAssigningFacility);
		xcn.setNameRepresentationCode(strNameRepresentationCode);
		xcn.setNameContext(objNameContext);
 
		xcn.setNameAssemblyOrder(strNameAssemblyOrder);
		xcn.setEffectiveDate(strEffectiveDate);
		xcn.setExpirationDate(strExpirationDate);
		xcn.setProfessionalSuffix(strProfessionalSuffix);
		xcn.setAssigningJurisdiction(objAssigningJurisdiction);
		xcn.setAssigningAgencyOrDepartment(objAssigningAgencyOrDepratment); 
		xcn.setSecurityCheck(strSecurityCheck);
		xcn.setSecurityCheckScheme(strSecurityCheckScheme);
		addOriginatorCodeName(xcn);

	} 

	/**
	 * Set the Originator Code Name.
	 * This field specify the name of the person identified in the document as being responsible for performing the procedure or activity.  
	 * @param objOriginatorCodeName Object of Originator Code Name
	 */ 
	public void addOriginatorCodeName(XCN objOriginatorCodeName)
	{
		addDataType(922,objOriginatorCodeName);

	}

	/**
	 * Set the OriginatorCodeName
	 * This field specify the name of the person identified in the document as being responsible for performing the procedure or activity. 
	 * @param objOriginatorCodeNameList List of Originator CodeName
	 */
	@SuppressWarnings("unchecked")
	public void setOriginatorCodeName(ISingleCollection<XCN> objOriginatorCodeNameList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objOriginatorCodeNameList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(922,objCollection);
	}
	
	/**
     * Set Assigned Document Authenticator
     * This field specify the name of the person identified in the document as being responsible for performing the procedure or activity.  
     * @param strIDNumber Refers to the coded ID according to a user-defined table
	 * @param objFamilyName Specifies the surname of a person.
	 * @param strGivenName Specifies First name.
	 * @param strSecondAndFurtherGivenNamesOrInitialsThereof Specifies multiple middle names that may be included by 
	 * 														   separating them with spaces.
	 * @param strSuffix Used to specify a name suffix (e.g., Jr. or III).
	 * @param strPrefix Used to specify a name prefix (e.g., Dr.).
	 * @param objSourceTable Used as the HL7 identifier for the user-defined table of values for this component. [Refer User-defined Table 0297 - CN ID.]
	 * @param objAssigningAuthority Specifies a unique identifier of the system (or organization or agency of department)
	 * 								  that creates the data. [Refer User-defined Table 0363 - Assigning authority]
	 * @param strNameTypeCode Specifies a code that represents the type of name. 
	 * @param strIdentifierCheckDigit Specifies part of the identifying number used in the sending application. 
	 * @param strCheckDigitScheme Specifies the code identifying the check digit scheme employed.[Refer HL7 Table 0061 - Check digit scheme].
	 * @param strIdentifierTypeCode Specifies A code corresponding to the type of identifier.[Refer HL7 Table 0203 - Identifier type].
	 * @param objAssigningFacility Specifies the place or location identifier where the identifier was first assigned to the person
	 * @param strNameRepresentationCode Provides an indication of the representation provided by the data item.  
	 * @param objNameContext Designates the context in which a name is used. [Refer User-defined Table 0448 ]
	 * @param strNameAssemblyOrder Specifies a code that represents the preferred display order of the components of this person name. Suggested values are G,F[Refer table 0444.]
	 * @param strEffectiveDate Specifies the first date, if known, on which the address is valid and active.
	 * @param strExpirationDate Specifies the last date, if known, on which the address is valid and active.
	 * @param strProfessionalSuffix Used to specify an abbreviation, or a string of abbreviations, denoting qualifications that support the person's profession, (e.g., licenses).
	 * @param objAssigningJurisdiction Specifies the geo-political body that assigned the identifier.
	 * @param objAssigningAgencyOrDepratment Specifies the agency or department that assigned the identifier
	 * @param strSecurityCheck Specifies the version code that may be assigned to the person identifier
	 * @param strSecurityCheckScheme Specifies the check digit scheme.
	 */ 
	public void setAssignedDocumentAuthenticator (String strIDNumber,FN objFamilyName,String strGivenName,String strSecondAndFurtherGivenNamesOrInitialsThereof,
			String 	strSuffix,String strPrefix,CWE objSourceTable,HD objAssigningAuthority,
			String strNameTypeCode,String strIdentifierCheckDigit,String strCheckDigitScheme,String strIdentifierTypeCode,
			HD objAssigningFacility,String strNameRepresentationCode,CWE objNameContext,
			String strNameAssemblyOrder, String strEffectiveDate,String strExpirationDate,String strProfessionalSuffix,
			CWE objAssigningJurisdiction,CWE objAssigningAgencyOrDepratment, String strSecurityCheck, String strSecurityCheckScheme)
	{
		XCN xcn  = (XCN)getDataElement(923);
		xcn.setIdNumber(strIDNumber);
		xcn.setFamilyName(objFamilyName);
		xcn.setGivenName(strGivenName);
		xcn.setSecondNameOrInitials(strSecondAndFurtherGivenNamesOrInitialsThereof);
		xcn.setSuffix(strSuffix);
		xcn.setPrefix(strPrefix);
 
		xcn.setSourceTable(objSourceTable);
		xcn.setAssigningAuthority(objAssigningAuthority);
		xcn.setNameTypeCode(strNameTypeCode);
		xcn.setIdentifierCheckDigit(strIdentifierCheckDigit);
		xcn.setCheckDigitScheme(strCheckDigitScheme);
		xcn.setIdentifierTypeCode(strIdentifierTypeCode);
		xcn.setAssigningFacility(objAssigningFacility);
		xcn.setNameRepresentationCode(strNameRepresentationCode);
		xcn.setNameContext(objNameContext);
 
		xcn.setNameAssemblyOrder(strNameAssemblyOrder);
		xcn.setEffectiveDate(strEffectiveDate);
		xcn.setExpirationDate(strExpirationDate);
		xcn.setProfessionalSuffix(strProfessionalSuffix);
		xcn.setAssigningJurisdiction(objAssigningJurisdiction);
		xcn.setAssigningAgencyOrDepartment(objAssigningAgencyOrDepratment); 
		xcn.setSecurityCheck(strSecurityCheck);
		xcn.setSecurityCheckScheme(strSecurityCheckScheme);
		addAssignedDocumentAuthenticator(xcn);

	} 

	/**
	 * Set the Assigned Document Authenticator.
	 * This field specify the name of the person identified in the document as being responsible for performing the procedure or activity.  
	 * @param objAssignedDocumentAuthenticator Object of Assigned Document Authenticator
	 */ 
	public void addAssignedDocumentAuthenticator(XCN objAssignedDocumentAuthenticator)
	{
		addDataType(923,objAssignedDocumentAuthenticator);

	}

	/**
	 * Set the Assigned Document Authenticator
	 * This field specify the name of the person identified in the document as being responsible for performing the procedure or activity. 
	 * @param objAssignedDocumentAuthenticatorList List of Assigned Document Authenticator
	 */
	@SuppressWarnings("unchecked")
	public void setAssignedDocumentAuthenticator(ISingleCollection<XCN> objAssignedDocumentAuthenticatorList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objAssignedDocumentAuthenticatorList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(923,objCollection);
	}
	
	
	/**
     * Set Transcriptionist Code Name
     * This field specify the name of the person identified in the document as being responsible for performing the procedure or activity.  
     * @param strIDNumber Refers to the coded ID according to a user-defined table
	 * @param objFamilyName Specifies the surname of a person.
	 * @param strGivenName Specifies First name.
	 * @param strSecondAndFurtherGivenNamesOrInitialsThereof Specifies multiple middle names that may be included by 
	 * 														   separating them with spaces.
	 * @param strSuffix Used to specify a name suffix (e.g., Jr. or III).
	 * @param strPrefix Used to specify a name prefix (e.g., Dr.).
	 * @param objSourceTable Used as the HL7 identifier for the user-defined table of values for this component. [Refer User-defined Table 0297 - CN ID.]
	 * @param objAssigningAuthority Specifies a unique identifier of the system (or organization or agency of department)
	 * 								  that creates the data. [Refer User-defined Table 0363 - Assigning authority]
	 * @param strNameTypeCode Specifies a code that represents the type of name. 
	 * @param strIdentifierCheckDigit Specifies part of the identifying number used in the sending application. 
	 * @param strCheckDigitScheme Specifies the code identifying the check digit scheme employed.[Refer HL7 Table 0061 - Check digit scheme].
	 * @param strIdentifierTypeCode Specifies A code corresponding to the type of identifier.[Refer HL7 Table 0203 - Identifier type].
	 * @param objAssigningFacility Specifies the place or location identifier where the identifier was first assigned to the person
	 * @param strNameRepresentationCode Provides an indication of the representation provided by the data item.  
	 * @param objNameContext Designates the context in which a name is used. [Refer User-defined Table 0448 ]
	 * @param strNameAssemblyOrder Specifies a code that represents the preferred display order of the components of this person name. Suggested values are G,F[Refer table 0444.]
	 * @param strEffectiveDate Specifies the first date, if known, on which the address is valid and active.
	 * @param strExpirationDate Specifies the last date, if known, on which the address is valid and active.
	 * @param strProfessionalSuffix Used to specify an abbreviation, or a string of abbreviations, denoting qualifications that support the person's profession, (e.g., licenses).
	 * @param objAssigningJurisdiction Specifies the geo-political body that assigned the identifier.
	 * @param objAssigningAgencyOrDepratment Specifies the agency or department that assigned the identifier
	 * @param strSecurityCheck Specifies the version code that may be assigned to the person identifier
	 * @param strSecurityCheckScheme Specifies the check digit scheme.
	 */ 
	public void addTranscriptionistCodeName(String strIDNumber,FN objFamilyName,String strGivenName,String strSecondAndFurtherGivenNamesOrInitialsThereof,
			String 	strSuffix,String strPrefix,CWE objSourceTable,HD objAssigningAuthority,
			String strNameTypeCode,String strIdentifierCheckDigit,String strCheckDigitScheme,String strIdentifierTypeCode,
			HD objAssigningFacility,String strNameRepresentationCode,CWE objNameContext,
			String strNameAssemblyOrder, String strEffectiveDate,String strExpirationDate,String strProfessionalSuffix,
			CWE objAssigningJurisdiction,CWE objAssigningAgencyOrDepratment, String strSecurityCheck, String strSecurityCheckScheme)
	{
		XCN xcn  = (XCN)getDataElement(924);
		xcn.setIdNumber(strIDNumber);
		xcn.setFamilyName(objFamilyName);
		xcn.setGivenName(strGivenName);
		xcn.setSecondNameOrInitials(strSecondAndFurtherGivenNamesOrInitialsThereof);
		xcn.setSuffix(strSuffix);
		xcn.setPrefix(strPrefix);
 
		xcn.setSourceTable(objSourceTable);
		xcn.setAssigningAuthority(objAssigningAuthority);
		xcn.setNameTypeCode(strNameTypeCode);
		xcn.setIdentifierCheckDigit(strIdentifierCheckDigit);
		xcn.setCheckDigitScheme(strCheckDigitScheme);
		xcn.setIdentifierTypeCode(strIdentifierTypeCode);
		xcn.setAssigningFacility(objAssigningFacility);
		xcn.setNameRepresentationCode(strNameRepresentationCode);
		xcn.setNameContext(objNameContext);
 
		xcn.setNameAssemblyOrder(strNameAssemblyOrder);
		xcn.setEffectiveDate(strEffectiveDate);
		xcn.setExpirationDate(strExpirationDate);
		xcn.setProfessionalSuffix(strProfessionalSuffix);
		xcn.setAssigningJurisdiction(objAssigningJurisdiction);
		xcn.setAssigningAgencyOrDepartment(objAssigningAgencyOrDepratment); 
		xcn.setSecurityCheck(strSecurityCheck);
		xcn.setSecurityCheckScheme(strSecurityCheckScheme);
		addTranscriptionistCodeName(xcn);

	} 

	/**
	 * Set the Transcriptionist Code Name.
	 * This field specify the name of the person identified in the document as being responsible for performing the procedure or activity.  
	 * @param objTranscriptionistCodeName Object of Transcriptionist Code Name
	 */ 
	public void addTranscriptionistCodeName(XCN objTranscriptionistCodeName)
	{
		addDataType(924,objTranscriptionistCodeName);

	}

	/**
	 * Set the Transcriptionist Code Name
	 * This field specify the name of the person identified in the document as being responsible for performing the procedure or activity. 
	 * @param objTranscriptionistCodeNameList List of Transcriptionist Code Name
	 */
	@SuppressWarnings("unchecked")
	public void setTranscriptionistCodeName(ISingleCollection<XCN> objTranscriptionistCodeNameList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objTranscriptionistCodeNameList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(924,objCollection);
	}
	

	/**
	 * Set the Unique Document Number.
	 * This identifier specifies
	 * @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 setUniqueDocumentNumber(String strEntityIdentifier,String strNamespaceId,String strUniversalId,
			String strUniversalIdType)
	{
		EI ei  = (EI)getDataElement(925);
		ei.setEntityIdentifier(strEntityIdentifier);
		ei.setNamespaceId(strNamespaceId);
		ei.setUniversalId(strUniversalId);
		ei.setUniversalIdType(strUniversalIdType);
		setUniqueDocumentNumber(ei);
	}

	/** 
	 * Set the Unique Document Number.
	 * This identifier specifies 
	 * @param objUniqueDocumentNumber Object of Unique Document Number.
	 */ 
	public void setUniqueDocumentNumber(EI objUniqueDocumentNumber)
	{
		setDataType(925,objUniqueDocumentNumber);

	}
	
	/**
	 * Set the Parent Document Number.
	 * This identifier specifies
	 * @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 setParentDocumentNumber(String strEntityIdentifier,String strNamespaceId,String strUniversalId,
			String strUniversalIdType)
	{
		EI ei  = (EI)getDataElement(926);
		ei.setEntityIdentifier(strEntityIdentifier);
		ei.setNamespaceId(strNamespaceId);
		ei.setUniversalId(strUniversalId);
		ei.setUniversalIdType(strUniversalIdType);
		setParentDocumentNumber(ei);
	}

	/** 
	 * Set the Parent Document Number.
	 * This identifier specifies 
	 * @param objParentDocumentNumber Object of Parent Document Number.
	 */ 
	public void setParentDocumentNumber(EI objParentDocumentNumber)
	{
		setDataType(926,objParentDocumentNumber);

	}
	
	/**
	 * Set the Placer Order Number.
	 * This identifier specifies
	 * @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 addPlacerOrderNumber(String strEntityIdentifier,String strNamespaceId,String strUniversalId,
			String strUniversalIdType)
	{
		EI ei  = (EI)getDataElement(216);
		ei.setEntityIdentifier(strEntityIdentifier);
		ei.setNamespaceId(strNamespaceId);
		ei.setUniversalId(strUniversalId);
		ei.setUniversalIdType(strUniversalIdType);
		addPlacerOrderNumber(ei);
	}

	/**
	 * Set the Placer Order Number.
	 * 
	 * @param objtempPlacerOrderNumber Placer Order Number
	 */ 
	public void addPlacerOrderNumber(EI objtempPlacerOrderNumber)
	{
		addDataType(216,objtempPlacerOrderNumber);

	}

	/**
	 * Set the PlacerOrderNumber
	 * 
	 * @param objPlacerOrderNumberList List of PlacerOrderNumber
	 */
	@SuppressWarnings("unchecked")
	public void setPlacerOrderNumber(ISingleCollection<EI> objPlacerOrderNumberList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objPlacerOrderNumberList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(216,objCollection);
	}
	
	/**
	 * Set the Filler Order Number.
	 * This identifier specifies
	 * @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 setFillerOrderNumber(String strEntityIdentifier,String strNamespaceId,String strUniversalId,
			String strUniversalIdType)
	{
		EI ei  = (EI)getDataElement(217);
		ei.setEntityIdentifier(strEntityIdentifier);
		ei.setNamespaceId(strNamespaceId);
		ei.setUniversalId(strUniversalId);
		ei.setUniversalIdType(strUniversalIdType);
		setParentDocumentNumber(ei);
	}

	/** Set the Filler Order Number.
	 * 
	 * @param objfillerOrderNumber Filler Order Number
	 */ 
	public void setFillerOrderNumber(EI objfillerOrderNumber)
	{
		setDataType(217,objfillerOrderNumber);

	}

	/**
	 * Set the Unique Document File Name.
	 * 
	 * @param strAccidentDecription Use as AccidentDecription.
	 */ 
	public void setUniqueDocumentFileName (String strAccidentDecription) 
	{
		ST uniqueDocumentFileName  = (ST)getDataElement(927);
		uniqueDocumentFileName.setValue(strAccidentDecription); 
		setUniqueDocumentFileName (uniqueDocumentFileName);

	} 

	/** 
	 * Set the Unique Document File Name.
	 * 
	 * @param objUniqueDocumentFileName Object of Unique Document File Name.
	 */ 
	public void setUniqueDocumentFileName(ST objUniqueDocumentFileName)
	{
		setDataType(927,objUniqueDocumentFileName);

	}
	
	/**
	 * Set the Document Completion Status.
	 * 
	 * @param strDocumentCompletionStatus Use as Document Completion Status.
	 */ 
	public void setDocumentCompletionStatus (String strDocumentCompletionStatus) 
	{
		ID documentCompletionStatus  = (ID)getDataElement(928);
		documentCompletionStatus.setValue(strDocumentCompletionStatus); 
		setDocumentCompletionStatus (documentCompletionStatus);

	} 

	/** 
	 * Set the Document Completion Status.
	 * 
	 * @param objdocumentCompletionStatus Use as documentCompletionStatus.
	 */ 
	public void setDocumentCompletionStatus(ID objdocumentCompletionStatus)
	{
		setDataType(928,objdocumentCompletionStatus);

	}

	
	/**
	 * Set the Document Confidentiality Status.
	 * 
	 * This field specify the degree to which special confidentiality protection should be applied to this information.   
	 * @param strDocumentConfidentialityStatus Use as Document Confidentiality Status.
	 */ 
	public void setDocumentConfidentialityStatus (String strDocumentConfidentialityStatus) 
	{
		ID documentConfidentialityStatus  = (ID)getDataElement(929);
		documentConfidentialityStatus.setValue(strDocumentConfidentialityStatus); 
		setDocumentConfidentialityStatus(documentConfidentialityStatus);

	} 

	/** 
	 * Set the Document Confidentiality Status.
	 * This field specify the degree to which special confidentiality protection should be applied to this information.   
	 * @param objdocumentConfidentialityStatus Object of Document Confidentiality Status.
	 */ 
	public void setDocumentConfidentialityStatus(ID objdocumentConfidentialityStatus)
	{
		setDataType(929,objdocumentConfidentialityStatus);

	}

	
	/**
	 * Set the Document Availability Status.
	 * 
	 * @param strDocumentAvailabilityStatus Use as DocumentAvailabilityStatus.
	 */ 
	public void setDocumentAvailabilityStatus (String strDocumentAvailabilityStatus) 
	{
		ID documentAvailabilityStatus  = (ID)getDataElement(930);
		documentAvailabilityStatus.setValue(strDocumentAvailabilityStatus); 
		setDocumentAvailabilityStatus(documentAvailabilityStatus);

	} 

	/** 
	 * Set the Document Availability Status.
	 * 
	 * @param objdocumentAvailabilityStatus Use as documentAvailabilityStatus.
	 */ 
	public void setDocumentAvailabilityStatus(ID objdocumentAvailabilityStatus)
	{
		setDataType(930,objdocumentAvailabilityStatus);

	}
	
	/**
	 * Set the Document Storage Status.
	 * 
	 * @param strDocumentStorageStatus Use as Document Storage Status.
	 */ 
	public void setDocumentStorageStatus (String strDocumentStorageStatus) 
	{
		ID documentStorageStatus  = (ID)getDataElement(932);
		documentStorageStatus.setValue(strDocumentStorageStatus); 
		setDocumentStorageStatus(documentStorageStatus);

	} 

	/** 
	 * Set the Document Storage Status.
	 * 
	 * @param objdocumentStorageStatus Use as documentStorageStatus.
	 */ 
	public void setDocumentStorageStatus(ID objdocumentStorageStatus)
	{
		setDataType(932,objdocumentStorageStatus);

	}
	
	/**
	 * Set the Document Change Reason.
	 * 
	 * @param strDocumentChangeReason Use as Document Change Reason.
	 */ 
	public void setDocumentChangeReason (String strDocumentChangeReason) 
	{
		ST documentChangeReason  = (ST)getDataElement(933);
		documentChangeReason.setValue(strDocumentChangeReason); 
		setDocumentChangeReason(documentChangeReason);

	} 

	/** 
	 * Set the Document Change Reason.
	 * 
	 * @param objdocumentChangeReason Use as Document Change Reason.
	 */ 
	public void setDocumentChangeReason(ST objdocumentChangeReason)
	{
		setDataType(933,objdocumentChangeReason);

	}
	
	/**
	 * Set the Authentication Person Time Stamp. 
	 * 
	 * @param strIdNumber Coded ID according to a user-defined table, 
	 * @param objFamilyName Specifies the surname of a person. 
	 * @param strGivenName First name.
	 * @param strSecondNamesOrInitials Multiple middle names may be included by separating them with spaces.
	 * @param strSuffix Used to specify a name suffix (e.g., Jr. or III).
	 * @param strPrefix Used to specify a name prefix (e.g., Dr.). 
	 * @param strSourceTable Source is used as the HL7 identifier for the user-defined table of values for this component. 
	 * @param objAssigningAuthority The assigning authority is a unique identifier of the system 
	 * @param strNameTypeCode A code that represents the type of name. 
	 * @param strIdentifierCheckDigit The check digit in this data type is not an add-on produced by the message processor. 
	 * @param strCheckDigitScheme Contains the code identifying the check digit scheme employed.
	 * @param strIdentifierTypeCode A code corresponding to the type of identifier. 
	 * @param objAssigningFacility The place or location identifier where the identifier was first assigned to the patient. 
	 * @param objDateTimeActionPerformed This component describes when the activity was performed.
	 * @param strNameRepresentationCode Different name/address types and representations of the same name/address should be described by repeating of this field
	 * @param objNameContext This component is used to designate the context in which a name is used. 
	 * @param strNameAssemblyOrder A code that represents the preferred display order of the components of this person name. 
	 * @param objEffectiveDate The first date, if known, on which the address is valid and active.
	 * @param objExpirationDate The last date, if known, on which the address is valid and active.
	 * @param strProfessionalSuffix Used to specify an abbreviation, or a string of abbreviations,
	 * 									 denoting qualifications that support the person's profession
	 * @param objAssigningJurisdiction The geo-political body that assigned the identifier in component 1. 
	 * @param objAssigningAgencyOrDepartment The agency or department that assigned the identifier in component 1.
	 */ 
	public void addAuthenticationPersonTimeStamp (String strPersonIndentifier,FN objFamilyName,String strGivenName,String strSecondNamesOrInitials
			,String strSuffix,String strPrefix,String strSourceTable,HD objAssigningAuthority,
			String strNameTypeCode,String strIdentifierCheckDigit,String strCheckDigitScheme,String strIdentifierTypeCode,
			HD objAssigningFacility,DTM objDateTimeActionPerformed,String strNameRepresentationCode,CWE objNameContext,
			String strNameAssemblyOrder,DTM objEffectiveDate,DTM objExpirationDate,String strProfessionalSuffix,CWE objAssigningJurisdiction,CWE objAssigningAgencyOrDepartment, ST strSecurityCheck,ID strSecurityCheckScheme)
	{
		PPN ppn  = (PPN)getDataElement(934);
		ppn.setPersonIdentifier(strPersonIndentifier);
		ppn.setFamilyName(objFamilyName);
		ppn.setGivenName(strGivenName);
		ppn.setSecondAndFurtherGivenNamesOrInitialsThereof(strSecondNamesOrInitials);
		ppn.setSuffix(strSuffix);
		ppn.setPrefix(strPrefix);
		ppn.setSourceTable(strSourceTable);
		ppn.setAssigningAuthority(objAssigningAuthority);
		ppn.setNameTypeCode(strNameTypeCode);
		ppn.setIdentifierCheckDigit(strIdentifierCheckDigit);
		ppn.setCheckDigitScheme(strCheckDigitScheme);
		ppn.setIdentifierTypeCode(strIdentifierTypeCode);
		ppn.setAssigningFacility(objAssigningFacility);
		ppn.setDateTimeActionPerformed(objDateTimeActionPerformed);
		ppn.setNameRepresentationCode(strNameRepresentationCode);
		ppn.setNameContext(objNameContext);
		ppn.setNameAssemblyOrder(strNameAssemblyOrder);
		ppn.setEffectiveDate(objEffectiveDate);
		ppn.setExpirationDate(objExpirationDate);
		ppn.setProfessionalSuffix(strProfessionalSuffix);
		ppn.setAssigningJurisdiction(objAssigningJurisdiction);
		ppn.setAssigningAgencyOrDepartment(objAssigningAgencyOrDepartment);
		ppn.setSecurityCheck(strSecurityCheck);
		ppn.setSecurityCheckScheme(strSecurityCheckScheme);
		addAuthenticationPersonTimeStamp(ppn);

	} 
;
	/**
	 * Set the Authentication Person Time Stamp.
	 *  
	 * @param objtempAuthenticationPersonTimeStamp Authentication Person Time Stamp
	 */ 
	public void addAuthenticationPersonTimeStamp(PPN objtempAuthenticationPersonTimeStamp)
	{
		addDataType(934,objtempAuthenticationPersonTimeStamp);


	}

	/**
	 * Set the AuthenticationPersonTimeStamp.
	 * 
	 * @param objAuthenticationPersonTimeStampList List of AuthenticationPersonTimeStamp
	 */
	@SuppressWarnings("unchecked")
	public void setAuthenticationPersonTimeStamp(ISingleCollection<PPN> objAuthenticationPersonTimeStampList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objAuthenticationPersonTimeStampList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(934,objCollection);
	}


	/**
     * Set Distributed Copies
     *   
     * @param strIDNumber Refers to the coded ID according to a user-defined table
	 * @param objFamilyName Specifies the surname of a person.
	 * @param strGivenName Specifies First name.
	 * @param strSecondAndFurtherGivenNamesOrInitialsThereof Specifies multiple middle names that may be included by 
	 * 														   separating them with spaces.
	 * @param strSuffix Used to specify a name suffix (e.g., Jr. or III).
	 * @param strPrefix Used to specify a name prefix (e.g., Dr.).
	 * @param objSourceTable Used as the HL7 identifier for the user-defined table of values for this component. [Refer User-defined Table 0297 - CN ID.]
	 * @param objAssigningAuthority Specifies a unique identifier of the system (or organization or agency of department)
	 * 								  that creates the data. [Refer User-defined Table 0363 - Assigning authority]
	 * @param strNameTypeCode Specifies a code that represents the type of name. 
	 * @param strIdentifierCheckDigit Specifies part of the identifying number used in the sending application. 
	 * @param strCheckDigitScheme Specifies the code identifying the check digit scheme employed.[Refer HL7 Table 0061 - Check digit scheme].
	 * @param strIdentifierTypeCode Specifies A code corresponding to the type of identifier.[Refer HL7 Table 0203 - Identifier type].
	 * @param objAssigningFacility Specifies the place or location identifier where the identifier was first assigned to the person
	 * @param strNameRepresentationCode Provides an indication of the representation provided by the data item.  
	 * @param objNameContext Designates the context in which a name is used. [Refer User-defined Table 0448 ]
	 * @param strNameAssemblyOrder Specifies a code that represents the preferred display order of the components of this person name. Suggested values are G,F[Refer table 0444.]
	 * @param strEffectiveDate Specifies the first date, if known, on which the address is valid and active.
	 * @param strExpirationDate Specifies the last date, if known, on which the address is valid and active.
	 * @param strProfessionalSuffix Used to specify an abbreviation, or a string of abbreviations, denoting qualifications that support the person's profession, (e.g., licenses).
	 * @param objAssigningJurisdiction Specifies the geo-political body that assigned the identifier.
	 * @param objAssigningAgencyOrDepratment Specifies the agency or department that assigned the identifier
	 * @param strSecurityCheck Specifies the version code that may be assigned to the person identifier
	 * @param strSecurityCheckScheme Specifies the check digit scheme.
	 */ 
	public void addDistributedCopies(String strIDNumber,FN objFamilyName,String strGivenName,String strSecondAndFurtherGivenNamesOrInitialsThereof,
			String 	strSuffix,String strPrefix,CWE objSourceTable,HD objAssigningAuthority,
			String strNameTypeCode,String strIdentifierCheckDigit,String strCheckDigitScheme,String strIdentifierTypeCode,
			HD objAssigningFacility,String strNameRepresentationCode,CWE objNameContext,
			String strNameAssemblyOrder, String strEffectiveDate,String strExpirationDate,String strProfessionalSuffix,
			CWE objAssigningJurisdiction,CWE objAssigningAgencyOrDepratment, String strSecurityCheck, String strSecurityCheckScheme)
	{
		XCN xcn  = (XCN)getDataElement(924);
		xcn.setIdNumber(strIDNumber);
		xcn.setFamilyName(objFamilyName);
		xcn.setGivenName(strGivenName);
		xcn.setSecondNameOrInitials(strSecondAndFurtherGivenNamesOrInitialsThereof);
		xcn.setSuffix(strSuffix);
		xcn.setPrefix(strPrefix);
 
		xcn.setSourceTable(objSourceTable);
		xcn.setAssigningAuthority(objAssigningAuthority);
		xcn.setNameTypeCode(strNameTypeCode);
		xcn.setIdentifierCheckDigit(strIdentifierCheckDigit);
		xcn.setCheckDigitScheme(strCheckDigitScheme);
		xcn.setIdentifierTypeCode(strIdentifierTypeCode);
		xcn.setAssigningFacility(objAssigningFacility);
		xcn.setNameRepresentationCode(strNameRepresentationCode);
		xcn.setNameContext(objNameContext);
 
		xcn.setNameAssemblyOrder(strNameAssemblyOrder);
		xcn.setEffectiveDate(strEffectiveDate);
		xcn.setExpirationDate(strExpirationDate);
		xcn.setProfessionalSuffix(strProfessionalSuffix);
		xcn.setAssigningJurisdiction(objAssigningJurisdiction);
		xcn.setAssigningAgencyOrDepartment(objAssigningAgencyOrDepratment); 
		xcn.setSecurityCheck(strSecurityCheck);
		xcn.setSecurityCheckScheme(strSecurityCheckScheme);
		addDistributedCopies(xcn);

	} 

	/**
	 * Set the Distributed Copies.
	 * 
	 * @param objDistributedCopies Distributed Copies
	 */ 
	public void addDistributedCopies(XCN objDistributedCopies)
	{
		addDataType(935,objDistributedCopies);

	}

	/**
	 * Set the DistributedCopies.
	 * 
	 * @param objDistributedCopiesList List of Distributed Copies
	 */
	@SuppressWarnings("unchecked")
	public void setDistributedCopies(ISingleCollection<XCN> objDistributedCopiesList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objDistributedCopiesList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(935,objCollection);
	}

	
	/**
	 * Set the Folder Assignment.
	 * 
	 * @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 addFolderAssignment (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(2378);
		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);		 
		addFolderAssignment(cwe);

	} 

	/** 
	 * Set the Folder Assignment.
	 * 
	 * @param objFolderAssignment Specifies Folder Assignment
	 */ 
	public void addFolderAssignment(CWE objFolderAssignment)
	{
		addDataType(2378,objFolderAssignment);

	}

	/**
	 * Set the Folder Assignment.
	 * 
	 * @param objFolderAssignmentList List of Folder Assignment
	 */	
	@SuppressWarnings("unchecked")
	public void setFolderAssignment(ISingleCollection<CWE> objFolderAssignmentList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objFolderAssignmentList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(2378,objCollection);
	}
	
	
	/**
	 * Set the Document Title.
	 * 
	 * @param strDocumentChangeReason Use as Document Change Reason.
	 */ 
	public void addDocumentTitle (String strDocumentTitle) 
	{
		ST documentTitle = (ST)getDataElement(3301);
		documentTitle.setValue(strDocumentTitle); 
		addDocumentTitle(documentTitle);

	} 

	/** 
	 * Set the Document Title.
	 * 
	 * @param objDocumentTitle Use as Document Title.
	 */ 
	public void addDocumentTitle(ST objDocumentTitle)
	{
		addDataType(3301,objDocumentTitle);

	}
	
	/**
	 * Set the Document Title.
	 * 
	 * @param objDocumentTitleList List of Document Title
	 */	
	@SuppressWarnings("unchecked")
	public void setDocumentTitle(ISingleCollection<ST> objDocumentTitleList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objDocumentTitleList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(3301,objCollection);
	}
	
	
	/**
	 * Set the Agreed Due Date/Time.
	 * 
	 * @param strTime Specifies a point in time using a 24-hour clock notation.	 * 
	 */ 
	public void setAgreedDueDateTime (String strTime)
	{
		DTM agreedDueDateTime  = (DTM)getDataElement(3302);
		agreedDueDateTime.setValue(strTime);		 
		setAgreedDueDateTime(agreedDueDateTime);
	} 

	/** 
	 * Set the Agreed Date/Time.
	 * 
	 * @param objAgreedDueDateTime Object of Agreed Due Date/Time.
	 */ 
	public void setAgreedDueDateTime(DTM objAgreedDueDateTime)
	{
		setDataType(3302,objAgreedDueDateTime);

	}


	

	/**
	 * Validates HL7 Message objects .
	 * Validate method checks for validation each and every segments in side the Message object against specified message Structure. 
	 * Validation checks include optionality of segment or group.
	 * It also verifies the number of times segment or group is repeated in message.
	 * e.g 
	 * {PSH} while parsing PSH segment validate method will check for its mandatory presence.
	 * [PSH] in this case validate will throw exception if one tries to enter more than one PSH segment.
	 * @return boolean - true or false.
	 * @throws InvalidSegmentException Throws when Segment Validation fails.
	 */	
	@Override
	public boolean validate() throws InvalidSegmentException 
	{
		/*
		 * Set ID- TXA,Document Type,Unique Document Number,Document Completion Status
		 * are required fields.
		 */
		try 
		{
			super.validate();

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


}
