/*******************************************************************************
 *  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.ED;
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.SI;
import cdac.medinfo.sdk.hl7282.baselibs.ST;
import cdac.medinfo.sdk.hl7282.baselibs.XCN;
import cdac.medinfo.sdk.hl7282.baselibs.XON;
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;

/***
 * CER - Certificate Detail Segment <p>
 * The CER segment adds detailed information regarding the formal authorizations to provide 
 * a service held by the health professional identified by the STF segment.
 * <p>Represents an HL7 CER message segment. 
 * This segment has the following fields:</p><p>
 * CER-1: Set ID _ CER (SI)<b>Required</b><br> 
 * CER-2: Serial Number (ST)<b>Optional</b><br> 
 * CER-3: Version (ST)<b>Optional</b><br> 
 * CER-4: Granting Authority (XON)<b>Optional</b><br> 
 * CER-5: Issuing Authority (XCN)<b>Optional</b><br> 
 * CER-6: Signature of Issuing Authority (ED)<b>Optional</b><br> 
 * CER-7: Granting Country (ID)<b>Optional</b><br> 
 * CER-8: Granting State/Province (CWE)<b>Optional</b><br> 
 * CER-9: Granting County/Parish (CWE)<b>Optional</b><br> 
 * CER-10: Certificate Type (CWE)<b>Optional</b><br> 
 * CER-11: Certificate Domain (CWE)<b>Optional</b><br> 
 * CER-12: Subject ID (EI)<b>Optional</b><br> 
 * CER-13: Subject Name (ST)<b>Required</b><br> 
 * CER-14: Subject Directory Attribute Extension (Health Professional Data) (CWE)<b>Optional</b><br> 
 * CER-15: Subject Public Key Info (CWE)<b>Optional</b><br> 
 * CER-16: Authority Key Identifier (CWE)<b>Optional</b><br> 
 * CER-17: Basic Constraint (ID)<b>Optional</b><br> 
 * CER-18: CRL Distribution Point (CWE)<b>Optional</b><br> 
 * CER-19: Jurisdiction Country (ID)<b>Optional</b><br> 
 * CER-20: Jurisdiction State/Province (CWE)<b>Optional</b><br> 
 * CER-21: Jurisdiction County/Parish (CWE)<b>Optional</b><br> 
 * CER-22: Jurisdiction Breadth (CWE)<b>Optional</b><br> 
 * CER-23: Granting Date (DTM)<b>Optional</b><br> 
 * CER-24: Issuing Date (DTM)<b>Optional</b><br> 
 * CER-25: Activation Date (DTM)<b>Optional</b><br> 
 * CER-26: Inactivation Date (DTM)<b>Optional</b><br> 
 * CER-27: Expiration Date (DTM)<b>Optional</b><br> 
 * CER-28: Renewal Date (DTM)<b>Optional</b><br> 
 * CER-29: Revocation Date (DTM)<b>Optional</b><br> 
 * CER-30: Revocation Reason Code (CWE)<b>Optional</b><br> 
 * CER-31: Certificate Status (CWE)<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 CER extends Segment   
{
	

	/**
	 *  Constructs the CER segment.
	 */
	public CER()
	{super(EnumSegments.HL7_SEG_CER);
	}

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

	/**
	 * Retrieves the Activation Date.
	 * This field contain the date/time when the certificate become or will become active.
	 * @return DTM - activationDate
	 */
	public DTM getActivationDate() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1878);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Authority Key Identifier.
	 * This field identify the public key to be used to verify the signature of the certificate.
	 * @return CWE - authorityKeyIdentifier
	 */
	public CWE getAuthorityKeyIdentifier() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1870);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Basic Constraints.
	 * This field specify the extension contains a boolean used to 
	 * specify whether the subject can act as a CA(certificate authority), using the certified key to sign certificates or not.
	 * @return ID - basicConstraint
	 */
	public ID getBasicConstraint() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1871);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Certificate Domain.
	 * This field specify the subject area to which the certificate is applicable. 
	 * @return CWE - certificateDomain
	 */
	public CWE getCertificateDomain() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1866);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Certificate Status.
	 * This field contains the state of the certificate held by the health professional.  
	 * @return CWE - certificateStatus
	 */
	public CWE getCertificateStatus() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1884);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Certificate Type.
	 * This field specify the certificate's classification.
	 * @return CWE - certificateType
	 */
	public CWE getCertificateType() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1865);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the CRL Distribution Point.
	 * This field specify the Certificate Revocation List(CRL) Distribution Point to identify the location of the associated CRL.
	 * @return ISingleCollection<CWE> - cRLDistributionPoint
	 */
	public ISingleCollection<CWE> getCRLDistributionPoint() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1872);
		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 Expiration Date.
	 * This field contains the date/time when the certificate expires or will expire.
	 * @return DTM - expirationDate
	 */
	public DTM getExpirationDate() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1880);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Granting Authority.
	 * This field specify the authority that granted the certificate to the person.
	 * @return XON - grantingAuthority
	 */
	public XON getGrantingAuthority() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1859);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (XON)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Granting Country.
	 * This field specify the ID of the country granting the certificate.  
	 * @return ID - grantingCountry
	 */
	public ID getGrantingCountry() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1862);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Granting County Parish.  
	 * @return CWE - grantingCounty_Parish
	 */
	public CWE getGrantingCounty_Parish() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1864);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Granting Date.
	 * This field contains the date when the certificate is granting.
	 * @return DTM - grantingDate
	 */
	public DTM getGrantingDate() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1876);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Granting State Province.
	 * @return CWE - grantingState_Province
	 */
	public CWE getGrantingState_Province() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1863);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Inactivation Date.
	 * This field contains the date/time when the certificate become or will become inactive.
	 * @return DTM - inactivationDate
	 */
	public DTM getInactivationDate() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1879);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Issuing Authority.
	 * This field specify the authority that issued the certificate to the person.
	 * @return XCN - issuingAuthority
	 */
	public XCN getIssuingAuthority() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1860);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (XCN)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Issuing Date.
	 * This field contains the date/time when the certificate is issue.
	 * @return DTM - issuingDate
	 */
	public DTM getIssuingDate() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1877);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Jurisdiction Breadth.
	 * This field contains the breadth/extent of the jurisdiction where the qualification is valid.
	 * @return ISingleCollection<CWE> - jurisdictionBreadth
	 */
	public ISingleCollection<CWE> getJurisdictionBreadth() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1895);
		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 Jurisdiction Country.
	 * This field contains the country for which the qualification is valid.  
	 * @return ID - jurisdictionCountry
	 */
	public ID getJurisdictionCountry() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1875);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ID)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Jurisdiction County Parish.
	 * This field contains the county/parish for which the qualification is valid.  
	 * @return CWE - jurisdictionCounty_Parish
	 */
	public CWE getJurisdictionCounty_Parish() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1874);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Jurisdiction State Province.
	 * This field contains the state for which the qualification is valid.  
	 * @return CWE - jurisdictionState_Province
	 */
	public CWE getJurisdictionState_Province() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1873);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Renewal Date.
	 * This field contains the date/time when the certificate must/will/ be / has been renewed.
	 * @return DTM - renewalDate
	 */
	public DTM getRenewalDate() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1881);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Revocation Date.
	 * This field contains the date/time when the certificate has been revoked.
	 * @return DTM - revocationDate
	 */
	public DTM getRevocationDate() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1882);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (DTM)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Revocation Reason Code.
	 * This field contains the reason for revoking the certificate.
	 * @return CWE - revocationReasonCode
	 */
	public CWE getRevocationReasonCode() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1883);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Serial Number.
	 * This field uniquely identify the attribute certificate within the scope of its issuer.  
	 * @return ST - serialNumber
	 */
	public ST getSerialNumber() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1857);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ST)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Set ID CER.
	 * This field contains the number that identify this transaction.  
	 * @return SI - setID_CER
	 */
	public SI getSetID_CER() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1856);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (SI)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Signature of Issuing Authority.  
	 * @return ED - signatureofIssuingAuthority
	 */
	public ED getSignatureofIssuingAuthority() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1861);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ED)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Subject Directory Attribute Extension.
	 * This field contain an Healthcare Professional Role attribute and may contain a Qualified Certificate Statement attribute.
	 * @return ISingleCollection<CWE> - subjectDirectoryAttributeExtension
	 */
	public ISingleCollection<CWE> getSubjectDirectoryAttributeExtension() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1868);
		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 Subject ID.
	 * This field expresses the identifier of the certificate's subject as used by the certifying body.  
	 * @return ID - subjectID
	 */
	public EI getSubjectID() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1867);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (EI)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Subject Name.
	 * This field defines the name of the subject of the certificate as used by the certifying body.
	 * @return ST - subjectName
	 */
	public ST getSubjectName() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1907);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ST)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Subject Public Key Info.
	 * This field contains the algorithm identifier. Referred to this field.
	 * @return CWE - subjectPublicKeyInfo
	 */
	public CWE getSubjectPublicKeyInfo() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1869);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (CWE)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Retrieves the Version.
	 * This field specify the version number differentiates among different versions of the attribute certificate.
	 * @return ST - version
	 */
	public ST getVersion() 
	{
		ISingleCollection<IDataType> objDataCollection =getDataType(1858);
		if(objDataCollection != null && objDataCollection.size() != 0) 
			return (ST)objDataCollection.elementAt(0);
		else
			return null;
	}

	/**
	 * Set the Set ID CER.
	 * This field contains the number that identify this transaction.
	 * @param strSetID_CER This field contains the number that identifies AFF transaction. 
	 */ 
	public void setSetID_CER (String strSetID_CER) 
	{
		SI setID_CER  = (SI)getDataElement(1856);
		setID_CER.setValue(strSetID_CER); 
		setSetID_CER(setID_CER);


	} 

	/** 
	 * Set the Set ID CER.
	 * This field contains the number that identify this transaction.
	 * @param objsetID_CER Object of Set ID CER.
	 */ 
	public void setSetID_CER(SI objsetID_CER)
	{
		setDataType(1856,objsetID_CER);


	}

	/**
	 * Set the Serial Number.
	 * This field uniquely identify the attribute certificate within the scope of its issuer.   
	 * @param strSerialNumber String value of Serial Number.
	 */ 
	public void setSerialNumber (String strSerialNumber) 
	{
		ST serialNumber  = (ST)getDataElement(1857);
		serialNumber.setValue(strSerialNumber); 
		setSerialNumber(serialNumber);


	} 

	/** 
	 * Set the Serial Number.
	 * This field uniquely identify the attribute certificate within the scope of its issuer.   
	 * @param objserialNumber Object of Serial Number.
	 */ 
	public void setSerialNumber(ST objserialNumber)
	{
		setDataType(1857,objserialNumber);


	}

	/**
	 * Set the Version.
	 * This field specify the version number differentiates among different versions of the attribute certificate.
	 * @param strVersion String value of Version.
	 */ 
	public void setVersion (String strVersion) 
	{
		ST version  = (ST)getDataElement(1858);
		version.setValue(strVersion); 
		setVersion(version);


	} 

	/** 
	 * Set the Version.
	 * This field specify the version number differentiates among different versions of the attribute certificate.
	 * @param strVersion String value of Version.
	 */ 
	public void setVersion(ST objversion)
	{
		setDataType(1858,objversion);


	}

	/**
	 * Set the Granting Authority.
	 * This field specify the authority that granted the certificate to the person.
	 * @param strOrganizationName Specifies name of the specified organization.
	 * @param strOrganizationNameTypeCode Specifies a code that represents the type of name i.e., legal name, display name.
	 * 										Suggested Values A,L,D,SL.[Refer to table No.0204]  
	 * @param strIdNumber It  has been retained for backward compatibility only as of v 2.5. 
	 * 						It is recommended to use component 10 Organization identifier that accommodates alphanumeric identifiers.
	 * @param strCheckDigit Specifies check digit that is part of the identifying number used in the sending application. 
	 * @param strCheckDigitScheme Specifies the code identifying the check digit scheme employed.
	 * @param objAssigningAuthority Specifies The assigning authority is a unique identifier of the system 
	 * 									(or organization or agency or department) that creates the data. 
	 * @param strIdentifierTypeCode Specifies a code corresponding to the type of identifier. 
	 * @param objAssigningFacility Specifies The place or location identifier where the identifier was first assigned to the person. 
	 * @param strNameRepresentationCode Specifies representations of the same name/address Suggested values are I,A,P [Refer table 0465] 
	 * @param strOrganizationIdentifier This component contains the sequence of characters (the code) that uniquely 
	 * 									  identifies the item being referenced by XON.1 Organization Name. 
	 * 									  This component replaces XON.3 ID Number as of v 2.5.
	 */ 
	public void setGrantingAuthority (String strOrganizationName, String strOrganizationNameTypeCode,
			 HD objAssigningAuthority,
			String strIdentifierTypeCode, HD objAssigningFacility, String strNameRepresentationCode,
			String strOrganizationIdentifier)
	{
		XON grantingAuthority  = (XON)getDataElement(1859);
		grantingAuthority.setOrganizationName(strOrganizationName);
		grantingAuthority.setOrganizationNameTypeCode(strOrganizationNameTypeCode);
//		grantingAuthority.setIdNumber(strIdNumber);
//		grantingAuthority.setCheckDigit(strCheckDigit);
//		grantingAuthority.setCheckDigitScheme(strCheckDigitScheme);
		grantingAuthority.setAssigningAuthority(objAssigningAuthority);
		grantingAuthority.setIdentifierTypeCode(strIdentifierTypeCode);
		grantingAuthority.setAssigningFacility(objAssigningFacility);
		grantingAuthority.setNameRepresentationCode(strNameRepresentationCode);
		grantingAuthority.setOrganizationIdentifier(strOrganizationIdentifier); 
		setGrantingAuthority(grantingAuthority);


	} 

	/** 
	 * Set the Granting Authority.
	 * This field specify the authority that granted the certificate to the person.
	 * @param objgrantingAuthority Object of Granting Authority.
	 */ 
	public void setGrantingAuthority(XON objgrantingAuthority)
	{
		setDataType(1859,objgrantingAuthority);


	}

	/**
	 * Set the Issuing Authority.
	 * This field specify the authority that issued the certificate to the person.
	 * @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 strSecondNameOrInitials Specifies multiple middle names that may be included by 
	 * 														   separating them with spaces.
	 * @param strSuffix Used to specify a name suffix (e.g., Jr. or III).
	 * @param strPrefix Used to specify a name prefix (e.g., Dr.).
	 * @param strSourceTable Used as the HL7 identifier for the user-defined table of values for this component. [Refer User-defined Table 0297 - CN ID.]
	 * @param objAssigningAuthority Specifies a unique identifier of the system (or organization or agency of department)
	 * 								  that creates the data. [Refer User-defined Table 0363 - Assigning authority]
	 * @param strNameTypeCode Specifies a code that represents the type of name. 
	 * @param strIdentifierCheckDigit Specifies part of the identifying number used in the sending application. 
	 * @param strCheckDigitScheme Specifies the code identifying the check digit scheme employed.[Refer HL7 Table 0061 - Check digit scheme].
	 * @param strIdentifierTypeCode Specifies A code corresponding to the type of identifier.[Refer HL7 Table 0203 - Identifier type].
	 * @param objAssigningFacility Specifies the place or location identifier where the identifier was first assigned to the person
	 * @param strNameRepresentationCode Provides an indication of the representation provided by the data item.  
	 * @param objNameContext Designates the context in which a name is used. [Refer User-defined Table 0448 ]
	 * @param strNameAssemblyOrder Specifies a code that represents the preferred display order of the components of this person name. Suggested values are G,F[Refer table 0444.]
	 * @param objEffectiveDate Specifies the first date, if known, on which the address is valid and active.
	 * @param objExpirationDate Specifies the last date, if known, on which the address is valid and active.
	 * @param strProfessionalSuffix Used to specify an abbreviation, or a string of abbreviations, denoting qualifications that support the person's profession, (e.g., licenses).
	 * @param objAssigningJurisdiction Specifies the geo-political body that assigned the identifier.
	 * @param objAssigningAgencyOrDepartment Specifies the agency or department that assigned the identifier
	 */ 
	public void setIssuingAuthority (String strIdNumber,FN objFamilyName,String strGivenName,
			String strSecondNameOrInitials,String strSuffix,String strPrefix
			,String strSourceTable,HD objAssigningAuthority,
			String strNameTypeCode,String strIdentifierCheckDigit,String strCheckDigitScheme,
			String strIdentifierTypeCode,HD objAssigningFacility,String strNameRepresentationCode,
			CWE objNameContext,String strNameAssemblyOrder,
			DTM objEffectiveDate,DTM objExpirationDate,String strProfessionalSuffix,
			CWE objAssigningJurisdiction,CWE objAssigningAgencyOrDepartment)
	{
		XCN issuingAuthority  = (XCN)getDataElement(1860);
		issuingAuthority.setIdNumber(strIdNumber);
		issuingAuthority.setFamilyName(objFamilyName);
		issuingAuthority.setGivenName(strGivenName);
		issuingAuthority.setSecondNameOrInitials(strSecondNameOrInitials);
		issuingAuthority.setSuffix(strSuffix);
		issuingAuthority.setPrefix(strPrefix);
//		issuingAuthority.setDegree(strDegree);
		issuingAuthority.setSourceTable(strSourceTable);
		issuingAuthority.setAssigningAuthority(objAssigningAuthority);
		issuingAuthority.setNameTypeCode(strNameTypeCode);
		issuingAuthority.setIdentifierCheckDigit(strIdentifierCheckDigit);
		issuingAuthority.setCheckDigitScheme(strCheckDigitScheme);
		issuingAuthority.setIdentifierTypeCode(strIdentifierTypeCode);
		issuingAuthority.setAssigningFacility(objAssigningFacility);
		issuingAuthority.setNameRepresentationCode(strNameRepresentationCode);
		issuingAuthority.setNameContext(objNameContext);
//		issuingAuthority.setNameValidityRange(objNameValidityRange);
		issuingAuthority.setNameAssemblyOrder(strNameAssemblyOrder);
		issuingAuthority.setEffectiveDate(objEffectiveDate);
		issuingAuthority.setExpirationDate(objExpirationDate);
		issuingAuthority.setProfessionalSuffix(strProfessionalSuffix);
		issuingAuthority.setAssigningJurisdiction(objAssigningJurisdiction);
		issuingAuthority.setAssigningAgencyOrDepartment(objAssigningAgencyOrDepartment); 
		setIssuingAuthority(issuingAuthority);


	} 

	/** 
	 * Set the Issuing Authority.
	 * This field specify the authority that issued the certificate to the person.
	 * @param objissuingAuthority Object of Issuing Authority.
	 */ 
	public void setIssuingAuthority(XCN objissuingAuthority)
	{
		setDataType(1860,objissuingAuthority);


	}

	/**
	 * Set the Signature of Issuing Authority.
	 * @param objSourceApplication Specifies A unique name that identifies the system which was the source of the data. 
	 * @param strTypeOfData Specifies an ID data type that declares the general type of data. 
	 * @param strDataSubtype Specifies an ID data type declaring the format for the data of subcomponent <main type>. 
	 * @param strEncoding Specifies the type of encoding used to represent successive octets of binary data 
	 * 						as displayable ASCII characters. [Refer to HL7 Table 0299 - Encoding]
	 * 						Valid values A,Hex,Base64.
	 * @param strData Specifies displayable ASCII characters which constitute the data to be sent from source 
	 * 					application to destination application. 
	 */ 
	public void setSignatureofIssuingAuthority (HD objSourceApplication,String strTypeOfData,String strDataSubtype,String strEncoding
			,String strData)
	{
		ED signatureofIssuingAuthority = (ED)getDataElement(1861);
		signatureofIssuingAuthority.setSourceApplication(objSourceApplication);
		signatureofIssuingAuthority.setTypeOfData(strTypeOfData);
		signatureofIssuingAuthority.setDataSubtype(strDataSubtype);
		signatureofIssuingAuthority.setEncoding(strEncoding);
		signatureofIssuingAuthority.setData(strData); 
		setSignatureofIssuingAuthority(signatureofIssuingAuthority);


	} 

	/** 
	 * Set the Signature of Issuing Authority.
	 * @param objsignatureofIssuingAuthority Object of Signature of Issuing Authority.
	 */ 
	public void setSignatureofIssuingAuthority(ED objsignatureofIssuingAuthority)
	{
		setDataType(1861,objsignatureofIssuingAuthority);


	}

	/**
	 * Set the Granting Country.
	 * This field specify the ID of the country granting the certificate.
	 * @param strGrantingCountry String shows the action to be taken . 
	 */ 
	public void setGrantingCountry (String strGrantingCountry) 
	{
		ID grantingCountry  = (ID)getDataElement(1862);
		grantingCountry.setValue(strGrantingCountry); 
		setGrantingCountry(grantingCountry);


	} 

	/** 
	 * Set the Granting Country.
	 * This field specify the ID of the country granting the certificate.
	 * @param objgrantingCountry Object of Granting Country.
	 */ 
	public void setGrantingCountry(ID objgrantingCountry)
	{
		setDataType(1862,objgrantingCountry);


	}

	/**
	 * Set the Granting State Province.
	 * @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 setGrantingState_Province (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(1863);
		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);
		setGrantingState_Province(cwe);


	} 

	/** 
	 * Set the Granting State Province.
	 * @param objgrantingState_Province Object of Granting State Province.
	 */ 
	public void setGrantingState_Province(CWE objgrantingState_Province)
	{
		setDataType(1863,objgrantingState_Province);


	}

	/**
	 * Set the Granting County Parish.
	 ** @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 setGrantingCounty_Parish (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(1864);
		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); 
		setGrantingCounty_Parish(cwe);


	} 

	/** 
	 * Set the Granting County Parish.
	 * @param objgrantingCounty_Parish Object of Granting County Parish.
	 */ 
	public void setGrantingCounty_Parish(CWE objgrantingCounty_Parish)
	{
		setDataType(1864,objgrantingCounty_Parish);


	}

	/**
	 * Set the Certificate Type.
	 * This field specify the certificate's classification.
	 * @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 setCertificateType (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(1865);
		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); 
		setCertificateType(cwe);


	} 

	/** 
	 * Set the Certificate Type.
	 * This field specify the certificate's classification.
	 * @param objcertificateType Object of Certificate Type.
	 */ 
	public void setCertificateType(CWE objcertificateType)
	{
		setDataType(1865,objcertificateType);


	}

	/**
	 * Set the Certificate Domain.
	 * This field specify the subject area to which the certificate is applicable.    
	 * @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 setCertificateDomain (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(1866);
		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);
		setCertificateDomain(cwe);


	} 

	/** 
	 * Set the Certificate Domain.
	 * This field specify the subject area to which the certificate is applicable.    
	 * @param objcertificateDomain Object of Certificate Domain.
	 */ 
	public void setCertificateDomain(CWE objcertificateDomain)
	{
		setDataType(1866,objcertificateDomain);


	}

	/**
	 * Set the Subject ID.
	 * This field expresses the identifier of the certificate's subject as used by the certifying body.    
	 * @param strEntityIdentifier Specifies defined by a hierarchic designator, represented by components 2 through 4.
	 * 								[Reference Section 2.A.33, "HD - hierarchic designator".] 
	 * @param strNamespaceId Specifies  the HL7 identifier for the user-defined table of values for this component.
	 * 						   [Refer to User-defined Table 0363 - Assigning authority] 	 
	 * @param strUniversalId Specifies string formatted according to the scheme defined by the component, 
	 * 							<universal ID type> (UID type). 
	 * @param strUniversalIdType Specifies  the interpretation of the second component of the HD. 
	 */ 
	public void setSubjectID (String strEntityIdentifier,String strNamespaceId,
			String strUniversalId,String strUniversalIdType)
	{
		EI ei  = (EI)getDataElement(1867);
		ei.setEntityIdentifier(strEntityIdentifier);
		ei.setNamespaceId(strNamespaceId);
		ei.setUniversalId(strUniversalId);
		ei.setUniversalIdType(strUniversalIdType); 
		setSubjectID(ei);
	} 

	/** 
	 * Set the Subject ID.
	 * This field expresses the identifier of the certificate's subject as used by the certifying body.    
	 * @param objsubjectID Object of Subject ID.
	 */ 
	public void setSubjectID(EI objsubjectID)
	{
		setDataType(1867,objsubjectID);


	}

	/**
	 * Set the Subject Name.
	 * This field defines the name of the subject of the certificate as used by the certifying body.
	 * @param strSubjectName String value of PriorityARQ
	 */ 
	public void setSubjectName (String strSubjectName) 
	{
		ST subjectName  = (ST)getDataElement(1907);
		subjectName.setValue(strSubjectName); 
		setSubjectName(subjectName);


	} 

	/** 
	 * Set the Subject Name.
	 * This field defines the name of the subject of the certificate as used by the certifying body.
	 * @param objsubjectName Object of Subject Name.
	 */ 
	public void setSubjectName(ST objsubjectName)
	{
		setDataType(1907,objsubjectName);


	}

	/**
	 * Add the Subject Directory Attribute Extension.
	 * This field contain an Healthcare Professional Role attribute and may contain a Qualified Certificate Statement attribute.      
	 * @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 addSubjectDirectoryAttributeExtension(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(1868);
		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);
		addSubjectDirectoryAttributeExtension(cwe);
	}

	/**
	 * Add the Subject Directory Attribute Extension.
	 * This field contain an Healthcare Professional Role attribute and may contain a Qualified Certificate Statement attribute.
	 * @param objsubjectDirectoryAttributeExtension Object of Subject Directory Attribute Extension. 
	 */
	public void addSubjectDirectoryAttributeExtension(CWE objsubjectDirectoryAttributeExtension)
	{
		addDataType(1868,objsubjectDirectoryAttributeExtension);
	}

	/**
	 * Set the Subject Directory Attribute Extension.
	 * This field contain an Healthcare Professional Role attribute and may contain a Qualified Certificate Statement attribute.
	 * @param objsubjectDirectoryAttributeExtensionList List of Subject Directory Attribute Extension. 
	 */
	@SuppressWarnings("unchecked")
	public void setSubjectDirectoryAttributeExtension(ISingleCollection<CWE> objsubjectDirectoryAttributeExtensionList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objsubjectDirectoryAttributeExtensionList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1868,objCollection);
	}

	/**
	 * Set the Subject Public Key Info.
	 * This field contains the algorithm identifier. Referred to this field.
	 * @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 setSubjectPublicKeyInfo (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(1869);
		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);
		setSubjectPublicKeyInfo(cwe);


	} 

	/** 
	 * Set the Subject Public Key Info.
	 * This field contains the algorithm identifier. Referred to this field.
	 * @param objsubjectPublicKeyInfo Object of Subject Public Key Info.
	 */ 
	public void setSubjectPublicKeyInfo(CWE objsubjectPublicKeyInfo)
	{
		setDataType(1869,objsubjectPublicKeyInfo);


	}

	/**
	 * Set the Authority Key Identifier.
	 * This field identify the public key to be used to verify the signature of the certificate.
	 * @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 setAuthorityKeyIdentifier (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(1870);
		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);
		setAuthorityKeyIdentifier(cwe);


	} 

	/** 
	 * Set the Authority Key Identifier.
	 * This field identify the public key to be used to verify the signature of the certificate.
	 * @param objauthorityKeyIdentifier Object of Authority Key Identifier.
	 */ 
	public void setAuthorityKeyIdentifier(CWE objauthorityKeyIdentifier)
	{
		setDataType(1870,objauthorityKeyIdentifier);


	}

	/**
	 * Set the Basic Constraints.
	 * This field specify the extension contains a boolean used to 
	 * specify whether the subject can act as a CA(certificate authority), using the certified key to sign certificates or not. 
	 * @param strBasicConstraint String shows the action to be taken . 
	 */ 
	public void setBasicConstraint (String strBasicConstraint) 
	{
		ID basicConstraint  = (ID)getDataElement(1871);
		basicConstraint.setValue(strBasicConstraint); 
		setBasicConstraint(basicConstraint);


	} 

	/** 
	 * Set the Basic Constraints.
	 * This field specify the extension contains a boolean used to 
	 * specify whether the subject can act as a CA(certificate authority), using the certified key to sign certificates or not. 
	 * @param objbasicConstraint Object of Basic Constraints.
	 */ 
	public void setBasicConstraint(ID objbasicConstraint)
	{
		setDataType(1871,objbasicConstraint);


	}

	/**
	 * Add the CRL Distribution Point.
	 * This field specify the Certificate Revocation List(CRL) Distribution Point to identify the location of the associated CRL.    
	 * @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 addCRLDistributionPoint(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(1872);
		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);
		addCRLDistributionPoint(cwe);
	}

	/**
	 * Add the CRL Distribution Point.
	 * This field specify the Certificate Revocation List(CRL) Distribution Point to identify the location of the associated CRL.
	 * @param objcRLDistributionPoint Object of CRL Distribution Point.
	 */
	public void addCRLDistributionPoint(CWE objcRLDistributionPoint)
	{
		addDataType(1872,objcRLDistributionPoint);
	}

	/**
	 * Set the CRL Distribution Point.
	 * This field specify the Certificate Revocation List(CRL) Distribution Point to identify the location of the associated CRL.
	 * @param objcRLDistributionPointList List of CRL Distribution Point.
	 */
	@SuppressWarnings("unchecked")
	public void setCRLDistributionPoint(ISingleCollection<CWE> objcRLDistributionPointList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objcRLDistributionPointList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1872,objCollection);
	}

	/**
	 * Set the Jurisdiction Country.
	 * This field contains the country for which the qualification is valid.
	 * @param strJurisdictionCountry String shows the action to be taken . 
	 */
	public void setJurisdictionCountry(String strJurisdictionCountry) 
	{
		ID jurisdictionCountry  = (ID)getDataElement(1875);
		jurisdictionCountry.setValue(strJurisdictionCountry);
		setJurisdictionCountry(jurisdictionCountry);
	}

	/**
	 * Set the Jurisdiction Country.
	 * This field contains the country for which the qualification is valid.
	 * @param objjurisdictionCountry Object of Jurisdiction Country.
	 */
	public void setJurisdictionCountry(ID objjurisdictionCountry)
	{
		setDataType(1875,objjurisdictionCountry);
	}

	/**
	 * Set the Jurisdiction State Province.
	 * This field contains the state for which the qualification is valid.
	 * @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 setJurisdictionState_Province(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(1873);
		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); 
		setJurisdictionState_Province(cwe);

	} 

	/** 
	 * Set the Jurisdiction State Province.
	 * This field contains the state for which the qualification is valid.
	 * @param objjurisdictionState_Province Object of Jurisdiction State Province.
	 */ 
	public void setJurisdictionState_Province(CWE objjurisdictionState_Province)
	{
		setDataType(1873,objjurisdictionState_Province);

	}

	/**
	 * Set the Jurisdiction County Parish.
	 * This field contains the county/parish for which the qualification is valid.
	 * @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 setJurisdictionCounty_Parish (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(1874);
		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);
		setJurisdictionCounty_Parish(cwe);

	} 

	/** 
	 * Set the Jurisdiction County Parish.
	 * This field contains the county/parish for which the qualification is valid.
	 * @param objjurisdictionCounty_Parish Object of Jurisdiction County Parish.
	 */ 
	public void setJurisdictionCounty_Parish(CWE objjurisdictionCounty_Parish)
	{
		setDataType(1874,objjurisdictionCounty_Parish);

	}

	/**
	 * Add the Jurisdiction Breadth.
	 * This field contains the breadth/extent of the jurisdiction where the qualification is valid.     
	 * @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 addJurisdictionBreadth(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(1895);
		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);
		addJurisdictionBreadth(cwe);
	}

	/**
	 * Add the Jurisdiction Breadth.
	 * This field contains the breadth/extent of the jurisdiction where the qualification is valid.
	 * @param objjurisdictionBreadth Object of Jurisdiction Breadth.
	 */
	public void addJurisdictionBreadth(CWE objjurisdictionBreadth)
	{
		addDataType(1895,objjurisdictionBreadth);
	}

	/**
	 * Set the Jurisdiction Breadth.
	 * This field contains the breadth/extent of the jurisdiction where the qualification is valid.
	 * @param objjurisdictionBreadthList List of Jurisdiction Breadth.
	 */
	@SuppressWarnings("unchecked")
	public void setJurisdictionBreadth(ISingleCollection<CWE> objjurisdictionBreadthList)
	{
		ISingleCollection<IDataType> objCollection = null;
		ISingleCollection<?> objUnknownCollection = (ISingleCollection<?>)objjurisdictionBreadthList;
		objCollection = (ISingleCollection<IDataType>)objUnknownCollection;
		setDataType(1895,objCollection);
	}

	/**
	 * Set the Granting Date.
	 * This field contains the date when the certificate is granting.
	 * @param strTime Specifies a point in time using a 24-hour clock notation. 
	 */ 
	public void setGrantingDate (String strTime) 
	{
		DTM grantingDate  = (DTM)getDataElement(1876);
		grantingDate.setValue(strTime);
		setGrantingDate(grantingDate);

	} 

	/** 
	 * Set the Granting Date.
	 * This field contains the date when the certificate is granting.
	 * @param objgrantingDate Object of Granting Date.
	 */ 
	public void setGrantingDate(DTM objgrantingDate)
	{
		setDataType(1876,objgrantingDate);

	}

	/**
	 * Set the Issuing Date.
	 * This field contains the date/time when the certificate is issue.
	 * @param strTime Specifies a point in time using a 24-hour clock notation. 
	 */ 
	public void setIssuingDate (String strTime) 
	{
		DTM issuingDate  = (DTM)getDataElement(1877);
		issuingDate.setValue(strTime);
		setIssuingDate(issuingDate);

	} 

	/** 
	 * Set the Issuing Date.
	 * This field contains the date/time when the certificate is issue.
	 * @param objissuingDate Object of Issuing Date.
	 */ 
	public void setIssuingDate(DTM objissuingDate)
	{
		setDataType(1877,objissuingDate);

	}

	/**
	 * Set the Activation Date.
	 * This field contain the date/time when the certificate become or will become active.
	 * @param strTime Specifies a point in time using a 24-hour clock notation. 
	 */ 
	public void setActivationDate (String strTime) 
	{
		DTM activationDate  = (DTM)getDataElement(1878);
		activationDate.setValue(strTime);
		setActivationDate(activationDate);

	} 

	/** 
	 * Set the Activation Date.
	 * This field contain the date/time when the certificate become or will become active.
	 * @param objactivationDate Object of Activation Date.
	 */ 
	public void setActivationDate(DTM objactivationDate)
	{
		setDataType(1878,objactivationDate);

	}

	/**
	 * Set the Inactivation Date.
	 * This field contains the date/time when the certificate become or will become inactive.
	 * @param strTime Specifies a point in time using a 24-hour clock notation. 
	 */ 
	public void setInactivationDate (String strTime) 
	{
		DTM inactivationDate  = (DTM)getDataElement(1879);
		inactivationDate.setValue(strTime);
		setInactivationDate(inactivationDate);

	} 

	/** 
	 * Set the Inactivation Date.
	 * This field contains the date/time when the certificate become or will become inactive.
	 * @param objinactivationDate Object of Inactivation Date.
	 */ 
	public void setInactivationDate(DTM objinactivationDate)
	{
		setDataType(1879,objinactivationDate);

	}

	/**
	 * Set the Expiration Date.
	 * This field contains the date/time when the certificate expires or will expire.
	 * @param strTime Specifies a point in time using a 24-hour clock notation. 
	 */ 
	public void setExpirationDate (String strTime) 
	{
		DTM expirationDate  = (DTM)getDataElement(1880);
		expirationDate.setValue(strTime);
		setExpirationDate(expirationDate);

	} 

	/** 
	 * Set the Expiration Date.
	 * This field contains the date/time when the certificate expires or will expire.
	 * @param objexpirationDate Object of Expiration Date.
	 */ 
	public void setExpirationDate(DTM objexpirationDate)
	{
		setDataType(1880,objexpirationDate);

	}

	/**
	 * Set the Renewal Date.
	 * This field contains the date/time when the certificate must/will/ be / has been renewed.
	 * @param strTime Specifies a point in time using a 24-hour clock notation. 
	 */ 
	public void setRenewalDate (String strTime) 
	{
		DTM renewalDate  = (DTM)getDataElement(1881);
		renewalDate.setValue(strTime);
		setRenewalDate(renewalDate);

	} 

	/** 
	 * Set the Renewal Date.
	 * This field contains the date/time when the certificate must/will/ be / has been renewed.
	 * @param objrenewalDate Object of Renewal Date.
	 */ 
	public void setRenewalDate(DTM objrenewalDate)
	{
		setDataType(1881,objrenewalDate);

	}

	/**
	 * Set the Revocation Date.
	 * This field contains the date/time when the certificate has been revoked.
	 * @param strTime Specifies a point in time using a 24-hour clock notation. 
	 */ 
	public void setRevocationDate (String strTime) 
	{
		DTM revocationDate  = (DTM)getDataElement(1882);
		revocationDate.setValue(strTime);
		setRevocationDate(revocationDate);

	} 

	/** 
	 * Set the Revocation Date.
	 * This field contains the date/time when the certificate has been revoked.
	 * @param objrevocationDate Object of Revocation Date.
	 */ 
	public void setRevocationDate(DTM objrevocationDate)
	{
		setDataType(1882,objrevocationDate);

	}

	/**
	 * Set the Revocation Reason Code.
	 * This field contains the reason for revoking the certificate.
	 * @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 setRevocationReasonCode (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(1883);
		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);
		setRevocationReasonCode(cwe);

	} 

	/** 
	 * Set the Revocation Reason Code.
	 * This field contains the reason for revoking the certificate.
	 * @param objrevocationReasonCode Object of Revocation Reason Code.
	 */ 
	public void setRevocationReasonCode(CWE objrevocationReasonCode)
	{
		setDataType(1883,objrevocationReasonCode);

	}

	/**
	 * Set the Certificate Status.
	 * This field contains the state of the certificate held by the health professional.
	 * @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 setCertificateStatus (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(1884);
		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); 
		setCertificateStatus(cwe);

	} 

	/** 
	 * Set the Certificate Status.
	 * This field contains the state of the certificate held by the health professional.
	 * @param objcertificateStatus Object of Certificate Status.
	 */ 
	public void setCertificateStatus(CWE objcertificateStatus)
	{
		setDataType(1884,objcertificateStatus);

	}

	/**
	 * 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 Thrown when Segment Validation Fails.  
	 */
	@Override
	public boolean validate() throws InvalidSegmentException 
	{
		try
		{	
			/*
			 * SetID_CER and SubjectName are required fields of this segment.
			 */
			//Condition for Subject ID not clear.
			/*
			 * Subject ID is conditional field. 
			 * Condition rule:If the certificate is expressed as a X.509 document this field is required.    
			 */
			super.validate();

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