The value of interactionId SHALL be set to PRPA_IN201305UV02 (Table 3.47.4.1.2-7: Wrappers and Constraints) OCL not (self.interactionId.oclIsUndefined()) and not (self.interactionId.extension.oclIsUndefined()) and self.interactionId.extension='PRPA_IN201305UV02' The value of processingModeCode SHALL be set to T (Table 3.47.4.1.2-7: Wrappers and Constraints) OCL self.processingModeCode.oclIsUndefined() or (not (self.processingModeCode.code.oclIsUndefined()) and self.processingModeCode.code='T') The acceptAckCode SHALL be set to AL (Table 3.47.4.1.2-7: Wrappers and Constraints) OCL not(self.acceptAckCode.oclIsUndefined()) and not (self.acceptAckCode.code.oclIsUndefined()) and self.acceptAckCode.code='AL' There SHALL be only one receiver device (Table 3.47.4.1.2-7: Wrappers and Constraints) OCL self.receiver->size()=1 Valid values are D (Debugging), T (Testing), P (Production) (Table O.1.1-1: Model Attributes) OCL not self.processingCode.oclIsUndefined() and not self.processingCode.code.oclIsUndefined() and (self.processingCode.code='D' or self.processingCode.code='T' or self.processingCode.code='P') The trigger event code in ControlActProcess/code/@code SHALL be set to PRPA_TE201305UV02 (Table 3.47.4.1.2-7: Wrappers and Constraints) OCL not (self.code.oclIsUndefined()) and not (self.code.code.oclIsUndefined()) and self.code.code='PRPA_TE201305UV02' QueryByParameter SHALL be present (Figure O-2.3-3: Message information model) OCL not self.queryByParameter.oclIsUndefined() The Patient Demographics Supplier is required to send an immediate response ie responsePriorityCode SHALL be set to I OCL self.responsePriorityCode.oclIsUndefined() or (not(self.responsePriorityCode.code.oclIsUndefined()) and self.responsePriorityCode.code='I') The mode of the response SHALL always be real-time ie responseModalityCode SHALL be set to R (Table 3.47.4.1.2-1: Model Attributes) OCL self.responseModalityCode.oclIsUndefined() or (not self.responseModalityCode.code.oclIsUndefined() and self.responseModalityCode.code='R') The responseModalityCode element of the QueryByParameter element is required to be sent (Table 3.47.4.1.2-1) OCL not(self.responseModalityCode.oclIsUndefined()) responsePriorityCode element of the QueryByParameter element is required to be sent (Table 3.47.4.1.2-1) OCL not self.responseModalityCode.oclIsUndefined() The value of authorOrPerformer.typeCode SHALL be set to AUT (Table 3.47.4.1.2-7: Wrappers and Constraints) OCL not (self.typeCode.oclIsUndefined()) and self.typeCode=XParticipationAuthorPerformer::AUT If present livingSubjectAdministrativeGender element SHALL NOT be repeated (Figure 3.47.4.1.2-1: Message Information Model for the Query by Demographics message - ITI TF-2b) OCL self.livingSubjectAdministrativeGender->size() <= 1 PatientAddress SHALL NOT be repeated [0..1] (Figure 3.47.4.1.2-1: Message Information Model for the Query by Demographics message - ITI TF-2b) OCL self.patientAddress->size() <= 1 LivingSubjectBirthTime SHALL NOT be repeated [0..1] (Figure 3.47.4.1.2-1: Message Information Model for the Query by Demographics message - ITI TF-2b) OCL self.livingSubjectBirthTime->size() <= 1 PatientTelecom SHALL NOT be repeated [0..1] (Section 3.47.4.1.2.2 - ITI TF-2b) OCL self.patientTelecom->size() <= 1 PrincipalCareProviderId SHALL NOT be repeated [0..1] (Section 3.47.4.1.2.2 - ITI TF-2b) OCL self.principalCareProviderId->size() <= 1 PrincipalCareProvisionId SHALL NOT be repeated [0..1] (Section 3.47.4.1.2.2 - ITI TF-2b) OCL self.principalCareProvisionId->size() <= 1 MothersMaidenName SHALL NOT be repeated [0..1] (Section 3.47.4.1.2.2 - ITI TF-2b) OCL self.mothersMaidenName->size() <= 1 LivingSubjectDeceasedTime SHALL NOT be repeated [0..1] (Section 3.47.4.1.2.2 - ITI TF-2b) OCL self.livingSubjectDeceasedTime->size() <= 1 PatientStatusCode SHALL NOT be repeated [0..1] (Section 3.47.4.1.2.2 - ITI TF-2b) OCL self.patientStatusCode->size() <= 1 LivingSubjectBirthPlaceName SHALL NOT be repeated [0..1] (Section 3.47.4.1.2.2 - ITI TF-2b) OCL self.livingSubjectBirthPlaceName->size() <= 1 LivingSubjectBirthPlaceAddress SHALL NOT be repeated [0..1] (Section 3.47.4.1.2.2 - ITI TF-2b) OCL self.livingSubjectBirthPlaceAddress->size() <= 1 The data type of MatchAlgorithm.value is constrained to ST (Section 3.47.4.1.2.2 - ITI TF-2b) OCL self.value.oclIsKindOf(ST) The data type of MinimumDegreeMatch.value is constraint to INT OCL self.value.oclIsKindOf(INT) The data type of LivingSubjectName.value is constraint to PN (Section 3.47.4.1.2.2 - ITI TF-2b) OCL self.value->forAll(en : EN | not (en.oclIsKindOf(TN) or en.oclIsKindOf(ON)) ) Exactly one value attribute SHALL be present in LivingSubjectName parameter (Section 3.47.4.1.2.2 - ITI TF-2b) OCL self.value->size() = 1 Exactly one value attribute SHALL be present in LivingSubjectBirthPlaceAddress parameter (Section 3.47.4.1.2.2 - ITI TF-2b) OCL self.value->size() = 1 Exactly one value attribute SHALL be present in LivingSubjectBirthTime parameter (Section 3.47.4.1.2.2 - ITI TF-2b) OCL self.value->size() = 1 Exactly one value attribute SHALL be present in LivingSubjectDeceasedTime parameter (Section 3.47.4.1.2.2 - ITI TF-2b) OCL self.value->size() = 1 Exactly one value attribute SHALL be present in LivingSubjectId parameter (Section 3.47.4.1.2.2 - ITI TF-2b) OCL self.value->size() = 1 IHE requirements for patient identifiers: value.root attribute SHALL be present and format as a valid ISO OID, and extension SHALL be present (Table E-2.2-2) OCL self.value->forAll(ii : II | not ii.root.oclIsUndefined() and ii.isOID(ii.root) and not(ii.extension.oclIsUndefined()) ) Exactly one value attribute SHALL be present in OtherIDsScopingOrganization parameter (Section 3.47.4.1.2.2 - ITI TF-2b) OCL self.value->size() = 1 IHE restriction: The value.root attribute SHALL be a valid ISO OID, and the value.extension attribute SHALL NOT be present (Table 3.47.4.1.2-1 from TF ITI-2b) OCL self.value->forAll(ii : II | not ii.root.oclIsUndefined() and ii.isOID(ii.root) and ii.extension.oclIsUndefined() ) Exactly one value attribute SHALL be present in MothersMaidenName parameter (Section 3.47.4.1.2.2 - ITI TF-2b) OCL self.value->size() = 1 Exactly one value attribute SHALL be present in PrincipalCareProviderId parameter (Section 3.47.4.1.2.2 - ITI TF-2b) OCL self.value->size() = 1 Exactly one value attribute SHALL be present in PrincipalCareProvisionId parameter (Section 3.47.4.1.2.2 - ITI TF-2b) OCL self.value->size() = 1 acceptAckCode SHALL be set to NE as this is an acknowledgment itself (Table O-1.3-2: Model Attributes) OCL not self.acceptAckCode.oclIsUndefined() and not self.acceptAckCode.code.oclIsUndefined() and self.acceptAckCode.code='NE' message SHALL contain exactly one receiver (Figure O-1.3-2: Message Information Model) OCL self.receiver->size() = 1 Exactly one acknowledgement SHALL be present (Figure O.1.3-2: Message Information Model) OCL self.acknowledgement->size()=1 The value of interactionId SHALL be set to PRPA_IN201306UV02 (Table 3.47.4.2.2-9: Wrappers and Constraints - ITI-2b) OCL not self.interactionId.oclIsUndefined() and not self.interactionId.extension.oclIsUndefined() and self.interactionId.extension='PRPA_IN201306UV02' The value of processingModeCode SHALL be set to T (Table 3.47.4.2.2-9: Wrappers and Constraints - ITI-2b) OCL not self.processingModeCode.oclIsUndefined() and not self.processingModeCode.code.oclIsUndefined() and self.processingModeCode.code='T' Subject SHALL contain exactly one contextConductionInd attribute (Table O.2.2-2) OCL not self.contextConductionInd.oclIsUndefined() The context conduction Indicator value in this control act wrapper SHALL be 'false' (Table O.2.2-2) OCL not self.contextConductionInd.oclIsUndefined() and self.contextConductionInd=false Patient SHALL have exactly one providerOrganization attribute (Figure 3.47.2.2.-1: Message Information Model for the Patient Registry Find Candidates Response message) OCL not self.providerOrganization.oclIsUndefined() statusCode SHALL be set to 'active' (Table 3.47.4.2.2-8: Model Attributes - ITI-2b) OCL not self.statusCode.oclIsUndefined() and not self.statusCode.code.oclIsUndefined() and self.statusCode.code='active' Patient SHALL have exactly one patientPerson attribute (Figure 3.47.4.2.2-1: Message Information Model for the Patient Registry Find Candidates Response message) OCL not self.patientPerson.oclIsUndefined() and self.patientNonPersonLivingSubject.oclIsUndefined() patientPerson/@classCode SHALL be present (Table 3.47.4.2.2-8: Model Attributes - ITI-2b) OCL not self.classCode.oclIsUndefined() patientPerson/@determinerCode SHALL be present (Table 3.47.4.2.2-8: Model Attributes - ITI-2b) OCL not self.determinerCode.oclIsUndefined() personRelationship/@classCode SHALL be present (Table 3.47.4.2.2-8: Model Attributes - ITI-2b) OCL not self.classCode.oclIsUndefined() asCitizen/@classCode SHALL be present (Table 3.47.4.2.2-8: Model Attributes - ITI-2b) OCL not self.classCode.oclIsUndefined() politicalNation/@classCode SHALL be present (Table 3.47.4.2.2-8: Model Attributes - ITI-2b) OCL not self.classCode.oclIsUndefined() politicalNation/@determinerCode SHALL be present (Table 3.47.4.2.2-8: Model Attributes - ITI-2b) OCL not self.determinerCode.oclIsUndefined() The trigger event code in Control Act Process.code SHALL be set to PRPA_TE201306UV02 (Table 3.47.4.2.2-9: Wrappers and Constraints - ITI-2b) OCL not self.code.oclIsUndefined() and not self.code.code.oclIsUndefined() and self.code.code='PRPA_TE201306UV02' The SHALL be a QueryByParameter copy of the original query (Table 3.47.4.2.2-9: Wrappers and Constraints - ITI-2b) OCL not self.queryByParameter.oclIsUndefined() There SHALL be NO replacementOf act-relationship present in this message (Table 3.47.4.2.2-9: Wrappers and Constraints - ITI-2b) OCL self.replacementOf->size() = 0 Since this is an Accept Acknowledgement, the possible values are AA, AE or AR (A reference is needed there) OCL not self.typeCode.oclIsUndefined() and not self.typeCode.code.oclIsUndefined() and ( self.typeCode.code='AA' or self.typeCode.code='AE' or self.typeCode.code='AR' ) A numeric value indicating the quality of the mathch for this record. Datatype of value attribute SHALL be INT. Table 3.47.4.2.2-8 OCL self.value.oclIsKindOf(INT) acceptAckCode SHALL be set to AL (Table 3.47.4.3.2-1: Wrappers and Constraints) OCL not self.acceptAckCode.oclIsUndefined() and not self.acceptAckCode.code.oclIsUndefined() and self.acceptAckCode.code='AL' Exactly one acknowledgement SHALL be present (Figure O.1.3-2: Message Information Model) OCL self.acknowledgement->size()=1 message SHALL contain exactly one receiver (Figure O-1.3-2: Message Information Model) OCL self.receiver->size() = 1 The value of interactionId SHALL be set to QUQI_IN000003UV01 (Table 3.47.4.3.2-1: Wrappers and Constraints) OCL not self.interactionId.oclIsUndefined() and not self.interactionId.extension.oclIsUndefined() and self.interactionId.extension='QUQI_IN000003UV01' The value of processingModeCode SHALL be set to T (Table 3.47.4.3.2-1: Wrappers and Constraints) OCL not self.processingModeCode.oclIsUndefined() and not self.processingModeCode.code.oclIsUndefined() and self.processingModeCode.code='T' The trigger event code in ControlActProcess.code SHALL be set to PRPA_TE000003UV01 (Table 3.47.4.3.2-1: Wrappers and Constraints) OCL not self.code.oclIsUndefined() and not self.code.code.oclIsUndefined() and self.code.code='PRPA_TE000003UV01' The Acknowledgement.typeCode SHALL be set to AA OCL not self.typeCode.oclIsUndefined() and not self.typeCode.code.oclIsUndefined() and self.typeCode.code='AA' The assigned entity for this participant SHALL be either an organization or a device (Table O.2.1-1: Model Attributes) OCL if (not self.assignedEntity.oclIsUndefined()) then self.assignedEntity.assignedPerson.oclIsUndefined() else self.assignedEntity.oclIsUndefined() endif PriorRegistration SHALL have a statusCode attribute (Table O.2.1-1: Model Attributes) OCL not self.statusCode.oclIsUndefined() Message.acceptAckCode is fixed to NE (don't ack an ack) (Section O.1.2: Send accept acknowledgement information model) OCL not self.acceptAckCode.oclIsUndefined() and not self.acceptAckCode.code.oclIsUndefined() and self.acceptAckCode.code='NE' Acknowledgement is a required class. Message SHALL contain exactly one Acknowledgement attribute (Figure O.1.2-1: Message Information Model) OCL self.acknowledgement->size()=1 Valid values for processingCode attribute are D (Debugging), T (Testing) and P (Production) (Table O.1.2-1: Model Attributes) OCL not self.processingCode.oclIsUndefined() and not self.processingCode.code.oclIsUndefined() and ( self.processingCode.code='T' or self.processingCode.code='D' or self.processingCode.code='P' ) Valid values for processingModeCode are A (Archive), T (Current processing), I (Initial Load) and R (Restore from archive) (Table O.1.2-1: Model Attributes) OCL not self.processingModeCode.oclIsUndefined() and not self.processingModeCode.code.oclIsUndefined() and ( self.processingModeCode.code='A' or self.processingModeCode.code='T' or self.processingModeCode.code='I' or self.processingModeCode.code='R' ) ControlActProcess SHALL have one [1..1] queryByParamerter OCL not (self.queryByParameter.oclIsUndefined()) ControlActProcess.code.code SHALL be set to PRPA_TE201309UV02 OCL not (self.code.oclIsUndefined()) and self.code.code='PRPA_TE201309UV02' ControlActProcess.authorOrPerformer.typeCode SHALL be set to AUT OCL self.authorOrPerformer->forAll( var : QUQIMT021001UV01AuthorOrPerformer | not (var.typeCode.oclIsUndefined()) and var.typeCode=XParticipationAuthorPerformer::AUT ) Exactly one QueryByParameter.queryId SHALL be present OCL not(self.queryId.oclIsUndefined()) QueryByParameter.statusCode is defaulted to "new" OCL not (self.statusCode.oclIsUndefined()) and not(self.statusCode.code.oclIsUndefined()) and self.statusCode.code = 'new' QueryByParameter.responsePriorityCode is required and is fixed to I (Immediate) OCL not (self.responsePriorityCode.oclIsUndefined()) and not (self.responsePriorityCode.code.oclIsUndefined()) and self.responsePriorityCode.code='I' If one or more DataSource parameters are present, each SHALL contain exactly one [1..1] DataSource.value parameter The value.root attribute SHALL be a valid ISO OID The value.extension attribute SHALL NOT be present OCL self.value->select(var : II | (not var.root.oclIsUndefined()) and var.isOID(var.root) and var.extension.oclIsUndefined())->size() = 1 Exactly one [1..1] PatientIdentifier.value SHALL be present OCL self.value->size()=1 ParameterList SHALL have one [1..1] PatientIdentifier OCL self.patientIdentifier->size()=1 Message.interactionId SHALL be set to PRPA_IN201309UV02 OCL self.interactionId->forAll( ii : II | ii.extension='PRPA_IN201309UV02' ) Message.processingModeCode.code SHALL be set to T OCL not (self.processingModeCode.code.oclIsUndefined()) and self.processingModeCode.code='T' Message SHALL have just one [1..1] receiver and receiver SHALL have one [1..1] device OCL self.receiver->size()=1 The id attribute of Provider Organization shall have only a root OCL self.id->forAll(ii : II | not (ii.root.oclIsUndefined()) and ii.assigningAuthorityName.oclIsUndefined() and ii.extension.oclIsUndefined() and ii.displayable.oclIsUndefined() ) The id/@root attribute of Provider Organization shall be expressed as an ISO OID OCL self.id->forAll(ii : II | not ii.root.oclIsUndefined() and ii.isOID(ii.root) ) The Provider Organization needs to be identified by at least one of address, telecommunications address, or contact person. OCL not (self.contactPerson.oclIsUndefined()) or self.telecom->size() > 0 or self.addr->size() > 0 otherIDs.id.root SHALL be identical to scopingOrganization.id.root OCL self.id->size() > 0 and not (self.scopingOrganization.oclIsUndefined()) and self.scopingOrganization.id->size() > 0 and self.id->forAll(ii : II | not (ii.root.oclIsUndefined()) and self.scopingOrganization.id->select(ii2: II | not (ii2.root.oclIsUndefined()) and not (ii.root = ii2.root))->size() = 0 ) All IHE Actors are required to send the extension attribute for any id element representing a patient identifier OCL self.id->forAll(ii: II | not (ii.extension.oclIsUndefined())) The focal entity choice is restricted to be only a person OCL not (self.patientPerson.oclIsUndefined()) and self.patientNonPersonLivingSubject.oclIsUndefined() All IHE Actors are required to send the extension attribute for any id element representing a patient identifier OCL self.id->forAll(ii: II | not (ii.extension.oclIsUndefined())) When the Patient role is scoped by a Provider organization, only patient IDs assigned by the provider organization are allowed in the Patient class, the root element of the patient IDs shall match the root element of the provider organization ID. OCL (self.providerOrganization.oclIsUndefined() or self.providerOrganization.id->size() = 0) xor self.id->forAll(ii: II | self.providerOrganization.id->exists(orgid: II | not (orgid.root.oclIsUndefined()) and orgid.root = ii.root)) patientPerson.classCode attribute is mandatory OCL not (self.classCode.oclIsUndefined()) patientPerson.determinerCode attribute is mandatory OCL not (self.determinerCode.oclIsUndefined()) All IHE Actors are required to send the extension attribute for any id element representing a patient identifier OCL self.id->forAll(ii: II | not (ii.extension.oclIsUndefined())) The relationship holder of the personal relationship is restricted to be a person OCL not (self.relationshipHolder1.oclIsUndefined()) and self.relationshipHolder2.oclIsUndefined() personalRelationship.classCode attribute is mandatory OCL not (self.classCode.oclIsUndefined()) asCitizen.classCode attribute is mandatory OCL not (self.classCode.oclIsUndefined()) politicalNation.classCode attribute is mandatory OCL not (self.classCode.oclIsUndefined()) politicalNation.determinerCode attribute is mandatory OCL not (self.determinerCode.oclIsUndefined()) birthPlace.classCode attribute is mandatory OCL not (self.classCode.oclIsUndefined()) Either BirthPlace.addr or an associated BirthPlace.name must be valued OCL not (self.birthplace.oclIsUndefined() or self.birthplace.name->size() = 0) or not (self.addr.oclIsUndefined()) The value of processingModeCode SHALL be set to T OCL not (self.processingModeCode.oclIsUndefined()) and not (self.processingModeCode.code.oclIsUndefined()) and self.processingModeCode.code = 'T' The value of acceptAckCode SHALL be set to AL OCL not (self.acceptAckCode.oclIsUndefined()) and not (self.acceptAckCode.code.oclIsUndefined()) and self.acceptAckCode.code = 'AL' For Add Patient Record message, the value of interactionId SHALL be set to PRPA_IN201301UV02 OCL not (self.interactionId.oclIsUndefined()) and not (self.interactionId.extension.oclIsUndefined()) and self.interactionId.extension = 'PRPA_IN201301UV02' There SHALL be only one receiver Device OCL self.receiver->size() = 1 For Add Patient Record message, the trigger event code ControlActProcess.code SHALL be set to PRPA_TE201301UV02 OCL not (self.code.oclIsUndefined()) and not (self.code.code.oclIsUndefined()) and self.code.code = 'PRPA_TE201301UV02' RegistrationEvent.statusCode SHALL be set to active OCL not (self.statusCode.oclIsUndefined()) and not (self.statusCode.code.oclIsUndefined()) and self.statusCode.code = 'active' There SHALL be no ReplacementOf act relationship for the Add Patient Record and Revise Patient Record interactions. OCL self.replacementOf->size() = 0 RegistrationEvent.effectiveTime and the author.time SHALL be valued with the same time expression OCL ((self.effectiveTime.oclIsUndefined() or self.effectiveTime.value.oclIsUndefined()) or (self.author.oclIsUndefined() or self.author.time.oclIsUndefined() or self.author.time.value.oclIsUndefined())) or (self.effectiveTime.value = self.author.time.value) The context conduction Indicator value in the MFMI_MT700701UV01 control act wrapper is mandatory and SHALL be false OCL not (self.contextConductionInd.oclIsUndefined()) and not (self.contextConductionInd) otherIDs.id.root SHALL be identical to scopingOrganization.id.root OCL self.id->size() > 0 and not (self.scopingOrganization.oclIsUndefined()) and self.scopingOrganization.id->size() > 0 and self.id->forAll(ii : PRPAMT201302UV02OtherIDsId | not (ii.root.oclIsUndefined()) and self.scopingOrganization.id->select(ii2: II | not (ii.root = ii2.root))->size() = 0 ) All IHE Actors are required to send the extension attribute for any id element representing a patient identifier OCL self.id->forAll(ii: PRPAMT201302UV02OtherIDsId | not (ii.extension.oclIsUndefined())) birthPlace.classCode attribute is mandatory OCL not (self.classCode.oclIsUndefined()) Either BirthPlace.addr or an associated BirthPlace.name must be valued OCL not (self.birthplace.oclIsUndefined() or self.birthplace.name->size() = 0) or not (self.addr.oclIsUndefined()) asCitizen.classCode attribute is mandatory OCL not (self.classCode.oclIsUndefined()) For Revise Patient Record message, the trigger event code ControlActProcess.code SHALL be set to PRPA_TE201302UV02 OCL not (self.code.oclIsUndefined()) and not (self.code.code.oclIsUndefined()) and self.code.code = 'PRPA_TE201302UV02' For Revise Patient Record message, the value of interactionId SHALL be set to PRPA_IN201302UV02 OCL not (self.interactionId.oclIsUndefined()) and not (self.interactionId.extension.oclIsUndefined()) and self.interactionId.extension = 'PRPA_IN201302UV02' The value of processingModeCode SHALL be set to T OCL not (self.processingModeCode.oclIsUndefined()) and not (self.processingModeCode.code.oclIsUndefined()) and self.processingModeCode.code = 'T' The value of acceptAckCode SHALL be set to AL OCL not (self.acceptAckCode.oclIsUndefined()) and not (self.acceptAckCode.code.oclIsUndefined()) and self.acceptAckCode.code = 'AL' There SHALL be only one receiver Device OCL self.receiver->size() = 1 politicalNation.classCode attribute is mandatory OCL not (self.classCode.oclIsUndefined()) politicalNation.determinerCode attribute is mandatory OCL not (self.determinerCode.oclIsUndefined()) The focal entity choice is restricted to be only a person OCL not (self.patientPerson.oclIsUndefined()) and self.patientNonPersonLivingSubject.oclIsUndefined() The provider Organization which is scoping the patient role is required OCL not(self.providerOrganization.oclIsUndefined()) All IHE Actors are required to send the extension attribute for any id element representing a patient identifier OCL self.id->forAll(ii: PRPAMT201302UV02PatientId | not (ii.extension.oclIsUndefined())) When the Patient role is scoped by a Provider organization, only patient IDs assigned by the provider organization are allowed in the Patient class, the root element of the patient IDs shall match the root element of the provider organization ID. OCL (self.providerOrganization.oclIsUndefined() or self.providerOrganization.id->size() = 0) xor self.id->forAll(ii: PRPAMT201302UV02PatientId | self.providerOrganization.id->exists(orgid: II | not (orgid.root.oclIsUndefined()) and orgid.root = ii.root)) The relationship holder of the personal relationship is restriced to be a person OCL not (self.relationshipHolder1.oclIsUndefined()) and self.relationshipHolder2.oclIsUndefined() personalRelationship.classCode attribute is mandatory OCL not (self.classCode.oclIsUndefined()) patientPerson.classCode attribute is mandatory OCL not (self.classCode.oclIsUndefined()) patientPerson.determinerCode attribute is mandatory OCL not (self.determinerCode.oclIsUndefined()) All IHE Actors are required to send the extension attribute for any id element representing a patient identifier OCL self.id->forAll(ii: PRPAMT201302UV02PersonId | not (ii.extension.oclIsUndefined())) RegistrationEvent.statusCode SHALL be set to active OCL not (self.statusCode.oclIsUndefined()) and not (self.statusCode.code.oclIsUndefined()) and self.statusCode.code = 'active' There SHALL be no ReplacementOf act relationship for the Add Patient Record and Revise Patient Record interactions. OCL self.replacementOf->size() = 0 RegistrationEvent.effectiveTime and the author.time SHALL be valued with the same time expression OCL ((self.effectiveTime.oclIsUndefined() or self.effectiveTime.value.oclIsUndefined()) or (self.author.oclIsUndefined() or self.author.time.oclIsUndefined() or self.author.time.value.oclIsUndefined())) or (self.effectiveTime.value = self.author.time.value) The context conduction Indicator value in the MFMI_MT700701UV01 control act wrapper is mandatory and SHALL be false OCL not (self.contextConductionInd.oclIsUndefined()) and not (self.contextConductionInd) For Patients Registry Duplicates Resolved message, the interactionId SHALL be set to PRPA_IN201304UV02 OCL not (self.interactionId.oclIsUndefined()) and not (self.interactionId.extension.oclIsUndefined()) and self.interactionId.extension = 'PRPA_IN201304UV02' The value of processingModeCode SHALL be set to T OCL not (self.processingModeCode.oclIsUndefined()) and not (self.processingModeCode.code.oclIsUndefined()) and self.processingModeCode.code = 'T' The value of acceptAckCode SHALL be set to AL OCL not (self.acceptAckCode.oclIsUndefined()) and not (self.acceptAckCode.code.oclIsUndefined()) and self.acceptAckCode.code = 'AL' There SHALL be only one receiver Device OCL self.receiver->size() = 1 The trigger event code in ControlActProcess.code SHALL be set to PRPA_TE201304UV02 OCL not (self.code.oclIsUndefined()) and not (self.code.code.oclIsUndefined()) and self.code.code = 'PRPA_TE201304UV02' registrationEvent.statusCode SHALL be set to active OCL not (self.statusCode.oclIsUndefined()) and not (self.statusCode.code.oclIsUndefined()) and self.statusCode.code = 'active' There SHALL be an InReplacementOf act relationship OCL self.replacementOf->size() = 1 RegistrationEvent.effectiveTime and the author.time SHALL be valued with the same time expression OCL ((self.effectiveTime.oclIsUndefined() or self.effectiveTime.value.oclIsUndefined()) or (self.author.oclIsUndefined() or self.author.time.oclIsUndefined() or self.author.time.value.oclIsUndefined())) or (self.effectiveTime.value = self.author.time.value) The value of PriorRegistration.statusCode SHALL be "obsolete" OCL not (self.statusCode.oclIsUndefined()) and not (self.statusCode.code.oclIsUndefined()) and self.statusCode.code = 'obsolete' There SHALL be a PriorRegisteredRole role OCL not (self.subject1.oclIsUndefined()) and not(self.subject1.priorRegisteredRole.oclIsUndefined()) There SHALL be a single PriorRegisteredRole.id attribute, representing the subsumed patient identifier OCL self.id->size() = 1 All IHE Actors are required to send the extension attribute for any id element representing a patient identifier OCL self.id->forAll(ii: II | not (ii.extension.oclIsUndefined())) The focal entity choice is restricted to be only a person OCL not (self.patientPerson.oclIsUndefined()) and self.patientNonPersonLivingSubject.oclIsUndefined() This record is active, that means that the statusCode.code attribute is valued to "active" OCL not (self.statusCode.oclIsUndefined()) and not (self.statusCode.code.oclIsUndefined()) and self.statusCode.code = 'active' All IHE Actors are required to send the extension attribute for any id element representing a patient identifier OCL self.id->forAll(ii: II | not (ii.extension.oclIsUndefined())) When the Patient role is scoped by a Provider organization, only patient IDs assigned by the provider organization are allowed in the Patient class, the root element of the patient IDs shall match the root element of the provider organization ID. OCL (self.providerOrganization.oclIsUndefined() or self.providerOrganization.id->size() = 0) xor self.id->forAll(ii: II | self.providerOrganization.id->exists(orgid: II | not (orgid.root.oclIsUndefined()) and orgid.root = ii.root)) Person.name must be non-null OCL self.name->size() > 0 and self.name->exists(pn: PN | pn.family->size() > 0 or pn.given->size() > 0 or pn.prefix->size() > 0 or pn.suffix->size() > 0 ) patientPerson.classCode attribute is mandatory OCL not (self.classCode.oclIsUndefined()) patientPerson.determinerCode attribute is mandatory OCL not (self.determinerCode.oclIsUndefined()) All IHE Actors are required to send the extension attribute for any id element representing a patient identifier OCL self.id->forAll(ii: II | not (ii.extension.oclIsUndefined())) All IHE Actors are required to send the extension attribute for any id element representing a patient identifier OCL self.id->forAll(ii: II | not (ii.extension.oclIsUndefined())) The context conduction Indicator value in the MFMI_MT700701UV01 control act wrapper is mandatory and SHALL be false OCL not (self.contextConductionInd.oclIsUndefined()) and not (self.contextConductionInd) Patient SHALL have one or more [1..*] id and nullFlavor SHALL be undefined OCL self.id->size()>0 and self.id->forAll(ii : II | ii.nullFlavor.oclIsUndefined() ) Patient SHALL have one [1..1] statusCode and is value is fixed to active OCL not (self.statusCode.oclIsUndefined()) and not (self.statusCode.code.oclIsUndefined()) and self.statusCode.code='active' The focal entity choice is restricted to be only a person OCL self.patientNonPersonLivingSubject.oclIsUndefined() and not (self.patientPerson.oclIsUndefined()) IHE requires that the Patient Identifier Cross-reference Manager populates element assigningAuthorityName of any id attribute representing a patient identifier OCL self.id->forAll(ii: II | not (ii.assigningAuthorityName.oclIsUndefined()) ) All IHE Actors are required to send the extension attribute for any id element representing a patient identifier OCL self.id->forAll(ii: II | not (ii.extension.oclIsUndefined()) ) When the Patient role is scoped by a Provider organization, only patient IDs assigned by the provider organization are allowed in the Patient class, the root element of the patient IDs shall match the root element of the provider organization ID. OCL ( self.providerOrganization.oclIsUndefined() or self.providerOrganization.id->size() = 0 ) xor self.id->forAll(ii: II | self.providerOrganization.id->exists(orgid: II | not (orgid.root.oclIsUndefined()) and orgid.root = ii.root ) ) OtherIDs SHALL have one [1..1] classCode and is value is fixed to ROL OCL not (self.classCode.oclIsUndefined()) and self.classCode='ROL' OtherIDs SHALL have one or more [1..*] id and nullFlavor SHALL be undefined OCL self.id->select(ii : II | ii.nullFlavor.oclIsUndefined() )->size()>0 IHE requires that the Patient Identifier Cross-reference Manager populates element assigningAuthorityName of any id attribute representing a patient identifier OCL self.id->forAll(ii: II | not (ii.assigningAuthorityName.oclIsUndefined()) ) All IHE Actors are required to send the extension attribute for any id element representing a patient identifier OCL self.id->forAll(ii: II | not (ii.extension.oclIsUndefined()) ) Message.interactionId SHALL be set to PRPA_IN201310UV02 OCL self.interactionId->forAll( ii : II | ii.extension='PRPA_IN201310UV02' ) Message.processingModeCode SHALL be set to T OCL not (self.processingModeCode.code.oclIsUndefined()) and self.processingModeCode.code='T' Message.acceptAckCode SHALL be set to NE OCL not (self.acceptAckCode.code.oclIsUndefined()) and self.acceptAckCode.code='NE' Message SHALL have just one [1..1] receiver and receiver SHALL have one [1..1] device OCL self.receiver->size()=1 Acknowledgment is a required class (see TF ITI-2x section O.1.2) and SHALL be present exactly once. OCL self.acknowledgement->size() = 1 ControlActProcess.moodCode SHALL be set to EVN OCL not (self.moodCode.oclIsUndefined()) and self.moodCode=XActMoodIntentEvent::EVN ControlActProcess.code.code SHALL be set to PRPA_TE201310UV02 OCL not (self.code.oclIsUndefined()) and not (self.code.code.oclIsUndefined()) and self.code.code='PRPA_TE201310UV02' ControlActProcess SHALL have one or zero [0..1] subject OCL self.subject->size() < 2 ControlActProcess SHALL have one [1..1] QueryByParameter copy of the original query. OCL not (self.queryByParameter.oclIsUndefined()) RegistrationEvent SHALL be no replacementOf act-relationship present in this message OCL self.replacementOf->size()=0 IHE requires that the Patient Identifier Cross-reference Manager populates element assigningAuthorityName of any id attribute representing a patient identifier OCL self.id->forAll(ii: II | not (ii.assigningAuthorityName.oclIsUndefined()) ) All IHE Actors are required to send the extension attribute for any id element representing a patient identifier OCL self.id->forAll(ii: II | not (ii.extension.oclIsUndefined()) ) otherIDs.id.root SHALL be identical to scopingOrganization.id.root OCL self.id->size() > 0 and not (self.scopingOrganization.oclIsUndefined()) and self.scopingOrganization.id->size() > 0 and self.id->forAll(ii : PRPAMT201302UV02OtherIDsId | not (ii.root.oclIsUndefined()) and self.scopingOrganization.id->select(ii2: II | not (ii.root = ii2.root))->size() = 0 ) scopingOrganization.id.extension SHALL NOT have any value OCL self.scopingOrganization.oclIsUndefined() xor (not (self.scopingOrganization.id->size() = 0) and self.scopingOrganization.id->forAll(ii: II | ii.extension.oclIsUndefined())) IHE requires that the Patient Identifier Cross-reference Manager populates element assigningAuthorityName of any id attribute representing a patient identifier OCL self.id->forAll(ii: PRPAMT201302UV02OtherIDsId | not (ii.assigningAuthorityName.oclIsUndefined())) All IHE Actors are required to send the extension attribute for any id element representing a patient identifier OCL self.id->forAll(ii: PRPAMT201302UV02OtherIDsId | not (ii.extension.oclIsUndefined())) For Revise Patient Record message, the trigger event code ControlActProcess.code SHALL be set to PRPA_TE201302UV02 OCL not (self.code.oclIsUndefined()) and not (self.code.code.oclIsUndefined()) and self.code.code = 'PRPA_TE201302UV02' For Revise Patient Record message, the value of interactionId SHALL be set to PRPA_IN201302UV02 OCL not (self.interactionId.oclIsUndefined()) and not (self.interactionId.extension.oclIsUndefined()) and self.interactionId.extension = 'PRPA_IN201302UV02' The value of processingModeCode SHALL be set to T OCL not (self.processingModeCode.oclIsUndefined()) and not (self.processingModeCode.code.oclIsUndefined()) and self.processingModeCode.code = 'T' The value of acceptAckCode SHALL be set to AL OCL not (self.acceptAckCode.oclIsUndefined()) and not (self.acceptAckCode.code.oclIsUndefined()) and self.acceptAckCode.code = 'AL' There SHALL be only one receiver Device OCL self.receiver->size() = 1 The focal entity choice is restricted to be only a person OCL not (self.patientPerson.oclIsUndefined()) and self.patientNonPersonLivingSubject.oclIsUndefined() Patient.statusCode attribute is fixed to 'active' OCL not (self.statusCode.oclIsUndefined()) and not (self.statusCode.code.oclIsUndefined()) and self.statusCode.code = 'active' At least one of the id attributes of the Patient class SHALL have a root component matching the value of ProviderOrganization.id.root OCL (self.providerOrganization.oclIsUndefined() or self.providerOrganization.id->size() = 0 or self.id->size() = 0) xor (self.id->exists(pid: PRPAMT201302UV02PatientId | not (pid.root.oclIsUndefined()) and self.providerOrganization.id->exists(ii: II | not (ii.root.oclIsUndefined()) and ii.root = pid.root) ) ) IHE requires that the Patient Identifier Cross-reference Manager populates element assigningAuthorityName of any id attribute representing a patient identifier OCL self.id->forAll(ii: PRPAMT201302UV02PatientId | not (ii.assigningAuthorityName.oclIsUndefined())) All IHE Actors are required to send the extension attribute for any id element representing a patient identifier OCL self.id->forAll(ii: PRPAMT201302UV02PatientId | not (ii.extension.oclIsUndefined())) When the Patient role is scoped by a Provider organization, only patient IDs assigned by the provider organization are allowed in the Patient class, the root element of the patient IDs shall match the root element of the provider organization ID. OCL (self.providerOrganization.oclIsUndefined() or self.providerOrganization.id->size() = 0) xor self.id->forAll(ii: PRPAMT201302UV02PatientId | self.providerOrganization.id->exists(orgid: II | not (orgid.root.oclIsUndefined()) and orgid.root = ii.root)) patientPerson.classCode attribute is mandatory OCL not (self.classCode.oclIsUndefined()) patientPerson.determinerCode attribute is mandatory OCL not (self.determinerCode.oclIsUndefined()) IHE requires that the Patient Identifier Cross-reference Manager populates element assigningAuthorityName of any id attribute representing a patient identifier OCL self.id->forAll(ii: PRPAMT201302UV02PersonId | not (ii.assigningAuthorityName.oclIsUndefined())) All IHE Actors are required to send the extension attribute for any id element representing a patient identifier OCL self.id->forAll(ii: PRPAMT201302UV02PersonId | not (ii.extension.oclIsUndefined())) RegistrationEvent.statusCode SHALL be set to active OCL not (self.statusCode.oclIsUndefined()) and not (self.statusCode.code.oclIsUndefined()) and self.statusCode.code = 'active' There SHALL be no ReplacementOf act relationship for the Add Patient Record and Revise Patient Record interactions. OCL self.replacementOf->size() = 0 RegistrationEvent.effectiveTime and the author.time SHALL be valued with the same time expression OCL ((self.effectiveTime.oclIsUndefined() or self.effectiveTime.value.oclIsUndefined()) or (self.author.oclIsUndefined() or self.author.time.oclIsUndefined() or self.author.time.value.oclIsUndefined())) or (self.effectiveTime.value = self.author.time.value) The Provider Organization needs to be identified by at least one of address, telecommunications address, or contact person. OCL not (self.contactPerson.oclIsUndefined()) or self.telecom->size() > 0 or self.addr->size() > 0 The id attribute of Provider Organization shall have only a root OCL self.id->forAll(ii : II | not (ii.root.oclIsUndefined()) and ii.assigningAuthorityName.oclIsUndefined() and ii.extension.oclIsUndefined() and ii.displayable.oclIsUndefined() ) The id/@root attribute of Provider Organization shall be expressed as an ISO OID OCL self.id->forAll(ii : II | not ii.root.oclIsUndefined() and ii.isOID(ii.root) ) The context conduction Indicator value in the MFMI_MT700701UV01 control act wrapper is mandatory and SHALL be false OCL not (self.contextConductionInd.oclIsUndefined()) and not (self.contextConductionInd) IHE restriction: id.root SHALL be an ISO OID, and id.extension SHALL not have a value (Table O.1.1-1: Model Attributes) OCL self.id->forAll(ii : II | not ii.root.oclIsUndefined() and ii.isOID(ii.root) and ii.extension.oclIsUndefined() ) IHE restriction: id.root SHALL be an ISO OID, and id.extension SHALL NOT have a value OCL self.id->forAll(ii : II | not ii.root.oclIsUndefined() and ii.isOID(ii.root) and ii.extension.oclIsUndefined() ) typeCode attribute of receiver SHALL be equal to RCV (Table O.1.1-1: Model attributes) OCL self.typeCode=CommunicationFunctionType::RCV typeCode attribute of device SHALL be equal to RCV (Table O.1.1-1: Model attributes) OCL self.typeCode=CommunicationFunctionType::SND QueryContinuation SHALL have a queryId attribute (Table O.2.4-4: Model Attributes) OCL not self.queryId.oclIsUndefined() Default value of queryContinuation/statusCode is 'waitContinuedQueryResponse'; the only other possible value is 'aborted', indicating taht no more results are needed from the query fulfiller (Table O.2.4-4: Model Attributes) OCL not self.statusCode.oclIsUndefined() and not self.statusCode.code.oclIsUndefined() and ( self.statusCode.code='waitContinuedQueryResponse' or self.statusCode.code='aborted' ) QueryId SHALL have a queryId attribute (Table O.2.2-2) OCL not self.queryId.oclIsUndefined() QueryAck SHALL have a statusCode element (Table O.2.2-2) OCL not self.statusCode.oclIsUndefined() statusCode attribute SHALL be present (Table O.2.2-2) OCL not self.statusCode.oclIsUndefined() typeCode attribute of receiver SHALL be equal to RCV (Table O.1.1-1: Model attributes) OCL self.typeCode=CommunicationFunctionType::RCV typeCode attribute of device SHALL be equal to RCV (Table O.1.1-1: Model attributes) OCL self.typeCode=CommunicationFunctionType::SND IHE restriction: id.root SHALL be an ISO OID, and id.extension SHALL not have a value (Table O.1.1-1: Model Attributes) OCL self.id->forAll(ii : II | not ii.root.oclIsUndefined() and ii.isOID(ii.root) and ii.extension.oclIsUndefined() ) IHE restriction: id.root SHALL be an ISO OID, and id.extension SHALL NOT have a value OCL self.id->forAll(ii : II | not ii.root.oclIsUndefined() and ii.isOID(ii.root) and ii.extension.oclIsUndefined() ) The acknowledgement type. Since this is an Accept Acknowledgement, the possible values are CA (Accept Acknowledgement Commit Accept), CE (Accept Acknowledgement Commit Error), or CR (Accept Acknowledgement Commit Reject). Table O.1.2-1 OCL not self.typeCode.oclIsUndefined() and not self.typeCode.code.oclIsUndefined() and ( self.typeCode.code='CA' or self.typeCode.code='CE' or self.typeCode.code='CR' ) typeCode attribute of receiver SHALL be equal to RCV (Table O.1.1-1: Model attributes) OCL self.typeCode=CommunicationFunctionType::RCV typeCode attribute of device SHALL be equal to RCV (Table O.1.1-1: Model attributes) OCL self.typeCode=CommunicationFunctionType::SND IHE restriction: id.root SHALL be an ISO OID, and id.extension SHALL not have a value (Table O.1.1-1: Model Attributes) OCL self.id->forAll(ii : II | not ii.root.oclIsUndefined() and ii.isOID(ii.root) and ii.extension.oclIsUndefined() ) IHE restriction: id.root SHALL be an ISO OID, and id.extension SHALL NOT have a value OCL self.id->forAll(ii : II | not ii.root.oclIsUndefined() and ii.isOID(ii.root) and ii.extension.oclIsUndefined() ) The responsePriorityCode SHALL be valued with "I" indicates that the Responding Gateway is required to send an immediate response. (Table 3.55.4.1.2-1) OCL not (self.responsePriorityCode.oclIsUndefined()) and not(self.responsePriorityCode.code.oclIsUndefined()) and self.responsePriorityCode.code='I' There shall be only one receiver Device OCL self.receiver->size() = 1 The acceptAckCode shall be set to NE OCL not (self.acceptAckCode.oclIsUndefined()) and not (self.acceptAckCode.code.oclIsUndefined()) and self.acceptAckCode.code = 'NE' The value of processingModeCode shall be set to T OCL not(self.processingModeCode.oclIsUndefined()) and not(self.processingModeCode.code.oclIsUndefined()) and self.processingModeCode.code = 'T' The value of interactionId shall be set to PRPA_IN201306UV02 OCL not(self.interactionId.oclIsUndefined()) and not (self.interactionId.extension.oclIsUndefined()) and self.interactionId.extension = 'PRPA_IN201306UV02' The relationship holder of the personal relationship is restricted to be a person (using CMET COCT_MT030207UV) OCL self.relationshipHolder2.oclIsUndefined() The patient entity is restricted to be only a person OCL self.patientNonPersonLivingSubject.oclIsUndefined() Exactly one Patient.id element shall be present OCL self.id->size() = 1 Patient.statusCode element shall be set to active OCL not (self.statusCode.oclIsUndefined()) and not (self.statusCode.code.oclIsUndefined()) and self.statusCode.code = 'active' Patient.confidentialityCode element shall be taken from CWE:Confidentiality (value set with OID 2.16.840.1.113883.5.25) OCL self.confidentialityCode->size() = 0 or ( self.confidentialityCode->forAll(ce : CE | (not ce.code.oclIsUndefined()) and ce.matchesCodeToValueSet('2.16.840.1.113883.5.25', ce.code) ) ) Patient.veryImportantPersonCode element shall be taken from CWE:PatientImportance (value set with OID 2.16.840.1.113883.5.1075) OCL self.veryImportantPersonCode.oclIsUndefined() or ( (not self.veryImportantPersonCode.code.oclIsUndefined()) and self.veryImportantPersonCode.matchesCodeToValueSet('2.16.840.1.113883.5.1075', self.veryImportantPersonCode.code) ) Either Person.name or Patient.id must be non-null OCL ((self.id->size() > 0) and (self.id->forAll(ii : II | ii.nullFlavor.oclIsUndefined()))) or ( (not self.patientPerson.oclIsUndefined()) and (self.patientPerson.name->size() > 0) and (self.patientPerson.name->forAll(pn : PN | pn.nullFlavor.oclIsUndefined())) ) Person.administrativeGenderCode element shall be taken from CWE:AdministrativeGender (value set with OID 2.16.840.1.113883.1.11.1) OCL self.administrativeGenderCode.oclIsUndefined() or ( (not self.administrativeGenderCode.code.oclIsUndefined()) and self.administrativeGenderCode.matchesCodeToValueSet('2.16.840.1.113883.1.11.1', self.administrativeGenderCode.code) ) Person.maritalStatusCode element shall be taken from CWE:MaritalStatus (value set with OID 2.16.840.1.113883.5.2) OCL self.maritalStatusCode.oclIsUndefined() or ( (not self.maritalStatusCode.code.oclIsUndefined()) and self.maritalStatusCode.matchesCodeToValueSet('2.16.840.1.113883.5.2', self.maritalStatusCode.code) ) Person.religionAffiliationCode element shall be taken from CWE:ReligiousAffiliation (value set with OID 2.16.840.1.113883.5.1076) OCL self.religiousAffiliationCode.oclIsUndefined() or ( (not self.religiousAffiliationCode.code.oclIsUndefined()) and self.religiousAffiliationCode.matchesCodeToValueSet('code', self.religiousAffiliationCode.code) ) Person.raceCode element shall be taken from CWE:Race (value set with OID 2.16.840.1.113883.5.104) OCL self.raceCode->size() = 0 or ( self.raceCode->forAll(ce : CE | (not ce.code.oclIsUndefined()) and ce.matchesCodeToValueSet('2.16.840.1.113883.5.104', ce.code) ) ) Person.ethnicGroupCode element shall be taken from CWE:Ethnicity (value set with OID 2.16.840.1.113883.5.50) OCL (self.ethnicGroupCode->size() = 0) or ( self.ethnicGroupCode->forAll(ce : CE | ( not ce.code.oclIsUndefined()) and ce.matchesCodeToValueSet('2.16.840.1.113883.5.50', ce.code) ) ) asEmployee.classCode shall be equal to EMP OCL not (self.classCode.oclIsUndefined()) and self.classCode = RoleClassEmployee::EMP asEmployee.statusCode element shall be taken from CWE:RoleStatus (value set with OID 2.16.840.1.113883.5.1068) OCL self.statusCode.oclIsUndefined() or (not(self.statusCode.code.oclIsUndefined()) and self.statusCode.matchesCodeToValueSet('2.16.840.1.113883.5.1068', self.statusCode.code)) The trigger event code in ControlActProcess.code shall be set to PRPA_TE201306UV02 OCL not (self.code.oclIsUndefined()) and not(self.code.code.oclIsUndefined()) and self.code.code = 'PRPA_TE201306UV02' There shall be a QueryByParameter copy of the original query which shall be in the control act wrapper following the queryAck element OCL not(self.queryByParameter.oclIsUndefined()) There shall be no replacementOf act-relationship present in this message OCL self.replacementOf->size() = 0 The id element designating the homeCommunityId shall have only the root element, the content of which is the homeCommunityId OCL (not self.custodian.oclIsUndefined()) and (not self.custodian.assignedEntity.oclIsUndefined()) and ( self.custodian.assignedEntity.id->forAll(ii : II | ii.extension.oclIsUndefined() and (not ii.root.oclIsUndefined()) and ii.assigningAuthorityName.oclIsUndefined() and ii.displayable.oclIsUndefined() ) ) The QueryAck.resultCurrentQuantity attribute shall not be populated OCL self.resultCurrentQuantity.oclIsUndefined() or not(self.resultCurrentQuantity.nullFlavor.oclIsUndefined()) The QueryAck.resultTotalQuantity attribute shall not be populated OCL self.resultTotalQuantity.oclIsUndefined() or not(self.resultTotalQuantity.nullFlavor.oclIsUndefined()) The QueryAck.resultRemainingQuantity attribute shall not be populated OCL self.resultRemainingQuantity.oclIsUndefined() or not(self.resultRemainingQuantity.nullFlavor.oclIsUndefined()) detectedIssueEvent.code code shall be set to _ActAdministrativeDetectedIssueManagementCode OCL not (self.code.oclIsUndefined()) and not(self.code.code.oclIsUndefined()) and self.code.code = '_ActAdministrativeDetectedIssueManagementCode' detectedIssueEvent.code codeSystem shall be set to 2.16.840.1.113883.5.4 OCL not(self.code.oclIsUndefined()) and not(self.code.codeSystem.oclIsUndefined()) and self.code.codeSystem = '2.16.840.1.113883.5.4' Values for actOrderRequired.code element shall be taken from value set with OID 1.3.6.1.4.1.12559.11.4.2.31 OCL not (self.code.oclIsUndefined()) and not(self.code.code.oclIsUndefined()) and self.code.matchesCodeToValueSet('1.3.6.1.4.1.12559.11.4.2.31', self.code.code) codeSystem for ActOrderRequired.code shall be set to 1.3.6.1.4.1.19376.1.2.27.1 OCL (not self.code.oclIsUndefined()) and (not self.code.codeSystem.oclIsUndefined()) and self.code.codeSystem = '1.3.6.1.4.1.19376.1.2.27.1' Values for detectedIssueManagement.code element shall be taken from value set with OID 1.3.6.1.4.1.12559.11.4.2.32 OCL not (self.code.oclIsUndefined()) and not(self.code.code.oclIsUndefined()) and self.code.matchesCodeToValueSet('1.3.6.1.4.1.12559.11.4.2.32', self.code.code) codeSystem for detectedIssueManagement.code shall be set to 1.3.6.1.4.1.19376.1.2.27.3 OCL not (self.code.oclIsUndefined()) and not(self.code.codeSystem.oclIsUndefined()) and self.code.codeSystem = '1.3.6.1.4.1.19376.1.2.27.3' reponsePriorityCode SHALL be valued with D to indicate the Responding Gateway is required to send a deferred response (Table 3.55.4.1.2-1) OCL not (self.responsePriorityCode.oclIsUndefined()) and not(self.responsePriorityCode.code.oclIsUndefined()) and self.responsePriorityCode.code='D' The respondTo element of the transmission wrapper SHALL be present (Section 3.55.6.2) OCL self.respondTo->size() > 0 The respondTo element SHALL contain a telecom element (Section 3.55.6.2) OCL not (self.telecom.oclIsUndefined()) typeCode attribute of respondTo element SHALL be set to 'RSP' OCL not (self.typeCode.oclIsUndefined()) and self.typeCode=CommunicationFunctionType::RSP entityRsp classCode SHALL be set to "ENT" OCL not (self.classCode.oclIsUndefined()) and self.classCode=EntityClassRoot::ENT The mode of the response SHALL always be real-time ie responseModalityCode SHALL be set to R (Table 3.55.4.1.2-1) OCL not(self.responseModalityCode.oclIsUndefined()) and not(self.responseModalityCode.code.oclIsUndefined()) and self.responseModalityCode.code='R' the responsePriorityCode element is required (Table 3.55.4.1.2-1) OCL not self.responsePriorityCode.oclIsUndefined() The responseModalityCode SHALL be specified (Table 3.55.4.1.2-1) OCL not (self.responseModalityCode.oclIsUndefined()) The status of the query SHALL be set to 'new' (Table 3.55.4.2.1-1) OCL not (self.statusCode.oclIsUndefined()) and not(self.statusCode.code.oclIsUndefined()) and self.statusCode.code = 'new' If present the initialQuantityCode element, the defaut value for code attribute is 'RD' (Table 3.55.4.2.1-1) OCL self.initialQuantityCode.oclIsUndefined() or (self.initialQuantityCode.code.oclIsUndefined() xor self.initialQuantityCode.code='RD') The initialQuantity element is not supported, any value will be ignored by responder. (Table 3.55.4.2.1-1) OCL self.initialQuantity.oclIsUndefined() The initialQuantityCode element is not supported, any value will be ignored by responder. (Table 3.55.4.2.1-1) OCL self.initialQuantityCode.oclIsUndefined() The name of the algorithm SHALL comply with datatype ST (Table 3.55.4.1.2-1) OCL self.value.oclIsKindOf(ST) The value of the degree match SHALL be an integer (Table 3.55.4.1.2-1) OCL self.value.oclIsKindOf(INT) The numeric value of the degree of match SHALL be valued between 0 and 100 (Table 3.55.4.1.2-1) OCL self.value.oclAsType(INT).value >= 0 and self.value.oclAsType(INT).value <= 100 The value of interactionId SHALL be set to PRPA_IN201305UV02 (Table 3.55.4.1.2-2) OCL not self.interactionId.oclIsUndefined() and not self.interactionId.extension.oclIsUndefined() and self.interactionId.extension='PRPA_IN201305UV02' The value of processingModeCode SHALL be set to T (Table 3.55.4.1.2-2) OCL not self.processingModeCode.oclIsUndefined() and not self.processingModeCode.code.oclIsUndefined() and self.processingModeCode.code='T' The acceptAckCode SHALL be set to AL OCL not self.acceptAckCode.oclIsUndefined() and not self.acceptAckCode.code.oclIsUndefined() and self.acceptAckCode.code='AL' There SHALL be only one receiver Device OCL self.receiver->size()=1 The trigger event code in ControlActProcess.code SHALL be set to PRPA_TE201305UV02 OCL not (self.code.oclIsUndefined()) and not (self.code.code.oclIsUndefined()) and self.code.code='PRPA_TE201305UV02' If the Initiating Gateway is grouped with a Responding Gateway, it SHALL specify its homeCommunityId as follows: the homeCommunityId is specified as the id element within the Organization associated with the device of the sender; the id element designating the homeCommunityId shall have only the root element. (Section 3.55.4.1.2.4) OCL not(self.device.oclIsUndefined()) and not(self.device.asAgent.oclIsUndefined()) and not(self.device.asAgent.representedOrganization.oclIsUndefined()) and self.device.asAgent.representedOrganization.id->size() > 0 and self.device.asAgent.representedOrganization.id->forAll(val : II | not(val.root.oclIsUndefined()) and val.extension.oclIsUndefined() ) In an authorOrPerformer participant is present, the value of authorOrPerformer.typeCode SHALL be set to AUT OCL not(self.typeCode.oclIsUndefined()) and self.typeCode=XParticipationAuthorPerformer::AUT In the case of the MothersMaidenName parameter, the person name may consist of only the given name part, the family name part, or both (Table 3.55.4.1.2-1) OCL self.value->forAll(val: PN | val.given->size() > 0 or val.family->size() > 0 ) The value attribute of the mothersMaideName parameter SHALL be present exactly once (Table 3.55.4.1.2-1) OCL self.value->size() = 1 The use attribute of the value element of MothersMaidenName parameter SHALL NOT be set to 'SRCH' (Section 3.55.4.1.2.1) OCL self.value->forAll(val: PN | val.oclIsUndefined() xor not(val.use='SRCH') ) There SHALL have only one id in the 'value' attribute of the PrincipalCareProviderId parameter (Table 3.55.4.1.2-1) OCL self.value->size() = 1 LivingSubjectAdministrativeGender value SHALL be valued with either F, M or UN (CWE:AdministrativeGender) (Table 3.55.4.1.2-1) OCL self.value->forAll(val: CE | not (val.code.oclIsUndefined()) and (val.code = 'F' or val.code = 'M' or val.code='UN') ) QueryByParameter/parameterList/livingSubjectAdministrativeGender/value SHALL be present exactly once (Table 3.55.4.1.2-1) OCL self.value ->size() = 1 value element of LivingSubjectBirthTime parameter SHALL be present exactly once (Table 3.55.4.1.2-1) OCL self.value->size() = 1 The use attribute of the value element of LivingSubjectName parameter SHALL NOT be set to 'SRCH' (Table 3.55.4.1.2-1) OCL self.value->forAll(val: EN | val.oclAsType(PN).use.oclIsUndefined() xor not (val.oclAsType(PN).use = 'SRCH') ) the value element of LivingSubjectName parameter SHALL be present exactly once OCL self.value->size() = 1 The datatype of LivingSubjectName.value is constrained to PN (Section 3.55.4.1.2.2) OCL self.value->forAll(val: EN | not (val.oclIsKindOf(TN) or val.oclIsKindOf(ON)) ) LivingSubjectAdministrativeGender parameter SHALL be present at most once (Figure 3.55.4.1.2-1) OCL self.livingSubjectAdministrativeGender->size() <= 1 LivingSubjectBirthPlaceAddress parameter SHALL be present at most once (Figure 3.55.4.1.2-1) OCL self.livingSubjectBirthPlaceAddress->size() <= 1 LivingSubjectBirthPlaceName parameter SHALL be present at most once (Figure 3.55.4.1.2-1) OCL self.livingSubjectBirthPlaceName->size() <= 1 LivingSubjectBirthTime parameter SHALL be present at most once (Figure 3.55.4.1.2-1) OCL self.livingSubjectBirthTime->size() <= 1 MothersMaidenName parameter SHALL be present at most once (Figure 3.55.4.1.2-1) OCL self.mothersMaidenName->size() <= 1 PatientAddress parameter SHALL be present at most once (Figure 3.55.4.1.2-1) OCL self.patientAddress->size() <= 1 PatientTelecom parameter SHALL be present at most once (Figure 3.55.4.1.2-1) OCL self.patientTelecom->size() <= 1 If the LivingSubjectIdParameter is specified, LivingSubjectName and LivingSubjectBirthTime are optional. Otherwise, those two parameters are required (Section 3.55.4.1.2.1) OCL self.livingSubjectId->size() >= 1 or (self.livingSubjectName->size() >= 1 and self.livingSubjectBirthTime->size() >= 1)