@memoarchitect/ontology 0.12.1 → 0.15.0

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 (317) hide show
  1. package/README.md +5 -3
  2. package/examples/connected-patient-monitor/memo.identity.yaml +34 -0
  3. package/examples/connected-patient-monitor/memo.package.yaml +3 -1
  4. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +17 -12
  5. package/examples/connected-patient-monitor/model/{catalog → methodology}/project.sysml +4 -5
  6. package/examples/embedded-infusion-pump/memo.package.yaml +3 -1
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +6 -6
  8. package/examples/embedded-infusion-pump/model/{catalog → methodology}/project.sysml +4 -5
  9. package/examples/functional-logical-physical/memo.identity.yaml +28 -0
  10. package/examples/functional-logical-physical/memo.package.yaml +3 -1
  11. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
  12. package/examples/functional-logical-physical/model/{catalog → methodology}/project.sysml +4 -5
  13. package/examples/gpca-pump/analysis/Samples/01-model-overview.ipynb +40 -139
  14. package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +38 -290
  15. package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +47 -217
  16. package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +50 -191
  17. package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +42 -181
  18. package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +40 -164
  19. package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +51 -172
  20. package/examples/gpca-pump/analysis/Samples/README.md +15 -9
  21. package/examples/gpca-pump/analysis/memo_model.py +243 -0
  22. package/examples/gpca-pump/memo.identity.yaml +521 -26
  23. package/examples/gpca-pump/memo.package.yaml +3 -1
  24. package/examples/gpca-pump/methodology/gpca_profiles.sysml +56 -47
  25. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +51 -78
  26. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +359 -358
  27. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +9 -9
  28. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +56 -69
  29. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +44 -59
  30. package/examples/gpca-pump/model/catalog/gpca_context.sysml +23 -35
  31. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +33 -40
  32. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +62 -63
  33. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +362 -483
  34. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +45 -70
  35. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -12
  36. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +173 -169
  37. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +139 -225
  38. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +43 -47
  39. package/examples/gpca-pump/model/catalog/gpca_system.sysml +68 -65
  40. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +147 -116
  41. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +65 -91
  42. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +4 -6
  43. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +4 -6
  44. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +4 -6
  45. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +4 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +2 -4
  47. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +7 -6
  48. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +4 -6
  49. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -6
  50. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
  51. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +4 -6
  52. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +4 -6
  53. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +3 -5
  54. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +3 -5
  55. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +4 -6
  56. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +2 -4
  57. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +3 -5
  58. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +2 -4
  59. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +4 -6
  60. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -6
  61. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
  62. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +4 -6
  63. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +4 -6
  64. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
  65. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -6
  66. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +3 -5
  67. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
  68. package/examples/gpca-pump/model/{catalog → methodology}/project.sysml +8 -6
  69. package/examples/ivd-laboratory-system/memo.package.yaml +3 -1
  70. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +12 -9
  71. package/examples/ivd-laboratory-system/model/{catalog → methodology}/project.sysml +4 -5
  72. package/examples/manual-surgical-instrument/memo.package.yaml +3 -1
  73. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +2 -6
  74. package/examples/manual-surgical-instrument/model/{catalog → methodology}/project.sysml +4 -5
  75. package/examples/multidimensional-layers/memo.package.yaml +3 -1
  76. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +2 -4
  77. package/examples/multidimensional-layers/model/{catalog → methodology}/project.sysml +4 -5
  78. package/examples/nested-architecture-dsm/memo.identity.yaml +93 -0
  79. package/examples/nested-architecture-dsm/memo.package.yaml +3 -1
  80. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +30 -30
  81. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +28 -28
  82. package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +2 -4
  83. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +4 -4
  84. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +7 -7
  85. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +8 -8
  86. package/examples/nested-architecture-dsm/model/{catalog → methodology}/project.sysml +4 -5
  87. package/examples/reusable-instrument/memo.package.yaml +3 -1
  88. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -7
  89. package/examples/reusable-instrument/model/{catalog → methodology}/project.sysml +4 -5
  90. package/examples/robot-cell-family/README.md +34 -0
  91. package/examples/robot-cell-family/memo.identity.yaml +142 -0
  92. package/examples/robot-cell-family/memo.package.yaml +7 -0
  93. package/examples/robot-cell-family/model/methodology/project.sysml +30 -0
  94. package/examples/robot-cell-family/model/shared/shared.sysml +53 -0
  95. package/examples/robot-cell-family/model/sos/chains.sysml +36 -0
  96. package/examples/robot-cell-family/model/sos/icds.sysml +29 -0
  97. package/examples/robot-cell-family/model/sos/sos.sysml +31 -0
  98. package/examples/robot-cell-family/model/sos/use_cases.sysml +25 -0
  99. package/examples/robot-cell-family/model/systems/manipulation/manipulation_system.sysml +35 -0
  100. package/examples/robot-cell-family/model/systems/navigation/navigation_system.sysml +46 -0
  101. package/examples/robot-cell-family/model/systems/perception/perception_system.sysml +37 -0
  102. package/examples/robot-platform/memo.package.yaml +3 -0
  103. package/examples/robot-platform/model/platform.sysml +15 -0
  104. package/examples/ros-mobile-robot/README.md +5 -4
  105. package/examples/ros-mobile-robot/memo.identity.yaml +94 -0
  106. package/examples/ros-mobile-robot/memo.package.yaml +3 -1
  107. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +26 -29
  108. package/examples/ros-mobile-robot/model/{catalog → methodology}/project.sysml +8 -14
  109. package/examples/software-only-medical-device/memo.package.yaml +3 -1
  110. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +9 -10
  111. package/examples/software-only-medical-device/model/{catalog → methodology}/project.sysml +8 -9
  112. package/examples/surgical-closure-workflow/memo.package.yaml +3 -1
  113. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +23 -26
  114. package/examples/surgical-closure-workflow/model/{catalog → methodology}/project.sysml +7 -5
  115. package/examples/surgical-robot/memo.package.yaml +3 -1
  116. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +14 -12
  117. package/examples/surgical-robot/model/{catalog → methodology}/project.sysml +4 -5
  118. package/examples/sysml-diagram-samples/README.md +1 -0
  119. package/examples/sysml-diagram-samples/memo.identity.yaml +675 -0
  120. package/examples/sysml-diagram-samples/memo.package.yaml +3 -1
  121. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +10 -20
  122. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +7 -29
  123. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/browser_view.sysml +12 -36
  124. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +13 -25
  125. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/diagram_samples.sysml +388 -0
  126. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/drill_down_view.sysml +88 -0
  127. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +27 -36
  128. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/grid_view.sysml +8 -21
  129. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +17 -65
  130. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +23 -32
  131. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/package_view.sysml +9 -22
  132. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +7 -22
  133. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/sequence_view.sysml +18 -34
  134. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +2 -9
  135. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +18 -42
  136. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +11 -24
  137. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +9 -36
  138. package/examples/sysml-diagram-samples/model/methodology/project.sysml +40 -0
  139. package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +1 -1
  140. package/examples/temperature-alarm/memo.identity.yaml +6 -0
  141. package/examples/temperature-alarm/memo.package.yaml +3 -1
  142. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +43 -21
  143. package/examples/temperature-alarm/model/{catalog → methodology}/project.sysml +4 -5
  144. package/examples/ui-screen-regions/memo.identity.yaml +33 -0
  145. package/examples/ui-screen-regions/memo.package.yaml +3 -1
  146. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +12 -12
  147. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +18 -18
  148. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +6 -6
  149. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +3 -3
  150. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +1 -1
  151. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +1 -1
  152. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +10 -10
  153. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +1 -1
  154. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +12 -12
  155. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +15 -15
  156. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +6 -6
  157. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -2
  158. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
  159. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
  160. package/examples/ui-screen-regions/model/{catalog → methodology}/project.sysml +4 -5
  161. package/extensions/README.md +65 -16
  162. package/extensions/aadl/memo.package.yaml +1 -1
  163. package/extensions/aadl/src/aadl_extension.sysml +5 -2
  164. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +29 -50
  165. package/extensions/clinical/memo.package.yaml +1 -1
  166. package/extensions/clinical/src/clinical_extension.sysml +2 -0
  167. package/extensions/cloud/memo.package.yaml +1 -1
  168. package/extensions/container/memo.package.yaml +1 -1
  169. package/extensions/messaging/memo.package.yaml +1 -1
  170. package/extensions/messaging/src/messaging_extension.sysml +2 -2
  171. package/extensions/ros/memo.package.yaml +1 -1
  172. package/extensions/ros/src/ros_extension.sysml +25 -24
  173. package/extensions/template/memo.package.yaml +1 -1
  174. package/extensions/template/model/extension.sysml +25 -0
  175. package/memo.manifest.yaml +1 -7
  176. package/methodologies/default/memo.package.yaml +1 -1
  177. package/methodologies/gpca/memo.package.yaml +1 -1
  178. package/ontology/memo.package.yaml +1 -1
  179. package/package.json +6 -4
  180. package/profile/memo.package.yaml +1 -1
  181. package/src/architecture/decisions/memo_decisions.sysml +9 -2
  182. package/src/architecture/functional/behavior/memo_behavior.sysml +27 -7
  183. package/src/architecture/functional/functions/memo_functions.sysml +45 -31
  184. package/src/architecture/functional/memo_architecture_functional.sysml +14 -0
  185. package/src/architecture/implementation/memo_architecture_implementation.sysml +21 -0
  186. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +7 -0
  187. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +58 -17
  188. package/src/architecture/implementation/ui/memo_ui.sysml +1 -1
  189. package/src/architecture/logical/interfaces/memo_interfaces.sysml +67 -58
  190. package/src/architecture/logical/memo_architecture_logical.sysml +13 -0
  191. package/src/architecture/logical/structure/memo_logical_structure.sysml +27 -8
  192. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +4 -1
  193. package/src/architecture/operational/memo_architecture_operational.sysml +19 -0
  194. package/src/architecture/operational/scenarios/memo_scenarios.sysml +9 -8
  195. package/src/architecture/operational/structure/memo_operational.sysml +5 -2
  196. package/src/architecture/operational/use_cases/memo_use_cases.sysml +16 -8
  197. package/src/architecture/realization/deployment/memo_deployment.sysml +30 -10
  198. package/src/architecture/realization/memo_architecture_realization.sysml +13 -0
  199. package/src/architecture/realization/physical/memo_physical_architecture.sysml +61 -0
  200. package/src/architecture/variability/memo_variability.sysml +87 -0
  201. package/src/artifacts/configuration_management/memo_configuration_management.sysml +95 -3
  202. package/src/artifacts/core/memo_controlled_artifacts.sysml +4 -2
  203. package/src/artifacts/standards/cfr_21_820.sysml +12 -24
  204. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +13 -20
  205. package/src/artifacts/standards/iec_60601_1.sysml +16 -32
  206. package/src/artifacts/standards/iec_60601_1_2.sysml +5 -10
  207. package/src/artifacts/standards/iec_60812.sysml +4 -8
  208. package/src/artifacts/standards/iec_62304.sysml +607 -47
  209. package/src/artifacts/standards/iec_62366_1.sysml +12 -24
  210. package/src/artifacts/standards/iec_81001_5_1.sysml +8 -16
  211. package/src/artifacts/standards/iso_13485.sysml +12 -24
  212. package/src/artifacts/standards/iso_14971.sysml +118 -20
  213. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +3 -6
  214. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +14 -4
  215. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +1 -2
  216. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +1 -2
  217. package/src/artifacts/templates/dhf/iec-62304/sad.md +1 -2
  218. package/src/artifacts/templates/dhf/iec-62304/sbom.md +1 -2
  219. package/src/artifacts/templates/dhf/iec-62304/sdp.md +1 -2
  220. package/src/artifacts/templates/dhf/iec-62304/soup.md +3 -5
  221. package/src/artifacts/templates/dhf/system/sad.md +1 -1
  222. package/src/artifacts/templates/dhf/system/standards-checklist.md +2 -2
  223. package/src/artifacts/templates/dhf/system/standards-traceability.md +1 -1
  224. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +339 -13
  225. package/src/assurance/human_factors/memo_human_factors.sysml +6 -2
  226. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +7 -3
  227. package/src/assurance/safety_risk/memo_risk.sysml +39 -1
  228. package/src/core/common/memo_common.sysml +51 -68
  229. package/src/core/enumerations/memo_enumerations.sysml +93 -9
  230. package/src/core/relationships/memo_relationships.sysml +17 -11
  231. package/src/core/relationships/memo_workspace_membership.sysml +284 -0
  232. package/src/core/semantics/semantics.sysml +58 -0
  233. package/src/core/terminology/terminology.sysml +7 -0
  234. package/src/memo_namespaces.sysml +6 -0
  235. package/src/methodology/archetypes/memo_archetypes.sysml +8 -16
  236. package/src/methodology/core/memo_core.sysml +85 -29
  237. package/src/methodology/profiles/memo_profiles.sysml +217 -61
  238. package/src/methodology/workflow/memo_workflow.sysml +28 -0
  239. package/src/rules/closure/closure_rules.sysml +250 -4
  240. package/src/rules/crosslayer/cross_layer_rules.sysml +11 -0
  241. package/src/rules/ontology/ontology_invariants.sysml +288 -48
  242. package/src/rules/quantitative/quantitative_rules.sysml +4 -0
  243. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +28 -28
  244. package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -5
  245. package/src/viewpoints/context/context_viewpoint.sysml +4 -5
  246. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +3 -5
  247. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -5
  248. package/src/viewpoints/definitions/memo_view_layout.sysml +150 -0
  249. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +3 -5
  250. package/src/viewpoints/functional/functional_viewpoint.sysml +4 -5
  251. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -4
  252. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -4
  253. package/src/viewpoints/logical/logical_viewpoint.sysml +4 -5
  254. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +2 -4
  255. package/src/viewpoints/operational/operational_viewpoint.sysml +4 -5
  256. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +3 -5
  257. package/src/viewpoints/physical/physical_viewpoint.sysml +4 -5
  258. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +2 -4
  259. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +2 -4
  260. package/src/viewpoints/rendering/memo_rendering.sysml +50 -98
  261. package/src/viewpoints/requirements/requirements_viewpoint.sysml +4 -5
  262. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +2 -4
  263. package/src/viewpoints/risk/risk_viewpoint.sysml +4 -5
  264. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +2 -4
  265. package/src/viewpoints/software/software_viewpoint.sysml +4 -5
  266. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +3 -5
  267. package/src/viewpoints/{definitions → stakeholders_concerns}/memo_stakeholders_concerns.sysml +45 -36
  268. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +4 -5
  269. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +1 -1
  270. package/src/viewpoints/usability/usability_viewpoint.sysml +4 -5
  271. package/src/viewpoints/verification/verification_viewpoint.sysml +4 -5
  272. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -4
  273. package/stage1/syside-67f92dc96ba75cd05b5c8d13.ids.gz +0 -0
  274. package/stage1/syside-67f92dc96ba75cd05b5c8d13.json.gz +0 -0
  275. package/templates/default/memo.package.yaml +6 -1
  276. package/templates/default/model/catalog/architecture/system.sysml +7 -3
  277. package/templates/default/model/{catalog → methodology}/project.sysml +3 -4
  278. package/examples/sysml-diagram-samples/model/catalog/project.sysml +0 -26
  279. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +0 -47
  280. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +0 -94
  281. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +0 -13
  282. package/examples/ui-screen-regions/model/catalog/relationships.sysml +0 -8
  283. package/extensions/aadl/src/methodology/aadl_methodology.sysml +0 -19
  284. package/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -24
  285. package/extensions/cloud/src/methodology/cloud_methodology.sysml +0 -19
  286. package/extensions/container/src/methodology/container_methodology.sysml +0 -19
  287. package/extensions/messaging/src/methodology/messaging_methodology.sysml +0 -19
  288. package/extensions/ros/src/methodology/ros_methodology.sysml +0 -27
  289. package/extensions/template/src/extension.sysml +0 -39
  290. package/templates/connected-device/memo.package.yaml +0 -13
  291. package/templates/connected-device/model/catalog/architecture/system.sysml +0 -5
  292. package/templates/connected-device/model/catalog/artifacts/catalog.sysml +0 -5
  293. package/templates/connected-device/model/catalog/assurance/requirements.sysml +0 -7
  294. package/templates/connected-device/model/catalog/project.sysml +0 -30
  295. package/templates/connected-device/package.json +0 -8
  296. package/templates/connected-device/syside.toml +0 -13
  297. package/templates/infusion-pump/memo.package.yaml +0 -13
  298. package/templates/infusion-pump/model/catalog/architecture/system.sysml +0 -5
  299. package/templates/infusion-pump/model/catalog/artifacts/catalog.sysml +0 -5
  300. package/templates/infusion-pump/model/catalog/assurance/requirements.sysml +0 -7
  301. package/templates/infusion-pump/model/catalog/project.sysml +0 -30
  302. package/templates/infusion-pump/package.json +0 -8
  303. package/templates/infusion-pump/syside.toml +0 -13
  304. package/templates/monitoring-device/memo.package.yaml +0 -13
  305. package/templates/monitoring-device/model/catalog/architecture/system.sysml +0 -5
  306. package/templates/monitoring-device/model/catalog/artifacts/catalog.sysml +0 -5
  307. package/templates/monitoring-device/model/catalog/assurance/requirements.sysml +0 -7
  308. package/templates/monitoring-device/model/catalog/project.sysml +0 -30
  309. package/templates/monitoring-device/package.json +0 -8
  310. package/templates/monitoring-device/syside.toml +0 -13
  311. package/templates/samd/memo.package.yaml +0 -13
  312. package/templates/samd/model/catalog/architecture/system.sysml +0 -5
  313. package/templates/samd/model/catalog/artifacts/catalog.sysml +0 -5
  314. package/templates/samd/model/catalog/assurance/requirements.sysml +0 -7
  315. package/templates/samd/model/catalog/project.sysml +0 -30
  316. package/templates/samd/package.json +0 -8
  317. package/templates/samd/syside.toml +0 -13
@@ -14,24 +14,22 @@ package memo_examples_gpca_pump_gpca_operational {
14
14
 
15
15
  private import memo_core_common::*;
16
16
  private import memo_core_common::MemoIdentity;
17
+ private import memo_architecture_logical_interfaces::InterfaceItem;
17
18
  // ── Operational entities beyond the human actors ────────────
18
19
  part entityPharmacy : OperationalEntity {
19
- @MemoIdentity { :>> providedId = "OE-001"; }
20
- attribute :>> name = "HospitalPharmacy";
20
+ @MemoIdentity { :>> providedId = "OE-001"; :>> label = "HospitalPharmacy"; }
21
21
  attribute :>> entityKind = OperationalEntityKind::externalSystem;
22
22
  attribute :>> operationalDomain = "medication management";
23
23
  attribute :>> responsibility = "Prepares labeled drug reservoirs and maintains the hospital pharmacy database of drug safe values.";
24
24
  }
25
25
  part entityPowerInfrastructure : OperationalEntity {
26
- @MemoIdentity { :>> providedId = "OE-002"; }
27
- attribute :>> name = "WardPowerInfrastructure";
26
+ @MemoIdentity { :>> providedId = "OE-002"; :>> label = "WardPowerInfrastructure"; }
28
27
  attribute :>> entityKind = OperationalEntityKind::environmentalEntity;
29
28
  attribute :>> operationalDomain = "facility power";
30
29
  attribute :>> responsibility = "Provides mains power; outages are a foreseeable operational condition.";
31
30
  }
32
31
  part entityGpcaPump : OperationalEntity {
33
- @MemoIdentity { :>> providedId = "OE-003"; }
34
- attribute :>> name = "GPCA_Pump";
32
+ @MemoIdentity { :>> providedId = "OE-003"; :>> label = "GPCA_Pump"; }
35
33
  attribute :>> entityKind = OperationalEntityKind::device;
36
34
  attribute :>> operationalDomain = "patient-controlled analgesia therapy";
37
35
  attribute :>> responsibility = "System of interest: delivers programmed basal and bolus analgesia subject to prescription limits.";
@@ -39,40 +37,35 @@ package memo_examples_gpca_pump_gpca_operational {
39
37
 
40
38
  // ── External entities per CriSys Fig 2.1 ────────────────────
41
39
  part entityPharmacyDb : OperationalEntity {
42
- @MemoIdentity { :>> providedId = "OE-004"; }
43
- attribute :>> name = "HospitalPharmacyDatabase";
40
+ @MemoIdentity { :>> providedId = "OE-004"; :>> label = "HospitalPharmacyDatabase"; }
44
41
  attribute :>> entityKind = OperationalEntityKind::externalSystem;
45
42
  attribute :>> operationalDomain = "medication safety data";
46
43
  attribute :>> responsibility = "Repository of drug information from manufacturers; stores the safe value ranges for all drugs usable for infusion, retrieved by the GPCA for the programmed drug.";
47
44
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.1 and §3.5"; }
48
45
  }
49
46
  part entityDrugReservoir : OperationalEntity {
50
- @MemoIdentity { :>> providedId = "OE-005"; }
51
- attribute :>> name = "DrugReservoir";
47
+ @MemoIdentity { :>> providedId = "OE-005"; :>> label = "DrugReservoir"; }
52
48
  attribute :>> entityKind = OperationalEntityKind::device;
53
49
  attribute :>> operationalDomain = "drug storage";
54
50
  attribute :>> responsibility = "Apparatus storing the liquid analgesic drug to be infused; filled according to the prescription and connected to the GPCA by the clinician.";
55
51
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.1"; }
56
52
  }
57
53
  part entityNeedle : OperationalEntity {
58
- @MemoIdentity { :>> providedId = "OE-006"; }
59
- attribute :>> name = "InfusionNeedle";
54
+ @MemoIdentity { :>> providedId = "OE-006"; :>> label = "InfusionNeedle"; }
60
55
  attribute :>> entityKind = OperationalEntityKind::device;
61
56
  attribute :>> operationalDomain = "drug delivery path";
62
57
  attribute :>> responsibility = "Intravenous needle inserted into the patient by the clinician and connected to the GPCA standard CCC connection point (I 5) to infuse the drug.";
63
58
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.1 and §3.3 (I 5)"; }
64
59
  }
65
60
  part entityPrescription : OperationalEntity {
66
- @MemoIdentity { :>> providedId = "OE-007"; }
67
- attribute :>> name = "Prescription";
61
+ @MemoIdentity { :>> providedId = "OE-007"; :>> label = "Prescription"; }
68
62
  attribute :>> entityKind = OperationalEntityKind::informationArtifact;
69
63
  attribute :>> operationalDomain = "plan of care";
70
64
  attribute :>> responsibility = "Instructions governing the plan of care for an individual patient: the drug to be infused and all administration details; provided by a certified medical practitioner.";
71
65
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.1"; }
72
66
  }
73
67
  part entityHospital : OperationalEntity {
74
- @MemoIdentity { :>> providedId = "OE-008"; }
75
- attribute :>> name = "Hospital";
68
+ @MemoIdentity { :>> providedId = "OE-008"; :>> label = "Hospital"; }
76
69
  attribute :>> entityKind = OperationalEntityKind::environmentalEntity;
77
70
  attribute :>> operationalDomain = "care environment boundary";
78
71
  attribute :>> responsibility = "Environment boundary: fixed (non-ambulatory) usage location with authorized clinicians and the pharmacy database holding drug safe values.";
@@ -81,64 +74,57 @@ package memo_examples_gpca_pump_gpca_operational {
81
74
 
82
75
  // ── Operational activities (therapy lifecycle) ──────────────
83
76
  action oaPrescribe : OperativeAction {
84
- @MemoIdentity { :>> providedId = "OA-001"; }
85
- attribute :>> name = "PrescribeTherapy";
77
+ @MemoIdentity { :>> providedId = "OA-001"; :>> label = "PrescribeTherapy"; }
86
78
  attribute :>> trigger = "patient requires titrated analgesia";
87
79
  attribute :>> preCondition = "patient assessed; drug has safe-value records in the hospital pharmacy database";
88
80
  attribute :>> postCondition = "prescription with basal rate, bolus volume, lockout, and max dose limits exists";
89
81
  attribute :>> criticality = CriticalityKind::high;
90
82
  }
91
83
  action oaLoadReservoir : OperativeAction {
92
- @MemoIdentity { :>> providedId = "OA-002"; }
93
- attribute :>> name = "LoadDrugReservoir";
84
+ @MemoIdentity { :>> providedId = "OA-002"; :>> label = "LoadDrugReservoir"; }
94
85
  attribute :>> trigger = "prescription issued or reservoir empty";
95
86
  attribute :>> preCondition = "labeled reservoir prepared by pharmacy";
96
87
  attribute :>> postCondition = "reservoir mounted, door closed and latched";
97
88
  attribute :>> criticality = CriticalityKind::high;
98
89
  }
99
90
  action oaProgram : OperativeAction {
100
- @MemoIdentity { :>> providedId = "OA-003"; }
101
- attribute :>> name = "ProgramPrescription";
91
+ @MemoIdentity { :>> providedId = "OA-003"; :>> label = "ProgramPrescription"; }
92
+ out prescriptionOut : InterfaceItem;
102
93
  attribute :>> trigger = "reservoir loaded";
103
94
  attribute :>> preCondition = "pump in IDLE; clinician authenticated by key or code";
104
95
  attribute :>> postCondition = "prescription entered, checked against pharmacy-database safe values (I 9-I 11), and confirmed by second review";
105
96
  attribute :>> criticality = CriticalityKind::catastrophic;
106
97
  }
107
98
  action oaStartTherapy : OperativeAction {
108
- @MemoIdentity { :>> providedId = "OA-004"; }
109
- attribute :>> name = "StartInfusion";
99
+ @MemoIdentity { :>> providedId = "OA-004"; :>> label = "StartInfusion"; }
110
100
  attribute :>> trigger = "prescription confirmed";
111
101
  attribute :>> preCondition = "confirmed prescription saved; no active alarm";
112
102
  attribute :>> postCondition = "basal infusion running";
113
103
  attribute :>> criticality = CriticalityKind::catastrophic;
114
104
  }
115
105
  action oaRequestBolus : OperativeAction {
116
- @MemoIdentity { :>> providedId = "OA-005"; }
117
- attribute :>> name = "RequestPatientBolus";
106
+ @MemoIdentity { :>> providedId = "OA-005"; :>> label = "RequestPatientBolus"; }
118
107
  attribute :>> trigger = "patient presses bolus request button";
119
108
  attribute :>> preCondition = "therapy active";
120
109
  attribute :>> postCondition = "bolus delivered, or request ignored when lockout or max-dose limits apply";
121
110
  attribute :>> criticality = CriticalityKind::catastrophic;
122
111
  }
123
112
  action oaRespondAlarm : OperativeAction {
124
- @MemoIdentity { :>> providedId = "OA-006"; }
125
- attribute :>> name = "RespondToAlarm";
113
+ @MemoIdentity { :>> providedId = "OA-006"; :>> label = "RespondToAlarm"; }
126
114
  attribute :>> trigger = "audible or visual alarm annunciated";
127
115
  attribute :>> preCondition = "alarm condition raised by the pump";
128
116
  attribute :>> postCondition = "cause resolved and therapy resumed, or therapy stopped";
129
117
  attribute :>> criticality = CriticalityKind::catastrophic;
130
118
  }
131
119
  action oaReviewLog : OperativeAction {
132
- @MemoIdentity { :>> providedId = "OA-007"; }
133
- attribute :>> name = "ReviewEventLog";
120
+ @MemoIdentity { :>> providedId = "OA-007"; :>> label = "ReviewEventLog"; }
134
121
  attribute :>> trigger = "shift change, incident review, or dose audit";
135
122
  attribute :>> preCondition = "event log populated during therapy";
136
123
  attribute :>> postCondition = "delivered doses and alarm history reviewed";
137
124
  attribute :>> criticality = CriticalityKind::medium;
138
125
  }
139
126
  action oaMaintain : OperativeAction {
140
- @MemoIdentity { :>> providedId = "OA-008"; }
141
- attribute :>> name = "MaintainDevice";
127
+ @MemoIdentity { :>> providedId = "OA-008"; :>> label = "MaintainDevice"; }
142
128
  attribute :>> trigger = "scheduled maintenance or fault";
143
129
  attribute :>> preCondition = "pump out of clinical use; technician authenticated";
144
130
  attribute :>> postCondition = "battery, calibration, and pharmacy-database connection verified";
@@ -150,13 +136,10 @@ package memo_examples_gpca_pump_gpca_operational {
150
136
  // several workflows, each of which owns multiple selected scenarios.
151
137
  use case ucDeliverPcaTherapy : UseCase {
152
138
  attribute :>> useCaseKind = UseCaseKind::clinical;
153
- @MemoIdentity { :>> providedId = "UC-001"; }
154
- attribute :>> name = "DeliverPatientControlledAnalgesia";
139
+ @MemoIdentity { :>> providedId = "UC-001"; :>> label = "DeliverPatientControlledAnalgesia"; }
155
140
  attribute :>> goalStatement = "Deliver prescribed analgesia safely while allowing patient-controlled bolus requests within configured limits.";
156
141
  attribute :>> trigger = "A clinician starts prescribed patient-controlled analgesia therapy.";
157
142
  attribute :>> successOutcome = "The patient receives prescribed analgesia without exceeding dose, lockout, or safety limits.";
158
- ref :>> primaryUser = actorNurse;
159
- ref :>> supportingActors = (actorPatient, actorPrescriber, actorPharmacist);
160
143
  ref :>> useContext = hospitalWardContext;
161
144
  subject supportingSystem;
162
145
  actor nurseInitiator = actorNurse;
@@ -166,14 +149,14 @@ package memo_examples_gpca_pump_gpca_operational {
166
149
  }
167
150
 
168
151
  action wfPrepareAndStartTherapy : OperationalWorkflow {
169
- attribute :>> name = "PrepareAndStartTherapy";
152
+ @MemoIdentity { :>> label = "PrepareAndStartTherapy"; }
170
153
  attribute :>> workflowState = WorkflowStateKind::toBe;
171
154
  attribute :>> entryCondition = "A valid prescription and prepared reservoir are available.";
172
155
  attribute :>> completionCondition = "Therapy is started with confirmed prescription limits.";
173
156
 
174
157
  }
175
158
  action wfManageActiveTherapy : OperationalWorkflow {
176
- attribute :>> name = "ManageActiveTherapy";
159
+ @MemoIdentity { :>> label = "ManageActiveTherapy"; }
177
160
  attribute :>> workflowState = WorkflowStateKind::toBe;
178
161
  attribute :>> entryCondition = "Basal therapy is active.";
179
162
  attribute :>> completionCondition = "A bolus is handled or active therapy continues safely.";
@@ -182,107 +165,101 @@ package memo_examples_gpca_pump_gpca_operational {
182
165
  // `to` end does not accept a qualified path — so this is written
183
166
  // inside wsRequestBolus's own owning scope rather than at package
184
167
  // level.
185
- #refinement dependency fcsBolusSense to oaRequestBolus;
186
- #refinement dependency fcsBolusValidate to oaRequestBolus;
187
- #refinement dependency fcsBolusCommand to oaRequestBolus;
188
- #refinement dependency fcsBolusActuate to oaRequestBolus;
189
- #refinement dependency fcsBolusLog to oaRequestBolus;
168
+ #refinement dependency fcPatientBolus::fcsBolusSense to oaRequestBolus;
169
+ #refinement dependency fcPatientBolus::fcsBolusValidate to oaRequestBolus;
170
+ #refinement dependency fcPatientBolus::fcsBolusCommand to oaRequestBolus;
171
+ #refinement dependency fcPatientBolus::fcsBolusActuate to oaRequestBolus;
172
+ #refinement dependency fcPatientBolus::fcsBolusLog to oaRequestBolus;
190
173
  action osNominalTherapy : OperativeScenario {
191
- @MemoIdentity { :>> providedId = "OS-001"; }
192
- attribute :>> name = "NominalTherapySession";
174
+ @MemoIdentity { :>> providedId = "OS-001"; :>> label = "NominalTherapySession"; }
193
175
  attribute :>> preCondition = "prescription issued, reservoir loaded";
194
176
  attribute :>> postCondition = "therapy completed and stopped by clinician";
195
177
  attribute :>> pathSummary = "Prescribe > load reservoir > program and confirm > start basal > patient boluses within limits > stop therapy > review log.";
196
178
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.2 Main GPCA System Functions"; }
197
179
 
198
180
  action oaCompleteNominalTherapy : OperativeAction {
199
- attribute :>> name = "CompleteNominalTherapy";
181
+ @MemoIdentity { :>> label = "CompleteNominalTherapy"; }
200
182
  action deliverWithinLimits; action recordTherapyEvent;
201
183
  first start then deliverWithinLimits; first deliverWithinLimits then recordTherapyEvent; first recordTherapyEvent then done;
202
184
  }
203
185
  }
204
186
  action osLockoutBolus : OperativeScenario {
205
187
  attribute :>> scenarioKind = ScenarioKind::alternate;
206
- @MemoIdentity { :>> providedId = "OS-002"; }
207
- attribute :>> name = "BolusRequestDuringLockout";
188
+ @MemoIdentity { :>> providedId = "OS-002"; :>> label = "BolusRequestDuringLockout"; }
208
189
  attribute :>> preCondition = "basal infusion active; lockout interval running";
209
190
  attribute :>> postCondition = "request ignored, logged; basal continues unchanged";
210
191
  attribute :>> pathSummary = "Patient presses bolus button during lockout > infusion manager rejects request > event logged > no additional drug delivered.";
211
192
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.9 PATIENT BOLUS mode (lockout requirements)"; }
212
193
 
213
194
  action oaRejectBolusDuringLockout : OperativeAction {
214
- attribute :>> name = "RejectBolusDuringLockout";
195
+ @MemoIdentity { :>> label = "RejectBolusDuringLockout"; }
215
196
  action checkLockout; action rejectAndLog;
216
197
  first start then checkLockout; first checkLockout then rejectAndLog; first rejectAndLog then done;
217
198
  }
218
199
  }
219
200
  }
220
201
  action wfRespondToTherapyAlarm : OperationalWorkflow {
221
- attribute :>> name = "RespondToTherapyAlarm";
202
+ @MemoIdentity { :>> label = "RespondToTherapyAlarm"; }
222
203
  attribute :>> workflowState = WorkflowStateKind::toBe;
223
204
  attribute :>> entryCondition = "A therapy alarm or degraded condition is detected.";
224
205
  attribute :>> completionCondition = "The pump is safe and the clinician has resolved or escalated the condition.";
225
206
 
226
- #refinement dependency fcsAlarmSense to oaRespondAlarm;
227
- #refinement dependency fcsAlarmEvaluate to oaRespondAlarm;
228
- #refinement dependency fcsAlarmStopInfusion to oaRespondAlarm;
229
- #refinement dependency fcsAlarmAnnunciate to oaRespondAlarm;
207
+ #refinement dependency fcAlarmStop::fcsAlarmSense to oaRespondAlarm;
208
+ #refinement dependency fcAlarmStop::fcsAlarmEvaluate to oaRespondAlarm;
209
+ #refinement dependency fcAlarmStop::fcsAlarmStopInfusion to oaRespondAlarm;
210
+ #refinement dependency fcAlarmStop::fcsAlarmAnnunciate to oaRespondAlarm;
230
211
  action osOcclusionAlarm : OperativeScenario {
231
212
  attribute :>> scenarioKind = ScenarioKind::alternate;
232
- @MemoIdentity { :>> providedId = "OS-003"; }
233
- attribute :>> name = "OcclusionDetectedDuringInfusion";
213
+ @MemoIdentity { :>> providedId = "OS-003"; :>> label = "OcclusionDetectedDuringInfusion"; }
234
214
  attribute :>> preCondition = "therapy active; downstream line becomes blocked";
235
215
  attribute :>> postCondition = "infusion paused, alarm annunciated, clinician clears occlusion and resumes";
236
216
  attribute :>> pathSummary = "Occlusion sensor exceeds pressure threshold > alarm raised same step > infusion paused > audible and visual annunciation > clinician resolves and resumes.";
237
217
  @MemoIdentity { :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.2 Alarms and Alerts (occlusion)"; }
238
218
 
239
219
  action oaRespondToOcclusion : OperativeAction {
240
- attribute :>> name = "RespondToOcclusion";
220
+ @MemoIdentity { :>> label = "RespondToOcclusion"; }
241
221
  action pauseInfusion; action annunciateOcclusion; action resolveAndResume;
242
222
  first start then pauseInfusion; first pauseInfusion then annunciateOcclusion; first annunciateOcclusion then resolveAndResume; first resolveAndResume then done;
243
223
  }
244
224
  }
245
225
  action osAirInLine : OperativeScenario {
246
226
  attribute :>> scenarioKind = ScenarioKind::alternate;
247
- @MemoIdentity { :>> providedId = "OS-004"; }
248
- attribute :>> name = "AirInLineDetected";
227
+ @MemoIdentity { :>> providedId = "OS-004"; :>> label = "AirInLineDetected"; }
249
228
  attribute :>> preCondition = "therapy active; air bubble enters tubing";
250
229
  attribute :>> postCondition = "infusion stopped before air reaches patient; alarm annunciated";
251
230
  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.";
252
231
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 Notification Requirements (REQ 59: Air embolism)"; }
253
232
 
254
233
  action oaRespondToAirInLine : OperativeAction {
255
- attribute :>> name = "RespondToAirInLine";
234
+ @MemoIdentity { :>> label = "RespondToAirInLine"; }
256
235
  action stopOrKvo; action annunciateAir; action reprimeAndRestart;
257
236
  first start then stopOrKvo; first stopOrKvo then annunciateAir; first annunciateAir then reprimeAndRestart; first reprimeAndRestart then done;
258
237
  }
259
238
  }
260
239
  action osEmptyReservoir : OperativeScenario {
261
240
  attribute :>> scenarioKind = ScenarioKind::alternate;
262
- @MemoIdentity { :>> providedId = "OS-005"; }
263
- attribute :>> name = "ReservoirEmptyDuringTherapy";
241
+ @MemoIdentity { :>> providedId = "OS-005"; :>> label = "ReservoirEmptyDuringTherapy"; }
264
242
  attribute :>> preCondition = "therapy active; reservoir volume reaches empty threshold";
265
243
  attribute :>> postCondition = "infusion stopped, alarm raised, reservoir replaced";
266
244
  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.";
267
245
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 Notification Requirements (REQ 59: Empty Reservoir)"; }
268
246
 
269
247
  action oaReplaceEmptyReservoir : OperativeAction {
270
- attribute :>> name = "ReplaceEmptyReservoir";
248
+ @MemoIdentity { :>> label = "ReplaceEmptyReservoir"; }
271
249
  action stopAndAnnunciate; action replaceReservoir; action resumeTherapy;
272
250
  first start then stopAndAnnunciate; first stopAndAnnunciate then replaceReservoir; first replaceReservoir then resumeTherapy; first resumeTherapy then done;
273
251
  }
274
252
  }
275
253
  action osPowerLoss : OperativeScenario {
276
254
  attribute :>> scenarioKind = ScenarioKind::alternate;
277
- @MemoIdentity { :>> providedId = "OS-006"; }
278
- attribute :>> name = "MainsPowerLossAndRecovery";
255
+ @MemoIdentity { :>> providedId = "OS-006"; :>> label = "MainsPowerLossAndRecovery"; }
279
256
  attribute :>> preCondition = "therapy active on mains power";
280
257
  attribute :>> postCondition = "therapy continues on battery; prescription preserved across full power loss";
281
258
  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.";
282
259
  @MemoIdentity { :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.3 Electrical Hazards (battery failure)"; }
283
260
 
284
261
  action oaRecoverAfterPowerLoss : OperativeAction {
285
- attribute :>> name = "RecoverAfterPowerLoss";
262
+ @MemoIdentity { :>> label = "RecoverAfterPowerLoss"; }
286
263
  action switchToBattery; action restorePrescription; action confirmRestart;
287
264
  first start then switchToBattery; first switchToBattery then restorePrescription; first restorePrescription then confirmRestart; first confirmRestart then done;
288
265
  }
@@ -292,15 +269,13 @@ package memo_examples_gpca_pump_gpca_operational {
292
269
 
293
270
  // ── Operational capabilities ────────────────────────────────
294
271
  part ocTitratedAnalgesia : OperationalCapability {
295
- @MemoIdentity { :>> providedId = "OC-001"; }
296
- attribute :>> name = "DeliverTitratedAnalgesia";
272
+ @MemoIdentity { :>> providedId = "OC-001"; :>> label = "DeliverTitratedAnalgesia"; }
297
273
  attribute :>> capabilityLevel = "primary";
298
274
  attribute :>> preCondition = "confirmed prescription and loaded reservoir";
299
275
  attribute :>> postCondition = "drug delivered within prescribed limits at all times";
300
276
  }
301
277
  part ocFailSafeTherapy : OperationalCapability {
302
- @MemoIdentity { :>> providedId = "OC-002"; }
303
- attribute :>> name = "FailSafeTherapyManagement";
278
+ @MemoIdentity { :>> providedId = "OC-002"; :>> label = "FailSafeTherapyManagement"; }
304
279
  attribute :>> capabilityLevel = "safety";
305
280
  attribute :>> preCondition = "any single failure or foreseeable misuse";
306
281
  attribute :>> postCondition = "pump reaches a safe state (infusion stopped or paused) and the operator is alerted";
@@ -7,8 +7,7 @@ package memo_examples_gpca_pump_gpca_physical {
7
7
  private import memo_core_common::*;
8
8
  private import memo_core_common::MemoIdentity;
9
9
  part mainController : ProcessingNode {
10
- @MemoIdentity { :>> providedId = "PN-001"; }
11
- attribute :>> name = "MainControllerMCU";
10
+ @MemoIdentity { :>> providedId = "PN-001"; :>> label = "MainControllerMCU"; }
12
11
  attribute :>> nodeKind = ProcessingNodeKind::microcontroller;
13
12
  attribute :>> processorArchitecture = "ARM Cortex-M4, lockstep-capable";
14
13
  attribute :>> memoryMB = "1 MB flash / 256 KB SRAM with ECC";
@@ -18,32 +17,27 @@ package memo_examples_gpca_pump_gpca_physical {
18
17
  }
19
18
 
20
19
  in port portSensorHarness : PhysicalPort {
21
- @MemoIdentity { :>> providedId = "PP-001"; }
22
- attribute :>> name = "SensorHarnessConnector";
20
+ @MemoIdentity { :>> providedId = "PP-001"; :>> label = "SensorHarnessConnector"; }
23
21
  attribute :>> portKind = InterfaceKind::digitalSignal;
24
22
  attribute :>> connectorType = "keyed 12-pin locking header";
25
23
  }
26
24
  out port portMotorDrive : PhysicalPort {
27
- @MemoIdentity { :>> providedId = "PP-002"; }
28
- attribute :>> name = "MotorDriveConnector";
25
+ @MemoIdentity { :>> providedId = "PP-002"; :>> label = "MotorDriveConnector"; }
29
26
  attribute :>> portKind = InterfaceKind::digitalSignal;
30
27
  attribute :>> connectorType = "keyed 6-pin locking header with enable interlock";
31
28
  }
32
29
  in port portPatientPendant : PhysicalPort {
33
- @MemoIdentity { :>> providedId = "PP-003"; }
34
- attribute :>> name = "PatientPendantJack";
30
+ @MemoIdentity { :>> providedId = "PP-003"; :>> label = "PatientPendantJack"; }
35
31
  attribute :>> portKind = InterfaceKind::digitalSignal;
36
32
  attribute :>> connectorType = "latching 3.5 mm pendant jack";
37
33
  }
38
34
  inout port portServiceAccess : PhysicalPort {
39
- @MemoIdentity { :>> providedId = "PP-004"; }
40
- attribute :>> name = "ServiceMaintenancePort";
35
+ @MemoIdentity { :>> providedId = "PP-004"; :>> label = "ServiceMaintenancePort"; }
41
36
  attribute :>> portKind = InterfaceKind::api;
42
37
  attribute :>> connectorType = "covered UART/USB service connector";
43
38
  }
44
39
  in port portMainsInlet : PhysicalPort {
45
- @MemoIdentity { :>> providedId = "PP-005"; }
46
- attribute :>> name = "MainsPowerInlet";
40
+ @MemoIdentity { :>> providedId = "PP-005"; :>> label = "MainsPowerInlet"; }
47
41
  attribute :>> portKind = InterfaceKind::power;
48
42
  attribute :>> connectorType = "IEC 60320 C8 inlet";
49
43
  }