diff --git a/asciidoc/images/vol1-diagram-sdpi-a-actor.svg b/asciidoc/images/vol1-diagram-sdpi-a-actor.svg index bc9e1dd1..01814dfa 100644 --- a/asciidoc/images/vol1-diagram-sdpi-a-actor.svg +++ b/asciidoc/images/vol1-diagram-sdpi-a-actor.svg @@ -6,7 +6,7 @@ version="1.1" id="svg209" sodipodi:docname="vol1-diagram-sdpi-a-actor.svg" - inkscape:version="1.1.2 (b8e25be833, 2022-02-05)" + inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" @@ -27,14 +27,22 @@ inkscape:zoom="0.8609375" inkscape:cx="519.78221" inkscape:cy="264.24682" - inkscape:window-width="1620" - inkscape:window-height="1058" - inkscape:window-x="-6" - inkscape:window-y="-6" + inkscape:window-width="1920" + inkscape:window-height="1009" + inkscape:window-x="-8" + inkscape:window-y="-8" inkscape:window-maximized="1" - inkscape:current-layer="g207" /> + inkscape:current-layer="g207" + inkscape:showpageshadow="2" + inkscape:deskcolor="#d1d1d1" /> + @@ -70,21 +78,23 @@ font-family="Calibri, Calibri_MSFontService, sans-serif" font-weight="700" font-size="24px" - transform="translate(195.317,522)" - id="text11">SOMDS + id="text11" + x="185.317" + y="558">SOMDS Provider + id="text13" + x="180.67" + y="587">Provider @@ -92,27 +102,30 @@ font-family="Calibri, Calibri_MSFontService, sans-serif" font-weight="700" font-size="24px" - transform="translate(346.815,507)" - id="text17">SOMDS + id="text17" + x="336.815" + y="543">SOMDS Medical Alert + id="text19" + x="307.38901" + y="572">Medical Alert Provider + id="text21" + x="332.16901" + y="601">Provider @@ -120,21 +133,23 @@ font-family="Calibri, Calibri_MSFontService, sans-serif" font-weight="700" font-size="24px" - transform="translate(195.123,177)" - id="text25">SOMDS + id="text25" + x="185.123" + y="147">SOMDS Consumer + id="text27" + x="172.28999" + y="176">Consumer @@ -142,100 +157,136 @@ font-family="Calibri, Calibri_MSFontService, sans-serif" font-weight="700" font-size="24px" - transform="translate(346.341,163)" - id="text31">SOMDS + id="text31" + x="336.341" + y="133">SOMDS Medical Alert + id="text33" + x="306.914" + y="162">Medical Alert Consumer + id="text35" + x="323.50699" + y="191">Consumer + DEV + - DEV + id="text41" + x="193.30901" + y="225">38 Establish - + id="text43" + x="155.64301" + y="248">Medical Alert Exchange 38 Establish + id="text37-1" + x="156.52522" + y="435.74741">DEV Medical Alert Exchange + id="text39-8" + x="188.52522" + y="435.74741">- + 48 Establish + d="m 362,205.50817 -10e-5,299.63213 h 2 L 364,205.50817 Z m -3.0001,297.78515 4,11.08466 4,-11.08466 z" + id="path45" + style="stroke-width:1.1771" /> + d="m 385,511.88146 10e-5,-296.02987 h -2 L 383,511.88146 Z m 3.0001,-294.1924 -4,-11.01937 -4,11.01937 z" + id="path47" + style="stroke-width:1.17363" /> DEV + id="text49" + x="155.64301" + y="333">DEV - + id="text51" + x="187.64301" + y="333">- 41 Manage Medical + id="text53" + x="193.30901" + y="333">41 Manage Medical Alert Delegation + id="text55" + x="155.64301" + y="356">Alert Delegation DEV + id="text57" + x="401.08499" + y="312">DEV - + id="text59" + x="433.08499" + y="312">- 39 Publish + id="text61" + x="438.75101" + y="312">39 Publish Medical Alert Update + id="text63" + x="401.08499" + y="335">Medical Alert Update DEV + id="text95" + x="400.638" + y="364">DEV - + id="text97" + x="432.638" + y="364">- 42 Delegate + id="text99" + x="438.30499" + y="364">42 Delegate Medical Alert + id="text101" + x="400.638" + y="387">Medical Alert DEV + id="text103" + x="155.64301" + y="279">DEV - + id="text105" + x="187.64301" + y="279">- 40 Retrieve Medical + id="text107" + x="193.30901" + y="279">40 Retrieve Medical Alert Status + id="text109" + x="155.64301" + y="302">Alert Status DEV + id="text117" + x="155.642" + y="387">DEV + - - + id="text121" + x="193.30901" + y="387">43 Update Alert 43 Update Alert + id="text123" + x="155.642" + y="410">Acknowledgement Status Acknowledgement Status + id="text123-8" + x="157.09764" + y="457.42435">Distributed Alarm System + DEV + - + 49 End Distributed + Alarm System + DEV + - + 49 End Distributed + Alarm System 43 ) + diff --git a/asciidoc/plantuml/vol1-figure-sdpi-a-delegation-example-sequence-diagram.puml b/asciidoc/plantuml/vol1-figure-sdpi-a-delegation-example-sequence-diagram.puml index a1dc9b86..2f108440 100644 --- a/asciidoc/plantuml/vol1-figure-sdpi-a-delegation-example-sequence-diagram.puml +++ b/asciidoc/plantuml/vol1-figure-sdpi-a-delegation-example-sequence-diagram.puml @@ -16,6 +16,7 @@ group secured sdc_sp -> sdc_sp: annunciate alert sdc_sc <- sdc_sc: annunciate alert + ==Establish Distributed Alarm System== ==Delegate alert== loop sdc_sc -> sdc_sp: Delegation Heartbeat diff --git a/asciidoc/plantuml/vol2-figure-dev-48-sequence.puml b/asciidoc/plantuml/vol2-figure-dev-48-sequence.puml new file mode 100644 index 00000000..ee4dc49f --- /dev/null +++ b/asciidoc/plantuml/vol2-figure-dev-48-sequence.puml @@ -0,0 +1,36 @@ +@startuml + +!include plantuml/common_style.inc.puml +autonumber + +!global $str_somds_medical_alert_consumer = "SOMDS Medical Alert Consumer" +!global $str_somds_medical_alert_provider = "SOMDS Medical Alert Provider" + +participant "$str_somds_medical_alert_consumer" as consumer +participant "$str_somds_medical_alert_provider" as provider + +==Establish Distributed Alarm System [DEV-48]== +opt + consumer -> provider: SetFriendlyConsumerName (Friendly Consumer Name) + consumer <<-- provider: SetFriendlyConsumerNameResponse +end +consumer -> provider: MonitoredByDAS +consumer <<-- provider: MonitoredByDASResponse (MDIB version) + +par + loop upon alert condition change and before MaxTechnicalConfirmationDelay expires + consumer -> provider: ConfirmAlertsTechnicalDelivery (Alert Occurrence ID Tuple(s)) + consumer <<-- provider: ConfirmAlertsTechnicalDeliveryResponse (MDIB version) + end +else + loop before InvocationEffectiveTimeout expires + consumer -> provider: MonitoredByDAS + consumer <<-- provider: MonitoredByDASResponse (MDIB version) + end +else + loop at least once every SelfCheckPeriod + provider -> consumer: Notification (PeriodicAlertReport incl. updated 'SelfCheck' information) + end +end + +@enduml \ No newline at end of file diff --git a/asciidoc/plantuml/vol2-figure-dev-49-sequence.puml b/asciidoc/plantuml/vol2-figure-dev-49-sequence.puml new file mode 100644 index 00000000..d1edd3d8 --- /dev/null +++ b/asciidoc/plantuml/vol2-figure-dev-49-sequence.puml @@ -0,0 +1,21 @@ +@startuml + +!include plantuml/common_style.inc.puml +autonumber + +!global $str_somds_medical_alert_consumer = "SOMDS Medical Alert Consumer" +!global $str_somds_medical_alert_provider = "SOMDS Medical Alert Provider" + +participant "$str_somds_medical_alert_consumer" as consumer +participant "$str_somds_medical_alert_provider" as provider + +==End Distributed Alarm System [DEV-49]== + +alt consumer intentionally ends the DAS + consumer -> provider: EndMonitoredByDAS + consumer <<-- provider: EndMonitoredByDASResponse(MDIB version) +else provider intentionally ends the DAS + consumer <- provider: Notification (OperationInvokedReport incl. disabled operations 'MonitoredByDAS' and 'EndMonitoredByDAS') +end + +@enduml \ No newline at end of file diff --git a/asciidoc/volume0/tf0-ch-b-transactions.adoc b/asciidoc/volume0/tf0-ch-b-transactions.adoc index 781a5109..f8fe51c2 100644 --- a/asciidoc/volume0/tf0-ch-b-transactions.adoc +++ b/asciidoc/volume0/tf0-ch-b-transactions.adoc @@ -163,12 +163,20 @@ include::../volume2/dev-46/tf2-dev-46-summary.adoc[] .^| [[vol0_transaction_summary_dev_47,DEV-47 Retrieve Network Presence]] [[transaction_number_dev_47,DEV-47]] DEV-47 -| [[transaction_name_retrieve_network_presence,Retrieve Network Presence]] Retrieve Network Presence +| [[transaction_name_retrieve_network_presence,Retrieve Network Presence]] Retrieve Network Presence | include::../volume2/dev-47/tf2-dev-47-summary.adoc[] -.^| DEV-48 | _Reserved_ | -.^| DEV-49 | _Reserved_ | +.^| [[vol0_transaction_summary_dev_48, DEV-48 Establish Distributed Alarm System]][[transaction_number_dev_48, DEV-48]] DEV-48 +| [[transaction_name_establish_distributed_alarm_system, Establish Distributed Alarm System]] Establish Distributed Alarm System +| +include::../volume2/dev-48/tf2-dev-48-summary.adoc[] + +.^| [[vol0_transaction_summary_dev_49, DEV-49 End Distributed Alarm System]][[transaction_number_dev_49, DEV-49]] DEV-49 +| [[transaction_name_end_distributed_alarm_system, End Distributed Alarm System]] End Distributed Alarm System +| +include::../volume2/dev-49/tf2-dev-49-summary.adoc[] + .^| DEV-50 | _Reserved_ | |=== diff --git a/asciidoc/volume1/tf1-ch-12-sdpi-a.adoc b/asciidoc/volume1/tf1-ch-12-sdpi-a.adoc index 0d5a5b40..6069d1de 100644 --- a/asciidoc/volume1/tf1-ch-12-sdpi-a.adoc +++ b/asciidoc/volume1/tf1-ch-12-sdpi-a.adoc @@ -29,10 +29,10 @@ The actors and transactions in this specification are specialized versions of th Additional services have been provided to specifically support the exchange and management of this medical device alert information, providing a high-level of reliability and performance, commensurate with the potential risk to the patient if they are not promptly addressed. The profile builds upon the foundational <> capabilities provided by the <>. -These extended capabilities for medical data exchange are achieved by various means, including: +These extended capabilities for medical alert exchange are achieved by various means, including: . Grouping <> actors with their <> counterparts -. Addressing requirements from the emerging <> ISO/IEEE standards: <> and <> +. Addressing requirements from the (emerging) <> ISO/IEEE standards: <>, <> and <> . Requiring capabilities that in the <> may be optional . Requiring additional <> data elements or content modules @@ -74,7 +74,7 @@ image::../images/vol1-diagram-sdpi-a-actor.svg[] .^|Optionality .^|Reference -.6+| <> +.8+| <> .^| <> .^| Responder .^| R @@ -108,7 +108,17 @@ image::../images/vol1-diagram-sdpi-a-actor.svg[] | [DEV-43] Deferred to a future version of SDPi // <> -.6+| <> +| <> +| Responder +| R ^(See^ ^Note^ ^3)^ +| <> + +| <> +| Responder and Initiator +| R ^(See^ ^Note^ ^3)^ +| <> + +.8+| <> .^| <> .^| Initiator .^| R @@ -142,6 +152,16 @@ image::../images/vol1-diagram-sdpi-a-actor.svg[] | [DEV-43] Deferred to a future version of SDPi // <> +| <> +| Initiator +| R ^(See^ ^Note^ ^3)^ +| <> + +| <> +| Responder and Initiator +| R ^(See^ ^Note^ ^3)^ +| <> + .4+| <> ^(See^ ^Note^ ^2)^ .^| <> .^| Initiator @@ -174,6 +194,7 @@ If the gateway supports <> Actor <> (Direction="bidirectional") is enabled. +Note 3: Transaction is required if <> is supported. |=== [#vol1_clause_sdpi_a_actor_descriptions_actor_profile_requirements] @@ -266,6 +287,19 @@ If a <> is being created, it may incorporate both << [#vol1_clause_sdpi_a_actor_options] === SDPi-A Actor Options +[#vol1_clause_sdpi_a_actor_option_distributed_alarm_system] +==== Distributed Alarm System Option + +[#vol1_clause_sdpi_a_actor_option_distributed_alarm_system_reftext, reftext='SDPi-A Option: Distributed Alarm System'] +[%noheader] +[%autowidth] +[cols="1"] +|=== +a| *{supplement_note}*: This section is intentionally left incomplete until the completion of the <> standard, which is required before this profile can be completed. + +This option enables <> and <> systems to safely and reliably run a Distributed Alarm System with each other. +This option enables both the <> [DEV-48] and <> [DEV-49] transactions. +|=== [#vol1_clause_sdpi_a_actor_option_alert_delegation] ==== Alert Delegation Option @@ -276,7 +310,7 @@ If a <> is being created, it may incorporate both << [cols="1"] |=== a| *{supplement_note}*: This section is intentionally left incomplete to indicate capabilities that will be added in a future version of the SDPi Supplement. -As stated elsewhere, the completion of the <> standard is required before this profile can be completed (beyond alert reporting for DIS capabilities), and that is especially the case for alert delegation. +As stated elsewhere, the completion of the <> standard is required before this profile can be completed (beyond alert reporting for DIS capabilities and DAS capabilities without delegation), and that is especially the case for alert delegation. *_The sequence diagram below for delegation is provided for informative purposes only and will be finalized when the IEEE standard and this profile option are completed._* diff --git a/asciidoc/volume2/dev-48/tf2-dev-48-summary.adoc b/asciidoc/volume2/dev-48/tf2-dev-48-summary.adoc new file mode 100644 index 00000000..a64167db --- /dev/null +++ b/asciidoc/volume2/dev-48/tf2-dev-48-summary.adoc @@ -0,0 +1,3 @@ +// DEV-48 Transaction Summary + +Establish a Distributed Alarm System between a <> and a <>. \ No newline at end of file diff --git a/asciidoc/volume2/dev-48/tf2-dev-48.adoc b/asciidoc/volume2/dev-48/tf2-dev-48.adoc new file mode 100644 index 00000000..85f7976f --- /dev/null +++ b/asciidoc/volume2/dev-48/tf2-dev-48.adoc @@ -0,0 +1,130 @@ +:var_transaction_id: DEV-48 + +:var_label_dev_48_operation_set_friendly_consumer_name: SetFriendlyConsumerName +:var_label_dev_48_operation_set_friendly_consumer_name_response: SetFriendlyConsumerNameResponse +:var_label_dev_48_operation_monitored_by_das: MonitoredByDAS +:var_label_dev_48_operation_monitored_by_das_response: MonitoredByDASResponse + +//reset|+1|off +[#vol2_clause_dev_48,sdpi_offset=48] +=== Establish Distributed Alarm System [{var_transaction_id}] + +==== Scope + +include::tf2-dev-48-summary.adoc[] + +==== Actor Roles + +.Actor Roles [{var_transaction_id}] +[cols="1,2"] +|=== +|Actor |Roles + +|<> +|Requests a <> to establish a Distributed Alarm System. Also maintains an established Distributed Alarm System. + +|<> +|Listens for requests from a <> to establish a Distributed Alarm System and grants such requests. Also maintains an established Distributed Alarm System. + +|=== + +==== Referenced Standards + +* <> + +==== Messages + +.Message Interaction Diagram [{var_transaction_id}] +[plantuml#vol2_figure_dev_48_sequence, target=puml-dev-48-sequence, format=svg] +.... +include::../../plantuml/vol2-figure-dev-48-sequence.puml[] +.... + +[#vol2_clause_dev_48_operation_set_friendly_consumer_name] +===== {var_label_dev_48_operation_set_friendly_consumer_name} Operation + +A <> invokes the {var_label_dev_48_operation_set_friendly_consumer_name} operation on a <> as specified in <>. + +[#vol2_clause_dev_48_operation_set_friendly_consumer_name_trigger_events] +====== Trigger Events + +The {var_label_dev_48_operation_set_friendly_consumer_name} operation is invoked by a <> as the first step in establishing a Distributed Alarm System with the <>. + +[#vol2_clause_dev_48_operation_set_friendly_consumer_name_semantics] +====== Message Semantics + +[[payload_dev_48_set_friendly_consumer_name_name]]Friendly Consumer Name:: The Distributed Alarm System consumer name by which a <> wishes to be referred to by the <>. + +[#vol2_clause_dev_48_operation_set_friendly_consumer_name_expected_actions] +====== Expected Actions + +When a <> invokes this operation, the receiving <> responds with a <> message. + +[#vol2_clause_dev_48_operation_set_friendly_consumer_name_response] +===== {var_label_dev_48_operation_set_friendly_consumer_name_response} Operation Invoked Report Message + +A <> responds with a <> to a <>'s invocation of the {var_label_dev_48_operation_set_friendly_consumer_name} +operation. + +[#vol2_clause_dev_48_operation_set_friendly_consumer_name_response_trigger_events] +====== Trigger Events + +The <> sends a <> back to the <> that invoked the {var_label_dev_48_operation_set_friendly_consumer_name} +operation. + +[#vol2_clause_dev_48_operation_set_friendly_consumer_name_response_semantics] +====== Message Semantics + +The <> does not contain any further semantics. + +[#vol2_clause_dev_48_operation_set_friendly_consumer_name_response_expected_actions] +====== Expected Actions + +When a <> sends this message, there is no expected or required response. If the operation was successful, the <> uses the Friendly Consumer Name as the <>'s identifier for the clinical user. + +[#vol2_clause_dev_48_operation_monitored_by_das] +===== {var_label_dev_48_operation_monitored_by_das} Operation + +A <> invokes the {var_label_dev_48_operation_monitored_by_das} operation on a <> to establish a Distributed Alarm System, as specified in <>. + +[#vol2_clause_dev_48_operation_monitored_by_das_trigger_events] +====== Trigger Events + +The {var_label_dev_48_operation_monitored_by_das} operation is invoked by a <> to request the establishment of a Distributed Alarm System with the <>. + +[#vol2_clause_dev_48_operation_monitored_by_das_semantics] +====== Message Semantics + +The <> does not contain any further semantics. + +[#vol2_clause_dev_48_operation_monitored_by_das_expected_actions] +====== Expected Actions + +When a <> invokes this operation, the receiving <> responds with a <> message. + +[#vol2_clause_dev_48_operation_monitored_by_das_response] +===== {var_label_dev_48_operation_monitored_by_das_response} Operation Invoked Report Message + +A <> responds with a <> to a <>'s invocation of the {var_label_dev_48_operation_monitored_by_das} +operation. + +[#vol2_clause_dev_48_operation_monitored_by_das_response_trigger_events] +====== Trigger Events + +The <> sends a <> back to the <> that invoked the {var_label_dev_48_operation_monitored_by_das} +operation. + +[#vol2_clause_dev_48_operation_monitored_by_das_response_semantics] +====== Message Semantics + +[[payload_dev_48_monitored_by_das_name]]MDIB version:: The version of the <>'s MDIB from which the <> takes over the Distributed Alarm System responsibility and therefore starts confirming changes in the <>'s alert conditions. + + +[#vol2_clause_dev_48_operation_monitored_by_das_response_expected_actions] +====== Expected Actions + +When a <> sends this message, there is no expected or required response. The <> marks the establishment of the Distributed Alarm System for both the <> and the <>. + +[#vol2_clause_dev_239_publish_medical_alert_update_ses] +include::../dev-x-default-ses-secured-mode.adoc[] + diff --git a/asciidoc/volume2/dev-49/tf2-dev-49-summary.adoc b/asciidoc/volume2/dev-49/tf2-dev-49-summary.adoc new file mode 100644 index 00000000..7e6a1f2b --- /dev/null +++ b/asciidoc/volume2/dev-49/tf2-dev-49-summary.adoc @@ -0,0 +1,3 @@ +// DEV-49 Transaction Summary + +Intentionally end a Distributed Alarm System between a <> and a <>. \ No newline at end of file diff --git a/asciidoc/volume2/dev-49/tf2-dev-49.adoc b/asciidoc/volume2/dev-49/tf2-dev-49.adoc new file mode 100644 index 00000000..92055235 --- /dev/null +++ b/asciidoc/volume2/dev-49/tf2-dev-49.adoc @@ -0,0 +1,41 @@ +:var_transaction_id: DEV-49 + + +//reset|+1|off +[#vol2_clause_dev_49,sdpi_offset=49] +=== End Distributed Alarm System [{var_transaction_id}] + +==== Scope + +include::tf2-dev-49-summary.adoc[] + +==== Actor Roles + +.Actor Roles [{var_transaction_id}] +[cols="1,2"] +|=== +|Actor |Roles + +|<> +|Requests a <> to end a Distributed Alarm System. + +|<> +|Listens for requests from a <> to end a Distributed Alarm System and grants such requests. Alternatively ends a Distributed Alarm System on its own initiative and notifies the <>. + +|=== + +==== Referenced Standards + +* <> + +==== Messages + +.Message Interaction Diagram [{var_transaction_id}] +[plantuml#vol2_figure_dev_49_sequence, target=puml-dev-49-sequence, format=svg] +.... +include::../../plantuml/vol2-figure-dev-49-sequence.puml[] +.... + +[#vol2_clause_dev_239_publish_medical_alert_update_ses] +include::../dev-x-default-ses-secured-mode.adoc[] + diff --git a/asciidoc/volume2/tf2-main.adoc b/asciidoc/volume2/tf2-main.adoc index 94670d03..18320a34 100644 --- a/asciidoc/volume2/tf2-main.adoc +++ b/asciidoc/volume2/tf2-main.adoc @@ -57,6 +57,12 @@ include::dev-46/tf2-dev-46.adoc[] //=== Retrieve Network Presence [DEV-47] include::dev-47/tf2-dev-47.adoc[] +//=== Establish Distributed Alarm System [DEV-48] +include::dev-48/tf2-dev-48.adoc[] + +//=== End Distributed Alarm System [DEV-49] +include::dev-49/tf2-dev-49.adoc[] + // TODO how does this differ from DEV-30 // //[appendix#clause-mdpws-constraints-corrigenda-adjuncts]