# Logical Record Architecture for Health and Social Care
## Discharge Summary Release 0.02

Contents
The content of this release is not comprehensive and is not fully validated and must not be used in live system implementations.
# Reference Model Class: ENTRYconstrainedDomainModel
A structural model artefact representing an ENTRY Domain Model constrained for use within one or more specified areas of interest within the domain of the LRA. ## Specializes ## LraTechnicalModelArtefact ## Constraints
Type | Name | Specification
--- | --- | ---
Each ConstrainedDomainComponentRelationship instance has a minimum of one owned end (i.e. the "source" relationship) in which the type of every instance is owned by the containing package | Invariant | inv: let elements: Sequence(Element) = self.packagedElement-&gt;select(Element: e | e.oclAsType(DomainModelClass).referenceClass.qualifiedName = ("lra::technical::en13606::extract::FINDING_OBSERVATION_ELEMENT" or "lra::technical::en13606::extract::PROPERTY_OBSERVATION_ELEMENT" or "lra::technical::en13606::extract::GENERAL_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::MATERIAL_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::INVESTIGATION_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::UNBOUND_DATA_ELEMENT")) in let relationships: Sequence(Element) = self.packagedElement-&gt;select(Element: e | e.oclIsTypeOf(ConstrainedDomainComponentRelationship)) in relationships-&gt;forAll(e: Element | e.oclAsType(ConstrainedDomainComponentRelationship).ownedEnd-&gt;exists(p: Property | elements-&gt;includesAll(p.oclAsType(Slot).instance-&gt;flatten())))
Instance contains an association to each of one or more ConstrainedDomainModelClass instances of kind ELEMENT | Invariant | inv: self.packagedElement-&gt;select(Element: e | e.oclAsType(Association).memberEnd-&gt;exists(Property: p | p.class.oclAsType(ConstrainedDomainModelClass).qualifiedName = ("lra::technical::en13606::extract::FINDING_OBSERVATION_ELEMENT" or "lra::technical::en13606::extract::PROPERTY_OBSERVATION_ELEMENT" or "lra::technical::en13606::extract::GENERAL_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::MATERIAL_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::INVESTIGATION_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::UNBOUND_DATA_ELEMENT")))-&gt;size() &gt;= 1
Instance contains one ConstrainedDomainModelClass instance of type ENTRY | Invariant | inv: self.packagedElement-&gt;select(Element: e | e.oclAsType(DomainModelClass).referenceClass.qualifiedName = "lra::technical::en13606::extract::ENTRY")-&gt;size() = 1
Instance contains one or more ConstrainedDomainModelClass "Participant" instances | Invariant | inv: self.packagedElement-&gt;select(Element: e | e.oclAsType(ConstrainedDomainModelClass).referenceClass.qualifiedName = ("lra::technical::en13606::extract::RELATED_PARTY" or "lra::technical::en13606::extract ::FUNCTIONAL_ROLE" or "lra::technical::en13606::extended::PARTICIPATION" or "lra::technical::participations::LANGUAGE_COMMUNICATION" or "lra::technical::participations::ROLE_RELATIONSHIP" or "lra::technical::participations::PERSON_ROLE" or "lra::technical::participations::ORGANISATIONAL_ROLE" or "lra::technical::participations::DEVICE_ROLE" or "lra::technical::participations::ENVIRONMENT_ROLE" or "lra::technical::participations::PERSON_ENTITY" or "lra::technical::participations::ORGANISATION_ENTITY" or "lra::technical::participations::DEVICE_ENTITY" or "lra::technical::participations::PLACE_ENTITY"))-&gt;size() &gt;= 1
Instance contains zero or more ConstrainedDomainComponentRelationship instances | Invariant | inv: self.packagedElement-&gt;select(Element: e | e.oclAsType(ConstrainedDomainComponentRelationship))-&gt;size() &gt;= 0
The type of every instance of the owned end of any ConstrainedDomainComponentRelationship instance is owned either by the containing package or by a referenced package | Invariant | inv: let elements: Sequence(Element) = self.packagedElement-&gt;select(Element: e | e.oclAsType(ConstrainedDomainModelClass).referenceClass.qualifiedName = ("lra::technical::en13606::extract::FINDING_OBSERVATION_ELEMENT" or "lra::technical::en13606::extract::PROPERTY_OBSERVATION_ELEMENT" or "lra::technical::en13606::extract::GENERAL_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::MATERIAL_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::INVESTIGATION_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::UNBOUND_DATA_ELEMENT")) in let relationships: Sequence(Element) = self.packagedElement-&gt;select(Element: e | e.oclIsTypeOf(DomainComponentRelationship)) in let references: Sequence(Element) = self.referencedElement-&gt;select(Element: e | e.oclAsType(ConstrainedDomainModelClass).referenceClass.qualifiedName = ("lra::technical::en13606::extract::FINDING_OBSERVATION_ELEMENT" or "lra::technical::en13606::extract::PROPERTY_OBSERVATION_ELEMENT" or "lra::technical::en13606::extract::GENERAL_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::MATERIAL_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::INVESTIGATION_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::UNBOUND_DATA_ELEMENT")) in let allElements: Sequence(Element) = elements-&gt;union(references) let relationships: Sequence(Element) = self.packagedElement-&gt;select(Element: e | e.oclIsTypeOf(ConstrainedDomainComponentRelationship)) in relationships-&gt;forAll(e: Element | e.oclAsType(ConstrainedDomainComponentRelationship).ownedEnd-&gt;flatten()-&gt;forAll(p: Property | allElements-&gt;includesAll(p.oclAsType(Slot).instance-&gt;flatten())))
## Reference Model Type ##