@memoarchitect/ontology 0.8.22 → 0.10.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/README.md +1 -1
  2. package/examples/connected-patient-monitor/memo.package.yaml +3 -0
  3. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +9 -7
  4. package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -1
  5. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
  6. package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +11 -9
  8. package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
  9. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
  10. package/examples/functional-logical-physical/memo.package.yaml +3 -0
  11. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +9 -7
  12. package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
  13. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
  14. package/examples/gpca-pump/memo.identity.yaml +2179 -0
  15. package/examples/gpca-pump/memo.package.yaml +3 -0
  16. package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
  17. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
  18. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
  19. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
  20. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
  21. package/examples/gpca-pump/model/catalog/gpca_context.sysml +27 -23
  22. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +15 -15
  23. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
  24. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
  25. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +146 -180
  26. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
  27. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +290 -288
  28. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
  29. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
  30. package/examples/gpca-pump/model/catalog/gpca_system.sysml +21 -33
  31. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -11
  32. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
  33. package/examples/gpca-pump/model/catalog/project.sysml +3 -1
  34. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +7 -7
  35. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +7 -7
  36. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +6 -7
  37. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +7 -8
  38. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +6 -6
  39. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +6 -6
  40. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +6 -6
  41. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +8 -9
  42. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +6 -6
  43. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +6 -6
  44. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +6 -6
  45. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +6 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +7 -7
  47. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +6 -6
  48. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +6 -6
  49. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +8 -9
  50. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +6 -6
  51. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -7
  52. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +6 -7
  53. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +6 -6
  54. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +6 -6
  55. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +6 -7
  56. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +6 -6
  57. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +8 -9
  58. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +6 -7
  59. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +6 -6
  60. package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
  61. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +10 -8
  62. package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -1
  63. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
  64. package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
  65. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +7 -5
  66. package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
  67. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
  68. package/examples/multidimensional-layers/memo.package.yaml +3 -0
  69. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -4
  70. package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
  71. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
  72. package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
  73. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +20 -18
  74. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
  75. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +6 -4
  76. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +9 -7
  77. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
  78. package/examples/nested-architecture-dsm/model/catalog/project.sysml +3 -1
  79. package/examples/reusable-instrument/memo.package.yaml +3 -0
  80. package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
  81. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +23 -31
  82. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
  83. package/examples/ros-mobile-robot/memo.package.yaml +3 -0
  84. package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
  85. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
  86. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +0 -1
  87. package/examples/software-only-medical-device/memo.package.yaml +3 -0
  88. package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
  89. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -9
  90. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
  91. package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
  92. package/examples/surgical-closure-workflow/model/catalog/project.sysml +3 -1
  93. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +56 -69
  94. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
  95. package/examples/surgical-robot/memo.package.yaml +3 -0
  96. package/examples/surgical-robot/model/catalog/project.sysml +3 -1
  97. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
  98. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
  99. package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
  100. package/examples/sysml-diagram-samples/model/catalog/project.sysml +3 -1
  101. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -11
  102. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -7
  103. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +4 -3
  104. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +3 -3
  105. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +17 -16
  106. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +9 -8
  107. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +4 -3
  108. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +3 -3
  109. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +4 -3
  110. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +12 -9
  111. package/examples/temperature-alarm/memo.identity.yaml +64 -0
  112. package/examples/temperature-alarm/memo.package.yaml +3 -0
  113. package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
  114. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +30 -29
  115. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
  116. package/examples/ui-screen-regions/memo.package.yaml +3 -0
  117. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +14 -12
  118. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
  119. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
  120. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
  121. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
  122. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
  123. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
  124. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
  125. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +14 -12
  126. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
  127. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
  128. package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
  129. package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
  130. package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
  131. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +6 -5
  132. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +6 -5
  133. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +6 -5
  134. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +4 -3
  135. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +4 -3
  136. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +4 -3
  137. package/extensions/aadl/memo.package.yaml +1 -1
  138. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
  139. package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
  140. package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
  141. package/extensions/cloud/memo.package.yaml +1 -1
  142. package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
  143. package/extensions/container/memo.package.yaml +1 -1
  144. package/extensions/container/src/container_extension.sysml +2 -2
  145. package/extensions/container/src/methodology/container_methodology.sysml +3 -1
  146. package/extensions/messaging/memo.package.yaml +1 -1
  147. package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
  148. package/extensions/ros/memo.package.yaml +1 -1
  149. package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
  150. package/extensions/template/src/extension.sysml +3 -1
  151. package/methodologies/default/memo.package.yaml +1 -1
  152. package/methodologies/gpca/memo.package.yaml +1 -1
  153. package/ontology/memo.package.yaml +1 -1
  154. package/package.json +2 -2
  155. package/profile/memo.package.yaml +1 -1
  156. package/src/architecture/functional/behavior/memo_behavior.sysml +5 -5
  157. package/src/architecture/functional/functions/memo_functions.sysml +6 -6
  158. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
  159. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
  160. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +7 -7
  161. package/src/architecture/implementation/ui/memo_ui.sysml +8 -31
  162. package/src/architecture/logical/interfaces/memo_interfaces.sysml +4 -2
  163. package/src/architecture/logical/structure/memo_logical_structure.sysml +5 -5
  164. package/src/architecture/operational/activities/memo_activities.sysml +19 -28
  165. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -4
  166. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +7 -7
  167. package/src/architecture/operational/context/use_context/memo_use_context.sysml +5 -14
  168. package/src/architecture/operational/scenarios/memo_scenarios.sysml +12 -104
  169. package/src/architecture/operational/structure/memo_operational.sysml +42 -13
  170. package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -12
  171. package/src/architecture/operational/workflows/memo_workflows.sysml +20 -42
  172. package/src/architecture/realization/deployment/memo_deployment.sysml +26 -19
  173. package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
  174. package/src/artifacts/standards/cfr_21_820.sysml +80 -89
  175. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
  176. package/src/artifacts/standards/iec_60601_1.sysml +108 -121
  177. package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
  178. package/src/artifacts/standards/iec_60812.sysml +21 -22
  179. package/src/artifacts/standards/iec_62304.sysml +150 -169
  180. package/src/artifacts/standards/iec_62366_1.sysml +80 -89
  181. package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
  182. package/src/artifacts/standards/iso_13485.sysml +80 -89
  183. package/src/artifacts/standards/iso_14971.sysml +66 -73
  184. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
  185. package/src/artifacts/templates/dhf/system/sad.md +3 -3
  186. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +2 -2
  187. package/src/assurance/human_factors/memo_human_factors.sysml +2 -2
  188. package/src/assurance/requirements/memo_requirements.sysml +2 -18
  189. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +1 -1
  190. package/src/assurance/safety_risk/memo_risk.sysml +12 -0
  191. package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
  192. package/src/core/common/memo_common.sysml +59 -55
  193. package/src/core/enumerations/memo_enumerations.sysml +1 -1
  194. package/src/core/relationships/memo_relationships.sysml +29 -56
  195. package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
  196. package/src/methodology/core/memo_core.sysml +0 -10
  197. package/src/methodology/profiles/memo_profiles.sysml +18 -16
  198. package/src/methodology/workflow/memo_workflow.sysml +5 -5
  199. package/src/rules/closure/closure_rules.sysml +22 -20
  200. package/src/rules/crosslayer/cross_layer_rules.sysml +4 -2
  201. package/src/rules/ontology/ontology_invariants.sysml +121 -48
  202. package/src/rules/quantitative/quantitative_rules.sysml +4 -2
  203. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +58 -57
  204. package/src/viewpoints/clinical/clinical_viewpoint.sysml +5 -4
  205. package/src/viewpoints/context/context_viewpoint.sysml +6 -5
  206. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +6 -5
  207. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +6 -6
  208. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +36 -4
  209. package/src/viewpoints/functional/functional_viewpoint.sysml +6 -5
  210. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +6 -5
  211. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +6 -5
  212. package/src/viewpoints/logical/logical_viewpoint.sysml +5 -4
  213. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +6 -5
  214. package/src/viewpoints/operational/operational_viewpoint.sysml +6 -5
  215. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +7 -6
  216. package/src/viewpoints/physical/physical_viewpoint.sysml +5 -4
  217. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +6 -5
  218. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +6 -5
  219. package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
  220. package/src/viewpoints/requirements/requirements_viewpoint.sysml +5 -4
  221. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +6 -5
  222. package/src/viewpoints/risk/risk_viewpoint.sysml +5 -4
  223. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +6 -5
  224. package/src/viewpoints/software/software_viewpoint.sysml +5 -4
  225. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +6 -5
  226. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +5 -4
  227. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
  228. package/src/viewpoints/usability/usability_viewpoint.sysml +5 -4
  229. package/src/viewpoints/verification/verification_viewpoint.sysml +5 -4
  230. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +6 -5
  231. package/templates/connected-device/memo.package.yaml +2 -0
  232. package/templates/connected-device/model/catalog/project.sysml +3 -1
  233. package/templates/default/memo.package.yaml +2 -0
  234. package/templates/default/model/catalog/project.sysml +3 -1
  235. package/templates/infusion-pump/memo.package.yaml +2 -0
  236. package/templates/infusion-pump/model/catalog/project.sysml +3 -1
  237. package/templates/monitoring-device/memo.package.yaml +2 -0
  238. package/templates/monitoring-device/model/catalog/project.sysml +3 -1
  239. package/templates/samd/memo.package.yaml +2 -0
  240. package/templates/samd/model/catalog/project.sysml +3 -1
@@ -9,6 +9,7 @@ package memo_examples_gpca_pump_gpca_interfaces {
9
9
  private import memo_examples_gpca_pump_gpca_behavior_subsystems::*;
10
10
  private import memo_core_enumerations::*;
11
11
  private import memo_core_dimensions::*;
12
+ private import memo_core_common::MemoIdentity;
12
13
  abstract interface def SensorDataInterface :> DataInterface {
13
14
  attribute :>> interfaceKind = InterfaceKind::data;
14
15
  attribute :>> protocolSemantics = "flow, air, occlusion, door, battery, cpu, memory, pump state";
@@ -19,7 +20,7 @@ package memo_examples_gpca_pump_gpca_interfaces {
19
20
  attribute :>> sensorDomain = "physiological and device state";
20
21
  }
21
22
  interface sensorInputInterface : Interface {
22
- attribute :>> id = "LI-005";
23
+ @MemoIdentity { :>> providedId = "LI-005"; }
23
24
  attribute :>> name = "SensorInputInterface";
24
25
  attribute :>> interfaceKind = InterfaceKind::data;
25
26
  attribute :>> direction = DirectionKind::input;
@@ -27,7 +28,7 @@ package memo_examples_gpca_pump_gpca_interfaces {
27
28
  attribute :>> protocolSemantics = "flow, air, occlusion, door, battery, cpu, memory, pump state";
28
29
  }
29
30
  interface actuatorCommandInterface : Interface {
30
- attribute :>> id = "LI-006";
31
+ @MemoIdentity { :>> providedId = "LI-006"; }
31
32
  attribute :>> name = "ActuatorCommandInterface";
32
33
  attribute :>> interfaceKind = InterfaceKind::control;
33
34
  attribute :>> direction = DirectionKind::output;
@@ -35,7 +36,7 @@ package memo_examples_gpca_pump_gpca_interfaces {
35
36
  attribute :>> protocolSemantics = "pump flow command, buzzer tone select, display content";
36
37
  }
37
38
  interface operatorEntryInterface : Interface {
38
- attribute :>> id = "LI-007";
39
+ @MemoIdentity { :>> providedId = "LI-007"; }
39
40
  attribute :>> name = "OperatorEntryInterface";
40
41
  attribute :>> interfaceKind = InterfaceKind::userInteraction;
41
42
  attribute :>> direction = DirectionKind::input;
@@ -43,7 +44,7 @@ package memo_examples_gpca_pump_gpca_interfaces {
43
44
  attribute :>> protocolSemantics = "prescription fields, alarm silence, start/stop commands";
44
45
  }
45
46
  interface eventLogInterface : Interface {
46
- attribute :>> id = "LI-008";
47
+ @MemoIdentity { :>> providedId = "LI-008"; }
47
48
  attribute :>> name = "EventLogInterface";
48
49
  attribute :>> interfaceKind = InterfaceKind::logging;
49
50
  attribute :>> direction = DirectionKind::output;
@@ -51,7 +52,7 @@ package memo_examples_gpca_pump_gpca_interfaces {
51
52
  attribute :>> protocolSemantics = "timestamped therapy, alarm, and configuration events";
52
53
  }
53
54
  interface hwSoftwareBus : Interface {
54
- attribute :>> id = "PI-001";
55
+ @MemoIdentity { :>> providedId = "PI-001"; }
55
56
  attribute :>> name = "HW_SW_DataBus";
56
57
  attribute :>> interfaceKind = InterfaceKind::digitalSignal;
57
58
  attribute :>> protocol = "immediate data port mapping";
@@ -63,7 +64,7 @@ package memo_examples_gpca_pump_gpca_interfaces {
63
64
  attribute :>> nominalCurrentA = 0.02;
64
65
  }
65
66
  interface pumpMotorDrive : Interface {
66
- attribute :>> id = "PI-002";
67
+ @MemoIdentity { :>> providedId = "PI-002"; }
67
68
  attribute :>> name = "PumpMotorStepDrive";
68
69
  attribute :>> interfaceKind = InterfaceKind::digitalSignal;
69
70
  attribute :>> protocol = "step/direction pulse train";
@@ -75,7 +76,7 @@ package memo_examples_gpca_pump_gpca_interfaces {
75
76
  attribute :>> signaling = "step/dir with enable interlock";
76
77
  }
77
78
  interface bolusButtonLine : Interface {
78
- attribute :>> id = "PI-003";
79
+ @MemoIdentity { :>> providedId = "PI-003"; }
79
80
  attribute :>> name = "BolusButtonInputLine";
80
81
  attribute :>> interfaceKind = InterfaceKind::digitalSignal;
81
82
  attribute :>> protocol = "debounced discrete input";
@@ -86,7 +87,7 @@ package memo_examples_gpca_pump_gpca_interfaces {
86
87
  attribute :>> nominalCurrentA = 0.001;
87
88
  }
88
89
  interface occlusionAnalogLine : Interface {
89
- attribute :>> id = "PI-004";
90
+ @MemoIdentity { :>> providedId = "PI-004"; }
90
91
  attribute :>> name = "OcclusionPressureAnalogLine";
91
92
  attribute :>> interfaceKind = InterfaceKind::analogSignal;
92
93
  attribute :>> directionality = DirectionKind::input;
@@ -96,7 +97,7 @@ package memo_examples_gpca_pump_gpca_interfaces {
96
97
  attribute :>> signalRange = "0 to 30 psi line pressure";
97
98
  }
98
99
  interface batteryMonitorLine : Interface {
99
- attribute :>> id = "PI-005";
100
+ @MemoIdentity { :>> providedId = "PI-005"; }
100
101
  attribute :>> name = "BatteryVoltageMonitorLine";
101
102
  attribute :>> interfaceKind = InterfaceKind::power;
102
103
  attribute :>> directionality = DirectionKind::input;
@@ -108,80 +109,80 @@ package memo_examples_gpca_pump_gpca_interfaces {
108
109
 
109
110
  // ── System-level interfaces (CriSys Ch.3, I 1-I 11) ─────────
110
111
  interface siDataEntry : Interface {
111
- attribute :>> id = "SI-001";
112
+ @MemoIdentity { :>> providedId = "SI-001"; }
112
113
  attribute :>> name = "DataEntryInterface";
113
114
  attribute :>> interfaceKind = InterfaceKind::userInteraction;
114
115
  attribute :>> direction = DirectionKind::input;
115
116
  attribute :>> protocol = "CriSys I 1, I 2, I 3";
116
117
  attribute :>> protocolSemantics = "Prescription data entry (13 fields, PatientID_prog..NumberMax_pbolus_prog), control commands (9 mode-gated Boolean events), and drug reservoir data (ReservoirInitialVolume_prog)";
117
118
  attribute :>> interactionPattern = "clinician enter/edit/save with mode-gated commands";
118
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1 Data Entry Interface";
119
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1 Data Entry Interface"; }
119
120
  }
120
121
  interface siBolusRequest : Interface {
121
- attribute :>> id = "SI-002";
122
+ @MemoIdentity { :>> providedId = "SI-002"; }
122
123
  attribute :>> name = "BolusRequestInterface";
123
124
  attribute :>> interfaceKind = InterfaceKind::userInteraction;
124
125
  attribute :>> direction = DirectionKind::input;
125
126
  attribute :>> protocol = "CriSys I 4";
126
127
  attribute :>> protocolSemantics = "BolusRequest_prog: patient request for a patient bolus; accepted only in ACTIVE mode";
127
128
  attribute :>> interactionPattern = "patient pendant button press";
128
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.2 Bolus Request Interface";
129
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.2 Bolus Request Interface"; }
129
130
  }
130
131
  interface siDrugFlow : Interface {
131
- attribute :>> id = "SI-003";
132
+ @MemoIdentity { :>> providedId = "SI-003"; }
132
133
  attribute :>> name = "DrugFlowInterface";
133
134
  attribute :>> interfaceKind = InterfaceKind::fluidic;
134
135
  attribute :>> direction = DirectionKind::output;
135
136
  attribute :>> protocol = "CriSys I 5, I 6";
136
137
  attribute :>> protocolSemantics = "Physical drug delivery to the patient through the needle connected at the standard CCC connection point; represented by FlowRate_output (ml/hr)";
137
138
  attribute :>> interactionPattern = "continuous fluid path while infusing";
138
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.3 Drug Flow Interface";
139
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.3 Drug Flow Interface"; }
139
140
  }
140
141
  interface siNotification : Interface {
141
- attribute :>> id = "SI-004";
142
+ @MemoIdentity { :>> providedId = "SI-004"; }
142
143
  attribute :>> name = "NotificationInterface";
143
144
  attribute :>> interfaceKind = InterfaceKind::notification;
144
145
  attribute :>> direction = DirectionKind::output;
145
146
  attribute :>> protocol = "CriSys I 7, I 8";
146
147
  attribute :>> protocolSemantics = "Visual display of all active notification messages plus audio output (50 dB for 2 seconds per notification), ON mode only";
147
148
  attribute :>> interactionPattern = "visual list with per-notification audio annunciation";
148
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.4 Notification Interface";
149
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.4 Notification Interface"; }
149
150
  }
150
151
  interface siPharmacyDb : Interface {
151
- attribute :>> id = "SI-005";
152
+ @MemoIdentity { :>> providedId = "SI-005"; }
152
153
  attribute :>> name = "HospitalPharmacyDatabaseInterface";
153
154
  attribute :>> interfaceKind = InterfaceKind::data;
154
155
  attribute :>> direction = DirectionKind::inputOutput;
155
156
  attribute :>> protocol = "CriSys I 9, I 10, I 11";
156
157
  attribute :>> protocolSemantics = "Retrieves the safe-value set (concentration, VTBI, flow rate, bolus interval/count, KVO rate) where DrugName_hd = DrugName_prog; resets to defaults when no record matches";
157
158
  attribute :>> interactionPattern = "query/response safe-value lookup";
158
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
159
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface"; }
159
160
  }
160
161
 
161
162
  // ── CriSys Ch.3 data dictionary (prog / hd / output families) ─
162
163
  item ddPatientIDProg : InterfaceItem {
163
164
  attribute :>> itemKind = InterfaceItemKind::data;
164
- attribute :>> id = "DD-005";
165
+ @MemoIdentity { :>> providedId = "DD-005"; }
165
166
  attribute :>> name = "PatientID_prog";
166
167
  attribute :>> description = "Identifier of the patient in the hospital; provided in the prescription and programmed by the clinician.";
167
168
  attribute :>> semantics = "Cannot be empty; alphanumeric without space.";
168
169
  attribute :>> unit = "NA";
169
170
  attribute :>> encoding = "String";
170
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
171
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data"; }
171
172
  }
172
173
  item ddDrugNameProg : InterfaceItem {
173
174
  attribute :>> itemKind = InterfaceItemKind::data;
174
- attribute :>> id = "DD-006";
175
+ @MemoIdentity { :>> providedId = "DD-006"; }
175
176
  attribute :>> name = "DrugName_prog";
176
177
  attribute :>> description = "Name of the drug prescribed for infusion.";
177
178
  attribute :>> semantics = "Cannot be empty; entered value must match DrugName_hd in the hospital pharmacy database.";
178
179
  attribute :>> unit = "NA";
179
180
  attribute :>> encoding = "String";
180
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
181
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data"; }
181
182
  }
182
183
  item ddDrugConcentrationProg : InterfaceItem {
183
184
  attribute :>> itemKind = InterfaceItemKind::data;
184
- attribute :>> id = "DD-007";
185
+ @MemoIdentity { :>> providedId = "DD-007"; }
185
186
  attribute :>> name = "DrugConcentration_prog";
186
187
  attribute :>> description = "Concentration of the drug in the solution prescribed for infusion.";
187
188
  attribute :>> semantics = "Must be between DrugConcentration_lo_hd and DrugConcentration_hi_hd for DrugName_prog in the hospital database.";
@@ -189,11 +190,11 @@ package memo_examples_gpca_pump_gpca_interfaces {
189
190
  attribute :>> minValue = "0";
190
191
  attribute :>> maxValue = "999";
191
192
  attribute :>> encoding = "Positive Integer";
192
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
193
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data"; }
193
194
  }
194
195
  item ddVTBITotalProg : InterfaceItem {
195
196
  attribute :>> itemKind = InterfaceItemKind::data;
196
- attribute :>> id = "DD-008";
197
+ @MemoIdentity { :>> providedId = "DD-008"; }
197
198
  attribute :>> name = "VTBI_total_prog";
198
199
  attribute :>> description = "Maximum total volume of the drug solution that can be infused for the prescription.";
199
200
  attribute :>> semantics = "Must be between VTBI_lo_hd and VTBI_hi_hd for DrugName_prog in the hospital database.";
@@ -201,11 +202,11 @@ package memo_examples_gpca_pump_gpca_interfaces {
201
202
  attribute :>> minValue = "0";
202
203
  attribute :>> maxValue = "999";
203
204
  attribute :>> encoding = "Positive Integer";
204
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
205
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data"; }
205
206
  }
206
207
  item ddDurationTotalProg : InterfaceItem {
207
208
  attribute :>> itemKind = InterfaceItemKind::data;
208
- attribute :>> id = "DD-009";
209
+ @MemoIdentity { :>> providedId = "DD-009"; }
209
210
  attribute :>> name = "Duration_total_prog";
210
211
  attribute :>> description = "Prescribed total duration of drug infusion across all delivery modes (BASAL, SQUARE BOLUS, PATIENT BOLUS).";
211
212
  attribute :>> semantics = "Cannot be empty; should be >= 0.";
@@ -213,11 +214,11 @@ package memo_examples_gpca_pump_gpca_interfaces {
213
214
  attribute :>> minValue = "0";
214
215
  attribute :>> maxValue = "999";
215
216
  attribute :>> encoding = "Time";
216
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
217
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data"; }
217
218
  }
218
219
  item ddFlowRateBasalProg : InterfaceItem {
219
220
  attribute :>> itemKind = InterfaceItemKind::data;
220
- attribute :>> id = "DD-010";
221
+ @MemoIdentity { :>> providedId = "DD-010"; }
221
222
  attribute :>> name = "FlowRate_basal_prog";
222
223
  attribute :>> description = "Prescribed rate of flow of drug during BASAL delivery mode; default FlowRate_lo_hd.";
223
224
  attribute :>> semantics = "Between FlowRate_lo_hd and FlowRate_hi_hd for DrugName_prog; should be < VTBI_total_prog / Duration_total_prog.";
@@ -225,11 +226,11 @@ package memo_examples_gpca_pump_gpca_interfaces {
225
226
  attribute :>> minValue = "0";
226
227
  attribute :>> maxValue = "999";
227
228
  attribute :>> encoding = "Positive Integer";
228
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
229
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data"; }
229
230
  }
230
231
  item ddFlowRateSbolusProg : InterfaceItem {
231
232
  attribute :>> itemKind = InterfaceItemKind::data;
232
- attribute :>> id = "DD-011";
233
+ @MemoIdentity { :>> providedId = "DD-011"; }
233
234
  attribute :>> name = "FlowRate_sbolus_prog";
234
235
  attribute :>> description = "Prescribed flow rate of drug during SQUARE bolus delivery.";
235
236
  attribute :>> semantics = ">= 0; if Duration_sbolus_prog or Interval_sbolus_prog > 0, must be between FlowRate_lo_hd and FlowRate_hi_hd.";
@@ -237,11 +238,11 @@ package memo_examples_gpca_pump_gpca_interfaces {
237
238
  attribute :>> minValue = "0";
238
239
  attribute :>> maxValue = "999";
239
240
  attribute :>> encoding = "Positive Integer";
240
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
241
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data"; }
241
242
  }
242
243
  item ddDurationSbolusProg : InterfaceItem {
243
244
  attribute :>> itemKind = InterfaceItemKind::data;
244
- attribute :>> id = "DD-012";
245
+ @MemoIdentity { :>> providedId = "DD-012"; }
245
246
  attribute :>> name = "Duration_sbolus_prog";
246
247
  attribute :>> description = "Maximum duration of a single uninterrupted square bolus delivery.";
247
248
  attribute :>> semantics = ">= 0; if FlowRate_sbolus_prog or Interval_sbolus_prog > 0, must be < Interval_sbolus_prog and Duration_total_prog.";
@@ -249,11 +250,11 @@ package memo_examples_gpca_pump_gpca_interfaces {
249
250
  attribute :>> minValue = "0";
250
251
  attribute :>> maxValue = "999";
251
252
  attribute :>> encoding = "Time";
252
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
253
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data"; }
253
254
  }
254
255
  item ddIntervalSbolusProg : InterfaceItem {
255
256
  attribute :>> itemKind = InterfaceItemKind::data;
256
- attribute :>> id = "DD-013";
257
+ @MemoIdentity { :>> providedId = "DD-013"; }
257
258
  attribute :>> name = "Interval_sbolus_prog";
258
259
  attribute :>> description = "Minimum interval between two consecutive square bolus initiations; the first square bolus starts Interval_sbolus_prog minutes after infusion initiation.";
259
260
  attribute :>> semantics = ">= 0; if FlowRate_sbolus_prog or Duration_sbolus_prog > 0, must be > Duration_sbolus_prog.";
@@ -261,11 +262,11 @@ package memo_examples_gpca_pump_gpca_interfaces {
261
262
  attribute :>> minValue = "0";
262
263
  attribute :>> maxValue = "999";
263
264
  attribute :>> encoding = "Positive Integer";
264
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
265
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data"; }
265
266
  }
266
267
  item ddFlowRatePbolusProg : InterfaceItem {
267
268
  attribute :>> itemKind = InterfaceItemKind::data;
268
- attribute :>> id = "DD-014";
269
+ @MemoIdentity { :>> providedId = "DD-014"; }
269
270
  attribute :>> name = "FlowRate_pbolus_prog";
270
271
  attribute :>> description = "Prescribed flow rate of drug during patient bolus delivery.";
271
272
  attribute :>> semantics = ">= 0; if Duration_pbolus_prog or LockOutPeriod_pbolus_prog > 0, must be between FlowRate_lo_hd and FlowRate_hi_hd.";
@@ -273,11 +274,11 @@ package memo_examples_gpca_pump_gpca_interfaces {
273
274
  attribute :>> minValue = "0";
274
275
  attribute :>> maxValue = "999";
275
276
  attribute :>> encoding = "Positive Integer";
276
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
277
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data"; }
277
278
  }
278
279
  item ddDurationPbolusProg : InterfaceItem {
279
280
  attribute :>> itemKind = InterfaceItemKind::data;
280
- attribute :>> id = "DD-015";
281
+ @MemoIdentity { :>> providedId = "DD-015"; }
281
282
  attribute :>> name = "Duration_pbolus_prog";
282
283
  attribute :>> description = "Maximum duration of a single uninterrupted patient bolus delivery.";
283
284
  attribute :>> semantics = ">= 0; if FlowRate_pbolus_prog or LockOutPeriod_pbolus_prog > 0, must be < LockOutPeriod_pbolus_prog and Duration_total_prog.";
@@ -285,11 +286,11 @@ package memo_examples_gpca_pump_gpca_interfaces {
285
286
  attribute :>> minValue = "0";
286
287
  attribute :>> maxValue = "999";
287
288
  attribute :>> encoding = "Time";
288
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
289
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data"; }
289
290
  }
290
291
  item ddLockOutPeriodPbolusProg : InterfaceItem {
291
292
  attribute :>> itemKind = InterfaceItemKind::data;
292
- attribute :>> id = "DD-016";
293
+ @MemoIdentity { :>> providedId = "DD-016"; }
293
294
  attribute :>> name = "LockOutPeriod_pbolus_prog";
294
295
  attribute :>> description = "Minimum interval between two consecutive patient bolus initiations (the lockout period), irrespective of interruption or completion.";
295
296
  attribute :>> semantics = ">= 0; if FlowRate_pbolus_prog or Duration_pbolus_prog > 0, must be > Duration_pbolus_prog.";
@@ -297,11 +298,11 @@ package memo_examples_gpca_pump_gpca_interfaces {
297
298
  attribute :>> minValue = "0";
298
299
  attribute :>> maxValue = "999";
299
300
  attribute :>> encoding = "Positive Integer";
300
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
301
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data"; }
301
302
  }
302
303
  item ddNumberMaxPbolusProg : InterfaceItem {
303
304
  attribute :>> itemKind = InterfaceItemKind::data;
304
- attribute :>> id = "DD-017";
305
+ @MemoIdentity { :>> providedId = "DD-017"; }
305
306
  attribute :>> name = "NumberMax_pbolus_prog";
306
307
  attribute :>> description = "Maximum total number of patient boluses that may be initiated during Duration_total_prog.";
307
308
  attribute :>> semantics = ">= 0; must be <= NumberMax_pbolus_hd for DrugName_prog in the hospital database.";
@@ -309,101 +310,101 @@ package memo_examples_gpca_pump_gpca_interfaces {
309
310
  attribute :>> minValue = "0";
310
311
  attribute :>> maxValue = "999";
311
312
  attribute :>> encoding = "Positive Integer";
312
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
313
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data"; }
313
314
  }
314
315
  item ddSystemStartProg : InterfaceItem {
315
316
  attribute :>> itemKind = InterfaceItemKind::data;
316
- attribute :>> id = "DD-018";
317
+ @MemoIdentity { :>> providedId = "DD-018"; }
317
318
  attribute :>> name = "System_start_prog";
318
319
  attribute :>> description = "Command to start the system.";
319
320
  attribute :>> semantics = "Can be commanded only if the system is in OFF mode.";
320
321
  attribute :>> unit = "NA";
321
322
  attribute :>> encoding = "Boolean event";
322
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands";
323
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands"; }
323
324
  }
324
325
  item ddSystemStopProg : InterfaceItem {
325
326
  attribute :>> itemKind = InterfaceItemKind::data;
326
- attribute :>> id = "DD-019";
327
+ @MemoIdentity { :>> providedId = "DD-019"; }
327
328
  attribute :>> name = "System_stop_prog";
328
329
  attribute :>> description = "Command to stop the system.";
329
330
  attribute :>> semantics = "Can be commanded only if the system is in ON mode.";
330
331
  attribute :>> unit = "NA";
331
332
  attribute :>> encoding = "Boolean event";
332
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands";
333
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands"; }
333
334
  }
334
335
  item ddInfusionInitiateProg : InterfaceItem {
335
336
  attribute :>> itemKind = InterfaceItemKind::data;
336
- attribute :>> id = "DD-020";
337
+ @MemoIdentity { :>> providedId = "DD-020"; }
337
338
  attribute :>> name = "Infusion_initiate_prog";
338
339
  attribute :>> description = "Command to initiate infusion of drug.";
339
340
  attribute :>> semantics = "Can be commanded only if the system is in ON mode.";
340
341
  attribute :>> unit = "NA";
341
342
  attribute :>> encoding = "Boolean event";
342
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands";
343
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands"; }
343
344
  }
344
345
  item ddInfusionInhibitProg : InterfaceItem {
345
346
  attribute :>> itemKind = InterfaceItemKind::data;
346
- attribute :>> id = "DD-021";
347
+ @MemoIdentity { :>> providedId = "DD-021"; }
347
348
  attribute :>> name = "Infusion_inhibit_prog";
348
349
  attribute :>> description = "Command to inhibit infusion of drug.";
349
350
  attribute :>> semantics = "Can be commanded only if the system is in ON mode.";
350
351
  attribute :>> unit = "NA";
351
352
  attribute :>> encoding = "Boolean event";
352
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands";
353
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands"; }
353
354
  }
354
355
  item ddSystemSaveProg : InterfaceItem {
355
356
  attribute :>> itemKind = InterfaceItemKind::data;
356
- attribute :>> id = "DD-022";
357
+ @MemoIdentity { :>> providedId = "DD-022"; }
357
358
  attribute :>> name = "System_save_prog";
358
359
  attribute :>> description = "Command to save the prescription and reservoir initial volume data.";
359
360
  attribute :>> semantics = "Can be commanded only if the system is in ON mode.";
360
361
  attribute :>> unit = "NA";
361
362
  attribute :>> encoding = "Boolean event";
362
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands";
363
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands"; }
363
364
  }
364
365
  item ddNotificationCancelProg : InterfaceItem {
365
366
  attribute :>> itemKind = InterfaceItemKind::data;
366
- attribute :>> id = "DD-023";
367
+ @MemoIdentity { :>> providedId = "DD-023"; }
367
368
  attribute :>> name = "Notification_cancel_prog";
368
369
  attribute :>> description = "Command to cancel a selected notification.";
369
370
  attribute :>> semantics = "Can be commanded only in ON mode and if a notification is selected.";
370
371
  attribute :>> unit = "NA";
371
372
  attribute :>> encoding = "Boolean event";
372
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands";
373
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands"; }
373
374
  }
374
375
  item ddDisableAudioProg : InterfaceItem {
375
376
  attribute :>> itemKind = InterfaceItemKind::data;
376
- attribute :>> id = "DD-024";
377
+ @MemoIdentity { :>> providedId = "DD-024"; }
377
378
  attribute :>> name = "Disable_audio_prog";
378
379
  attribute :>> description = "Command to disable audio notifications, permanently or temporarily.";
379
380
  attribute :>> semantics = "Default FALSE.";
380
381
  attribute :>> unit = "NA";
381
382
  attribute :>> encoding = "PERM | TEMP | FALSE";
382
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands";
383
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands"; }
383
384
  }
384
385
  item ddEnableAudioProg : InterfaceItem {
385
386
  attribute :>> itemKind = InterfaceItemKind::data;
386
- attribute :>> id = "DD-025";
387
+ @MemoIdentity { :>> providedId = "DD-025"; }
387
388
  attribute :>> name = "Enable_audio_prog";
388
389
  attribute :>> description = "Command to enable audio notifications.";
389
390
  attribute :>> semantics = "Can be commanded only if audio is disabled.";
390
391
  attribute :>> unit = "NA";
391
392
  attribute :>> encoding = "Boolean event";
392
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands";
393
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands"; }
393
394
  }
394
395
  item ddDataConfigProg : InterfaceItem {
395
396
  attribute :>> itemKind = InterfaceItemKind::data;
396
- attribute :>> id = "DD-026";
397
+ @MemoIdentity { :>> providedId = "DD-026"; }
397
398
  attribute :>> name = "DataConfig_prog";
398
399
  attribute :>> description = "Command to configure prescription data (printed as 'DataCofig_prog' in the source).";
399
400
  attribute :>> semantics = "Can be commanded only if the system is in ON mode.";
400
401
  attribute :>> unit = "NA";
401
402
  attribute :>> encoding = "Boolean event";
402
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands";
403
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands"; }
403
404
  }
404
405
  item ddReservoirInitialVolumeProg : InterfaceItem {
405
406
  attribute :>> itemKind = InterfaceItemKind::data;
406
- attribute :>> id = "DD-027";
407
+ @MemoIdentity { :>> providedId = "DD-027"; }
407
408
  attribute :>> name = "ReservoirInitialVolume_prog";
408
409
  attribute :>> description = "Initial volume of drug in the reservoir at the time of entering the prescription; read from the reservoir label.";
409
410
  attribute :>> semantics = "Mandatory; shall be >= X ml (threshold left unspecified in the source draft).";
@@ -411,21 +412,21 @@ package memo_examples_gpca_pump_gpca_interfaces {
411
412
  attribute :>> minValue = "0";
412
413
  attribute :>> maxValue = "999";
413
414
  attribute :>> encoding = "Positive Integer";
414
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.3 Drug Reservoir Data";
415
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.3 Drug Reservoir Data"; }
415
416
  }
416
417
  item ddBolusRequestProg : InterfaceItem {
417
418
  attribute :>> itemKind = InterfaceItemKind::data;
418
- attribute :>> id = "DD-028";
419
+ @MemoIdentity { :>> providedId = "DD-028"; }
419
420
  attribute :>> name = "BolusRequest_prog";
420
421
  attribute :>> description = "Request by the patient to deliver a patient bolus.";
421
422
  attribute :>> semantics = "Can be commanded only if the system is in ACTIVE mode.";
422
423
  attribute :>> unit = "NA";
423
424
  attribute :>> encoding = "Boolean event";
424
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.2 Bolus Request Interface";
425
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.2 Bolus Request Interface"; }
425
426
  }
426
427
  item ddFlowRateOutput : InterfaceItem {
427
428
  attribute :>> itemKind = InterfaceItemKind::data;
428
- attribute :>> id = "DD-029";
429
+ @MemoIdentity { :>> providedId = "DD-029"; }
429
430
  attribute :>> name = "FlowRate_output";
430
431
  attribute :>> description = "Flow rate of the drug through the hose delivering the drug, measured every X seconds when the system is in ON mode.";
431
432
  attribute :>> semantics = "None stated.";
@@ -433,41 +434,41 @@ package memo_examples_gpca_pump_gpca_interfaces {
433
434
  attribute :>> minValue = "0";
434
435
  attribute :>> maxValue = "999";
435
436
  attribute :>> encoding = "Positive Integer";
436
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.3 Drug Flow Interface";
437
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.3 Drug Flow Interface"; }
437
438
  }
438
439
  item ddNotificationVisualOutput : InterfaceItem {
439
440
  attribute :>> itemKind = InterfaceItemKind::data;
440
- attribute :>> id = "DD-030";
441
+ @MemoIdentity { :>> providedId = "DD-030"; }
441
442
  attribute :>> name = "Notification_Visual_output";
442
443
  attribute :>> description = "Visual display of the messages of all active notifications in the system.";
443
444
  attribute :>> semantics = "Messages displayed only when the system is in ON mode.";
444
445
  attribute :>> unit = "NA";
445
446
  attribute :>> encoding = "List of String";
446
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.4 Notification Interface";
447
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.4 Notification Interface"; }
447
448
  }
448
449
  item ddNotificationAudioOutput : InterfaceItem {
449
450
  attribute :>> itemKind = InterfaceItemKind::data;
450
- attribute :>> id = "DD-031";
451
+ @MemoIdentity { :>> providedId = "DD-031"; }
451
452
  attribute :>> name = "Notification_Audio_output";
452
453
  attribute :>> description = "Audio output for each active notification, in the same order as Notification_Visual_output.";
453
454
  attribute :>> semantics = "Audio output possible only when the system is in ON mode.";
454
455
  attribute :>> unit = "NA";
455
456
  attribute :>> encoding = "List of Boolean";
456
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.4 Notification Interface";
457
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.4 Notification Interface"; }
457
458
  }
458
459
  item ddDrugNameHd : InterfaceItem {
459
460
  attribute :>> itemKind = InterfaceItemKind::data;
460
- attribute :>> id = "DD-032";
461
+ @MemoIdentity { :>> providedId = "DD-032"; }
461
462
  attribute :>> name = "DrugName_hd";
462
463
  attribute :>> description = "Name of a drug usable for infusion in the hospital that matches DrugName_prog.";
463
464
  attribute :>> semantics = "None stated.";
464
465
  attribute :>> unit = "NA";
465
466
  attribute :>> encoding = "String";
466
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
467
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface"; }
467
468
  }
468
469
  item ddDrugConcentrationHiHd : InterfaceItem {
469
470
  attribute :>> itemKind = InterfaceItemKind::data;
470
- attribute :>> id = "DD-033";
471
+ @MemoIdentity { :>> providedId = "DD-033"; }
471
472
  attribute :>> name = "DrugConcentration_hi_hd";
472
473
  attribute :>> description = "Maximum concentration of the drug in a solution that can safely be used for infusion for DrugName_hd.";
473
474
  attribute :>> semantics = "None stated.";
@@ -475,11 +476,11 @@ package memo_examples_gpca_pump_gpca_interfaces {
475
476
  attribute :>> minValue = "0";
476
477
  attribute :>> maxValue = "999";
477
478
  attribute :>> encoding = "Positive Integer";
478
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
479
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface"; }
479
480
  }
480
481
  item ddDrugConcentrationLoHd : InterfaceItem {
481
482
  attribute :>> itemKind = InterfaceItemKind::data;
482
- attribute :>> id = "DD-034";
483
+ @MemoIdentity { :>> providedId = "DD-034"; }
483
484
  attribute :>> name = "DrugConcentration_lo_hd";
484
485
  attribute :>> description = "Minimum concentration of the drug in a solution that can safely be used for infusion for DrugName_hd.";
485
486
  attribute :>> semantics = "None stated.";
@@ -487,11 +488,11 @@ package memo_examples_gpca_pump_gpca_interfaces {
487
488
  attribute :>> minValue = "0";
488
489
  attribute :>> maxValue = "999";
489
490
  attribute :>> encoding = "Positive Integer";
490
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
491
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface"; }
491
492
  }
492
493
  item ddVTBIHiHd : InterfaceItem {
493
494
  attribute :>> itemKind = InterfaceItemKind::data;
494
- attribute :>> id = "DD-035";
495
+ @MemoIdentity { :>> providedId = "DD-035"; }
495
496
  attribute :>> name = "VTBI_hi_hd";
496
497
  attribute :>> description = "Maximum volume of drug that is safe to be infused for DrugName_hd.";
497
498
  attribute :>> semantics = "None stated.";
@@ -499,11 +500,11 @@ package memo_examples_gpca_pump_gpca_interfaces {
499
500
  attribute :>> minValue = "0";
500
501
  attribute :>> maxValue = "999";
501
502
  attribute :>> encoding = "Positive Integer";
502
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
503
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface"; }
503
504
  }
504
505
  item ddVTBILoHd : InterfaceItem {
505
506
  attribute :>> itemKind = InterfaceItemKind::data;
506
- attribute :>> id = "DD-036";
507
+ @MemoIdentity { :>> providedId = "DD-036"; }
507
508
  attribute :>> name = "VTBI_lo_hd";
508
509
  attribute :>> description = "Minimum volume of drug that is safe to be infused for DrugName_hd.";
509
510
  attribute :>> semantics = "Mandatory.";
@@ -511,11 +512,11 @@ package memo_examples_gpca_pump_gpca_interfaces {
511
512
  attribute :>> minValue = "0";
512
513
  attribute :>> maxValue = "999";
513
514
  attribute :>> encoding = "Positive Integer";
514
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
515
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface"; }
515
516
  }
516
517
  item ddFlowRateHiHd : InterfaceItem {
517
518
  attribute :>> itemKind = InterfaceItemKind::data;
518
- attribute :>> id = "DD-037";
519
+ @MemoIdentity { :>> providedId = "DD-037"; }
519
520
  attribute :>> name = "FlowRate_hi_hd";
520
521
  attribute :>> description = "Maximum safe flow rate of the drug for DrugName_hd.";
521
522
  attribute :>> semantics = "Mandatory.";
@@ -523,11 +524,11 @@ package memo_examples_gpca_pump_gpca_interfaces {
523
524
  attribute :>> minValue = "0";
524
525
  attribute :>> maxValue = "999";
525
526
  attribute :>> encoding = "Positive Integer";
526
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
527
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface"; }
527
528
  }
528
529
  item ddFlowRateLoHd : InterfaceItem {
529
530
  attribute :>> itemKind = InterfaceItemKind::data;
530
- attribute :>> id = "DD-038";
531
+ @MemoIdentity { :>> providedId = "DD-038"; }
531
532
  attribute :>> name = "FlowRate_lo_hd";
532
533
  attribute :>> description = "Minimum safe flow rate of the drug for DrugName_hd.";
533
534
  attribute :>> semantics = "Mandatory.";
@@ -535,11 +536,11 @@ package memo_examples_gpca_pump_gpca_interfaces {
535
536
  attribute :>> minValue = "0";
536
537
  attribute :>> maxValue = "999";
537
538
  attribute :>> encoding = "Positive Integer";
538
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
539
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface"; }
539
540
  }
540
541
  item ddIntervalPbolusHd : InterfaceItem {
541
542
  attribute :>> itemKind = InterfaceItemKind::data;
542
- attribute :>> id = "DD-039";
543
+ @MemoIdentity { :>> providedId = "DD-039"; }
543
544
  attribute :>> name = "Interval_pbolus_hd";
544
545
  attribute :>> description = "Minimum safe interval between two consecutive patient bolus initiations for DrugName_hd.";
545
546
  attribute :>> semantics = "Mandatory.";
@@ -547,11 +548,11 @@ package memo_examples_gpca_pump_gpca_interfaces {
547
548
  attribute :>> minValue = "0";
548
549
  attribute :>> maxValue = "999";
549
550
  attribute :>> encoding = "Positive Integer";
550
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
551
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface"; }
551
552
  }
552
553
  item ddNumberMaxPbolusHd : InterfaceItem {
553
554
  attribute :>> itemKind = InterfaceItemKind::data;
554
- attribute :>> id = "DD-040";
555
+ @MemoIdentity { :>> providedId = "DD-040"; }
555
556
  attribute :>> name = "NumberMax_pbolus_hd";
556
557
  attribute :>> description = "Maximum number of patient bolus initiations safe to be self-administered for DrugName_hd.";
557
558
  attribute :>> semantics = "Mandatory.";
@@ -559,11 +560,11 @@ package memo_examples_gpca_pump_gpca_interfaces {
559
560
  attribute :>> minValue = "0";
560
561
  attribute :>> maxValue = "999";
561
562
  attribute :>> encoding = "Positive Integer";
562
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
563
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface"; }
563
564
  }
564
565
  item ddFlowRateKvoHd : InterfaceItem {
565
566
  attribute :>> itemKind = InterfaceItemKind::data;
566
- attribute :>> id = "DD-041";
567
+ @MemoIdentity { :>> providedId = "DD-041"; }
567
568
  attribute :>> name = "FlowRate_kvo_hd";
568
569
  attribute :>> description = "Minimum flow rate of DrugName_hd that should be maintained to keep the vein open (KVO); default 0.1.";
569
570
  attribute :>> semantics = "Mandatory.";
@@ -571,7 +572,7 @@ package memo_examples_gpca_pump_gpca_interfaces {
571
572
  attribute :>> minValue = "0";
572
573
  attribute :>> maxValue = "5";
573
574
  attribute :>> encoding = "Positive Integer";
574
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
575
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface"; }
575
576
  }
576
577
 
577
578
  // ── MEMO functional-to-physical allocation abstractions ────
@@ -579,7 +580,7 @@ package memo_examples_gpca_pump_gpca_interfaces {
579
580
  // intent. They are not the named port connections in GPCA_Device.aadl;
580
581
  // the exact AADL feature topology is authored below and in gpca_trace.
581
582
  part exSensorVector : ComponentExchange {
582
- attribute :>> id = "CE-001";
583
+ @MemoIdentity { :>> providedId = "CE-001"; }
583
584
  attribute :>> name = "SensorStatusVectorExchange";
584
585
  attribute :>> exchangeKind = FlowKind::measurement;
585
586
  ref :>> sourceEndpoint = gpcaDevice.gpcaDeviceSensors;
@@ -587,10 +588,10 @@ package memo_examples_gpca_pump_gpca_interfaces {
587
588
  ref :>> allocatedExchanges = lfSensorAcquisition;
588
589
  attribute :>> direction = DirectionKind::input;
589
590
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
590
- attribute :>> sourceReference = "MEMO design extension allocated from LF-001; not a GPCA_Device.aadl connection";
591
+ @MemoIdentity { :>> sourceReference = "MEMO design extension allocated from LF-001; not a GPCA_Device.aadl connection"; }
591
592
  }
592
593
  part exFlowCommand : ComponentExchange {
593
- attribute :>> id = "CE-002";
594
+ @MemoIdentity { :>> providedId = "CE-002"; }
594
595
  attribute :>> name = "FlowCommandExchange";
595
596
  attribute :>> exchangeKind = FlowKind::command;
596
597
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portGpcaSwOut;
@@ -598,10 +599,10 @@ package memo_examples_gpca_pump_gpca_interfaces {
598
599
  ref :>> allocatedExchanges = lfFlowCommand;
599
600
  attribute :>> direction = DirectionKind::output;
600
601
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
601
- attribute :>> sourceReference = "MEMO design extension allocated from LF-002; not a GPCA_Device.aadl connection";
602
+ @MemoIdentity { :>> sourceReference = "MEMO design extension allocated from LF-002; not a GPCA_Device.aadl connection"; }
602
603
  }
603
604
  part exAlarmAnnunciation : ComponentExchange {
604
- attribute :>> id = "CE-003";
605
+ @MemoIdentity { :>> providedId = "CE-003"; }
605
606
  attribute :>> name = "AlarmAnnunciationExchange";
606
607
  attribute :>> exchangeKind = FlowKind::alarm;
607
608
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portGpcaSwOut;
@@ -609,10 +610,10 @@ package memo_examples_gpca_pump_gpca_interfaces {
609
610
  ref :>> allocatedExchanges = lfAlarmSignal;
610
611
  attribute :>> direction = DirectionKind::output;
611
612
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
612
- attribute :>> sourceReference = "MEMO design extension allocated from LF-003; not a GPCA_Device.aadl connection";
613
+ @MemoIdentity { :>> sourceReference = "MEMO design extension allocated from LF-003; not a GPCA_Device.aadl connection"; }
613
614
  }
614
615
  part exPrescriptionEntry : ComponentExchange {
615
- attribute :>> id = "CE-004";
616
+ @MemoIdentity { :>> providedId = "CE-004"; }
616
617
  attribute :>> name = "PrescriptionEntryExchange";
617
618
  attribute :>> exchangeKind = FlowKind::configuration;
618
619
  ref :>> sourceEndpoint = operatorKeypad;
@@ -620,7 +621,7 @@ package memo_examples_gpca_pump_gpca_interfaces {
620
621
  ref :>> allocatedExchanges = lfPrescriptionEntry;
621
622
  attribute :>> direction = DirectionKind::input;
622
623
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
623
- attribute :>> sourceReference = "MEMO design extension allocated from LF-004; not a GPCA_Device.aadl connection";
624
+ @MemoIdentity { :>> sourceReference = "MEMO design extension allocated from LF-004; not a GPCA_Device.aadl connection"; }
624
625
  }
625
626
 
626
627
  // ── GPCA_Device and hardware-subsystem ports (AADL, 1:1) ───
@@ -649,416 +650,416 @@ package memo_examples_gpca_pump_gpca_interfaces {
649
650
  // ALARM_to_IM immediate is the same-step alarm-response
650
651
  // mechanism the formal properties rely on.
651
652
  part ceOpCmdToTlm : ComponentExchange {
652
- attribute :>> id = "CE-101"; attribute :>> name = "OP_CMDtoTLM";
653
+ @MemoIdentity { :>> providedId = "CE-101"; } attribute :>> name = "OP_CMDtoTLM";
653
654
  attribute :>> exchangeKind = FlowKind::command;
654
655
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portOpCmdIn;
655
656
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmOpCmdIn;
656
657
  attribute :>> direction = DirectionKind::input;
657
658
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
658
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
659
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
659
660
  }
660
661
  part ceConstToTlm : ComponentExchange {
661
- attribute :>> id = "CE-102"; attribute :>> name = "CONSTtoTLM";
662
+ @MemoIdentity { :>> providedId = "CE-102"; } attribute :>> name = "CONSTtoTLM";
662
663
  attribute :>> exchangeKind = FlowKind::configuration;
663
664
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portConstIn;
664
665
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmConstIn;
665
666
  attribute :>> direction = DirectionKind::input;
666
667
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
667
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
668
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
668
669
  }
669
670
  part ceTlmOutToOutput : ComponentExchange {
670
- attribute :>> id = "CE-103"; attribute :>> name = "TLM_OUT_toOUTPUT";
671
+ @MemoIdentity { :>> providedId = "CE-103"; } attribute :>> name = "TLM_OUT_toOUTPUT";
671
672
  attribute :>> exchangeKind = FlowKind::status;
672
673
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
673
674
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputTlmModeIn;
674
675
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
675
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
676
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
676
677
  }
677
678
  part ceImToSysStat : ComponentExchange {
678
- attribute :>> id = "CE-104"; attribute :>> name = "IM_to_SYS_STAT";
679
+ @MemoIdentity { :>> providedId = "CE-104"; } attribute :>> name = "IM_to_SYS_STAT";
679
680
  attribute :>> exchangeKind = FlowKind::status;
680
681
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImImOut;
681
682
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatImIn;
682
683
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
683
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
684
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
684
685
  }
685
686
  part ceTlmToSysStat : ComponentExchange {
686
- attribute :>> id = "CE-105"; attribute :>> name = "TLM_to_SYS_STAT";
687
+ @MemoIdentity { :>> providedId = "CE-105"; } attribute :>> name = "TLM_to_SYS_STAT";
687
688
  attribute :>> exchangeKind = FlowKind::status;
688
689
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
689
690
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatTlmModeIn;
690
691
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
691
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
692
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
692
693
  }
693
694
  part ceSensorToSysStat : ComponentExchange {
694
- attribute :>> id = "CE-106"; attribute :>> name = "SENSOR_to_SYS_STAT";
695
+ @MemoIdentity { :>> providedId = "CE-106"; } attribute :>> name = "SENSOR_to_SYS_STAT";
695
696
  attribute :>> exchangeKind = FlowKind::measurement;
696
697
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portSensorIn;
697
698
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSensorIn;
698
699
  attribute :>> direction = DirectionKind::input;
699
700
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
700
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
701
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
701
702
  }
702
703
  part ceConstToSysStat : ComponentExchange {
703
- attribute :>> id = "CE-107"; attribute :>> name = "CONST_to_SYS_STAT";
704
+ @MemoIdentity { :>> providedId = "CE-107"; } attribute :>> name = "CONST_to_SYS_STAT";
704
705
  attribute :>> exchangeKind = FlowKind::configuration;
705
706
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portConstIn;
706
707
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatConstIn;
707
708
  attribute :>> direction = DirectionKind::input;
708
709
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
709
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
710
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
710
711
  }
711
712
  part ceConfigToSysStat : ComponentExchange {
712
- attribute :>> id = "CE-108"; attribute :>> name = "CONFIG_to_SYS_STAT";
713
+ @MemoIdentity { :>> providedId = "CE-108"; } attribute :>> name = "CONFIG_to_SYS_STAT";
713
714
  attribute :>> exchangeKind = FlowKind::configuration;
714
715
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
715
716
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatConfigIn;
716
717
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
717
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
718
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
718
719
  }
719
720
  part ceSysStatOutToOutput : ComponentExchange {
720
- attribute :>> id = "CE-109"; attribute :>> name = "SYS_STAT_OUT_toOUTPUT";
721
+ @MemoIdentity { :>> providedId = "CE-109"; } attribute :>> name = "SYS_STAT_OUT_toOUTPUT";
721
722
  attribute :>> exchangeKind = FlowKind::status;
722
723
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
723
724
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputSysStatIn;
724
725
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
725
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
726
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
726
727
  }
727
728
  part ceImToAlarm : ComponentExchange {
728
- attribute :>> id = "CE-110"; attribute :>> name = "IM_to_ALARM";
729
+ @MemoIdentity { :>> providedId = "CE-110"; } attribute :>> name = "IM_to_ALARM";
729
730
  attribute :>> exchangeKind = FlowKind::status;
730
731
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImImOut;
731
732
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmImIn;
732
733
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
733
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
734
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
734
735
  }
735
736
  part ceTlmToAlarm : ComponentExchange {
736
- attribute :>> id = "CE-111"; attribute :>> name = "TLM_to_ALARM";
737
+ @MemoIdentity { :>> providedId = "CE-111"; } attribute :>> name = "TLM_to_ALARM";
737
738
  attribute :>> exchangeKind = FlowKind::status;
738
739
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
739
740
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmTlmModeIn;
740
741
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
741
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
742
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
742
743
  }
743
744
  part ceSysMonToAlarm : ComponentExchange {
744
- attribute :>> id = "CE-112"; attribute :>> name = "SYS_MON_to_ALARM";
745
+ @MemoIdentity { :>> providedId = "CE-112"; } attribute :>> name = "SYS_MON_to_ALARM";
745
746
  attribute :>> exchangeKind = FlowKind::status;
746
747
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemMonitor.portSysMonSysMonOut;
747
748
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmSysMonIn;
748
749
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
749
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
750
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
750
751
  }
751
752
  part ceOpCmdToAlarm : ComponentExchange {
752
- attribute :>> id = "CE-113"; attribute :>> name = "OP_CMD_to_ALARM";
753
+ @MemoIdentity { :>> providedId = "CE-113"; } attribute :>> name = "OP_CMD_to_ALARM";
753
754
  attribute :>> exchangeKind = FlowKind::command;
754
755
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portOpCmdIn;
755
756
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmOpCmdIn;
756
757
  attribute :>> direction = DirectionKind::input;
757
758
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
758
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
759
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
759
760
  }
760
761
  part ceDbToAlarm : ComponentExchange {
761
- attribute :>> id = "CE-114"; attribute :>> name = "DB_to_ALARM";
762
+ @MemoIdentity { :>> providedId = "CE-114"; } attribute :>> name = "DB_to_ALARM";
762
763
  attribute :>> exchangeKind = FlowKind::configuration;
763
764
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portDbIn;
764
765
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmDbIn;
765
766
  attribute :>> direction = DirectionKind::input;
766
767
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
767
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
768
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
768
769
  }
769
770
  part ceSensorToAlarm : ComponentExchange {
770
- attribute :>> id = "CE-115"; attribute :>> name = "SENSOR_to_ALARM";
771
+ @MemoIdentity { :>> providedId = "CE-115"; } attribute :>> name = "SENSOR_to_ALARM";
771
772
  attribute :>> exchangeKind = FlowKind::measurement;
772
773
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portSensorIn;
773
774
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmSensorIn;
774
775
  attribute :>> direction = DirectionKind::input;
775
776
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
776
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
777
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
777
778
  }
778
779
  part ceConstToAlarm : ComponentExchange {
779
- attribute :>> id = "CE-116"; attribute :>> name = "CONST_to_ALARM";
780
+ @MemoIdentity { :>> providedId = "CE-116"; } attribute :>> name = "CONST_to_ALARM";
780
781
  attribute :>> exchangeKind = FlowKind::configuration;
781
782
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portConstIn;
782
783
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmConstIn;
783
784
  attribute :>> direction = DirectionKind::input;
784
785
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
785
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
786
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
786
787
  }
787
788
  part ceSysStatToAlarm : ComponentExchange {
788
- attribute :>> id = "CE-117"; attribute :>> name = "SYS_STAT_to_ALARM";
789
+ @MemoIdentity { :>> providedId = "CE-117"; } attribute :>> name = "SYS_STAT_to_ALARM";
789
790
  attribute :>> exchangeKind = FlowKind::status;
790
791
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
791
792
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmSysStatIn;
792
793
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
793
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
794
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
794
795
  }
795
796
  part ceConfigToAlarm : ComponentExchange {
796
- attribute :>> id = "CE-118"; attribute :>> name = "CONFIG_to_ALARM";
797
+ @MemoIdentity { :>> providedId = "CE-118"; } attribute :>> name = "CONFIG_to_ALARM";
797
798
  attribute :>> exchangeKind = FlowKind::configuration;
798
799
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
799
800
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmConfigIn;
800
801
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
801
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
802
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
802
803
  }
803
804
  part ceAlarmOutToOutput : ComponentExchange {
804
- attribute :>> id = "CE-119"; attribute :>> name = "ALARM_OUT_toOUTPUT";
805
+ @MemoIdentity { :>> providedId = "CE-119"; } attribute :>> name = "ALARM_OUT_toOUTPUT";
805
806
  attribute :>> exchangeKind = FlowKind::alarm;
806
807
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut;
807
808
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputAlarmIn;
808
809
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
809
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
810
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
810
811
  }
811
812
  part ceTlmToConfig : ComponentExchange {
812
- attribute :>> id = "CE-120"; attribute :>> name = "TLM_to_CONFIG";
813
+ @MemoIdentity { :>> providedId = "CE-120"; } attribute :>> name = "TLM_to_CONFIG";
813
814
  attribute :>> exchangeKind = FlowKind::status;
814
815
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
815
816
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigTlmModeIn;
816
817
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
817
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
818
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
818
819
  }
819
820
  part cePresToConfig : ComponentExchange {
820
- attribute :>> id = "CE-121"; attribute :>> name = "PRES_to_CONFIG";
821
+ @MemoIdentity { :>> providedId = "CE-121"; } attribute :>> name = "PRES_to_CONFIG";
821
822
  attribute :>> exchangeKind = FlowKind::configuration;
822
823
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portPresIn;
823
824
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigPresIn;
824
825
  attribute :>> direction = DirectionKind::input;
825
826
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
826
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
827
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
827
828
  }
828
829
  part ceOpCmdToConfig : ComponentExchange {
829
- attribute :>> id = "CE-122"; attribute :>> name = "OP_CMD_to_CONFIG";
830
+ @MemoIdentity { :>> providedId = "CE-122"; } attribute :>> name = "OP_CMD_to_CONFIG";
830
831
  attribute :>> exchangeKind = FlowKind::command;
831
832
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portOpCmdIn;
832
833
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigOpCmdIn;
833
834
  attribute :>> direction = DirectionKind::input;
834
835
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
835
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
836
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
836
837
  }
837
838
  part ceDbToConfig : ComponentExchange {
838
- attribute :>> id = "CE-123"; attribute :>> name = "DB_to_CONFIG";
839
+ @MemoIdentity { :>> providedId = "CE-123"; } attribute :>> name = "DB_to_CONFIG";
839
840
  attribute :>> exchangeKind = FlowKind::configuration;
840
841
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portDbIn;
841
842
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigDbIn;
842
843
  attribute :>> direction = DirectionKind::input;
843
844
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
844
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
845
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
845
846
  }
846
847
  part ceConsToConfig : ComponentExchange {
847
- attribute :>> id = "CE-124"; attribute :>> name = "CONS_to_CONFIG";
848
+ @MemoIdentity { :>> providedId = "CE-124"; } attribute :>> name = "CONS_to_CONFIG";
848
849
  attribute :>> exchangeKind = FlowKind::configuration;
849
850
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portConstIn;
850
851
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConstIn;
851
852
  attribute :>> direction = DirectionKind::input;
852
853
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
853
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
854
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
854
855
  }
855
856
  part ceSysStatToConfig : ComponentExchange {
856
- attribute :>> id = "CE-125"; attribute :>> name = "SYS_STAT_to_CONFIG";
857
+ @MemoIdentity { :>> providedId = "CE-125"; } attribute :>> name = "SYS_STAT_to_CONFIG";
857
858
  attribute :>> exchangeKind = FlowKind::status;
858
859
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
859
860
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigSysStatIn;
860
861
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
861
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
862
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
862
863
  }
863
864
  part ceConfigToOutput : ComponentExchange {
864
- attribute :>> id = "CE-126"; attribute :>> name = "CONFIG_toOUTPUT";
865
+ @MemoIdentity { :>> providedId = "CE-126"; } attribute :>> name = "CONFIG_toOUTPUT";
865
866
  attribute :>> exchangeKind = FlowKind::configuration;
866
867
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
867
868
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputConfigIn;
868
869
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
869
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
870
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
870
871
  }
871
872
  part ceTlmToIm : ComponentExchange {
872
- attribute :>> id = "CE-127"; attribute :>> name = "TLM_to_IM";
873
+ @MemoIdentity { :>> providedId = "CE-127"; } attribute :>> name = "TLM_to_IM";
873
874
  attribute :>> exchangeKind = FlowKind::status;
874
875
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
875
876
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImTlmModeIn;
876
877
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
877
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
878
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
878
879
  }
879
880
  part ceOpCmdToIm : ComponentExchange {
880
- attribute :>> id = "CE-128"; attribute :>> name = "OP_CMD_to_IM";
881
+ @MemoIdentity { :>> providedId = "CE-128"; } attribute :>> name = "OP_CMD_to_IM";
881
882
  attribute :>> exchangeKind = FlowKind::command;
882
883
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portOpCmdIn;
883
884
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImOpCmdIn;
884
885
  attribute :>> direction = DirectionKind::input;
885
886
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
886
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
887
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
887
888
  }
888
889
  part cePatientToIm : ComponentExchange {
889
- attribute :>> id = "CE-129"; attribute :>> name = "PATIENT_to_IM";
890
+ @MemoIdentity { :>> providedId = "CE-129"; } attribute :>> name = "PATIENT_to_IM";
890
891
  attribute :>> exchangeKind = FlowKind::command;
891
892
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portPatientIn;
892
893
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImPatientIn;
893
894
  attribute :>> direction = DirectionKind::input;
894
895
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
895
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
896
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
896
897
  }
897
898
  part ceConfigToIm : ComponentExchange {
898
- attribute :>> id = "CE-130"; attribute :>> name = "CONFIG_to_IM";
899
+ @MemoIdentity { :>> providedId = "CE-130"; } attribute :>> name = "CONFIG_to_IM";
899
900
  attribute :>> exchangeKind = FlowKind::configuration;
900
901
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
901
902
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImConfigIn;
902
903
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
903
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
904
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
904
905
  }
905
906
  part ceAlarmToIm : ComponentExchange {
906
- attribute :>> id = "CE-131"; attribute :>> name = "ALARM_to_IM";
907
+ @MemoIdentity { :>> providedId = "CE-131"; } attribute :>> name = "ALARM_to_IM";
907
908
  attribute :>> exchangeKind = FlowKind::alarm;
908
909
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut;
909
910
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImAlarmIn;
910
911
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
911
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
912
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
912
913
  }
913
914
  part ceSysStatToIm : ComponentExchange {
914
- attribute :>> id = "CE-132"; attribute :>> name = "SYS_STAT_to_IM";
915
+ @MemoIdentity { :>> providedId = "CE-132"; } attribute :>> name = "SYS_STAT_to_IM";
915
916
  attribute :>> exchangeKind = FlowKind::status;
916
917
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
917
918
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImSysStatIn;
918
919
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
919
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
920
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
920
921
  }
921
922
  part ceImToOutput : ComponentExchange {
922
- attribute :>> id = "CE-133"; attribute :>> name = "IM_toOUTPUT";
923
+ @MemoIdentity { :>> providedId = "CE-133"; } attribute :>> name = "IM_toOUTPUT";
923
924
  attribute :>> exchangeKind = FlowKind::status;
924
925
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImImOut;
925
926
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputImIn;
926
927
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
927
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
928
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
928
929
  }
929
930
  part ceTlmToSysMon : ComponentExchange {
930
- attribute :>> id = "CE-134"; attribute :>> name = "TLM_to_SYS_MON";
931
+ @MemoIdentity { :>> providedId = "CE-134"; } attribute :>> name = "TLM_to_SYS_MON";
931
932
  attribute :>> exchangeKind = FlowKind::status;
932
933
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
933
934
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemMonitor.portSysMonTlmModeIn;
934
935
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
935
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
936
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
936
937
  }
937
938
  part ceSysMonToOutput : ComponentExchange {
938
- attribute :>> id = "CE-135"; attribute :>> name = "SYS_MON_toOUTPUT";
939
+ @MemoIdentity { :>> providedId = "CE-135"; } attribute :>> name = "SYS_MON_toOUTPUT";
939
940
  attribute :>> exchangeKind = FlowKind::status;
940
941
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemMonitor.portSysMonSysMonOut;
941
942
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputSysMonIn;
942
943
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
943
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
944
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
944
945
  }
945
946
  part ceTlmToLog : ComponentExchange {
946
- attribute :>> id = "CE-136"; attribute :>> name = "TLM_to_LOG";
947
+ @MemoIdentity { :>> providedId = "CE-136"; } attribute :>> name = "TLM_to_LOG";
947
948
  attribute :>> exchangeKind = FlowKind::status;
948
949
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
949
950
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogTlmModeIn;
950
951
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
951
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
952
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
952
953
  }
953
954
  part ceConfigToLog : ComponentExchange {
954
- attribute :>> id = "CE-137"; attribute :>> name = "CONFIG_to_LOG";
955
+ @MemoIdentity { :>> providedId = "CE-137"; } attribute :>> name = "CONFIG_to_LOG";
955
956
  attribute :>> exchangeKind = FlowKind::configuration;
956
957
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
957
958
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogConfigIn;
958
959
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
959
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
960
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
960
961
  }
961
962
  part ceAlarmToLog : ComponentExchange {
962
- attribute :>> id = "CE-138"; attribute :>> name = "ALARM_to_LOG";
963
+ @MemoIdentity { :>> providedId = "CE-138"; } attribute :>> name = "ALARM_to_LOG";
963
964
  attribute :>> exchangeKind = FlowKind::alarm;
964
965
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut;
965
966
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogAlarmIn;
966
967
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
967
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
968
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
968
969
  }
969
970
  part ceSysStatToLog : ComponentExchange {
970
- attribute :>> id = "CE-139"; attribute :>> name = "SYS_STAT_to_LOG";
971
+ @MemoIdentity { :>> providedId = "CE-139"; } attribute :>> name = "SYS_STAT_to_LOG";
971
972
  attribute :>> exchangeKind = FlowKind::status;
972
973
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
973
974
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogSysStatIn;
974
975
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
975
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
976
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
976
977
  }
977
978
  part ceImToLog : ComponentExchange {
978
- attribute :>> id = "CE-140"; attribute :>> name = "IM_to_LOG";
979
+ @MemoIdentity { :>> providedId = "CE-140"; } attribute :>> name = "IM_to_LOG";
979
980
  attribute :>> exchangeKind = FlowKind::status;
980
981
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImImOut;
981
982
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogImIn;
982
983
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
983
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
984
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
984
985
  }
985
986
  part ceLogToOutput : ComponentExchange {
986
- attribute :>> id = "CE-141"; attribute :>> name = "LOG_toOUTPUT";
987
+ @MemoIdentity { :>> providedId = "CE-141"; } attribute :>> name = "LOG_toOUTPUT";
987
988
  attribute :>> exchangeKind = FlowKind::audit;
988
989
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.logging.portLogLogOut;
989
990
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputLogIn;
990
991
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
991
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
992
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
992
993
  }
993
994
  part ceOutputToGpcaOut : ComponentExchange {
994
- attribute :>> id = "CE-142"; attribute :>> name = "OUTPUT_to_GPCA_OUT";
995
+ @MemoIdentity { :>> providedId = "CE-142"; } attribute :>> name = "OUTPUT_to_GPCA_OUT";
995
996
  attribute :>> exchangeKind = FlowKind::status;
996
997
  ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputGpcaSwOut;
997
998
  ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.portGpcaSwOut;
998
999
  attribute :>> direction = DirectionKind::output;
999
1000
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1000
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1001
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
1001
1002
  }
1002
1003
  // ── Text macros (App. A.3 internal state variables) ─────────
1003
1004
  item ddActualInfusionDurationMacro : InterfaceItem {
1004
1005
  attribute :>> itemKind = InterfaceItemKind::data;
1005
- attribute :>> id = "DD-042";
1006
+ @MemoIdentity { :>> providedId = "DD-042"; }
1006
1007
  attribute :>> name = "Actual_Infusion_Duration_macro";
1007
1008
  attribute :>> description = "Total duration the system has been in ACTIVE mode since infusion was initiated with the current prescription.";
1008
1009
  attribute :>> semantics = "Internal variable; reset to 0 every time infusion is initiated with a new prescription (REQ 12/13).";
1009
1010
  attribute :>> unit = "minutes";
1010
1011
  attribute :>> encoding = "Time";
1011
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros";
1012
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros"; }
1012
1013
  }
1013
1014
  item ddActualVolumeInfusedMacro : InterfaceItem {
1014
1015
  attribute :>> itemKind = InterfaceItemKind::data;
1015
- attribute :>> id = "DD-043";
1016
+ @MemoIdentity { :>> providedId = "DD-043"; }
1016
1017
  attribute :>> name = "Actual_Volume_Infused_macro";
1017
1018
  attribute :>> description = "Total volume of drug infused during Actual_Infusion_Duration_macro; drives the infusion-complete condition (REQ 28) and over-infusion VTBI (REQ 20).";
1018
1019
  attribute :>> semantics = "Internal variable; default 0; reset to 0 on infusion initiation.";
1019
1020
  attribute :>> unit = "ml/hr";
1020
1021
  attribute :>> encoding = "Positive Integer";
1021
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros";
1022
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros"; }
1022
1023
  }
1023
1024
  item ddFlowRateModeMacro : InterfaceItem {
1024
1025
  attribute :>> itemKind = InterfaceItemKind::data;
1025
- attribute :>> id = "DD-044";
1026
+ @MemoIdentity { :>> providedId = "DD-044"; }
1026
1027
  attribute :>> name = "FlowRate_Mode_macro";
1027
1028
  attribute :>> description = "Programmed flow rate of the current mode: FlowRate_kvo_hd in PAUSED, FlowRate_basal_prog in BASAL, FlowRate_sbolus_prog in SQUARE BOLUS, FlowRate_pbolus_prog in PATIENT BOLUS (§4.1.5).";
1028
1029
  attribute :>> semantics = "Internal variable; set by the system when entering the respective mode.";
1029
1030
  attribute :>> unit = "ml/hr";
1030
1031
  attribute :>> encoding = "Positive Integer";
1031
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros";
1032
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros"; }
1032
1033
  }
1033
1034
  item ddInhibitedInfusionMacro : InterfaceItem {
1034
1035
  attribute :>> itemKind = InterfaceItemKind::data;
1035
- attribute :>> id = "DD-045";
1036
+ @MemoIdentity { :>> providedId = "DD-045"; }
1036
1037
  attribute :>> name = "Inhibited_Infusion_macro";
1037
1038
  attribute :>> description = "TRUE when the notification in effect requires all infusion to be inhibited ('Inhibit Infusion' column of REQ 59); FALSE when that notification is cancelled or the system transitions to OFF.";
1038
1039
  attribute :>> semantics = "Internal variable set per the REQ 59 action table; drives REQ 30/37 transitions.";
1039
1040
  attribute :>> unit = "-";
1040
1041
  attribute :>> encoding = "Boolean";
1041
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros";
1042
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros"; }
1042
1043
  }
1043
1044
  item ddInhibitedBolusMacro : InterfaceItem {
1044
1045
  attribute :>> itemKind = InterfaceItemKind::data;
1045
- attribute :>> id = "DD-046";
1046
+ @MemoIdentity { :>> providedId = "DD-046"; }
1046
1047
  attribute :>> name = "Inhibited_Bolus_macro";
1047
1048
  attribute :>> description = "TRUE when the notification in effect requires square boluses to be inhibited ('Inhibit Square Bolus' column of REQ 59); cleared on cancel or OFF.";
1048
1049
  attribute :>> semantics = "Internal variable set per the REQ 59 action table; drives REQ 31/34/39 guards.";
1049
1050
  attribute :>> unit = "-";
1050
1051
  attribute :>> encoding = "Boolean";
1051
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros";
1052
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros"; }
1052
1053
  }
1053
1054
  item ddInhibitedPatientBolusMacro : InterfaceItem {
1054
1055
  attribute :>> itemKind = InterfaceItemKind::data;
1055
- attribute :>> id = "DD-047";
1056
+ @MemoIdentity { :>> providedId = "DD-047"; }
1056
1057
  attribute :>> name = "Inhibited_PatientBolus_macro";
1057
1058
  attribute :>> description = "TRUE when the notification in effect requires PATIENT BOLUS inhibit ('Inhibit Patient Bolus' column of REQ 59); cleared on cancel or OFF.";
1058
1059
  attribute :>> semantics = "Internal variable set per the REQ 59 action table; drives REQ 25/35/36/38 guards.";
1059
1060
  attribute :>> unit = "-";
1060
1061
  attribute :>> encoding = "Boolean";
1061
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros";
1062
+ @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros"; }
1062
1063
  }
1063
1064
 
1064
1065
  // ── The exchanges as FLOWS (Track A3) ────────────────────────────