/**
 * PRPAMT201310UV02Patient.java
 * <p>
 * File generated from the prpamt201310UV02::PRPAMT201310UV02Patient uml Class
 * Generated by IHE - europe, gazelle team
 */
package net.ihe.gazelle.hl7v3.prpamt201310UV02;

import java.io.Serial;
import java.util.ArrayList;
import java.util.List;

import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBException;
import jakarta.xml.bind.Marshaller;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlTransient;
import jakarta.xml.bind.annotation.XmlType;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import net.ihe.gazelle.gen.common.ConstraintValidatorModule;

import org.w3c.dom.Document;
import org.w3c.dom.Node;


/**
 * Description of the class PRPAMT201310UV02Patient.
 *
 */

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "PRPA_MT201310UV02.Patient", propOrder = {
	"realmCode",
	"typeId",
	"templateId",
	"id",
	"addr",
	"telecom",
	"statusCode",
	"effectiveTime",
	"confidentialityCode",
	"veryImportantPersonCode",
	"patientPerson",
	"patientNonPersonLivingSubject",
	"providerOrganization",
	"subjectOf1",
	"subjectOf2",
	"coveredPartyOf",
	"classCode",
	"nullFlavor"
})
@XmlRootElement(name = "PRPA_MT201310UV02.Patient")
public class PRPAMT201310UV02Patient implements java.io.Serializable {
	
	/**
	 * 
	 */
	@Serial
    private static final long serialVersionUID = 1L;

	
	@XmlElement(name = "realmCode", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.datatypes.CS> realmCode;
	@XmlElement(name = "typeId", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.II typeId;
	@XmlElement(name = "templateId", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.datatypes.II> templateId;
	@XmlElement(name = "id", required = true, namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.datatypes.II> id;
	@XmlElement(name = "addr", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.datatypes.AD> addr;
	@XmlElement(name = "telecom", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.datatypes.TEL> telecom;
	@XmlElement(name = "statusCode", required = true, namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.CS statusCode;
	@XmlElement(name = "effectiveTime", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.IVLTS effectiveTime;
	@XmlElement(name = "confidentialityCode", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.datatypes.CE> confidentialityCode;
	@XmlElement(name = "veryImportantPersonCode", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.datatypes.CE veryImportantPersonCode;
	@XmlElement(name = "patientPerson", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Person patientPerson;
	@XmlElement(name = "patientNonPersonLivingSubject", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02NonPersonLivingSubject patientNonPersonLivingSubject;
	@XmlElement(name = "providerOrganization", namespace = "urn:hl7-org:v3")
	public net.ihe.gazelle.hl7v3.coctmt150003UV03.COCTMT150003UV03Organization providerOrganization;
	@XmlElement(name = "subjectOf1", required = true, namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Subject> subjectOf1;
	@XmlElement(name = "subjectOf2", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Subject4> subjectOf2;
	@XmlElement(name = "coveredPartyOf", namespace = "urn:hl7-org:v3")
	public List<net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02CoveredParty> coveredPartyOf;
	@XmlAttribute(name = "classCode", required = true)
	public java.lang.String classCode;
	@XmlAttribute(name = "nullFlavor")
	public net.ihe.gazelle.hl7v3.voc.NullFlavor nullFlavor;
	
	/**
	 * An attribute containing marshalled element node
	 */
	@XmlTransient
	private org.w3c.dom.Node _xmlNodePresentation;
	
	
	/**
	 * Return realmCode.
	 * @return realmCode
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.CS> getRealmCode() {
		if (realmCode == null) {
	        realmCode = new ArrayList<>();
	    }
	    return realmCode;
	}
	
	/**
	 * Set a value to attribute realmCode.
     */
	public void setRealmCode(List<net.ihe.gazelle.hl7v3.datatypes.CS> realmCode) {
	    this.realmCode = realmCode;
	}
	
	
	
	/**
	 * Add a realmCode to the realmCode collection.
	 * @param realmCode_elt Element to add.
	 */
	public void addRealmCode(net.ihe.gazelle.hl7v3.datatypes.CS realmCode_elt) {
	    this.realmCode.add(realmCode_elt);
	}
	
	/**
	 * Remove a realmCode to the realmCode collection.
	 * @param realmCode_elt Element to remove
	 */
	public void removeRealmCode(net.ihe.gazelle.hl7v3.datatypes.CS realmCode_elt) {
	    this.realmCode.remove(realmCode_elt);
	}
	
	/**
	 * Return typeId.
	 * @return typeId
	 */
	public net.ihe.gazelle.hl7v3.datatypes.II getTypeId() {
	    return typeId;
	}
	
	/**
	 * Set a value to attribute typeId.
     */
	public void setTypeId(net.ihe.gazelle.hl7v3.datatypes.II typeId) {
	    this.typeId = typeId;
	}
	
	
	
	
	/**
	 * Return templateId.
	 * @return templateId
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.II> getTemplateId() {
		if (templateId == null) {
	        templateId = new ArrayList<>();
	    }
	    return templateId;
	}
	
	/**
	 * Set a value to attribute templateId.
     */
	public void setTemplateId(List<net.ihe.gazelle.hl7v3.datatypes.II> templateId) {
	    this.templateId = templateId;
	}
	
	
	
	/**
	 * Add a templateId to the templateId collection.
	 * @param templateId_elt Element to add.
	 */
	public void addTemplateId(net.ihe.gazelle.hl7v3.datatypes.II templateId_elt) {
	    this.templateId.add(templateId_elt);
	}
	
	/**
	 * Remove a templateId to the templateId collection.
	 * @param templateId_elt Element to remove
	 */
	public void removeTemplateId(net.ihe.gazelle.hl7v3.datatypes.II templateId_elt) {
	    this.templateId.remove(templateId_elt);
	}
	
	/**
	 * Return id.
	 * @return id
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.II> getId() {
		if (id == null) {
	        id = new ArrayList<>();
	    }
	    return id;
	}
	
	/**
	 * Set a value to attribute id.
     */
	public void setId(List<net.ihe.gazelle.hl7v3.datatypes.II> id) {
	    this.id = id;
	}
	
	
	
	/**
	 * Add a id to the id collection.
	 * @param id_elt Element to add.
	 */
	public void addId(net.ihe.gazelle.hl7v3.datatypes.II id_elt) {
	    this.getId().add(id_elt);
	}
	
	/**
	 * Remove a id to the id collection.
	 * @param id_elt Element to remove
	 */
	public void removeId(net.ihe.gazelle.hl7v3.datatypes.II id_elt) {
	    this.getId().remove(id_elt);
	}
	
	/**
	 * Return addr.
	 * @return addr
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.AD> getAddr() {
		if (addr == null) {
	        addr = new ArrayList<>();
	    }
	    return addr;
	}
	
	/**
	 * Set a value to attribute addr.
     */
	public void setAddr(List<net.ihe.gazelle.hl7v3.datatypes.AD> addr) {
	    this.addr = addr;
	}
	
	
	
	/**
	 * Add a addr to the addr collection.
	 * @param addr_elt Element to add.
	 */
	public void addAddr(net.ihe.gazelle.hl7v3.datatypes.AD addr_elt) {
	    this.addr.add(addr_elt);
	}
	
	/**
	 * Remove a addr to the addr collection.
	 * @param addr_elt Element to remove
	 */
	public void removeAddr(net.ihe.gazelle.hl7v3.datatypes.AD addr_elt) {
	    this.addr.remove(addr_elt);
	}
	
	/**
	 * Return telecom.
	 * @return telecom
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.TEL> getTelecom() {
		if (telecom == null) {
	        telecom = new ArrayList<>();
	    }
	    return telecom;
	}
	
	/**
	 * Set a value to attribute telecom.
     */
	public void setTelecom(List<net.ihe.gazelle.hl7v3.datatypes.TEL> telecom) {
	    this.telecom = telecom;
	}
	
	
	
	/**
	 * Add a telecom to the telecom collection.
	 * @param telecom_elt Element to add.
	 */
	public void addTelecom(net.ihe.gazelle.hl7v3.datatypes.TEL telecom_elt) {
	    this.telecom.add(telecom_elt);
	}
	
	/**
	 * Remove a telecom to the telecom collection.
	 * @param telecom_elt Element to remove
	 */
	public void removeTelecom(net.ihe.gazelle.hl7v3.datatypes.TEL telecom_elt) {
	    this.telecom.remove(telecom_elt);
	}
	
	/**
	 * Return statusCode.
	 * @return statusCode
	 */
	public net.ihe.gazelle.hl7v3.datatypes.CS getStatusCode() {
	    return statusCode;
	}
	
	/**
	 * Set a value to attribute statusCode.
     */
	public void setStatusCode(net.ihe.gazelle.hl7v3.datatypes.CS statusCode) {
	    this.statusCode = statusCode;
	}
	
	
	
	
	/**
	 * Return effectiveTime.
	 * @return effectiveTime
	 */
	public net.ihe.gazelle.hl7v3.datatypes.IVLTS getEffectiveTime() {
	    return effectiveTime;
	}
	
	/**
	 * Set a value to attribute effectiveTime.
     */
	public void setEffectiveTime(net.ihe.gazelle.hl7v3.datatypes.IVLTS effectiveTime) {
	    this.effectiveTime = effectiveTime;
	}
	
	
	
	
	/**
	 * Return confidentialityCode.
	 * @return confidentialityCode
	 */
	public List<net.ihe.gazelle.hl7v3.datatypes.CE> getConfidentialityCode() {
		if (confidentialityCode == null) {
	        confidentialityCode = new ArrayList<>();
	    }
	    return confidentialityCode;
	}
	
	/**
	 * Set a value to attribute confidentialityCode.
     */
	public void setConfidentialityCode(List<net.ihe.gazelle.hl7v3.datatypes.CE> confidentialityCode) {
	    this.confidentialityCode = confidentialityCode;
	}
	
	
	
	/**
	 * Add a confidentialityCode to the confidentialityCode collection.
	 * @param confidentialityCode_elt Element to add.
	 */
	public void addConfidentialityCode(net.ihe.gazelle.hl7v3.datatypes.CE confidentialityCode_elt) {
	    this.confidentialityCode.add(confidentialityCode_elt);
	}
	
	/**
	 * Remove a confidentialityCode to the confidentialityCode collection.
	 * @param confidentialityCode_elt Element to remove
	 */
	public void removeConfidentialityCode(net.ihe.gazelle.hl7v3.datatypes.CE confidentialityCode_elt) {
	    this.confidentialityCode.remove(confidentialityCode_elt);
	}
	
	/**
	 * Return veryImportantPersonCode.
	 * @return veryImportantPersonCode
	 */
	public net.ihe.gazelle.hl7v3.datatypes.CE getVeryImportantPersonCode() {
	    return veryImportantPersonCode;
	}
	
	/**
	 * Set a value to attribute veryImportantPersonCode.
     */
	public void setVeryImportantPersonCode(net.ihe.gazelle.hl7v3.datatypes.CE veryImportantPersonCode) {
	    this.veryImportantPersonCode = veryImportantPersonCode;
	}
	
	
	
	
	/**
	 * Return patientPerson.
	 * @return patientPerson
	 */
	public net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Person getPatientPerson() {
	    return patientPerson;
	}
	
	/**
	 * Set a value to attribute patientPerson.
     */
	public void setPatientPerson(net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Person patientPerson) {
	    this.patientPerson = patientPerson;
	}
	
	
	
	
	/**
	 * Return patientNonPersonLivingSubject.
	 * @return patientNonPersonLivingSubject
	 */
	public net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02NonPersonLivingSubject getPatientNonPersonLivingSubject() {
	    return patientNonPersonLivingSubject;
	}
	
	/**
	 * Set a value to attribute patientNonPersonLivingSubject.
     */
	public void setPatientNonPersonLivingSubject(net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02NonPersonLivingSubject patientNonPersonLivingSubject) {
	    this.patientNonPersonLivingSubject = patientNonPersonLivingSubject;
	}
	
	
	
	
	/**
	 * Return providerOrganization.
	 * @return providerOrganization
	 */
	public net.ihe.gazelle.hl7v3.coctmt150003UV03.COCTMT150003UV03Organization getProviderOrganization() {
	    return providerOrganization;
	}
	
	/**
	 * Set a value to attribute providerOrganization.
     */
	public void setProviderOrganization(net.ihe.gazelle.hl7v3.coctmt150003UV03.COCTMT150003UV03Organization providerOrganization) {
	    this.providerOrganization = providerOrganization;
	}
	
	
	
	
	/**
	 * Return subjectOf1.
	 * @return subjectOf1
	 */
	public List<net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Subject> getSubjectOf1() {
		if (subjectOf1 == null) {
	        subjectOf1 = new ArrayList<>();
	    }
	    return subjectOf1;
	}
	
	/**
	 * Set a value to attribute subjectOf1.
     */
	public void setSubjectOf1(List<net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Subject> subjectOf1) {
	    this.subjectOf1 = subjectOf1;
	}
	
	
	
	/**
	 * Add a subjectOf1 to the subjectOf1 collection.
	 * @param subjectOf1_elt Element to add.
	 */
	public void addSubjectOf1(net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Subject subjectOf1_elt) {
	    this.getSubjectOf1().add(subjectOf1_elt);
	}
	
	/**
	 * Remove a subjectOf1 to the subjectOf1 collection.
	 * @param subjectOf1_elt Element to remove
	 */
	public void removeSubjectOf1(net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Subject subjectOf1_elt) {
	    this.getSubjectOf1().remove(subjectOf1_elt);
	}
	
	/**
	 * Return subjectOf2.
	 * @return subjectOf2
	 */
	public List<net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Subject4> getSubjectOf2() {
		if (subjectOf2 == null) {
	        subjectOf2 = new ArrayList<>();
	    }
	    return subjectOf2;
	}
	
	/**
	 * Set a value to attribute subjectOf2.
     */
	public void setSubjectOf2(List<net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Subject4> subjectOf2) {
	    this.subjectOf2 = subjectOf2;
	}
	
	
	
	/**
	 * Add a subjectOf2 to the subjectOf2 collection.
	 * @param subjectOf2_elt Element to add.
	 */
	public void addSubjectOf2(net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Subject4 subjectOf2_elt) {
		if (this.subjectOf2 == null){
			this.subjectOf2 = new ArrayList<>();
		}
	    this.subjectOf2.add(subjectOf2_elt);
	}
	
	/**
	 * Remove a subjectOf2 to the subjectOf2 collection.
	 * @param subjectOf2_elt Element to remove
	 */
	public void removeSubjectOf2(net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Subject4 subjectOf2_elt) {
	    this.subjectOf2.remove(subjectOf2_elt);
	}
	
	/**
	 * Return coveredPartyOf.
	 * @return coveredPartyOf
	 */
	public List<net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02CoveredParty> getCoveredPartyOf() {
		if (coveredPartyOf == null) {
	        coveredPartyOf = new ArrayList<>();
	    }
	    return coveredPartyOf;
	}
	
	/**
	 * Set a value to attribute coveredPartyOf.
     */
	public void setCoveredPartyOf(List<net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02CoveredParty> coveredPartyOf) {
	    this.coveredPartyOf = coveredPartyOf;
	}
	
	
	
	/**
	 * Add a coveredPartyOf to the coveredPartyOf collection.
	 * @param coveredPartyOf_elt Element to add.
	 */
	public void addCoveredPartyOf(net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02CoveredParty coveredPartyOf_elt) {
	    this.coveredPartyOf.add(coveredPartyOf_elt);
	}
	
	/**
	 * Remove a coveredPartyOf to the coveredPartyOf collection.
	 * @param coveredPartyOf_elt Element to remove
	 */
	public void removeCoveredPartyOf(net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02CoveredParty coveredPartyOf_elt) {
	    this.coveredPartyOf.remove(coveredPartyOf_elt);
	}
	
	/**
	 * Return classCode.
	 * @return classCode
	 */
	public java.lang.String getClassCode() {
	    return classCode;
	}
	
	/**
	 * Set a value to attribute classCode.
     */
	public void setClassCode(java.lang.String classCode) {
	    this.classCode = classCode;
	}
	
	
	
	
	/**
	 * Return nullFlavor.
	 * @return nullFlavor
	 */
	public net.ihe.gazelle.hl7v3.voc.NullFlavor getNullFlavor() {
	    return nullFlavor;
	}
	
	/**
	 * Set a value to attribute nullFlavor.
     */
	public void setNullFlavor(net.ihe.gazelle.hl7v3.voc.NullFlavor nullFlavor) {
	    this.nullFlavor = nullFlavor;
	}
	
	
	
	
	
	public Node get_xmlNodePresentation() {
		if (_xmlNodePresentation == null){
				JAXBContext jc;
				DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
				dbf.setNamespaceAware(true);
				DocumentBuilder db = null;
				Document doc = null;
				try {
					db = dbf.newDocumentBuilder();
					doc = db.newDocument();
				} catch (ParserConfigurationException ignored) {}
				try {
					jc = JAXBContext.newInstance("net.ihe.gazelle.hl7v3.prpamt201310UV02");
					Marshaller m = jc.createMarshaller();
					m.marshal(this, doc);
					_xmlNodePresentation = doc.getElementsByTagNameNS("urn:hl7-org:v3", "PRPA_MT201310UV02.Patient").item(0);
				} catch (JAXBException e) {
					try{
						db = dbf.newDocumentBuilder();
						_xmlNodePresentation = db.newDocument();
					}
					catch(Exception ignored){}
				}
			}
			return _xmlNodePresentation;
	}
	
	public void set_xmlNodePresentation(Node _xmlNodePresentation) {
		this._xmlNodePresentation = _xmlNodePresentation;
	}
	
	
	

	
	/**
     * validate by a module of validation
     * 
     */
   public static void validateByModule(PRPAMT201310UV02Patient pRPAMT201310UV02Patient, String _location, ConstraintValidatorModule cvm, List<net.ihe.gazelle.validation.Notification> diagnostic){
   		if (pRPAMT201310UV02Patient != null){
   			cvm.validate(pRPAMT201310UV02Patient, _location, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.CS realmCode: pRPAMT201310UV02Patient.getRealmCode()){
					net.ihe.gazelle.hl7v3.datatypes.CS.validateByModule(realmCode, _location + "/realmCode[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			net.ihe.gazelle.hl7v3.datatypes.II.validateByModule(pRPAMT201310UV02Patient.getTypeId(), _location + "/typeId", cvm, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.II templateId: pRPAMT201310UV02Patient.getTemplateId()){
					net.ihe.gazelle.hl7v3.datatypes.II.validateByModule(templateId, _location + "/templateId[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.II id: pRPAMT201310UV02Patient.getId()){
					net.ihe.gazelle.hl7v3.datatypes.II.validateByModule(id, _location + "/id[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.AD addr: pRPAMT201310UV02Patient.getAddr()){
					net.ihe.gazelle.hl7v3.datatypes.AD.validateByModule(addr, _location + "/addr[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.TEL telecom: pRPAMT201310UV02Patient.getTelecom()){
					net.ihe.gazelle.hl7v3.datatypes.TEL.validateByModule(telecom, _location + "/telecom[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			net.ihe.gazelle.hl7v3.datatypes.CS.validateByModule(pRPAMT201310UV02Patient.getStatusCode(), _location + "/statusCode", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.datatypes.IVLTS.validateByModule(pRPAMT201310UV02Patient.getEffectiveTime(), _location + "/effectiveTime", cvm, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.datatypes.CE confidentialityCode: pRPAMT201310UV02Patient.getConfidentialityCode()){
					net.ihe.gazelle.hl7v3.datatypes.CE.validateByModule(confidentialityCode, _location + "/confidentialityCode[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			net.ihe.gazelle.hl7v3.datatypes.CE.validateByModule(pRPAMT201310UV02Patient.getVeryImportantPersonCode(), _location + "/veryImportantPersonCode", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Person.validateByModule(pRPAMT201310UV02Patient.getPatientPerson(), _location + "/patientPerson", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02NonPersonLivingSubject.validateByModule(pRPAMT201310UV02Patient.getPatientNonPersonLivingSubject(), _location + "/patientNonPersonLivingSubject", cvm, diagnostic);
			net.ihe.gazelle.hl7v3.coctmt150003UV03.COCTMT150003UV03Organization.validateByModule(pRPAMT201310UV02Patient.getProviderOrganization(), _location + "/providerOrganization", cvm, diagnostic);
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Subject subjectOf1: pRPAMT201310UV02Patient.getSubjectOf1()){
					net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Subject.validateByModule(subjectOf1, _location + "/subjectOf1[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Subject4 subjectOf2: pRPAMT201310UV02Patient.getSubjectOf2()){
					net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Subject4.validateByModule(subjectOf2, _location + "/subjectOf2[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
			{
				int i = 0;
				for (net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02CoveredParty coveredPartyOf: pRPAMT201310UV02Patient.getCoveredPartyOf()){
					net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02CoveredParty.validateByModule(coveredPartyOf, _location + "/coveredPartyOf[" + i + "]", cvm, diagnostic);
					i++;
				}
			}
			
    	}
    }

}