@memoarchitect/ontology 0.7.0 → 0.8.24

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 (270) hide show
  1. package/README.md +4 -2
  2. package/examples/connected-patient-monitor/memo.package.yaml +3 -0
  3. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
  4. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
  5. package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
  6. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +8 -6
  7. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
  8. package/examples/functional-logical-physical/memo.package.yaml +3 -0
  9. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +6 -6
  10. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
  11. package/examples/gpca-pump/memo.package.yaml +3 -0
  12. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +18 -8
  13. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +341 -99
  14. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +25 -11
  15. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +328 -271
  16. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +52 -11
  17. package/examples/gpca-pump/model/catalog/gpca_context.sysml +14 -3
  18. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +8 -5
  19. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +175 -259
  20. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +97 -103
  21. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +5 -10
  22. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +101 -100
  23. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
  24. package/examples/gpca-pump/model/catalog/gpca_system.sysml +17 -17
  25. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +274 -334
  26. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +115 -35
  27. package/examples/gpca-pump/model/catalog/project.sysml +5 -0
  28. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +2 -4
  29. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +2 -4
  30. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +1 -4
  31. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +2 -5
  32. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +1 -3
  33. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +1 -3
  34. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +1 -3
  35. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -7
  36. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
  37. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +1 -3
  38. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +2 -4
  39. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +1 -3
  40. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +2 -4
  41. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +2 -4
  42. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +1 -3
  43. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +5 -8
  44. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +1 -3
  45. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +5 -6
  47. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
  48. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +1 -3
  49. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +2 -5
  50. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
  51. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +5 -6
  52. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +5 -6
  53. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
  54. package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
  55. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +1 -1
  56. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
  57. package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
  58. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +4 -3
  59. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
  60. package/examples/multidimensional-layers/memo.package.yaml +3 -0
  61. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
  62. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
  63. package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
  64. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +133 -128
  65. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +139 -157
  66. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +56 -33
  67. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +25 -26
  68. package/examples/reusable-instrument/memo.package.yaml +3 -0
  69. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +16 -23
  70. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
  71. package/examples/ros-mobile-robot/README.md +40 -0
  72. package/examples/ros-mobile-robot/memo.package.yaml +3 -0
  73. package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
  74. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
  75. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
  76. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +12 -0
  77. package/examples/software-only-medical-device/memo.package.yaml +3 -0
  78. package/examples/software-only-medical-device/model/catalog/project.sysml +4 -0
  79. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +12 -6
  80. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
  81. package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
  82. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +58 -75
  83. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
  84. package/examples/surgical-robot/memo.package.yaml +3 -0
  85. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +1 -1
  86. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
  87. package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
  88. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -18
  89. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -11
  90. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +43 -68
  91. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +57 -68
  92. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +40 -70
  93. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +4 -8
  94. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +1 -20
  95. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +52 -84
  96. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +22 -33
  97. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +13 -10
  98. package/examples/temperature-alarm/memo.package.yaml +3 -0
  99. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +28 -25
  100. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
  101. package/examples/ui-screen-regions/memo.package.yaml +3 -0
  102. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +57 -33
  103. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +102 -79
  104. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +5 -5
  105. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +21 -6
  106. package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
  107. package/examples/ui-screen-regions/model/catalog/traces.sysml +28 -125
  108. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +2 -3
  109. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
  110. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
  111. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +1 -2
  112. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +1 -2
  113. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +1 -2
  114. package/extensions/LICENSES/MIT.txt +19 -0
  115. package/extensions/README.md +94 -0
  116. package/extensions/aadl/memo.package.yaml +18 -0
  117. package/extensions/aadl/src/aadl_extension.sysml +6 -0
  118. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
  119. package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
  120. package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
  121. package/extensions/cloud/memo.package.yaml +18 -0
  122. package/extensions/cloud/src/cloud_extension.sysml +44 -0
  123. package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
  124. package/extensions/container/memo.package.yaml +18 -0
  125. package/extensions/container/src/container_extension.sysml +37 -0
  126. package/extensions/container/src/methodology/container_methodology.sysml +17 -0
  127. package/extensions/messaging/memo.package.yaml +18 -0
  128. package/extensions/messaging/src/messaging_extension.sysml +64 -0
  129. package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
  130. package/extensions/ros/memo.package.yaml +18 -0
  131. package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
  132. package/extensions/ros/src/ros_extension.sysml +200 -0
  133. package/extensions/template/src/extension.sysml +37 -0
  134. package/memo.manifest.yaml +13 -2
  135. package/methodologies/default/memo.package.yaml +1 -1
  136. package/methodologies/gpca/memo.package.yaml +1 -1
  137. package/ontology/memo.package.yaml +1 -1
  138. package/package.json +5 -3
  139. package/profile/memo.package.yaml +1 -1
  140. package/src/architecture/decisions/memo_decisions.sysml +23 -2
  141. package/src/architecture/functional/behavior/memo_behavior.sysml +51 -23
  142. package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
  143. package/src/architecture/functional/functions/memo_functions.sysml +93 -36
  144. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +2 -2
  145. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -22
  146. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +40 -13
  147. package/src/architecture/implementation/ui/memo_ui.sysml +83 -43
  148. package/src/architecture/logical/interfaces/memo_interfaces.sysml +64 -12
  149. package/src/architecture/logical/structure/memo_logical_structure.sysml +26 -25
  150. package/src/architecture/operational/activities/memo_activities.sysml +27 -29
  151. package/src/architecture/operational/context/actors/memo_actors.sysml +8 -10
  152. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +16 -33
  153. package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -17
  154. package/src/architecture/operational/scenarios/memo_scenarios.sysml +36 -84
  155. package/src/architecture/operational/structure/memo_operational.sysml +42 -13
  156. package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -27
  157. package/src/architecture/operational/workflows/memo_workflows.sysml +45 -28
  158. package/src/architecture/realization/deployment/memo_deployment.sysml +115 -20
  159. package/src/architecture/realization/physical/memo_physical_architecture.sysml +29 -4
  160. package/src/artifacts/configuration_management/memo_configuration_management.sysml +16 -0
  161. package/src/artifacts/core/memo_controlled_artifacts.sysml +3 -1
  162. package/src/artifacts/standards/cfr_21_820.sysml +116 -0
  163. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
  164. package/src/artifacts/standards/iec_60601_1.sysml +149 -0
  165. package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
  166. package/src/artifacts/standards/iec_60812.sysml +51 -0
  167. package/src/artifacts/standards/iec_62304.sysml +210 -0
  168. package/src/artifacts/standards/iec_62366_1.sysml +113 -0
  169. package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
  170. package/src/artifacts/standards/iso_13485.sysml +113 -0
  171. package/src/artifacts/standards/iso_14971.sysml +94 -0
  172. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
  173. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
  174. package/src/artifacts/templates/dhf/21cfr820/design-input.md +1 -1
  175. package/src/artifacts/templates/dhf/21cfr820/design-output.md +5 -5
  176. package/src/artifacts/templates/dhf/21cfr820/design-review.md +1 -1
  177. package/src/artifacts/templates/dhf/21cfr820/design-validation.md +2 -2
  178. package/src/artifacts/templates/dhf/21cfr820/design-verification.md +2 -2
  179. package/src/artifacts/templates/dhf/21cfr820/dhf-index.md +2 -2
  180. package/src/artifacts/templates/dhf/21cfr820/transfer-plan.md +1 -1
  181. package/src/artifacts/templates/dhf/21cfr820/user-needs.md +1 -1
  182. package/src/artifacts/templates/dhf/21cfr820/vv-plan.md +3 -3
  183. package/src/artifacts/templates/dhf/21cfr820/vv-report.md +4 -4
  184. package/src/artifacts/templates/dhf/fda-cybersecurity/incident-response.md +1 -1
  185. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +3 -2
  186. package/src/artifacts/templates/dhf/fda-cybersecurity/security-arch.md +2 -2
  187. package/src/artifacts/templates/dhf/fda-cybersecurity/threat-model.md +4 -4
  188. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +4 -3
  189. package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
  190. package/src/artifacts/templates/dhf/iec-62304/detailed-design.md +1 -1
  191. package/src/artifacts/templates/dhf/iec-62304/integration-test.md +3 -3
  192. package/src/artifacts/templates/dhf/iec-62304/sad.md +6 -5
  193. package/src/artifacts/templates/dhf/iec-62304/sbom.md +3 -2
  194. package/src/artifacts/templates/dhf/iec-62304/sdp.md +5 -4
  195. package/src/artifacts/templates/dhf/iec-62304/soup.md +4 -2
  196. package/src/artifacts/templates/dhf/iec-62304/srs.md +54 -20
  197. package/src/artifacts/templates/dhf/iec-62304/sw-traceability.md +3 -3
  198. package/src/artifacts/templates/dhf/iec-62304/system-test.md +1 -1
  199. package/src/artifacts/templates/dhf/iec-62366/summative-eval.md +1 -1
  200. package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +40 -4
  201. package/src/artifacts/templates/dhf/iec-62366/ue-plan.md +1 -1
  202. package/src/artifacts/templates/dhf/iec-62366/urra.md +3 -3
  203. package/src/artifacts/templates/dhf/iso-14971/fmea.md +42 -19
  204. package/src/artifacts/templates/dhf/iso-14971/har.md +3 -3
  205. package/src/artifacts/templates/dhf/iso-14971/rmp.md +2 -2
  206. package/src/artifacts/templates/dhf/system/sad.md +173 -0
  207. package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
  208. package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
  209. package/src/artifacts/templates/dhf/system/syrs.md +128 -0
  210. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +40 -21
  211. package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
  212. package/src/assurance/requirements/memo_requirements.sysml +7 -20
  213. package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
  214. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
  215. package/src/assurance/safety_risk/memo_risk.sysml +90 -7
  216. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +16 -0
  217. package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
  218. package/src/core/annotations/memo_annotations.sysml +25 -6
  219. package/src/core/common/memo_common.sysml +130 -21
  220. package/src/core/consistency_rules/consistency_rules.sysml +1 -1
  221. package/src/core/dimensions/dimensions.sysml +12 -0
  222. package/src/core/enumerations/memo_enumerations.sysml +60 -14
  223. package/src/core/relationships/memo_relationships.sysml +199 -196
  224. package/src/memo_namespaces.sysml +30 -0
  225. package/src/methodology/core/memo_core.sysml +24 -0
  226. package/src/methodology/profiles/memo_profiles.sysml +1 -1
  227. package/src/methodology/workflow/memo_workflow.sysml +5 -5
  228. package/src/rules/closure/closure_rules.sysml +20 -20
  229. package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
  230. package/src/rules/ontology/ontology_invariants.sysml +223 -11
  231. package/src/rules/quantitative/quantitative_rules.sysml +2 -2
  232. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +30 -30
  233. package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
  234. package/src/viewpoints/context/context_viewpoint.sysml +2 -3
  235. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +1 -2
  236. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -4
  237. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +46 -3
  238. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  239. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -3
  240. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -3
  241. package/src/viewpoints/logical/logical_viewpoint.sysml +1 -2
  242. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +1 -2
  243. package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
  244. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +2 -3
  245. package/src/viewpoints/physical/physical_viewpoint.sysml +1 -2
  246. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +1 -2
  247. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +1 -2
  248. package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
  249. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +1 -2
  250. package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
  251. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +1 -2
  252. package/src/viewpoints/software/software_viewpoint.sysml +1 -2
  253. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +1 -2
  254. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
  255. package/src/viewpoints/usability/usability_viewpoint.sysml +1 -2
  256. package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
  257. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -3
  258. package/templates/connected-device/memo.package.yaml +2 -0
  259. package/templates/default/memo.package.yaml +2 -0
  260. package/templates/infusion-pump/memo.package.yaml +2 -0
  261. package/templates/monitoring-device/memo.package.yaml +2 -0
  262. package/templates/samd/memo.package.yaml +2 -0
  263. package/examples/extensions/README.md +0 -16
  264. package/examples/extensions/template/src/extension.sysml +0 -15
  265. package/examples/gpca-pump/gpca-pump.kpar +0 -0
  266. /package/{examples/extensions → extensions}/clinical/memo.package.yaml +0 -0
  267. /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
  268. /package/{examples/extensions → extensions}/clinical/src/methodology/clinical_methodology.sysml +0 -0
  269. /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
  270. /package/{examples/extensions → extensions}/template/memo.package.yaml +0 -0
@@ -1,5 +1,6 @@
1
1
  package memo_examples_gpca_pump_gpca_operational {
2
2
  private import ScalarValues::*;
3
+ private import ModelingMetadata::*;
3
4
 
4
5
  private import memo_architecture_operational_structure::*;
5
6
  private import memo_architecture_operational_activities::*;
@@ -8,6 +9,7 @@ package memo_examples_gpca_pump_gpca_operational {
8
9
  private import memo_architecture_operational_workflows::*;
9
10
  private import memo_core_enumerations::*;
10
11
  private import memo_examples_gpca_pump_gpca_context::*;
12
+ private import memo_examples_gpca_pump_gpca_system::*;
11
13
  private import memo_core_relationships::*;
12
14
 
13
15
  // ── Operational entities beyond the human actors ────────────
@@ -76,7 +78,7 @@ package memo_examples_gpca_pump_gpca_operational {
76
78
  }
77
79
 
78
80
  // ── Operational activities (therapy lifecycle) ──────────────
79
- action oaPrescribe : OperationalActivity {
81
+ action oaPrescribe : OperativeAction {
80
82
  attribute :>> id = "OA-001";
81
83
  attribute :>> name = "PrescribeTherapy";
82
84
  attribute :>> trigger = "patient requires titrated analgesia";
@@ -84,7 +86,7 @@ package memo_examples_gpca_pump_gpca_operational {
84
86
  attribute :>> postCondition = "prescription with basal rate, bolus volume, lockout, and max dose limits exists";
85
87
  attribute :>> criticality = CriticalityKind::high;
86
88
  }
87
- action oaLoadReservoir : OperationalActivity {
89
+ action oaLoadReservoir : OperativeAction {
88
90
  attribute :>> id = "OA-002";
89
91
  attribute :>> name = "LoadDrugReservoir";
90
92
  attribute :>> trigger = "prescription issued or reservoir empty";
@@ -92,7 +94,7 @@ package memo_examples_gpca_pump_gpca_operational {
92
94
  attribute :>> postCondition = "reservoir mounted, door closed and latched";
93
95
  attribute :>> criticality = CriticalityKind::high;
94
96
  }
95
- action oaProgram : OperationalActivity {
97
+ action oaProgram : OperativeAction {
96
98
  attribute :>> id = "OA-003";
97
99
  attribute :>> name = "ProgramPrescription";
98
100
  attribute :>> trigger = "reservoir loaded";
@@ -100,7 +102,7 @@ package memo_examples_gpca_pump_gpca_operational {
100
102
  attribute :>> postCondition = "prescription entered, checked against pharmacy-database safe values (I 9-I 11), and confirmed by second review";
101
103
  attribute :>> criticality = CriticalityKind::catastrophic;
102
104
  }
103
- action oaStartTherapy : OperationalActivity {
105
+ action oaStartTherapy : OperativeAction {
104
106
  attribute :>> id = "OA-004";
105
107
  attribute :>> name = "StartInfusion";
106
108
  attribute :>> trigger = "prescription confirmed";
@@ -108,7 +110,7 @@ package memo_examples_gpca_pump_gpca_operational {
108
110
  attribute :>> postCondition = "basal infusion running";
109
111
  attribute :>> criticality = CriticalityKind::catastrophic;
110
112
  }
111
- action oaRequestBolus : OperationalActivity {
113
+ action oaRequestBolus : OperativeAction {
112
114
  attribute :>> id = "OA-005";
113
115
  attribute :>> name = "RequestPatientBolus";
114
116
  attribute :>> trigger = "patient presses bolus request button";
@@ -116,7 +118,7 @@ package memo_examples_gpca_pump_gpca_operational {
116
118
  attribute :>> postCondition = "bolus delivered, or request ignored when lockout or max-dose limits apply";
117
119
  attribute :>> criticality = CriticalityKind::catastrophic;
118
120
  }
119
- action oaRespondAlarm : OperationalActivity {
121
+ action oaRespondAlarm : OperativeAction {
120
122
  attribute :>> id = "OA-006";
121
123
  attribute :>> name = "RespondToAlarm";
122
124
  attribute :>> trigger = "audible or visual alarm annunciated";
@@ -124,7 +126,7 @@ package memo_examples_gpca_pump_gpca_operational {
124
126
  attribute :>> postCondition = "cause resolved and therapy resumed, or therapy stopped";
125
127
  attribute :>> criticality = CriticalityKind::catastrophic;
126
128
  }
127
- action oaReviewLog : OperationalActivity {
129
+ action oaReviewLog : OperativeAction {
128
130
  attribute :>> id = "OA-007";
129
131
  attribute :>> name = "ReviewEventLog";
130
132
  attribute :>> trigger = "shift change, incident review, or dose audit";
@@ -132,7 +134,7 @@ package memo_examples_gpca_pump_gpca_operational {
132
134
  attribute :>> postCondition = "delivered doses and alarm history reviewed";
133
135
  attribute :>> criticality = CriticalityKind::medium;
134
136
  }
135
- action oaMaintain : OperationalActivity {
137
+ action oaMaintain : OperativeAction {
136
138
  attribute :>> id = "OA-008";
137
139
  attribute :>> name = "MaintainDevice";
138
140
  attribute :>> trigger = "scheduled maintenance or fault";
@@ -154,6 +156,11 @@ package memo_examples_gpca_pump_gpca_operational {
154
156
  ref :>> primaryUser = actorNurse;
155
157
  ref :>> supportingActors = (actorPatient, actorPrescriber, actorPharmacist);
156
158
  ref :>> useContext = hospitalWardContext;
159
+ subject supportingSystem;
160
+ actor nurseInitiator = actorNurse;
161
+ actor patientActor = actorPatient;
162
+ actor prescriberActor = actorPrescriber;
163
+ actor pharmacistActor = actorPharmacist;
157
164
  }
158
165
 
159
166
  action wfPrepareAndStartTherapy : OperationalWorkflow {
@@ -161,63 +168,37 @@ package memo_examples_gpca_pump_gpca_operational {
161
168
  attribute :>> workflowState = WorkflowStateKind::toBe;
162
169
  attribute :>> entryCondition = "A valid prescription and prepared reservoir are available.";
163
170
  attribute :>> completionCondition = "Therapy is started with confirmed prescription limits.";
171
+
164
172
  }
165
173
  action wfManageActiveTherapy : OperationalWorkflow {
166
174
  attribute :>> name = "ManageActiveTherapy";
167
175
  attribute :>> workflowState = WorkflowStateKind::toBe;
168
176
  attribute :>> entryCondition = "Basal therapy is active.";
169
177
  attribute :>> completionCondition = "A bolus is handled or active therapy continues safely.";
178
+
179
+ // Refinement targets a nested step by its local name — the shorthand's
180
+ // `to` end does not accept a qualified path — so this is written
181
+ // inside wsRequestBolus's own owning scope rather than at package
182
+ // level.
183
+ #refinement dependency fcsBolusSense to oaRequestBolus;
184
+ #refinement dependency fcsBolusValidate to oaRequestBolus;
185
+ #refinement dependency fcsBolusCommand to oaRequestBolus;
186
+ #refinement dependency fcsBolusActuate to oaRequestBolus;
187
+ #refinement dependency fcsBolusLog to oaRequestBolus;
170
188
  }
171
189
  action wfRespondToTherapyAlarm : OperationalWorkflow {
172
190
  attribute :>> name = "RespondToTherapyAlarm";
173
191
  attribute :>> workflowState = WorkflowStateKind::toBe;
174
192
  attribute :>> entryCondition = "A therapy alarm or degraded condition is detected.";
175
193
  attribute :>> completionCondition = "The pump is safe and the clinician has resolved or escalated the condition.";
176
- }
177
- action wsProgram : WorkflowStep { ref :>> performedActivity = oaProgram; }
178
- action wsStart : WorkflowStep { ref :>> performedActivity = oaStartTherapy; }
179
- action wsRequestBolus : WorkflowStep { ref :>> performedActivity = oaRequestBolus; }
180
- action wsRespondAlarm : WorkflowStep { ref :>> performedActivity = oaRespondAlarm; }
181
- connection : Supports { attribute :>> supportKind = SupportKind::useCase; connect supporter ::> wfPrepareAndStartTherapy to supported ::> ucDeliverPcaTherapy; }
182
- connection : Supports { attribute :>> supportKind = SupportKind::useCase; connect supporter ::> wfManageActiveTherapy to supported ::> ucDeliverPcaTherapy; }
183
- connection : Supports { attribute :>> supportKind = SupportKind::useCase; connect supporter ::> wfRespondToTherapyAlarm to supported ::> ucDeliverPcaTherapy; }
184
- connection : Composes connect parent ::> wfPrepareAndStartTherapy to child ::> wsProgram;
185
- connection : Composes connect parent ::> wfPrepareAndStartTherapy to child ::> wsStart;
186
- connection : Composes connect parent ::> wfManageActiveTherapy to child ::> wsRequestBolus;
187
- connection : Composes connect parent ::> wfRespondToTherapyAlarm to child ::> wsRespondAlarm;
188
194
 
189
- // ── Scenario-owned operational activities and action flows ──
190
- action oaCompleteNominalTherapy : OperationalActivity {
191
- attribute :>> name = "CompleteNominalTherapy";
192
- action deliverWithinLimits; action recordTherapyEvent;
193
- first start then deliverWithinLimits; first deliverWithinLimits then recordTherapyEvent; first recordTherapyEvent then done;
194
- }
195
- action oaRejectBolusDuringLockout : OperationalActivity {
196
- attribute :>> name = "RejectBolusDuringLockout";
197
- action checkLockout; action rejectAndLog;
198
- first start then checkLockout; first checkLockout then rejectAndLog; first rejectAndLog then done;
199
- }
200
- action oaRespondToOcclusion : OperationalActivity {
201
- attribute :>> name = "RespondToOcclusion";
202
- action pauseInfusion; action annunciateOcclusion; action resolveAndResume;
203
- first start then pauseInfusion; first pauseInfusion then annunciateOcclusion; first annunciateOcclusion then resolveAndResume; first resolveAndResume then done;
204
- }
205
- action oaRespondToAirInLine : OperationalActivity {
206
- attribute :>> name = "RespondToAirInLine";
207
- action stopOrKvo; action annunciateAir; action reprimeAndRestart;
208
- first start then stopOrKvo; first stopOrKvo then annunciateAir; first annunciateAir then reprimeAndRestart; first reprimeAndRestart then done;
209
- }
210
- action oaReplaceEmptyReservoir : OperationalActivity {
211
- attribute :>> name = "ReplaceEmptyReservoir";
212
- action stopAndAnnunciate; action replaceReservoir; action resumeTherapy;
213
- first start then stopAndAnnunciate; first stopAndAnnunciate then replaceReservoir; first replaceReservoir then resumeTherapy; first resumeTherapy then done;
214
- }
215
- action oaRecoverAfterPowerLoss : OperationalActivity {
216
- attribute :>> name = "RecoverAfterPowerLoss";
217
- action switchToBattery; action restorePrescription; action confirmRestart;
218
- first start then switchToBattery; first switchToBattery then restorePrescription; first restorePrescription then confirmRestart; first confirmRestart then done;
195
+ #refinement dependency fcsAlarmSense to oaRespondAlarm;
196
+ #refinement dependency fcsAlarmEvaluate to oaRespondAlarm;
197
+ #refinement dependency fcsAlarmStopInfusion to oaRespondAlarm;
198
+ #refinement dependency fcsAlarmAnnunciate to oaRespondAlarm;
219
199
  }
220
200
 
201
+
221
202
  // ── Operational capabilities ────────────────────────────────
222
203
  part ocTitratedAnalgesia : OperationalCapability {
223
204
  attribute :>> id = "OC-001";
@@ -238,101 +219,114 @@ package memo_examples_gpca_pump_gpca_operational {
238
219
  action osNominalTherapy : OperativeScenario {
239
220
  attribute :>> id = "OS-001";
240
221
  attribute :>> name = "NominalTherapySession";
241
- attribute :>> variantKind = ScenarioVariantKind::nominal;
242
- attribute :>> operationalCondition = OperationalConditionKind::normal;
243
222
  attribute :>> preCondition = "prescription issued, reservoir loaded";
244
223
  attribute :>> postCondition = "therapy completed and stopped by clinician";
245
224
  attribute :>> pathSummary = "Prescribe > load reservoir > program and confirm > start basal > patient boluses within limits > stop therapy > review log.";
246
225
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.2 Main GPCA System Functions";
247
- ref :>> parentWorkflow = wfManageActiveTherapy;
248
- ref :>> parentUseCase = ucDeliverPcaTherapy;
249
- ref :>> activities = oaCompleteNominalTherapy;
226
+
227
+ action oaCompleteNominalTherapy : OperativeAction {
228
+ attribute :>> name = "CompleteNominalTherapy";
229
+ action deliverWithinLimits; action recordTherapyEvent;
230
+ first start then deliverWithinLimits; first deliverWithinLimits then recordTherapyEvent; first recordTherapyEvent then done;
231
+ }
250
232
  }
251
233
  action osLockoutBolus : OperativeScenario {
234
+ attribute :>> scenarioKind = ScenarioKind::alternate;
252
235
  attribute :>> id = "OS-002";
253
236
  attribute :>> name = "BolusRequestDuringLockout";
254
- attribute :>> variantKind = ScenarioVariantKind::alternate;
255
- attribute :>> variationPoint = "patient bolus request during the nominal therapy lockout interval";
256
- attribute :>> operationalCondition = OperationalConditionKind::foreseeableMisuse;
257
237
  attribute :>> preCondition = "basal infusion active; lockout interval running";
258
238
  attribute :>> postCondition = "request ignored, logged; basal continues unchanged";
259
239
  attribute :>> pathSummary = "Patient presses bolus button during lockout > infusion manager rejects request > event logged > no additional drug delivered.";
260
240
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.9 PATIENT BOLUS mode (lockout requirements)";
261
- ref :>> parentWorkflow = wfManageActiveTherapy;
262
- ref :>> parentUseCase = ucDeliverPcaTherapy;
263
- ref :>> baseScenario = osNominalTherapy;
264
- ref :>> activities = oaRejectBolusDuringLockout;
241
+
242
+ action oaRejectBolusDuringLockout : OperativeAction {
243
+ attribute :>> name = "RejectBolusDuringLockout";
244
+ action checkLockout; action rejectAndLog;
245
+ first start then checkLockout; first checkLockout then rejectAndLog; first rejectAndLog then done;
246
+ }
265
247
  }
266
248
  action osOcclusionAlarm : OperativeScenario {
249
+ attribute :>> scenarioKind = ScenarioKind::alternate;
267
250
  attribute :>> id = "OS-003";
268
251
  attribute :>> name = "OcclusionDetectedDuringInfusion";
269
- attribute :>> variantKind = ScenarioVariantKind::exception;
270
- attribute :>> variationPoint = "occlusion detected while nominal infusion is active";
271
- attribute :>> operationalCondition = OperationalConditionKind::degraded;
272
252
  attribute :>> preCondition = "therapy active; downstream line becomes blocked";
273
253
  attribute :>> postCondition = "infusion paused, alarm annunciated, clinician clears occlusion and resumes";
274
254
  attribute :>> pathSummary = "Occlusion sensor exceeds pressure threshold > alarm raised same step > infusion paused > audible and visual annunciation > clinician resolves and resumes.";
275
255
  attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.2 Alarms and Alerts (occlusion)";
276
- ref :>> parentWorkflow = wfRespondToTherapyAlarm;
277
- ref :>> parentUseCase = ucDeliverPcaTherapy;
278
- ref :>> baseScenario = osNominalTherapy;
279
- ref :>> activities = oaRespondToOcclusion;
256
+
257
+ action oaRespondToOcclusion : OperativeAction {
258
+ attribute :>> name = "RespondToOcclusion";
259
+ action pauseInfusion; action annunciateOcclusion; action resolveAndResume;
260
+ first start then pauseInfusion; first pauseInfusion then annunciateOcclusion; first annunciateOcclusion then resolveAndResume; first resolveAndResume then done;
261
+ }
280
262
  }
281
263
  action osAirInLine : OperativeScenario {
264
+ attribute :>> scenarioKind = ScenarioKind::alternate;
282
265
  attribute :>> id = "OS-004";
283
266
  attribute :>> name = "AirInLineDetected";
284
- attribute :>> variantKind = ScenarioVariantKind::exception;
285
- attribute :>> variationPoint = "air-in-line detected while nominal infusion is active";
286
- attribute :>> operationalCondition = OperationalConditionKind::degraded;
287
267
  attribute :>> preCondition = "therapy active; air bubble enters tubing";
288
268
  attribute :>> postCondition = "infusion stopped before air reaches patient; alarm annunciated";
289
269
  attribute :>> pathSummary = "Air-in-line sensor detects bubble above threshold > transition to PAUSED (KVO flow) > High-priority Air embolism notification > clinician re-primes line and restarts.";
290
270
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 Notification Requirements (REQ 59: Air embolism)";
291
- ref :>> parentWorkflow = wfRespondToTherapyAlarm;
292
- ref :>> parentUseCase = ucDeliverPcaTherapy;
293
- ref :>> baseScenario = osNominalTherapy;
294
- ref :>> activities = oaRespondToAirInLine;
271
+
272
+ action oaRespondToAirInLine : OperativeAction {
273
+ attribute :>> name = "RespondToAirInLine";
274
+ action stopOrKvo; action annunciateAir; action reprimeAndRestart;
275
+ first start then stopOrKvo; first stopOrKvo then annunciateAir; first annunciateAir then reprimeAndRestart; first reprimeAndRestart then done;
276
+ }
295
277
  }
296
278
  action osEmptyReservoir : OperativeScenario {
279
+ attribute :>> scenarioKind = ScenarioKind::alternate;
297
280
  attribute :>> id = "OS-005";
298
281
  attribute :>> name = "ReservoirEmptyDuringTherapy";
299
- attribute :>> variantKind = ScenarioVariantKind::exception;
300
- attribute :>> variationPoint = "reservoir-empty threshold reached during nominal therapy";
301
- attribute :>> operationalCondition = OperationalConditionKind::degraded;
302
282
  attribute :>> preCondition = "therapy active; reservoir volume reaches empty threshold";
303
283
  attribute :>> postCondition = "infusion stopped, alarm raised, reservoir replaced";
304
284
  attribute :>> pathSummary = "Reservoir-empty condition detected > transition to PAUSED (KVO flow) > High-priority Empty Reservoir notification > clinician loads new reservoir > therapy resumed with saved prescription.";
305
285
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 Notification Requirements (REQ 59: Empty Reservoir)";
306
- ref :>> parentWorkflow = wfRespondToTherapyAlarm;
307
- ref :>> parentUseCase = ucDeliverPcaTherapy;
308
- ref :>> baseScenario = osNominalTherapy;
309
- ref :>> activities = oaReplaceEmptyReservoir;
286
+
287
+ action oaReplaceEmptyReservoir : OperativeAction {
288
+ attribute :>> name = "ReplaceEmptyReservoir";
289
+ action stopAndAnnunciate; action replaceReservoir; action resumeTherapy;
290
+ first start then stopAndAnnunciate; first stopAndAnnunciate then replaceReservoir; first replaceReservoir then resumeTherapy; first resumeTherapy then done;
291
+ }
310
292
  }
311
293
  action osPowerLoss : OperativeScenario {
294
+ attribute :>> scenarioKind = ScenarioKind::alternate;
312
295
  attribute :>> id = "OS-006";
313
296
  attribute :>> name = "MainsPowerLossAndRecovery";
314
- attribute :>> variantKind = ScenarioVariantKind::recovery;
315
- attribute :>> variationPoint = "mains supply lost during nominal therapy";
316
- attribute :>> operationalCondition = OperationalConditionKind::degraded;
317
297
  attribute :>> preCondition = "therapy active on mains power";
318
298
  attribute :>> postCondition = "therapy continues on battery; prescription preserved across full power loss";
319
299
  attribute :>> pathSummary = "Mains lost > battery takes over with notification > if battery depletes, pump stops safely > on power restore, saved prescription recovered and therapy resumed only after clinician confirmation.";
320
300
  attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.3 Electrical Hazards (battery failure)";
321
- ref :>> parentWorkflow = wfRespondToTherapyAlarm;
322
- ref :>> parentUseCase = ucDeliverPcaTherapy;
323
- ref :>> baseScenario = osNominalTherapy;
324
- ref :>> activities = oaRecoverAfterPowerLoss;
325
- }
326
- connection : Realizes connect realizing ::> osNominalTherapy to realized ::> ucDeliverPcaTherapy;
327
- connection : Realizes connect realizing ::> osLockoutBolus to realized ::> ucDeliverPcaTherapy;
328
- connection : Realizes connect realizing ::> osOcclusionAlarm to realized ::> ucDeliverPcaTherapy;
329
- connection : Realizes connect realizing ::> osAirInLine to realized ::> ucDeliverPcaTherapy;
330
- connection : Realizes connect realizing ::> osEmptyReservoir to realized ::> ucDeliverPcaTherapy;
331
- connection : Realizes connect realizing ::> osPowerLoss to realized ::> ucDeliverPcaTherapy;
332
- connection : Composes connect parent ::> osNominalTherapy to child ::> oaCompleteNominalTherapy;
333
- connection : Composes connect parent ::> osLockoutBolus to child ::> oaRejectBolusDuringLockout;
334
- connection : Composes connect parent ::> osOcclusionAlarm to child ::> oaRespondToOcclusion;
335
- connection : Composes connect parent ::> osAirInLine to child ::> oaRespondToAirInLine;
336
- connection : Composes connect parent ::> osEmptyReservoir to child ::> oaReplaceEmptyReservoir;
337
- connection : Composes connect parent ::> osPowerLoss to child ::> oaRecoverAfterPowerLoss;
301
+
302
+ action oaRecoverAfterPowerLoss : OperativeAction {
303
+ attribute :>> name = "RecoverAfterPowerLoss";
304
+ action switchToBattery; action restorePrescription; action confirmRestart;
305
+ first start then switchToBattery; first switchToBattery then restorePrescription; first restorePrescription then confirmRestart; first confirmRestart then done;
306
+ }
307
+ }
308
+ #refinement dependency osNominalTherapy to ucDeliverPcaTherapy;
309
+ #refinement dependency osLockoutBolus to ucDeliverPcaTherapy;
310
+ #refinement dependency osOcclusionAlarm to ucDeliverPcaTherapy;
311
+ #refinement dependency osAirInLine to ucDeliverPcaTherapy;
312
+ #refinement dependency osEmptyReservoir to ucDeliverPcaTherapy;
313
+ #refinement dependency osPowerLoss to ucDeliverPcaTherapy;
314
+
315
+ // ── Operational trace relations ─────────────────────────────
316
+ connection : RealizesUseCase connect realizingWorkflow ::> wfPrepareAndStartTherapy to realizedUseCase ::> ucDeliverPcaTherapy;
317
+ connection : RealizesUseCase connect realizingWorkflow ::> wfManageActiveTherapy to realizedUseCase ::> ucDeliverPcaTherapy;
318
+ connection : RealizesUseCase connect realizingWorkflow ::> wfRespondToTherapyAlarm to realizedUseCase ::> ucDeliverPcaTherapy;
319
+ connection : EnablesUseCase connect enablingCapability ::> ocTitratedAnalgesia to enabledUseCase ::> ucDeliverPcaTherapy;
320
+ connection : EnablesUseCase connect enablingCapability ::> ocFailSafeTherapy to enabledUseCase ::> ucDeliverPcaTherapy;
321
+ connection : RequiresCapability connect requiringIntendedUse ::> gpcaIntendedUse to requiredCapability ::> ocTitratedAnalgesia;
322
+ connection : RequiresCapability connect requiringIntendedUse ::> gpcaIntendedUse to requiredCapability ::> ocFailSafeTherapy;
323
+
324
+
325
+ connection : HasScenario connect owningWorkflow ::> wfManageActiveTherapy to pathScenario ::> osNominalTherapy;
326
+ connection : HasScenario connect owningWorkflow ::> wfManageActiveTherapy to pathScenario ::> osLockoutBolus;
327
+ connection : HasScenario connect owningWorkflow ::> wfRespondToTherapyAlarm to pathScenario ::> osOcclusionAlarm;
328
+ connection : HasScenario connect owningWorkflow ::> wfRespondToTherapyAlarm to pathScenario ::> osAirInLine;
329
+ connection : HasScenario connect owningWorkflow ::> wfRespondToTherapyAlarm to pathScenario ::> osEmptyReservoir;
330
+ connection : HasScenario connect owningWorkflow ::> wfRespondToTherapyAlarm to pathScenario ::> osPowerLoss;
331
+
338
332
  }
@@ -15,39 +15,34 @@ package memo_examples_gpca_pump_gpca_physical {
15
15
  attribute :>> redundancyKind = "hardware watchdog plus independent flow cross-check";
16
16
  }
17
17
 
18
- part portSensorHarness : PhysicalPort {
18
+ in port portSensorHarness : PhysicalPort {
19
19
  attribute :>> id = "PP-001";
20
20
  attribute :>> name = "SensorHarnessConnector";
21
21
  attribute :>> portKind = InterfaceKind::digitalSignal;
22
22
  attribute :>> connectorType = "keyed 12-pin locking header";
23
- attribute :>> direction = DirectionKind::input;
24
23
  }
25
- part portMotorDrive : PhysicalPort {
24
+ out port portMotorDrive : PhysicalPort {
26
25
  attribute :>> id = "PP-002";
27
26
  attribute :>> name = "MotorDriveConnector";
28
27
  attribute :>> portKind = InterfaceKind::digitalSignal;
29
28
  attribute :>> connectorType = "keyed 6-pin locking header with enable interlock";
30
- attribute :>> direction = DirectionKind::output;
31
29
  }
32
- part portPatientPendant : PhysicalPort {
30
+ in port portPatientPendant : PhysicalPort {
33
31
  attribute :>> id = "PP-003";
34
32
  attribute :>> name = "PatientPendantJack";
35
33
  attribute :>> portKind = InterfaceKind::digitalSignal;
36
34
  attribute :>> connectorType = "latching 3.5 mm pendant jack";
37
- attribute :>> direction = DirectionKind::input;
38
35
  }
39
- part portServiceAccess : PhysicalPort {
36
+ inout port portServiceAccess : PhysicalPort {
40
37
  attribute :>> id = "PP-004";
41
38
  attribute :>> name = "ServiceMaintenancePort";
42
39
  attribute :>> portKind = InterfaceKind::api;
43
40
  attribute :>> connectorType = "covered UART/USB service connector";
44
- attribute :>> direction = DirectionKind::inputOutput;
45
41
  }
46
- part portMainsInlet : PhysicalPort {
42
+ in port portMainsInlet : PhysicalPort {
47
43
  attribute :>> id = "PP-005";
48
44
  attribute :>> name = "MainsPowerInlet";
49
45
  attribute :>> portKind = InterfaceKind::power;
50
46
  attribute :>> connectorType = "IEC 60320 C8 inlet";
51
- attribute :>> direction = DirectionKind::input;
52
47
  }
53
48
  }