Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
1e13262
Draft diagram for new transaction DEV-48
JavierEspina Jul 22, 2025
904c54a
Merge branch 'master' into 457-early-pre-published-alert-pkp-integrat…
JavierEspina Jul 22, 2025
f4cf933
Changed actors names in DEV-48 transaction diagram
JavierEspina Jul 22, 2025
b91ca28
Added Provider selfChecks to DEV-48 transaction diagram
JavierEspina Jul 23, 2025
d73f44a
Started carving out transactions DEV-48 and DEV-49
JavierEspina Jul 25, 2025
5caae1f
Corrected actors in transactions DEV-48 and DEV-49
JavierEspina Jul 25, 2025
bc09b01
First big badge of changes for DAS management
JavierEspina Jul 28, 2025
8964f9d
Updated SDPi-A actor diagram svg
JavierEspina Jul 29, 2025
0c45e12
Attempt to fix PUML diagram rendering issues
JavierEspina Jul 29, 2025
4d01f13
2nd attempt to fix PUML diagram rendering issues
JavierEspina Jul 30, 2025
e7f2970
added referenced standards to DEV-48 and -49
JavierEspina Jul 30, 2025
7a60af2
First inroads into DEV-48 message / operation descriptions
JavierEspina Jul 31, 2025
7ea3ec7
Merge branch 'master' into 457-early-pre-published-alert-pkp-integrat…
JavierEspina Aug 1, 2025
36d192f
Merge branch 'master' into 457-early-pre-published-alert-pkp-integrat…
JavierEspina Sep 1, 2025
5f00859
Harmonized PUML include paths
JavierEspina Sep 1, 2025
3ef96ed
Described set_friendly_consumer_name_response
JavierEspina Sep 13, 2025
7dd9c9e
Described operation_monitored_by_das
JavierEspina Sep 13, 2025
0e4e484
Merge branch 'master' into 457-early-pre-published-alert-pkp-integrat…
JavierEspina Oct 2, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
341 changes: 236 additions & 105 deletions asciidoc/images/vol1-diagram-sdpi-a-actor.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
36 changes: 36 additions & 0 deletions asciidoc/plantuml/vol2-figure-dev-48-sequence.puml
Original file line number Diff line number Diff line change
@@ -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
21 changes: 21 additions & 0 deletions asciidoc/plantuml/vol2-figure-dev-49-sequence.puml
Original file line number Diff line number Diff line change
@@ -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
14 changes: 11 additions & 3 deletions asciidoc/volume0/tf0-ch-b-transactions.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -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_ |

|===
Expand Down
44 changes: 39 additions & 5 deletions asciidoc/volume1/tf1-ch-12-sdpi-a.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -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 <<term_plug_and_trust>> capabilities provided by the <<vol1_clause_sdpi_p_profile_reftext>>.
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 <<acronym_sdpi_a>> actors with their <<acronym_sdpi_p>> counterparts
. Addressing requirements from the emerging <<acronym_pkp>> ISO/IEEE standards: <<ref_ieee_11073_10700_2022>> and <<ref_ieee_11073_10701_2022>>
. Addressing requirements from the (emerging) <<acronym_pkp>> ISO/IEEE standards: <<ref_ieee_11073_10700_2022>>, <<ref_ieee_11073_10701_2022>> and <<ref_ieee_11073_10702_202x>>
. Requiring capabilities that in the <<vol1_clause_sdpi_p_profile_reftext>> may be optional
. Requiring additional <<acronym_biceps>> data elements or content modules

Expand Down Expand Up @@ -74,7 +74,7 @@ image::../images/vol1-diagram-sdpi-a-actor.svg[]
.^|Optionality
.^|Reference

.6+| <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>>
.8+| <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>>
.^| <<transaction_name_establish_medical_alert_exchange>>
.^| Responder
.^| R
Expand Down Expand Up @@ -108,7 +108,17 @@ image::../images/vol1-diagram-sdpi-a-actor.svg[]
| [DEV-43] Deferred to a future version of SDPi
// <<vol2_clause_dev_43>>

.6+| <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>>
| <<transaction_name_establish_distributed_alarm_system>>
| Responder
| R ^(See^ ^Note^ ^3)^
| <<vol2_clause_dev_48>>

| <<transaction_name_end_distributed_alarm_system>>
| Responder and Initiator
| R ^(See^ ^Note^ ^3)^
| <<vol2_clause_dev_49>>

.8+| <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>>
.^| <<transaction_name_establish_medical_alert_exchange>>
.^| Initiator
.^| R
Expand Down Expand Up @@ -142,6 +152,16 @@ image::../images/vol1-diagram-sdpi-a-actor.svg[]
| [DEV-43] Deferred to a future version of SDPi
// <<vol2_clause_dev_43>>

| <<transaction_name_establish_distributed_alarm_system>>
| Initiator
| R ^(See^ ^Note^ ^3)^
| <<vol2_clause_dev_48>>

| <<transaction_name_end_distributed_alarm_system>>
| Responder and Initiator
| R ^(See^ ^Note^ ^3)^
| <<vol2_clause_dev_49>>

.4+| <<vol1_spec_sdpi_a_actor_somds_acm_gateway>> ^(See^ ^Note^ ^2)^
.^| <<transaction_name_establish_medical_alert_exchange>>
.^| Initiator
Expand Down Expand Up @@ -174,6 +194,7 @@ If the gateway supports <<vol1_clause_sdpi_a_actor_option_remote_alert_signalin
In this case, the gateway will support both "Initiator & Responder" for these transactions.
In this case, the <<vol1_spec_sdpi_p_actor_somds_v2_gateway>> Actor <<vol1_spec_sdpi_p_option_gateway_direction>> (Direction="bidirectional") is enabled.

Note 3: Transaction is required if <<vol1_clause_sdpi_a_actor_option_distributed_alarm_system_reftext>> is supported.
|===

[#vol1_clause_sdpi_a_actor_descriptions_actor_profile_requirements]
Expand Down Expand Up @@ -266,6 +287,19 @@ If a <<label_system_type_name_sas>> 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 <<ref_ieee_11073_10702_202x>> standard, which is required before this profile can be completed.

This option enables <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>> and <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>> systems to safely and reliably run a Distributed Alarm System with each other.
This option enables both the <<transaction_name_establish_distributed_alarm_system>> [DEV-48] and <<transaction_name_end_distributed_alarm_system>> [DEV-49] transactions.
|===

[#vol1_clause_sdpi_a_actor_option_alert_delegation]
==== Alert Delegation Option
Expand All @@ -276,7 +310,7 @@ If a <<label_system_type_name_sas>> 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 <<ref_ieee_11073_10702_202x>> 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 <<ref_ieee_11073_10702_202x>> 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._*

Expand Down
3 changes: 3 additions & 0 deletions asciidoc/volume2/dev-48/tf2-dev-48-summary.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// DEV-48 Transaction Summary

Establish a Distributed Alarm System between a <<vol1_spec_sdpi_r_actor_somds_medical_data_provider>> and a <<vol1_spec_sdpi_r_actor_somds_medical_data_consumer>>.
130 changes: 130 additions & 0 deletions asciidoc/volume2/dev-48/tf2-dev-48.adoc
Original file line number Diff line number Diff line change
@@ -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

|<<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>>
|Requests a <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>> to establish a Distributed Alarm System. Also maintains an established Distributed Alarm System.

|<<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>>
|Listens for requests from a <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>> to establish a Distributed Alarm System and grants such requests. Also maintains an established Distributed Alarm System.

|===

==== Referenced Standards

* <<ref_ieee_11073_10702_202x>>

==== 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 <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>> invokes the {var_label_dev_48_operation_set_friendly_consumer_name} operation on a <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>> as specified in <<ref_ieee_11073_10702_202x>>.

[#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 <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>> as the first step in establishing a Distributed Alarm System with the <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>>.

[#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 <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>> wishes to be referred to by the <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>>.

[#vol2_clause_dev_48_operation_set_friendly_consumer_name_expected_actions]
====== Expected Actions

When a <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>> invokes this operation, the receiving <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>> responds with a <<vol2_clause_dev_48_operation_set_friendly_consumer_name_response, {var_label_dev_48_operation_set_friendly_consumer_name_response}>> 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 <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>> responds with a <<vol2_clause_dev_48_operation_set_friendly_consumer_name_response>> to a <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>>'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 <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>> sends a <<vol2_clause_dev_48_operation_set_friendly_consumer_name_response>> back to the <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>> 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 <<vol2_clause_dev_48_operation_set_friendly_consumer_name_response>> does not contain any further semantics.

[#vol2_clause_dev_48_operation_set_friendly_consumer_name_response_expected_actions]
====== Expected Actions

When a <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>> sends this message, there is no expected or required response. If the operation was successful, the <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>> uses the Friendly Consumer Name as the <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>>'s identifier for the clinical user.

[#vol2_clause_dev_48_operation_monitored_by_das]
===== {var_label_dev_48_operation_monitored_by_das} Operation

A <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>> invokes the {var_label_dev_48_operation_monitored_by_das} operation on a <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>> to establish a Distributed Alarm System, as specified in <<ref_ieee_11073_10702_202x>>.

[#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 <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>> to request the establishment of a Distributed Alarm System with the <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>>.

[#vol2_clause_dev_48_operation_monitored_by_das_semantics]
====== Message Semantics

The <<vol2_clause_dev_48_operation_monitored_by_das_semantics>> does not contain any further semantics.

[#vol2_clause_dev_48_operation_monitored_by_das_expected_actions]
====== Expected Actions

When a <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>> invokes this operation, the receiving <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>> responds with a <<vol2_clause_dev_48_operation_monitored_by_das_response, {var_label_dev_48_operation_monitored_by_das_response}>> message.

[#vol2_clause_dev_48_operation_monitored_by_das_response]
===== {var_label_dev_48_operation_monitored_by_das_response} Operation Invoked Report Message

A <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>> responds with a <<vol2_clause_dev_48_operation_monitored_by_das_response>> to a <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>>'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 <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>> sends a <<vol2_clause_dev_48_operation_monitored_by_das_response>> back to the <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>> 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 <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>>'s MDIB from which the <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>> takes over the Distributed Alarm System responsibility and therefore starts confirming changes in the <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>>'s alert conditions.


[#vol2_clause_dev_48_operation_monitored_by_das_response_expected_actions]
====== Expected Actions

When a <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>> sends this message, there is no expected or required response. The <<vol2_clause_dev_48_operation_monitored_by_das_response>> marks the establishment of the Distributed Alarm System for both the <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>> and the <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>>.

[#vol2_clause_dev_239_publish_medical_alert_update_ses]
include::../dev-x-default-ses-secured-mode.adoc[]

3 changes: 3 additions & 0 deletions asciidoc/volume2/dev-49/tf2-dev-49-summary.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// DEV-49 Transaction Summary

Intentionally end a Distributed Alarm System between a <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>> and a <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>>.
41 changes: 41 additions & 0 deletions asciidoc/volume2/dev-49/tf2-dev-49.adoc
Original file line number Diff line number Diff line change
@@ -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

|<<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>>
|Requests a <<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>> to end a Distributed Alarm System.

|<<vol1_spec_sdpi_a_actor_somds_medical_alert_provider>>
|Listens for requests from a <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>> to end a Distributed Alarm System and grants such requests. Alternatively ends a Distributed Alarm System on its own initiative and notifies the <<vol1_spec_sdpi_a_actor_somds_medical_alert_consumer>>.

|===

==== Referenced Standards

* <<ref_ieee_11073_10702_202x>>

==== 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[]

6 changes: 6 additions & 0 deletions asciidoc/volume2/tf2-main.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down