header element is required for the addressing elements
OCL
(not self.header.oclIsUndefined())
body element is required
OCL
not self.soapBody.oclIsUndefined()
The header element SHALL be present (wsn-ws_base_notification-1.3-spec-os, 4.2)
OCL
not self.header.oclIsUndefined()
The beady element SHALL be present (wsn-ws_base_notification-1.3-spec-os, 4.2)
OCL
not self.soapBody.oclIsUndefined()
The WS-Addressing [action] Message Addressing Property MUST contain the URI http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeRequest (wsn-ws_base_notification-1.3-spec-os, 4.2)
OCL
self.action->size()=1 and
self.action->first()='http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeRequest'
the body shall contains only one subscribe element (wsn-ws_base_notification-1.3-spec-os, 4.2)
OCL
not self.subscribe.oclIsUndefined()
/wsnt:Subscribe/wsnt:ConsumerReference SHALL be present (wsn-ws_base_notification-1.3-spec-os, 4.2)
OCL
(not self.consumerReference.oclIsUndefined())
if /wsnt:Subscribe/wsnt:Filter/wsnt:TopicExpression present, /wsnt:Subscribe/wsnt:Filter/wsnt:TopicExpression/@dialect SHALL be present (wsn-ws_base_notification-1.3-spec-os, 4.2)
OCL
self.filter.oclIsUndefined() or
self.filter.topicExpression.oclIsUndefined() or
(not self.filter.topicExpression.dialect.oclIsUndefined())
/filter/TopicExpression shall be from : ihe:FullFocumentEntry, ihe:MinimalDocumentEntry, ihe:FolderMetadata or ihe:SubmissionSetMetadata (IHE DSUB_SUP, 3.52.5)
OCL
(not self.filter.oclIsUndefined()) and
(not self.filter.topicExpression.oclIsUndefined()) and
(not self.filter.topicExpression.value.oclIsUndefined()) and
(
self.filter.topicExpression.value='ihe:FullDocumentEntry' or
self.filter.topicExpression.value='ihe:MinimalDocumentEntry' or
self.filter.topicExpression.value='ihe:FolderMetadata' or
self.filter.topicExpression.value='ihe:SubmissionSetMetadata'
)
Each subscription request SHALL contain exactly one topic expression, /filter/TopicExpression and /filter/AdhocQuery are required (IHE DSUB_SUP, 3.52.5.3)
OCL
(not self.filter.oclIsUndefined()) and
(not self.filter.topicExpression.oclIsUndefined()) and
(not self.filter.adhocQuery.oclIsUndefined())
The adhoc query on the filter element shall have id='urn:uuid:aa2332d0-f8fe-11e0-be50-0800200c9a66' or
'urn:uuid:9376254e-da05-41f5-9af3-ac56d63d8ebd' or 'urn:uuid:fbede94e-dbdc-4f6b-bc1f-d730e677cece' (IHE DSUB_SUP, 3.52.2)
OCL
self.filter.oclIsUndefined() or
self.filter.adhocQuery.oclIsUndefined() or
(
(not self.filter.adhocQuery.id.oclIsUndefined()) and
(
self.filter.adhocQuery.id='urn:uuid:aa2332d0-f8fe-11e0-be50-0800200c9a66' or
self.filter.adhocQuery.id='urn:uuid:9376254e-da05-41f5-9af3-ac56d63d8ebd' or
self.filter.adhocQuery.id='urn:uuid:fbede94e-dbdc-4f6b-bc1f-d730e677cece'
)
)
$XDSDocumentEntryClassCode does not support AND/OR on DSUB-AdhocQuery based on FindDocuments query (ITI TF-2a 3.18.4.1.2.3.7.1))
OCL
self.slot->select(sl : SlotType1 | (not sl.name.oclIsUndefined()) and sl.name='$XDSDocumentEntryClassCode' )->size()<2
$XDSDocumentEntryPracticeSettingCode does not support AND/OR on DSUB-AdhocQuery based on FindDocuments query (ITI TF-2a 3.18.4.1.2.3.7.1))
OCL
self.slot->select(sl : SlotType1 | (not sl.name.oclIsUndefined()) and sl.name='$XDSDocumentEntryPracticeSettingCode' )->size()<2
$XDSDocumentEntryHealthcareFacilityTypeCode does not support AND/OR on DSUB-AdhocQuery based on FindDocuments query (ITI TF-2a 3.18.4.1.2.3.7.1))
OCL
self.slot->select(sl : SlotType1 | (not sl.name.oclIsUndefined()) and sl.name='$XDSDocumentEntryHealthcareFacilityTypeCode' )->size()<2
$XDSDocumentEntryAuthorPerson does not support AND/OR on DSUB-AdhocQuery based on FindDocuments query (ITI TF-2a 3.18.4.1.2.3.7.1))
OCL
self.slot->select(sl : SlotType1 | (not sl.name.oclIsUndefined()) and sl.name='$XDSDocumentEntryAuthorPerson' )->size()<2
$XDSDocumentEntryFormatCode does not support AND/OR on DSUB-AdhocQuery based on FindDocuments query(ITI TF-2a 3.18.4.1.2.3.7.1))
OCL
self.slot->select(sl : SlotType1 | (not sl.name.oclIsUndefined()) and sl.name='$XDSDocumentEntryFormatCode' )->size()<2
$XDSDocumentEntryPatientId does not support AND/OR on DSUB-AdhocQuery based on FindDocuments query (ITI TF-2a 3.18.4.1.2.3.7.1))
OCL
self.slot->select(sl : SlotType1 | (not sl.name.oclIsUndefined()) and sl.name='$XDSDocumentEntryPatientId' )->size()<2
$XDSDocumentEntryPatientId is not multivalued on DSUB-AdhocQuery based on FindDocuments query (ITI TF-2a 3.18.4.1.2.3.7.1))
OCL
self.slot->select(sl : SlotType1 | (not sl.name.oclIsUndefined()) and sl.name='$XDSDocumentEntryPatientId' )->forAll(sl : SlotType1 | (sl.valueList.oclIsUndefined()) or (sl.valueList.value->size()<2))
$XDSDocumentEntryPatientId is required on DSUB-AdhocQuery based on FindDocuments query (ITI TF-2a 3.18.4.1.2.3.7.1))
OCL
self.slot->select(sl : SlotType1 | (not sl.name.oclIsUndefined()) and sl.name='$XDSDocumentEntryPatientId' )->size()>0
Allowed metadata are only ones detailed on the TF DSUB Supp, 3.52.5.2.1 : XDSDocumentEntryClassCode, XDSDocumentEntryPracticeSettingCode, XDSDocumentEntryHealthcareFacilityTypeCode, XDSDocumentEntryEventCodeList, XDSDocumentEntryConfidentialityCode, XDSDocumentEntryAuthorPerson, XDSDocumentEntryFormatCode, XDSDocumentEntryPatientId. Other parameters have no clear applicability as a filter expression (IHE DSUB Supp, 3.52.5.2.1)
OCL
self.slot->forAll(sl : SlotType1 |
(not sl.name.oclIsUndefined()) and
(
sl.name='$XDSDocumentEntryClassCode' or
sl.name='$XDSDocumentEntryPracticeSettingCode' or sl.name='$XDSDocumentEntryHealthcareFacilityTypeCode' or
sl.name='$XDSDocumentEntryEventCodeList' or sl.name='$XDSDocumentEntryConfidentialityCode' or
sl.name='$XDSDocumentEntryAuthorPerson' or sl.name='$XDSDocumentEntryFormatCode' or
sl.name='$XDSDocumentEntryPatientId'
)
)
$XDSFolderPatientId is required on DSUB-AdhocQuery based on FindDocuments query (ITI DSUB, Subscriptions for folders metadata)
OCL
self.slot->select(sl : SlotType1 | (not sl.name.oclIsUndefined()) and sl.name='$XDSFolderPatientId' )->size()>0
Allowed metadata are only ones detailed on the TF DSUB Supp, 3.52.5.2.1 : XDSFolderPatientId, DSFolderUniqueId, and XDSFolderCodeList (IHE DSUB Supp,3.52.5.2.2)
OCL
self.slot->forAll(sl : SlotType1 |
(not sl.name.oclIsUndefined()) and
(
sl.name='$XDSFolderPatientId' or
sl.name='$DSFolderUniqueId' or
sl.name='$XDSFolderCodeList'
)
)
$XDSSubmissionSetPatientId is required on DSUB-AdhocQuery based on FindDocuments query (ITI DSUB, Subscriptions for SubmissionSets metadata)
OCL
self.slot->select(sl : SlotType1 | (not sl.name.oclIsUndefined()) and sl.name='$XDSSubmissionSetPatientId' )->size()>0
Allowed metadata are only ones detailed on the TF DSUB Supp, 3.52.5.2.1 : XDSSubmissionSetPatientId, XDSSubmissionSetSourceId,
XDSSubmissionSetAuthor and XDSSubmissionSetIntendedRecipient (IHE DSUB Supp,3.52.5.2.3)
OCL
self.slot->forAll(sl : SlotType1 |
(not sl.name.oclIsUndefined()) and
(
sl.name='$XDSSubmissionSetPatientId' or
sl.name='$XDSSubmissionSetSourceId' or
sl.name='$XDSSubmissionSetAuthor' or
sl.name='$XDSSubmissionSetIntendedRecipient'
)
)
The header element SHALL be present (wsn-ws_base_notification-1.3-spec-os, 4.2)
OCL
not self.header.oclIsUndefined()
The body element SHALL be present (wsn-ws_base_notification-1.3-spec-os, 4.2)
OCL
not self.soapBody.oclIsUndefined()
The WS-Addressing [action] Message Addressing Property MUST contain the URI http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeResponse (wsn-ws_base_notification-1.3-spec-os, 4.2)
OCL
self.action->size()=1 and
self.action->first()='http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeResponse'
the body shall contains one and only one of these elements : SubscribeResponse, ResourceUnknownFault, InvalidFilterFault, TopicExpressionDialectUnknownFault, InvalidTopicExpressionFault, TopicNotSupportedFault, InvalidProducerPropertiesExpressionFault, InvalidMessageContentExpressionFault, UnrecognizedPolicyRequestFault, UnsupportedPolicyRequestFault, NotifyMessageNotSupportedFault, UnacceptableInitialTerminationTimeFault, SubscribeCreationFailedFault (wsn-ws_base_notification-1.3-spec-os, 4.2)
OCL
Bag{self.subscribeResponse.oclIsUndefined(), self.invalidFilterFault.oclIsUndefined(), self.topicExpressionDialectUnknownFault.oclIsUndefined(),
self.invalidTopicExpressionFault.oclIsUndefined(), self.invalidProducerPropertiesExpressionFault.oclIsUndefined(),
self.invalidMessageContentExpressionFault.oclIsUndefined(), self.unrecognizedPolicyRequestFault.oclIsUndefined(),
self.unsupportedPolicyRequestFault.oclIsUndefined(), self.notifyMessageNotSupportedFault.oclIsUndefined(),
self.unacceptableInitialTerminationTimeFault.oclIsUndefined(), self.subscribeCreationFailedFault.oclIsUndefined(),self.resourceUnknownFault.oclIsUndefined(),
self.topicNotSupportedFault.oclIsUndefined()}->select(bol : Boolean | bol = false)->size()=1
/wsnt:SubscribeResponse/wsnt:SubscriptionReference shall be present (wsn-ws_base_notification-1.3-spec-os, 4.2)
OCL
not self.subscriptionReference.oclIsUndefined()
The body of the soap envelope shall contains the element Unsubscribe
OCL
not self.unsubscribe.oclIsUndefined()
The header shall have a:Action with value='http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/UnsubscribeRequest' (wsn-ws_base_notification-1.3-spec-os, 6.1.2)
OCL
self.action->size()=1 and
self.action->first()='http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/UnsubscribeRequest'
The body element shall contains one and only one of these elements : UnsubscribeResponse, ResourceUnknownFault, UnableToDestroySubscriptionFault
OCL
Bag{self.unsubscribeResponse.oclIsUndefined(), self.resourceUnknownFault.oclIsUndefined(),
self.unableToDestroySubscriptionFault.oclIsUndefined()}->select(bol : Boolean | bol= false)->size()=1
The header/action of the unsubscribe response shall be http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/UnsubscribeResponse
OCL
self.action->size()=1 and
self.action->first()='http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/UnsubscribeResponse'
the header/action shall be http://docs.oasis-open.org/wsn/bw-2/NotificationConsumer/Notify (wsn-ws_base_notification-1.3-spec-os, 3.2)
OCL
self.action->size()=1 and
self.action->first()='http://docs.oasis-open.org/wsn/bw-2/NotificationConsumer/Notify'
the body shall contain Notify element
OCL
not self.notify.oclIsUndefined()
The <rim:RegistryObjectList> element shall be the only child of the <lcm:SubmitObjectsRequest> element (IHE DSUB Supp, 3.52.4.1.2)
OCL
(not self.registryObjectList.oclIsUndefined()) and
self.requestSlotList.oclIsUndefined()
publish transaction shall be conform to the FULL notification structure of Notify message (or submission set, or folder notification) (IHE DSUB SUPP, 3.54.4.1.2)
OCL
self.notificationMessage->forAll(nm : NotificationMessageHolderType |
(not nm.message.oclIsUndefined()) and
(not nm.message.submitObjectsRequest.oclIsUndefined()) and
(not nm.message.submitObjectsRequest.registryObjectList.oclIsUndefined()) and
(
nm.message.submitObjectsRequest.registryObjectList.ExtrinsicObject->size()>0 or
nm.message.submitObjectsRequest.registryObjectList.RegistryPackage->size()>0
)
)
/wsnt:Notify/wsnt:NotificationMessage shall be present (wsn-ws_base_notification-1.3-spec-os, 3.2)
OCL
self.notificationMessage->size()>0
/wsnt:Notify/wsnt:NotificationMessage/wsnt:Message shall be present (wsn-ws_base_notification-1.3-spec-os, 3.2)
OCL
self.notificationMessage->forAll(nott : NotificationMessageHolderType| not nott.message.oclIsUndefined())
There shall be a single wsnt:Notify/wsnt:NotificationMessage/wsnt:Message element in this transaction (IHE DSUB Supp, 3.53.4.1.2)
OCL
self.notificationMessage->size()=1 and
(not self.notificationMessage->first().message.oclIsUndefined())
A Full Notification shall be sent if the subscription request included the topic ihe:FullDocumentEntry. The <lcm:SubmitObjectsRequest> element is the only child of the wsnt:Notify/wsnt:NotificationMessage/wsnt:Message element in this message (IHE DSUB Supp, 3.53.4.1.2)
OCL
self.notificationMessage->forAll(notm : NotificationMessageHolderType |
notm.topic.oclIsUndefined() or
notm.topic.value.oclIsUndefined() or
(not self.matches(notm.topic.value, '.*FullDocumentEntry$')) or
(
(not notm.message.oclIsUndefined()) and
(not notm.message.submitObjectsRequest.oclIsUndefined())
)
)
A Minimal Notification shall be sent if the subscription request included the topic ihe:MinimalDocumentEntry. The <lcm:SubmitObjectsRequest> element is the only child of the wsnt:Notify/wsnt:NotificationMessage/wsnt:Message element in this message (IHE DSUB Supp, 3.53.4.1.2)
OCL
self.notificationMessage->forAll(notm : NotificationMessageHolderType |
notm.topic.oclIsUndefined() or
notm.topic.value.oclIsUndefined() or
(not self.matches(notm.topic.value, '.*MinimalDocumentEntry$')) or
(
(not notm.message.oclIsUndefined()) and
(not notm.message.submitObjectsRequest.oclIsUndefined())
)
)
NotificationMessage/topic is required and shall be equal to ihe:MinimalDocumentEntry, ihe:FullDocumentEntry, ihe:FolderMetadata or ihe:SubmissionSetMetadata. (IHE DSUB Supp, 3.53.4.1.2)
OCL
self.notificationMessage->size()>0 and
self.notificationMessage->forAll(msg : NotificationMessageHolderType |
(not msg.topic.oclIsUndefined()) and
(
self.matches(msg.topic.value, '.*MinimalDocumentEntry$') or
self.matches(msg.topic.value, '.*FullDocumentEntry$') or
self.matches(msg.topic.value, '.*FolderMetadata$') or
self.matches(msg.topic.value, '.*SubmissionSetMetadata$')
)
)
When FullDocumentEntry used, only ExtrinsicObject are allowed under wsnt:Notify/wsnt:NotificationMessage/wsnt:Message/lcm:SubmitObjectsRequest/rim:RegistryObjectList (DSUB, 3.53.4.1.2)
OCL
self.notificationMessage->select(notm : NotificationMessageHolderType |
(not notm.topic.oclIsUndefined()) and
(not notm.topic.value.oclIsUndefined()) and
self.matches(notm.topic.value, '.*FullDocumentEntry$')
)->forAll(notm : NotificationMessageHolderType |
(not notm.message.oclIsUndefined()) and
(not notm.message.submitObjectsRequest.oclIsUndefined()) and
(not notm.message.submitObjectsRequest.registryObjectList.oclIsUndefined()) and
notm.message.submitObjectsRequest.registryObjectList.RegistryPackage->size()=0
)
When Minimal notification used, only rim:ObjectRef are allowed under wsnt:Notify/wsnt:NotificationMessage/wsnt:Message/lcm:SubmitObjectsRequest/rim:RegistryObjectList (DSUB, 3.53.4.1.2)
OCL
self.notificationMessage->select(notm : NotificationMessageHolderType |
(not notm.topic.oclIsUndefined()) and
(not notm.topic.value.oclIsUndefined()) and
self.matches(notm.topic.value, '.*MinimalDocumentEntry$')
)->forAll(notm : NotificationMessageHolderType |
(not notm.message.oclIsUndefined()) and
(not notm.message.submitObjectsRequest.oclIsUndefined()) and
(not notm.message.submitObjectsRequest.registryObjectList.oclIsUndefined()) and
notm.message.submitObjectsRequest.registryObjectList.RegistryPackage->size()=0 and
notm.message.submitObjectsRequest.registryObjectList.ExtrinsicObject->size()=0
)
When FolderMetadata notification used, only rim:RegistryPackage are allowed under wsnt:Notify/wsnt:NotificationMessage/wsnt:Message/lcm:SubmitObjectsRequest/rim:RegistryObjectList
with classificationScheme="urn:uuid:d9d542f3-6cc4-48b6-8870-ea235fbc94c2" (DSUB, 3.53.4.1.2)
OCL
self.notificationMessage->select(notm : NotificationMessageHolderType |
(not notm.topic.oclIsUndefined()) and
(not notm.topic.value.oclIsUndefined()) and
self.matches(notm.topic.value, '.*FolderMetadata$')
)->forAll(notm : NotificationMessageHolderType |
(not notm.message.oclIsUndefined()) and
(not notm.message.submitObjectsRequest.oclIsUndefined()) and
(not notm.message.submitObjectsRequest.registryObjectList.oclIsUndefined()) and
notm.message.submitObjectsRequest.registryObjectList.ExtrinsicObject->size()=0 and
notm.message.submitObjectsRequest.registryObjectList.RegistryPackage->forAll(
rp : RegistryPackageType |
(
rp.classification->select(
cl : ClassificationType | (not cl.classificationNode.oclIsUndefined()) and (cl.classificationNode='urn:uuid:d9d542f3-6cc4-48b6-8870-ea235fbc94c2') and (not cl.classifiedObject.oclIsUndefined()) and (cl.classifiedObject=rp.id)
)->size()>0)
or
(
notm.message.submitObjectsRequest.registryObjectList.Classification->select(
cl : ClassificationType | (not cl.classificationNode.oclIsUndefined()) and (cl.classificationNode='urn:uuid:d9d542f3-6cc4-48b6-8870-ea235fbc94c2') and (not cl.classifiedObject.oclIsUndefined()) and (cl.classifiedObject=rp.id)
)->size()>0
)
)
)
When submissionSet notification used, only rim:RegistryPackage are allowed under wsnt:Notify/wsnt:NotificationMessage/wsnt:Message/lcm:SubmitObjectsRequest/rim:RegistryObjectList
with classificationScheme="urn:uuid:a54d6aa5-d40d-43f9-88c5-b4633d873bdd" (DSUB, 3.53.4.1.2)
OCL
self.notificationMessage->select(notm : NotificationMessageHolderType |
(not notm.topic.oclIsUndefined()) and
(not notm.topic.value.oclIsUndefined()) and
self.matches(notm.topic.value, '.*SubmissionSetMetadata$')
)->forAll(notm : NotificationMessageHolderType |
(not notm.message.oclIsUndefined()) and
(not notm.message.submitObjectsRequest.oclIsUndefined()) and
(not notm.message.submitObjectsRequest.registryObjectList.oclIsUndefined()) and
notm.message.submitObjectsRequest.registryObjectList.ExtrinsicObject->size()=0 and
notm.message.submitObjectsRequest.registryObjectList.RegistryPackage->forAll(
rp : RegistryPackageType |
(
rp.classification->select(
cl : ClassificationType | (not cl.classificationNode.oclIsUndefined()) and (cl.classificationNode='urn:uuid:a54d6aa5-d40d-43f9-88c5-b4633d873bdd') and (not cl.classifiedObject.oclIsUndefined()) and (cl.classifiedObject=rp.id)
)->size()>0)
or
(
notm.message.submitObjectsRequest.registryObjectList.Classification->select(
cl : ClassificationType | (not cl.classificationNode.oclIsUndefined()) and (cl.classificationNode='urn:uuid:a54d6aa5-d40d-43f9-88c5-b4633d873bdd') and (not cl.classifiedObject.oclIsUndefined()) and (cl.classifiedObject=rp.id)
)->size()>0
)
)
)