@memoarchitect/ontology 0.6.5 → 0.8.22

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 (394) hide show
  1. package/README.md +4 -2
  2. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
  3. package/examples/connected-patient-monitor/model/catalog/project.sysml +24 -0
  4. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  5. package/examples/connected-patient-monitor/model/{viewpoints → catalog/viewpoints/unassigned/views}/connected_patient_monitor_overview.sysml +1 -1
  6. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +7 -5
  7. package/examples/embedded-infusion-pump/model/catalog/project.sysml +24 -0
  8. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  9. package/examples/embedded-infusion-pump/model/{viewpoints → catalog/viewpoints/unassigned/views}/embedded_infusion_pump_overview.sysml +1 -1
  10. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
  11. package/examples/functional-logical-physical/model/catalog/project.sysml +24 -0
  12. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  13. package/examples/functional-logical-physical/model/{viewpoints → catalog/viewpoints/unassigned/views}/functional_logical_physical_overview.sysml +1 -1
  14. package/examples/gpca-pump/methodology/gpca_methodology.sysml +7 -8
  15. package/examples/gpca-pump/methodology/gpca_profiles.sysml +89 -11
  16. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +19 -9
  17. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +342 -100
  18. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +27 -13
  19. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +329 -272
  20. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +57 -16
  21. package/examples/gpca-pump/model/catalog/gpca_context.sysml +12 -8
  22. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +14 -10
  23. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +1 -15
  24. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +181 -264
  25. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +95 -60
  26. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -11
  27. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +102 -101
  28. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +1 -1
  29. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
  30. package/examples/gpca-pump/model/catalog/gpca_system.sysml +47 -30
  31. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +301 -354
  32. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +116 -36
  33. package/examples/gpca-pump/model/catalog/project.sysml +26 -0
  34. package/examples/gpca-pump/model/catalog/viewpoints/context/viewpoint.sysml +8 -0
  35. package/examples/gpca-pump/model/{views → catalog/viewpoints/context/views}/context_system_context_view.sysml +4 -4
  36. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/viewpoint.sysml +8 -0
  37. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/cybersecurity_cybersecurity_view.sysml +4 -4
  38. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_cyber_assessment_view.sysml +4 -4
  39. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_threat_model_view.sysml +5 -5
  40. package/examples/gpca-pump/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
  41. package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_allocation_view.sysml +2 -2
  42. package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_browser_view.sysml +3 -3
  43. package/examples/gpca-pump/model/catalog/viewpoints/logical/viewpoint.sysml +8 -0
  44. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/behavior_action_flow_view.sysml +3 -3
  45. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/document_architecture_description_view.sysml +8 -8
  46. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_device_interconnect_view.sysml +5 -5
  47. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_logical_architecture_view.sysml +3 -3
  48. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_mode_state_view.sysml +4 -4
  49. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_system_decomposition_view.sysml +3 -3
  50. package/examples/gpca-pump/model/catalog/viewpoints/operational/viewpoint.sysml +8 -0
  51. package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_scenario_sequence_view.sysml +3 -3
  52. package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_use_case_view.sysml +4 -4
  53. package/examples/gpca-pump/model/catalog/viewpoints/physical/viewpoint.sysml +8 -0
  54. package/examples/gpca-pump/model/{views → catalog/viewpoints/physical/views}/physical_physical_bom_view.sysml +2 -2
  55. package/examples/gpca-pump/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
  56. package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/document_dhf_index_view.sysml +8 -8
  57. package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/requirements_requirements_trace_view.sysml +2 -2
  58. package/examples/gpca-pump/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
  59. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_hazard_analysis_view.sysml +8 -5
  60. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_rmf_view.sysml +7 -5
  61. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_fmea_view.sysml +3 -3
  62. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_risk_chain_view.sysml +3 -3
  63. package/examples/gpca-pump/model/catalog/viewpoints/software/viewpoint.sysml +8 -0
  64. package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/document_sdd_view.sysml +4 -4
  65. package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/software_software_architecture_view.sysml +5 -5
  66. package/examples/gpca-pump/model/catalog/viewpoints/usability/viewpoint.sysml +8 -0
  67. package/examples/gpca-pump/model/{views → catalog/viewpoints/usability/views}/document_usability_view.sysml +8 -6
  68. package/examples/gpca-pump/model/catalog/viewpoints/verification/viewpoint.sysml +8 -0
  69. package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/document_vv_view.sysml +7 -5
  70. package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/verification_verification_coverage_view.sysml +3 -3
  71. package/examples/ivd-laboratory-system/model/catalog/project.sysml +24 -0
  72. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  73. package/examples/ivd-laboratory-system/model/{viewpoints → catalog/viewpoints/unassigned/views}/ivd_laboratory_system_overview.sysml +1 -1
  74. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +4 -2
  75. package/examples/manual-surgical-instrument/model/catalog/project.sysml +24 -0
  76. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  77. package/examples/manual-surgical-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/manual_surgical_instrument_overview.sysml +1 -1
  78. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
  79. package/examples/multidimensional-layers/model/catalog/project.sysml +24 -0
  80. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  81. package/examples/multidimensional-layers/model/{viewpoints → catalog/viewpoints/unassigned/views}/multidimensional_layers_overview.sysml +1 -1
  82. package/examples/nested-architecture-dsm/README.md +49 -0
  83. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +179 -0
  84. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +165 -0
  85. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +53 -0
  86. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +89 -0
  87. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +113 -0
  88. package/examples/nested-architecture-dsm/model/catalog/project.sysml +28 -0
  89. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +48 -0
  90. package/examples/reusable-instrument/model/catalog/project.sysml +24 -0
  91. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +11 -8
  92. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  93. package/examples/reusable-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/reusable_instrument_overview.sysml +1 -1
  94. package/examples/ros-mobile-robot/README.md +40 -0
  95. package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
  96. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
  97. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
  98. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +13 -0
  99. package/examples/software-only-medical-device/model/catalog/project.sysml +28 -0
  100. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -5
  101. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  102. package/examples/software-only-medical-device/model/{viewpoints → catalog/viewpoints/unassigned/views}/software_only_medical_device_overview.sysml +1 -1
  103. package/examples/surgical-closure-workflow/model/catalog/project.sysml +24 -0
  104. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +57 -57
  105. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  106. package/examples/surgical-closure-workflow/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_closure_workflow_overview.sysml +1 -1
  107. package/examples/surgical-robot/model/catalog/project.sysml +24 -0
  108. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +6 -4
  109. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  110. package/examples/surgical-robot/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_robot_overview.sysml +1 -1
  111. package/examples/sysml-diagram-samples/README.md +7 -0
  112. package/examples/sysml-diagram-samples/dhf/documents/DOC-HAR-001.md +11 -0
  113. package/examples/sysml-diagram-samples/memo.package.yaml +11 -5
  114. package/examples/sysml-diagram-samples/model/catalog/project.sysml +33 -0
  115. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  116. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/action_flow_view.sysml +23 -20
  117. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/context_view.sysml +11 -11
  118. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +47 -0
  119. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +143 -0
  120. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +87 -0
  121. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +94 -0
  122. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +109 -0
  123. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +13 -0
  124. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/requirements_view.sysml +6 -7
  125. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +33 -0
  126. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +80 -0
  127. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +48 -0
  128. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/use_case_view.sysml +15 -9
  129. package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +93 -0
  130. package/examples/temperature-alarm/model/catalog/project.sysml +24 -0
  131. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +29 -21
  132. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  133. package/examples/temperature-alarm/model/{viewpoints → catalog/viewpoints/unassigned/views}/temperature_alarm_overview.sysml +1 -1
  134. package/examples/ui-screen-regions/README.md +117 -0
  135. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +84 -0
  136. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +212 -0
  137. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +61 -0
  138. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/drugSelectorRegion/drug-selector-expanded-2.4.1.png +0 -0
  139. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/mainScreenLayout/main-screen-2.4.1.png +0 -0
  140. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/settingsScreenLayout/settings-screen-2.4.1.png +0 -0
  141. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +51 -0
  142. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +27 -0
  143. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +27 -0
  144. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +59 -0
  145. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +25 -0
  146. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +178 -0
  147. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +93 -0
  148. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +75 -0
  149. package/examples/ui-screen-regions/model/catalog/project.sysml +45 -0
  150. package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
  151. package/examples/ui-screen-regions/model/catalog/traces.sysml +179 -0
  152. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
  153. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +62 -0
  154. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
  155. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +62 -0
  156. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
  157. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +62 -0
  158. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/viewpoint.sysml +8 -0
  159. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +57 -0
  160. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +52 -0
  161. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +54 -0
  162. package/extensions/LICENSES/MIT.txt +19 -0
  163. package/extensions/README.md +94 -0
  164. package/extensions/aadl/memo.package.yaml +18 -0
  165. package/extensions/aadl/src/aadl_extension.sysml +6 -0
  166. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
  167. package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
  168. package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
  169. package/extensions/clinical/memo.package.yaml +18 -0
  170. package/extensions/clinical/src/methodology/clinical_methodology.sysml +22 -0
  171. package/extensions/cloud/memo.package.yaml +18 -0
  172. package/extensions/cloud/src/cloud_extension.sysml +44 -0
  173. package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
  174. package/extensions/container/memo.package.yaml +18 -0
  175. package/extensions/container/src/container_extension.sysml +37 -0
  176. package/extensions/container/src/methodology/container_methodology.sysml +17 -0
  177. package/extensions/messaging/memo.package.yaml +18 -0
  178. package/extensions/messaging/src/messaging_extension.sysml +64 -0
  179. package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
  180. package/extensions/ros/memo.package.yaml +18 -0
  181. package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
  182. package/extensions/ros/src/ros_extension.sysml +200 -0
  183. package/extensions/template/memo.package.yaml +17 -0
  184. package/extensions/template/src/extension.sysml +37 -0
  185. package/memo.manifest.yaml +15 -2
  186. package/methodologies/default/memo.package.yaml +19 -9
  187. package/methodologies/gpca/memo.package.yaml +18 -9
  188. package/ontology/memo.package.yaml +23 -8
  189. package/package.json +6 -6
  190. package/profile/memo.package.yaml +18 -9
  191. package/src/architecture/decisions/memo_decisions.sysml +28 -0
  192. package/src/architecture/functional/behavior/memo_behavior.sysml +50 -22
  193. package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
  194. package/src/architecture/functional/functions/memo_functions.sysml +93 -43
  195. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -24
  196. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +52 -12
  197. package/src/architecture/implementation/ui/memo_ui.sysml +276 -53
  198. package/src/architecture/logical/interfaces/memo_interfaces.sysml +64 -13
  199. package/src/architecture/logical/structure/memo_logical_structure.sysml +92 -35
  200. package/src/architecture/operational/activities/memo_activities.sysml +10 -4
  201. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -8
  202. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +13 -30
  203. package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -16
  204. package/src/architecture/operational/scenarios/memo_scenarios.sysml +57 -23
  205. package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -26
  206. package/src/architecture/operational/workflows/memo_workflows.sysml +28 -15
  207. package/src/architecture/realization/deployment/memo_deployment.sysml +111 -16
  208. package/src/architecture/realization/physical/memo_physical_architecture.sysml +27 -2
  209. package/src/artifacts/configuration_management/memo_configuration_management.sysml +35 -0
  210. package/src/artifacts/core/memo_controlled_artifacts.sysml +35 -0
  211. package/src/artifacts/documents/risk_management/memo_risk_management.sysml +12 -0
  212. package/src/artifacts/standards/cfr_21_820.sysml +116 -0
  213. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
  214. package/src/artifacts/standards/iec_60601_1.sysml +149 -0
  215. package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
  216. package/src/artifacts/standards/iec_60812.sysml +51 -0
  217. package/src/artifacts/standards/iec_62304.sysml +210 -0
  218. package/src/artifacts/standards/iec_62366_1.sysml +113 -0
  219. package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
  220. package/src/artifacts/standards/iso_13485.sysml +113 -0
  221. package/src/artifacts/standards/iso_14971.sysml +94 -0
  222. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
  223. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
  224. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-input.md +1 -1
  225. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-output.md +5 -5
  226. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-review.md +1 -1
  227. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-validation.md +2 -2
  228. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-verification.md +2 -2
  229. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/dhf-index.md +2 -2
  230. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/transfer-plan.md +1 -1
  231. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/user-needs.md +1 -1
  232. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-plan.md +3 -3
  233. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-report.md +4 -4
  234. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/incident-response.md +1 -1
  235. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/postmarket-surveillance.md +3 -2
  236. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/security-arch.md +2 -2
  237. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/threat-model.md +4 -4
  238. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/vuln-assessment.md +4 -3
  239. package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
  240. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/detailed-design.md +1 -1
  241. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/integration-test.md +3 -3
  242. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sad.md +6 -5
  243. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sbom.md +3 -2
  244. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sdp.md +5 -4
  245. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/soup.md +4 -2
  246. package/src/artifacts/templates/dhf/iec-62304/srs.md +172 -0
  247. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sw-traceability.md +3 -3
  248. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/system-test.md +1 -1
  249. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/summative-eval.md +1 -1
  250. package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +93 -0
  251. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ue-plan.md +1 -1
  252. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/urra.md +3 -3
  253. package/src/artifacts/templates/dhf/iso-14971/fmea.md +116 -0
  254. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/har.md +3 -3
  255. package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmp.md +2 -2
  256. package/src/artifacts/templates/dhf/system/sad.md +173 -0
  257. package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
  258. package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
  259. package/src/artifacts/templates/dhf/system/syrs.md +128 -0
  260. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +39 -20
  261. package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
  262. package/src/assurance/requirements/memo_requirements.sysml +5 -2
  263. package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
  264. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
  265. package/src/assurance/safety_risk/memo_risk.sysml +78 -7
  266. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +27 -0
  267. package/src/assurance/verification_validation/clinical_evaluation/memo_clinical_evaluation.sysml +11 -0
  268. package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
  269. package/src/core/annotations/memo_annotations.sysml +96 -0
  270. package/src/core/common/memo_common.sysml +140 -18
  271. package/src/core/consistency_rules/consistency_rules.sysml +7 -0
  272. package/src/core/dimensions/dimensions.sysml +17 -1
  273. package/src/core/enumerations/memo_enumerations.sysml +101 -20
  274. package/src/core/methodology_scope/methodology_scope.sysml +7 -15
  275. package/src/core/relationships/memo_relationships.sysml +199 -194
  276. package/src/memo_namespaces.sysml +127 -67
  277. package/src/methodology/core/memo_core.sysml +69 -2
  278. package/src/methodology/profiles/memo_profiles.sysml +31 -41
  279. package/src/methodology/workflow/memo_workflow.sysml +7 -2
  280. package/src/rules/closure/closure_rules.sysml +104 -31
  281. package/src/rules/coverage/coverage_rules.sysml +4 -256
  282. package/src/rules/crosslayer/cross_layer_rules.sysml +6 -15
  283. package/src/rules/lifecycle/lifecycle_rules.sysml +4 -39
  284. package/src/rules/ontology/ontology_invariants.sysml +243 -74
  285. package/src/rules/quantitative/quantitative_rules.sysml +8 -8
  286. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +10 -3
  287. package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -2
  288. package/src/viewpoints/clinical/{clinical_evidence_view → views/clinical_evidence_view}/clinical_evidence_view.sysml +2 -2
  289. package/src/viewpoints/context/context_viewpoint.sysml +4 -2
  290. package/src/viewpoints/context/{system_context_view → views/system_context_view}/system_context_view.sysml +2 -2
  291. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -2
  292. package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view → views/cybersecurity_assessment_view}/cybersecurity_assessment_view.sysml +2 -2
  293. package/src/viewpoints/cybersecurity/{threat_model_view → views/threat_model_view}/threat_model_view.sysml +2 -2
  294. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +5 -0
  295. package/src/viewpoints/functional/functional_viewpoint.sysml +4 -2
  296. package/src/viewpoints/functional/{function_allocation_view → views/function_allocation_view}/function_allocation_view.sysml +3 -3
  297. package/src/viewpoints/functional/{system_functional_tree_view → views/system_functional_tree_view}/system_functional_tree_view.sysml +3 -3
  298. package/src/viewpoints/logical/logical_viewpoint.sysml +3 -1
  299. package/src/viewpoints/logical/{logical_architecture_view → views/logical_architecture_view}/logical_architecture_view.sysml +2 -2
  300. package/src/viewpoints/operational/operational_viewpoint.sysml +4 -2
  301. package/src/viewpoints/operational/{use_case_view → views/use_case_view}/use_case_view.sysml +3 -3
  302. package/src/viewpoints/physical/physical_viewpoint.sysml +3 -1
  303. package/src/viewpoints/physical/{network_topology_view → views/network_topology_view}/network_topology_view.sysml +2 -2
  304. package/src/viewpoints/physical/{physical_bom_view → views/physical_bom_view}/physical_bom_view.sysml +2 -2
  305. package/src/viewpoints/rendering/memo_rendering.sysml +354 -0
  306. package/src/viewpoints/requirements/requirements_viewpoint.sysml +3 -1
  307. package/src/viewpoints/requirements/{requirements_traceability_view → views/requirements_traceability_view}/requirements_traceability_view.sysml +2 -2
  308. package/src/viewpoints/risk/risk_viewpoint.sysml +3 -1
  309. package/src/viewpoints/risk/{risk_chain_view → views/risk_chain_view}/risk_chain_view.sysml +2 -2
  310. package/src/viewpoints/software/software_viewpoint.sysml +3 -1
  311. package/src/viewpoints/software/{software_architecture_view → views/software_architecture_view}/software_architecture_view.sysml +2 -2
  312. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +28 -0
  313. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +23 -0
  314. package/src/viewpoints/usability/usability_viewpoint.sysml +3 -1
  315. package/src/viewpoints/usability/{usability_engineering_view → views/usability_engineering_view}/usability_engineering_view.sysml +2 -2
  316. package/src/viewpoints/verification/verification_viewpoint.sysml +4 -2
  317. package/src/viewpoints/verification/{verification_coverage_view → views/verification_coverage_view}/verification_coverage_view.sysml +3 -3
  318. package/templates/connected-device/memo.package.yaml +11 -5
  319. package/templates/connected-device/model/catalog/project.sysml +28 -0
  320. package/templates/connected-device/syside.toml +1 -1
  321. package/templates/default/memo.package.yaml +11 -5
  322. package/templates/default/model/catalog/project.sysml +28 -0
  323. package/templates/default/syside.toml +1 -1
  324. package/templates/infusion-pump/memo.package.yaml +11 -5
  325. package/templates/infusion-pump/model/catalog/project.sysml +28 -0
  326. package/templates/infusion-pump/syside.toml +1 -1
  327. package/templates/monitoring-device/memo.package.yaml +11 -5
  328. package/templates/monitoring-device/model/catalog/project.sysml +28 -0
  329. package/templates/monitoring-device/syside.toml +1 -1
  330. package/templates/samd/memo.package.yaml +11 -5
  331. package/templates/samd/model/catalog/project.sysml +28 -0
  332. package/templates/samd/syside.toml +1 -1
  333. package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +0 -3
  334. package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +0 -3
  335. package/examples/extensions/README.md +0 -16
  336. package/examples/extensions/clinical/memo.package.yaml +0 -9
  337. package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -14
  338. package/examples/extensions/template/memo.package.yaml +0 -9
  339. package/examples/extensions/template/src/extension.sysml +0 -15
  340. package/examples/functional-logical-physical/model/functional_logical_physical.sysml +0 -3
  341. package/examples/gpca-pump/memo.config.yaml +0 -9
  342. package/examples/gpca-pump/methodology/gpca_scope.sysml +0 -25
  343. package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +0 -3
  344. package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +0 -3
  345. package/examples/multidimensional-layers/model/multidimensional_layers.sysml +0 -4
  346. package/examples/reusable-instrument/model/reusable_instrument.sysml +0 -4
  347. package/examples/software-only-medical-device/model/software_only_medical_device.sysml +0 -4
  348. package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +0 -4
  349. package/examples/surgical-robot/model/surgical_robot.sysml +0 -4
  350. package/examples/sysml-diagram-samples/model/samples/functional_flow_view.sysml +0 -164
  351. package/examples/sysml-diagram-samples/model/samples/interconnection_view.sysml +0 -94
  352. package/examples/sysml-diagram-samples/model/samples/operational_behaviour_view.sysml +0 -135
  353. package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +0 -109
  354. package/examples/sysml-diagram-samples/model/samples/tree_view.sysml +0 -56
  355. package/examples/temperature-alarm/model/temperature_alarm.sysml +0 -4
  356. package/ontology/memo.rendering.yaml +0 -84
  357. package/src/compliance/artifacts/memo_artifacts.sysml +0 -12
  358. package/src/compliance/change/memo_change.sysml +0 -17
  359. package/src/compliance/dhf-templates/iec-62304/srs.md +0 -138
  360. package/src/compliance/dhf-templates/iec-62366/task-analysis.md +0 -57
  361. package/src/compliance/dhf-templates/iso-14971/fmea.md +0 -93
  362. package/src/compliance/document_views/memo_document_views.sysml +0 -7
  363. package/src/compliance/iso14971/risk_management_file.sysml +0 -16
  364. package/src/compliance/postmarket/memo_postmarket.sysml +0 -16
  365. /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
  366. /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
  367. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/change-record.md +0 -0
  368. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/change-control.md +0 -0
  369. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/formative-eval.md +0 -0
  370. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ui-spec.md +0 -0
  371. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/use-spec.md +0 -0
  372. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/fta.md +0 -0
  373. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-benefit.md +0 -0
  374. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-matrix.md +0 -0
  375. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmr.md +0 -0
  376. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/approval-block.md +0 -0
  377. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/document-control-header.md +0 -0
  378. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/references-section.md +0 -0
  379. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/revision-history-table.md +0 -0
  380. /package/templates/connected-device/{src → model/catalog}/architecture/system.sysml +0 -0
  381. /package/templates/connected-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  382. /package/templates/connected-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
  383. /package/templates/default/{src → model/catalog}/architecture/system.sysml +0 -0
  384. /package/templates/default/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  385. /package/templates/default/{src → model/catalog}/assurance/requirements.sysml +0 -0
  386. /package/templates/infusion-pump/{src → model/catalog}/architecture/system.sysml +0 -0
  387. /package/templates/infusion-pump/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  388. /package/templates/infusion-pump/{src → model/catalog}/assurance/requirements.sysml +0 -0
  389. /package/templates/monitoring-device/{src → model/catalog}/architecture/system.sysml +0 -0
  390. /package/templates/monitoring-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  391. /package/templates/monitoring-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
  392. /package/templates/samd/{src → model/catalog}/architecture/system.sysml +0 -0
  393. /package/templates/samd/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  394. /package/templates/samd/{src → model/catalog}/assurance/requirements.sysml +0 -0
@@ -1,5 +1,6 @@
1
- package memo_examples_gpca_pump_model_catalog_gpca_operational {
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::*;
@@ -7,7 +8,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
7
8
  private import memo_architecture_operational_use_cases::*;
8
9
  private import memo_architecture_operational_workflows::*;
9
10
  private import memo_core_enumerations::*;
10
- private import memo_examples_gpca_pump_model_catalog_gpca_context::*;
11
+ private import memo_examples_gpca_pump_gpca_context::*;
12
+ private import memo_examples_gpca_pump_gpca_system::*;
13
+ private import memo_core_relationships::*;
11
14
 
12
15
  // ── Operational entities beyond the human actors ────────────
13
16
  part entityPharmacy : OperationalEntity {
@@ -153,6 +156,11 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
153
156
  ref :>> primaryUser = actorNurse;
154
157
  ref :>> supportingActors = (actorPatient, actorPrescriber, actorPharmacist);
155
158
  ref :>> useContext = hospitalWardContext;
159
+ subject supportingSystem;
160
+ actor nurseInitiator = actorNurse;
161
+ actor patientActor = actorPatient;
162
+ actor prescriberActor = actorPrescriber;
163
+ actor pharmacistActor = actorPharmacist;
156
164
  }
157
165
 
158
166
  action wfPrepareAndStartTherapy : OperationalWorkflow {
@@ -160,62 +168,43 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
160
168
  attribute :>> workflowState = WorkflowStateKind::toBe;
161
169
  attribute :>> entryCondition = "A valid prescription and prepared reservoir are available.";
162
170
  attribute :>> completionCondition = "Therapy is started with confirmed prescription limits.";
171
+
172
+ action wsProgram : WorkflowStep { ref :>> performedActivity = oaProgram; }
173
+ action wsStart : WorkflowStep { ref :>> performedActivity = oaStartTherapy; }
163
174
  }
164
175
  action wfManageActiveTherapy : OperationalWorkflow {
165
176
  attribute :>> name = "ManageActiveTherapy";
166
177
  attribute :>> workflowState = WorkflowStateKind::toBe;
167
178
  attribute :>> entryCondition = "Basal therapy is active.";
168
179
  attribute :>> completionCondition = "A bolus is handled or active therapy continues safely.";
180
+
181
+ action wsRequestBolus : WorkflowStep { ref :>> performedActivity = oaRequestBolus; }
182
+ // Refinement targets a nested step by its local name — the shorthand's
183
+ // `to` end does not accept a qualified path — so this is written
184
+ // inside wsRequestBolus's own owning scope rather than at package
185
+ // level.
186
+ #refinement dependency fcsBolusSense to wsRequestBolus;
187
+ #refinement dependency fcsBolusValidate to wsRequestBolus;
188
+ #refinement dependency fcsBolusCommand to wsRequestBolus;
189
+ #refinement dependency fcsBolusActuate to wsRequestBolus;
190
+ #refinement dependency fcsBolusLog to wsRequestBolus;
169
191
  }
170
192
  action wfRespondToTherapyAlarm : OperationalWorkflow {
171
193
  attribute :>> name = "RespondToTherapyAlarm";
172
194
  attribute :>> workflowState = WorkflowStateKind::toBe;
173
195
  attribute :>> entryCondition = "A therapy alarm or degraded condition is detected.";
174
196
  attribute :>> completionCondition = "The pump is safe and the clinician has resolved or escalated the condition.";
197
+
198
+ action wsRespondAlarm : WorkflowStep { ref :>> performedActivity = oaRespondAlarm; }
199
+ #refinement dependency fcsAlarmSense to wsRespondAlarm;
200
+ #refinement dependency fcsAlarmEvaluate to wsRespondAlarm;
201
+ #refinement dependency fcsAlarmStopInfusion to wsRespondAlarm;
202
+ #refinement dependency fcsAlarmAnnunciate to wsRespondAlarm;
175
203
  }
176
- action wsProgram : WorkflowStep { ref :>> performedActivity = oaProgram; }
177
- action wsStart : WorkflowStep { ref :>> performedActivity = oaStartTherapy; }
178
- action wsRequestBolus : WorkflowStep { ref :>> performedActivity = oaRequestBolus; }
179
- action wsRespondAlarm : WorkflowStep { ref :>> performedActivity = oaRespondAlarm; }
180
204
  connection : Supports { attribute :>> supportKind = SupportKind::useCase; connect supporter ::> wfPrepareAndStartTherapy to supported ::> ucDeliverPcaTherapy; }
181
205
  connection : Supports { attribute :>> supportKind = SupportKind::useCase; connect supporter ::> wfManageActiveTherapy to supported ::> ucDeliverPcaTherapy; }
182
206
  connection : Supports { attribute :>> supportKind = SupportKind::useCase; connect supporter ::> wfRespondToTherapyAlarm to supported ::> ucDeliverPcaTherapy; }
183
- connection : Composes connect parent ::> wfPrepareAndStartTherapy to child ::> wsProgram;
184
- connection : Composes connect parent ::> wfPrepareAndStartTherapy to child ::> wsStart;
185
- connection : Composes connect parent ::> wfManageActiveTherapy to child ::> wsRequestBolus;
186
- connection : Composes connect parent ::> wfRespondToTherapyAlarm to child ::> wsRespondAlarm;
187
207
 
188
- // ── Scenario-owned operational activities and action flows ──
189
- action oaCompleteNominalTherapy : OperationalActivity {
190
- attribute :>> name = "CompleteNominalTherapy";
191
- action deliverWithinLimits; action recordTherapyEvent;
192
- first start then deliverWithinLimits; first deliverWithinLimits then recordTherapyEvent; first recordTherapyEvent then done;
193
- }
194
- action oaRejectBolusDuringLockout : OperationalActivity {
195
- attribute :>> name = "RejectBolusDuringLockout";
196
- action checkLockout; action rejectAndLog;
197
- first start then checkLockout; first checkLockout then rejectAndLog; first rejectAndLog then done;
198
- }
199
- action oaRespondToOcclusion : OperationalActivity {
200
- attribute :>> name = "RespondToOcclusion";
201
- action pauseInfusion; action annunciateOcclusion; action resolveAndResume;
202
- first start then pauseInfusion; first pauseInfusion then annunciateOcclusion; first annunciateOcclusion then resolveAndResume; first resolveAndResume then done;
203
- }
204
- action oaRespondToAirInLine : OperationalActivity {
205
- attribute :>> name = "RespondToAirInLine";
206
- action stopOrKvo; action annunciateAir; action reprimeAndRestart;
207
- first start then stopOrKvo; first stopOrKvo then annunciateAir; first annunciateAir then reprimeAndRestart; first reprimeAndRestart then done;
208
- }
209
- action oaReplaceEmptyReservoir : OperationalActivity {
210
- attribute :>> name = "ReplaceEmptyReservoir";
211
- action stopAndAnnunciate; action replaceReservoir; action resumeTherapy;
212
- first start then stopAndAnnunciate; first stopAndAnnunciate then replaceReservoir; first replaceReservoir then resumeTherapy; first resumeTherapy then done;
213
- }
214
- action oaRecoverAfterPowerLoss : OperationalActivity {
215
- attribute :>> name = "RecoverAfterPowerLoss";
216
- action switchToBattery; action restorePrescription; action confirmRestart;
217
- first start then switchToBattery; first switchToBattery then restorePrescription; first restorePrescription then confirmRestart; first confirmRestart then done;
218
- }
219
208
 
220
209
  // ── Operational capabilities ────────────────────────────────
221
210
  part ocTitratedAnalgesia : OperationalCapability {
@@ -234,9 +223,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
234
223
  }
235
224
 
236
225
  // ── Operational scenarios ───────────────────────────────────
237
- part osNominalTherapy : OperativeScenario {
226
+ action osNominalTherapy : MemoScenario {
238
227
  attribute :>> id = "OS-001";
239
228
  attribute :>> name = "NominalTherapySession";
229
+ attribute :>> scenarioKind = ScenarioKind::operative;
240
230
  attribute :>> variantKind = ScenarioVariantKind::nominal;
241
231
  attribute :>> operationalCondition = OperationalConditionKind::normal;
242
232
  attribute :>> preCondition = "prescription issued, reservoir loaded";
@@ -246,11 +236,19 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
246
236
  ref :>> parentWorkflow = wfManageActiveTherapy;
247
237
  ref :>> parentUseCase = ucDeliverPcaTherapy;
248
238
  ref :>> activities = oaCompleteNominalTherapy;
239
+
240
+ action oaCompleteNominalTherapy : OperationalActivity {
241
+ attribute :>> name = "CompleteNominalTherapy";
242
+ action deliverWithinLimits; action recordTherapyEvent;
243
+ first start then deliverWithinLimits; first deliverWithinLimits then recordTherapyEvent; first recordTherapyEvent then done;
244
+ }
249
245
  }
250
- part osLockoutBolus : OperativeScenario {
246
+ action osLockoutBolus : MemoScenario {
251
247
  attribute :>> id = "OS-002";
252
248
  attribute :>> name = "BolusRequestDuringLockout";
249
+ attribute :>> scenarioKind = ScenarioKind::operative;
253
250
  attribute :>> variantKind = ScenarioVariantKind::alternate;
251
+ attribute :>> variationPoint = "patient bolus request during the nominal therapy lockout interval";
254
252
  attribute :>> operationalCondition = OperationalConditionKind::foreseeableMisuse;
255
253
  attribute :>> preCondition = "basal infusion active; lockout interval running";
256
254
  attribute :>> postCondition = "request ignored, logged; basal continues unchanged";
@@ -258,12 +256,21 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
258
256
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.9 PATIENT BOLUS mode (lockout requirements)";
259
257
  ref :>> parentWorkflow = wfManageActiveTherapy;
260
258
  ref :>> parentUseCase = ucDeliverPcaTherapy;
259
+ ref :>> baseScenario = osNominalTherapy;
261
260
  ref :>> activities = oaRejectBolusDuringLockout;
261
+
262
+ action oaRejectBolusDuringLockout : OperationalActivity {
263
+ attribute :>> name = "RejectBolusDuringLockout";
264
+ action checkLockout; action rejectAndLog;
265
+ first start then checkLockout; first checkLockout then rejectAndLog; first rejectAndLog then done;
266
+ }
262
267
  }
263
- part osOcclusionAlarm : OperativeScenario {
268
+ action osOcclusionAlarm : MemoScenario {
264
269
  attribute :>> id = "OS-003";
265
270
  attribute :>> name = "OcclusionDetectedDuringInfusion";
271
+ attribute :>> scenarioKind = ScenarioKind::operative;
266
272
  attribute :>> variantKind = ScenarioVariantKind::exception;
273
+ attribute :>> variationPoint = "occlusion detected while nominal infusion is active";
267
274
  attribute :>> operationalCondition = OperationalConditionKind::degraded;
268
275
  attribute :>> preCondition = "therapy active; downstream line becomes blocked";
269
276
  attribute :>> postCondition = "infusion paused, alarm annunciated, clinician clears occlusion and resumes";
@@ -271,12 +278,21 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
271
278
  attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.2 Alarms and Alerts (occlusion)";
272
279
  ref :>> parentWorkflow = wfRespondToTherapyAlarm;
273
280
  ref :>> parentUseCase = ucDeliverPcaTherapy;
281
+ ref :>> baseScenario = osNominalTherapy;
274
282
  ref :>> activities = oaRespondToOcclusion;
283
+
284
+ action oaRespondToOcclusion : OperationalActivity {
285
+ attribute :>> name = "RespondToOcclusion";
286
+ action pauseInfusion; action annunciateOcclusion; action resolveAndResume;
287
+ first start then pauseInfusion; first pauseInfusion then annunciateOcclusion; first annunciateOcclusion then resolveAndResume; first resolveAndResume then done;
288
+ }
275
289
  }
276
- part osAirInLine : OperativeScenario {
290
+ action osAirInLine : MemoScenario {
277
291
  attribute :>> id = "OS-004";
278
292
  attribute :>> name = "AirInLineDetected";
293
+ attribute :>> scenarioKind = ScenarioKind::operative;
279
294
  attribute :>> variantKind = ScenarioVariantKind::exception;
295
+ attribute :>> variationPoint = "air-in-line detected while nominal infusion is active";
280
296
  attribute :>> operationalCondition = OperationalConditionKind::degraded;
281
297
  attribute :>> preCondition = "therapy active; air bubble enters tubing";
282
298
  attribute :>> postCondition = "infusion stopped before air reaches patient; alarm annunciated";
@@ -284,12 +300,21 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
284
300
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 Notification Requirements (REQ 59: Air embolism)";
285
301
  ref :>> parentWorkflow = wfRespondToTherapyAlarm;
286
302
  ref :>> parentUseCase = ucDeliverPcaTherapy;
303
+ ref :>> baseScenario = osNominalTherapy;
287
304
  ref :>> activities = oaRespondToAirInLine;
305
+
306
+ action oaRespondToAirInLine : OperationalActivity {
307
+ attribute :>> name = "RespondToAirInLine";
308
+ action stopOrKvo; action annunciateAir; action reprimeAndRestart;
309
+ first start then stopOrKvo; first stopOrKvo then annunciateAir; first annunciateAir then reprimeAndRestart; first reprimeAndRestart then done;
310
+ }
288
311
  }
289
- part osEmptyReservoir : OperativeScenario {
312
+ action osEmptyReservoir : MemoScenario {
290
313
  attribute :>> id = "OS-005";
291
314
  attribute :>> name = "ReservoirEmptyDuringTherapy";
315
+ attribute :>> scenarioKind = ScenarioKind::operative;
292
316
  attribute :>> variantKind = ScenarioVariantKind::exception;
317
+ attribute :>> variationPoint = "reservoir-empty threshold reached during nominal therapy";
293
318
  attribute :>> operationalCondition = OperationalConditionKind::degraded;
294
319
  attribute :>> preCondition = "therapy active; reservoir volume reaches empty threshold";
295
320
  attribute :>> postCondition = "infusion stopped, alarm raised, reservoir replaced";
@@ -297,12 +322,21 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
297
322
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 Notification Requirements (REQ 59: Empty Reservoir)";
298
323
  ref :>> parentWorkflow = wfRespondToTherapyAlarm;
299
324
  ref :>> parentUseCase = ucDeliverPcaTherapy;
325
+ ref :>> baseScenario = osNominalTherapy;
300
326
  ref :>> activities = oaReplaceEmptyReservoir;
327
+
328
+ action oaReplaceEmptyReservoir : OperationalActivity {
329
+ attribute :>> name = "ReplaceEmptyReservoir";
330
+ action stopAndAnnunciate; action replaceReservoir; action resumeTherapy;
331
+ first start then stopAndAnnunciate; first stopAndAnnunciate then replaceReservoir; first replaceReservoir then resumeTherapy; first resumeTherapy then done;
332
+ }
301
333
  }
302
- part osPowerLoss : OperativeScenario {
334
+ action osPowerLoss : MemoScenario {
303
335
  attribute :>> id = "OS-006";
304
336
  attribute :>> name = "MainsPowerLossAndRecovery";
337
+ attribute :>> scenarioKind = ScenarioKind::operative;
305
338
  attribute :>> variantKind = ScenarioVariantKind::recovery;
339
+ attribute :>> variationPoint = "mains supply lost during nominal therapy";
306
340
  attribute :>> operationalCondition = OperationalConditionKind::degraded;
307
341
  attribute :>> preCondition = "therapy active on mains power";
308
342
  attribute :>> postCondition = "therapy continues on battery; prescription preserved across full power loss";
@@ -310,18 +344,19 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
310
344
  attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.3 Electrical Hazards (battery failure)";
311
345
  ref :>> parentWorkflow = wfRespondToTherapyAlarm;
312
346
  ref :>> parentUseCase = ucDeliverPcaTherapy;
347
+ ref :>> baseScenario = osNominalTherapy;
313
348
  ref :>> activities = oaRecoverAfterPowerLoss;
314
- }
315
- connection : Realizes connect realizing ::> osNominalTherapy to realized ::> ucDeliverPcaTherapy;
316
- connection : Realizes connect realizing ::> osLockoutBolus to realized ::> ucDeliverPcaTherapy;
317
- connection : Realizes connect realizing ::> osOcclusionAlarm to realized ::> ucDeliverPcaTherapy;
318
- connection : Realizes connect realizing ::> osAirInLine to realized ::> ucDeliverPcaTherapy;
319
- connection : Realizes connect realizing ::> osEmptyReservoir to realized ::> ucDeliverPcaTherapy;
320
- connection : Realizes connect realizing ::> osPowerLoss to realized ::> ucDeliverPcaTherapy;
321
- connection : Composes connect parent ::> osNominalTherapy to child ::> oaCompleteNominalTherapy;
322
- connection : Composes connect parent ::> osLockoutBolus to child ::> oaRejectBolusDuringLockout;
323
- connection : Composes connect parent ::> osOcclusionAlarm to child ::> oaRespondToOcclusion;
324
- connection : Composes connect parent ::> osAirInLine to child ::> oaRespondToAirInLine;
325
- connection : Composes connect parent ::> osEmptyReservoir to child ::> oaReplaceEmptyReservoir;
326
- connection : Composes connect parent ::> osPowerLoss to child ::> oaRecoverAfterPowerLoss;
349
+
350
+ action oaRecoverAfterPowerLoss : OperationalActivity {
351
+ attribute :>> name = "RecoverAfterPowerLoss";
352
+ action switchToBattery; action restorePrescription; action confirmRestart;
353
+ first start then switchToBattery; first switchToBattery then restorePrescription; first restorePrescription then confirmRestart; first confirmRestart then done;
354
+ }
355
+ }
356
+ #refinement dependency osNominalTherapy to ucDeliverPcaTherapy;
357
+ #refinement dependency osLockoutBolus to ucDeliverPcaTherapy;
358
+ #refinement dependency osOcclusionAlarm to ucDeliverPcaTherapy;
359
+ #refinement dependency osAirInLine to ucDeliverPcaTherapy;
360
+ #refinement dependency osEmptyReservoir to ucDeliverPcaTherapy;
361
+ #refinement dependency osPowerLoss to ucDeliverPcaTherapy;
327
362
  }
@@ -1,4 +1,4 @@
1
- package memo_examples_gpca_pump_model_catalog_gpca_physical {
1
+ package memo_examples_gpca_pump_gpca_physical {
2
2
  private import ScalarValues::*;
3
3
 
4
4
  private import memo_architecture_realization_physical::*;
@@ -15,39 +15,34 @@ package memo_examples_gpca_pump_model_catalog_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::bidirectional;
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
  }