@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,11 +1,15 @@
1
- package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
1
+ package memo_examples_gpca_pump_gpca_behavior_subsystems {
2
2
  private import ScalarValues::*;
3
3
 
4
4
  private import memo_architecture_functional_functions::*;
5
5
  private import memo_core_enumerations::*;
6
+ private import memo_architecture_logical_interfaces::*;
7
+ private import memo_architecture_operational_use_cases::*;
8
+ private import memo_assurance_requirements::*;
9
+ private import memo_core_common::*;
6
10
 
7
11
  // ── Logical functions ───────────────────────────────────────
8
- part fnAcquireSensors : SystemFunction {
12
+ action fnAcquireSensors : SystemFunction {
9
13
  attribute :>> id = "FUNC-001";
10
14
  attribute :>> name = "AcquireSensorData";
11
15
  attribute :>> functionCategory = "sensing";
@@ -13,8 +17,49 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
13
17
  attribute :>> outputSummary = "Debounced, range-checked sensor status vector";
14
18
  attribute :>> concernKind = ConcernKind::safety;
15
19
  attribute :>> criticality = CriticalityKind::catastrophic;
20
+
21
+ // ── Component functions decomposing FUNC-001 ─────────────
22
+ // The functional chain does not stop at the system boundary.
23
+ // "Acquire sensor data" is a system responsibility; measuring a flow
24
+ // rate is the flowmeter's, and aggregating the status vector is the
25
+ // sensor subassembly's. Each names its component through
26
+ // AllocatedTo (see gpca_behavior_actions), which CR-ONT-074
27
+ // requires — a component function allocated nowhere is a
28
+ // responsibility nobody has accepted.
29
+ action cfnMeasureFlowRate : ComponentFunction {
30
+ attribute :>> id = "CFUN-001";
31
+ attribute :>> name = "MeasureFlowRate";
32
+ attribute :>> functionCategory = "sensing";
33
+ attribute :>> actionKind = ActionKind::sense;
34
+ attribute :>> trigger = "continuous, sampled every 20 ms execution step";
35
+ attribute :>> outputSummary = "Measured delivered flow rate in mL/h, with a validity flag";
36
+ attribute :>> concernKind = ConcernKind::safety;
37
+ attribute :>> criticality = CriticalityKind::catastrophic;
38
+ }
39
+ action cfnDetectAirInLine : ComponentFunction {
40
+ attribute :>> id = "CFUN-002";
41
+ attribute :>> name = "DetectAirInLine";
42
+ attribute :>> functionCategory = "protection";
43
+ attribute :>> actionKind = ActionKind::sense;
44
+ attribute :>> trigger = "continuous, sampled every 20 ms execution step";
45
+ attribute :>> outputSummary = "Air-in-line present or absent, with accumulated bolus volume";
46
+ attribute :>> concernKind = ConcernKind::safety;
47
+ attribute :>> criticality = CriticalityKind::catastrophic;
48
+ }
49
+ // The subassembly case: a component function need not sit on a leaf part.
50
+ action cfnAggregateSensorStatus : ComponentFunction {
51
+ attribute :>> id = "CFUN-003";
52
+ attribute :>> name = "AggregateSensorStatus";
53
+ attribute :>> functionCategory = "sensing";
54
+ attribute :>> actionKind = ActionKind::transform;
55
+ attribute :>> trigger = "every 20 ms execution step";
56
+ attribute :>> outputSummary = "Debounced, range-checked sensor status vector for the controller";
57
+ attribute :>> concernKind = ConcernKind::safety;
58
+ attribute :>> criticality = CriticalityKind::catastrophic;
59
+ }
16
60
  }
17
- part fnValidatePrescription : SystemFunction {
61
+
62
+ action fnValidatePrescription : SystemFunction {
18
63
  attribute :>> id = "FUNC-002";
19
64
  attribute :>> name = "ValidatePrescription";
20
65
  attribute :>> functionCategory = "configuration";
@@ -23,7 +68,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
23
68
  attribute :>> concernKind = ConcernKind::safety;
24
69
  attribute :>> criticality = CriticalityKind::catastrophic;
25
70
  }
26
- part fnMonitorAlarm : SystemFunction {
71
+ action fnMonitorAlarm : SystemFunction {
27
72
  attribute :>> id = "FUNC-003";
28
73
  attribute :>> name = "MonitorExceptionalConditions";
29
74
  attribute :>> functionCategory = "alarm";
@@ -32,7 +77,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
32
77
  attribute :>> concernKind = ConcernKind::safety;
33
78
  attribute :>> criticality = CriticalityKind::catastrophic;
34
79
  }
35
- part fnAnnunciate : SystemFunction {
80
+ action fnAnnunciate : SystemFunction {
36
81
  attribute :>> id = "FUNC-004";
37
82
  attribute :>> name = "AnnunciateAlarms";
38
83
  attribute :>> functionCategory = "alarm";
@@ -41,7 +86,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
41
86
  attribute :>> concernKind = ConcernKind::safety;
42
87
  attribute :>> criticality = CriticalityKind::high;
43
88
  }
44
- part fnManageInfusion : SystemFunction {
89
+ action fnManageInfusion : SystemFunction {
45
90
  attribute :>> id = "FUNC-005";
46
91
  attribute :>> name = "ManageInfusion";
47
92
  attribute :>> functionCategory = "infusion";
@@ -50,7 +95,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
50
95
  attribute :>> concernKind = ConcernKind::safety;
51
96
  attribute :>> criticality = CriticalityKind::catastrophic;
52
97
  }
53
- part fnEnforceLimits : SystemFunction {
98
+ action fnEnforceLimits : SystemFunction {
54
99
  attribute :>> id = "FUNC-006";
55
100
  attribute :>> name = "EnforceDoseLimits";
56
101
  attribute :>> functionCategory = "infusion";
@@ -59,7 +104,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
59
104
  attribute :>> concernKind = ConcernKind::safety;
60
105
  attribute :>> criticality = CriticalityKind::catastrophic;
61
106
  }
62
- part fnCommandPump : SystemFunction {
107
+ action fnCommandPump : SystemFunction {
63
108
  attribute :>> id = "FUNC-007";
64
109
  attribute :>> name = "CommandPumpMotor";
65
110
  attribute :>> functionCategory = "actuation";
@@ -68,7 +113,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
68
113
  attribute :>> concernKind = ConcernKind::safety;
69
114
  attribute :>> criticality = CriticalityKind::catastrophic;
70
115
  }
71
- part fnLogEvents : SystemFunction {
116
+ action fnLogEvents : SystemFunction {
72
117
  attribute :>> id = "FUNC-008";
73
118
  attribute :>> name = "LogTherapyEvents";
74
119
  attribute :>> functionCategory = "logging";
@@ -77,7 +122,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
77
122
  attribute :>> concernKind = ConcernKind::regulatory;
78
123
  attribute :>> criticality = CriticalityKind::medium;
79
124
  }
80
- part fnManagePower : SystemFunction {
125
+ action fnManagePower : SystemFunction {
81
126
  attribute :>> id = "FUNC-009";
82
127
  attribute :>> name = "ManagePower";
83
128
  attribute :>> functionCategory = "platform";
@@ -86,7 +131,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
86
131
  attribute :>> concernKind = ConcernKind::reliability;
87
132
  attribute :>> criticality = CriticalityKind::high;
88
133
  }
89
- part fnPresentStatus : SystemFunction {
134
+ action fnPresentStatus : SystemFunction {
90
135
  attribute :>> id = "FUNC-010";
91
136
  attribute :>> name = "PresentStatus";
92
137
  attribute :>> functionCategory = "user-interface";
@@ -95,7 +140,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
95
140
  attribute :>> concernKind = ConcernKind::usability;
96
141
  attribute :>> criticality = CriticalityKind::high;
97
142
  }
98
- part fnSelfTest : SystemFunction {
143
+ action fnSelfTest : SystemFunction {
99
144
  attribute :>> id = "FUNC-011";
100
145
  attribute :>> name = "ExecuteSelfTest";
101
146
  attribute :>> functionCategory = "platform";
@@ -110,7 +155,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
110
155
  attribute :>> id = "LF-001";
111
156
  attribute :>> name = "SensorAcquisitionFlow";
112
157
  attribute :>> flowKind = FlowKind::measurement;
113
- attribute :>> direction = DirectionKind::input;
114
158
  attribute :>> latencyBudgetMs = 20.0;
115
159
  attribute :>> staleAfterMs = 40.0;
116
160
  attribute :>> integrityLevel = "class C data path";
@@ -121,7 +165,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
121
165
  attribute :>> id = "LF-002";
122
166
  attribute :>> name = "FlowCommandFlow";
123
167
  attribute :>> flowKind = FlowKind::command;
124
- attribute :>> direction = DirectionKind::output;
125
168
  attribute :>> latencyBudgetMs = 20.0;
126
169
  attribute :>> staleAfterMs = 20.0;
127
170
  attribute :>> integrityLevel = "class C command path";
@@ -132,7 +175,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
132
175
  attribute :>> id = "LF-003";
133
176
  attribute :>> name = "AlarmSignalFlow";
134
177
  attribute :>> flowKind = FlowKind::alarm;
135
- attribute :>> direction = DirectionKind::output;
136
178
  attribute :>> latencyBudgetMs = 20.0;
137
179
  attribute :>> staleAfterMs = 20.0;
138
180
  attribute :>> integrityLevel = "class C alarm path; same-step delivery to infusion manager";
@@ -143,7 +185,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
143
185
  attribute :>> id = "LF-004";
144
186
  attribute :>> name = "PrescriptionEntryFlow";
145
187
  attribute :>> flowKind = FlowKind::configuration;
146
- attribute :>> direction = DirectionKind::input;
147
188
  attribute :>> latencyBudgetMs = 500.0;
148
189
  attribute :>> staleAfterMs = 0.0;
149
190
  attribute :>> integrityLevel = "confirmed double-entry path";
@@ -1,4 +1,4 @@
1
- package memo_examples_gpca_pump_model_catalog_gpca_context {
1
+ package memo_examples_gpca_pump_gpca_context {
2
2
  private import ScalarValues::*;
3
3
 
4
4
  private import memo_architecture_operational_context_actors::*;
@@ -6,6 +6,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_context {
6
6
  private import memo_assurance_requirements::*;
7
7
  private import memo_assurance_human_factors::*;
8
8
  private import memo_core_enumerations::*;
9
+ private import memo_examples_gpca_pump_gpca_operational::*;
9
10
 
10
11
  // ── Intended use (ISO 14971 §5.2, IEC 62366-1) ──────────────
11
12
  part gpcaIntendedUse : IntendedUse {
@@ -13,7 +14,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_context {
13
14
  attribute :>> name = "GPCA_IntendedUse";
14
15
  attribute :>> title = "GPCA Pump Intended Use";
15
16
  attribute :>> shortDescription = "Patient-controlled analgesia infusion of prescribed opioid analgesics.";
16
- attribute :>> longDescription = "The GPCA pump delivers a prescribed analgesic drug intravenously at a programmed basal rate, supplemented by square boluses delivered automatically at programmed intervals and by patient-requested bolus doses, subject to lockout intervals and maximum-dose limits.";
17
+ attribute :>> description = "The GPCA pump delivers a prescribed analgesic drug intravenously at a programmed basal rate, supplemented by square boluses delivered automatically at programmed intervals and by patient-requested bolus doses, subject to lockout intervals and maximum-dose limits.";
17
18
  attribute :>> indication = "Management of acute post-operative or chronic pain requiring titrated intravenous opioid analgesia.";
18
19
  attribute :>> contraindication = "Patients unable to comprehend or operate the bolus request mechanism; drugs without safe-value records in the hospital pharmacy database.";
19
20
  attribute :>> patientPopulation = "Adult in-patients under clinical supervision.";
@@ -26,7 +27,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_context {
26
27
  attribute :>> name = "BolusRequestBySomeoneOtherThanPatient";
27
28
  attribute :>> title = "Bolus by proxy";
28
29
  attribute :>> shortDescription = "A caregiver or visitor presses the patient bolus control.";
29
- attribute :>> longDescription = "A person other than the patient activates the bolus request control, bypassing the intended patient self-limiting behavior.";
30
+ attribute :>> description = "A person other than the patient activates the bolus request control, bypassing the intended patient self-limiting behavior.";
30
31
  attribute :>> misuseContext = "Patient-controlled analgesia in a supervised hospital setting.";
31
32
  attribute :>> foreseeableBasis = "Known PCA use pattern represented in the GPCA hazard analysis.";
32
33
  attribute :>> affectedUseContext = "UC-001";
@@ -51,41 +52,44 @@ package memo_examples_gpca_pump_model_catalog_gpca_context {
51
52
  attribute :>> actorKind = ActorKind::patient;
52
53
  attribute :>> id = "ACT-001";
53
54
  attribute :>> name = "Patient";
54
- attribute :>> actorKind = ActorKind::patient;
55
55
  attribute :>> trainingLevel = "instructed by clinician on bolus request button only";
56
56
  attribute :>> description = "Receives the infusion and requests bolus doses via the patient pendant.";
57
+ perform oaRequestBolus;
57
58
  }
58
59
  part actorNurse : User {
59
60
  attribute :>> actorKind = ActorKind::clinician;
60
61
  attribute :>> id = "ACT-002";
61
62
  attribute :>> name = "ClinicianNurse";
62
- attribute :>> actorKind = ActorKind::clinician;
63
63
  attribute :>> trainingLevel = "trained clinical user; programs prescriptions and responds to alarms";
64
64
  attribute :>> description = "Loads the drug reservoir, programs and confirms the prescription, starts/stops therapy, and responds to alarms.";
65
+ perform oaProgram;
66
+ perform oaStartTherapy;
67
+ perform oaRespondAlarm;
68
+ perform oaReviewLog;
65
69
  }
66
70
  part actorPrescriber : User {
67
71
  attribute :>> actorKind = ActorKind::clinician;
68
72
  attribute :>> id = "ACT-003";
69
73
  attribute :>> name = "PrescribingPhysician";
70
- attribute :>> actorKind = ActorKind::clinician;
71
74
  attribute :>> trainingLevel = "licensed prescriber";
72
75
  attribute :>> description = "Prescribes drug, concentration, basal rate, bolus volume, lockout interval, and maximum dose limits.";
76
+ perform oaPrescribe;
73
77
  }
74
78
  part actorPharmacist : User {
75
79
  attribute :>> actorKind = ActorKind::clinician;
76
80
  attribute :>> id = "ACT-004";
77
81
  attribute :>> name = "Pharmacist";
78
- attribute :>> actorKind = ActorKind::clinician;
79
82
  attribute :>> trainingLevel = "licensed pharmacist";
80
83
  attribute :>> description = "Prepares the drug reservoir and verifies drug and concentration against the prescription.";
84
+ perform oaLoadReservoir;
81
85
  }
82
86
  part actorTechnician : User {
83
87
  attribute :>> actorKind = ActorKind::technician;
84
88
  attribute :>> id = "ACT-005";
85
89
  attribute :>> name = "BiomedicalTechnician";
86
- attribute :>> actorKind = ActorKind::technician;
87
90
  attribute :>> trainingLevel = "service-trained; authenticated service access";
88
91
  attribute :>> description = "Performs maintenance, battery replacement, and calibration through the service interface.";
92
+ perform oaMaintain;
89
93
  }
90
94
 
91
95
  // ── Foreseeable use errors (IEC 62366-1, AAMI TIR PCA) ──────
@@ -1,16 +1,19 @@
1
- package memo_examples_gpca_pump_model_catalog_gpca_cybersecurity {
1
+ package memo_examples_gpca_pump_gpca_cybersecurity {
2
2
  private import ScalarValues::*;
3
+ private import memo_core_dimensions::*; // ElementStatusKind
3
4
 
4
5
  private import memo_assurance_cybersecurity::*;
5
6
  private import memo_assurance_requirements::*;
6
7
  private import memo_assurance_safety_risk::*;
7
8
  private import memo_assurance_verification_validation::*;
8
9
  private import memo_core_enumerations::*;
10
+ private import memo_core_common::*;
11
+ private import memo_architecture_operational_scenarios::*;
9
12
  private import memo_core_relationships::*;
10
- private import memo_examples_gpca_pump_model_catalog_gpca_architecture::*;
11
- private import memo_examples_gpca_pump_model_catalog_gpca_risk::*;
12
- private import memo_examples_gpca_pump_model_catalog_gpca_requirements::*;
13
- private import memo_examples_gpca_pump_model_catalog_gpca_verification::*;
13
+ private import memo_examples_gpca_pump_gpca_architecture::*;
14
+ private import memo_examples_gpca_pump_gpca_risk::*;
15
+ private import memo_examples_gpca_pump_gpca_requirements::*;
16
+ private import memo_examples_gpca_pump_gpca_verification::*;
14
17
 
15
18
  part therapyConfigurationAsset : CybersecurityAsset {
16
19
  attribute :>> id = "AST-CYB-001";
@@ -78,9 +81,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_cybersecurity {
78
81
  attribute :>> cweReference = "CWE-798";
79
82
  }
80
83
 
81
- part tamperedConfigurationScenario : ThreatScenario {
84
+ action tamperedConfigurationScenario : MemoScenario {
82
85
  attribute :>> id = "SCN-001";
83
86
  attribute :>> name = "TamperedTherapyConfigurationScenario";
87
+ attribute :>> scenarioKind = ScenarioKind::threat;
84
88
  attribute :>> description = "An attacker with local access to the maintenance port alters lockout or dose parameters, aiming to bypass safety limits; may enable unsafe therapy delivery or bypass safeguards.";
85
89
  attribute :>> actorDescription = "unauthorized actor with local access to the maintenance port";
86
90
  attribute :>> defaultCategory = ThreatCategoryKind::tampering;
@@ -128,7 +132,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_cybersecurity {
128
132
  attribute :>> statement = "The system shall require authenticated and authorized service access before any therapy configuration parameter can be modified.";
129
133
  attribute :>> sourceKind = RequirementSourceKind::risk;
130
134
  attribute :>> concernKind = ConcernKind::cybersecurity;
131
- attribute :>> requirementStatus = RequirementStatusKind::approved;
135
+ attribute :>> status = ElementStatusKind::approved;
132
136
  attribute :>> acceptanceCriteria = "Unauthenticated or unauthorized attempts to modify therapy configuration are rejected and logged.";
133
137
  attribute :>> subjectDescription = "maintenance and configuration path";
134
138
  attribute :>> actorDescription = "service personnel";
@@ -145,7 +149,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_cybersecurity {
145
149
  attribute :>> name = "VerifyAuthenticatedServiceAccess";
146
150
  attribute :>> methodKind = VerificationMethodKind::test;
147
151
  attribute :>> acceptanceCriteria = "Only authenticated and authorized service sessions may modify therapy configuration; all attempts are logged.";
148
- attribute :>> status = "planned";
152
+ attribute :>> status = ElementStatusKind::approved;
153
+
154
+ objective { verify reqAuthenticatedServiceAccess; }
149
155
  }
150
156
 
151
157
  connection : ThreatenedBy connect protectedAsset ::> therapyConfigurationAsset to realizedThreat ::> unauthorizedConfigChangeThreat;
@@ -166,7 +172,5 @@ package memo_examples_gpca_pump_model_catalog_gpca_cybersecurity {
166
172
 
167
173
  connection : CrossesTrustBoundary connect boundary ::> maintenancePortBoundary to crossingItem ::> therapyConfigurationAsset;
168
174
 
169
- connection : VerifiedBy connect verificationTarget ::> reqAuthenticatedServiceAccess to verificationCase ::> vcAuthenticatedServiceAccess;
170
-
171
175
  connection : ProducesEvidence connect producer ::> vcAuthenticatedServiceAccess to producedEvidence ::> evidenceLockout;
172
176
  }
@@ -1,4 +1,4 @@
1
- package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
1
+ package memo_examples_gpca_pump_gpca_formal_behavior {
2
2
  private import ScalarValues::*;
3
3
 
4
4
  private import memo_architecture_functional_behavior::*;
@@ -42,7 +42,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
42
42
  attribute :>> propertyKind = BehaviorPropertyKind::assumption;
43
43
  attribute :>> id = "AP-002";
44
44
  attribute :>> name = "VtbiHighPositive";
45
- attribute :>> propertyKind = BehaviorPropertyKind::assumption;
46
45
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
47
46
  attribute :>> formalExpression = "assume DB_IN.VTBI_High > 0";
48
47
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
@@ -51,7 +50,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
51
50
  attribute :>> propertyKind = BehaviorPropertyKind::assumption;
52
51
  attribute :>> id = "AP-003";
53
52
  attribute :>> name = "EmptyReservoirConstPositive";
54
- attribute :>> propertyKind = BehaviorPropertyKind::assumption;
55
53
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
56
54
  attribute :>> formalExpression = "assume CONST_IN.Empty_Reservoir > 0";
57
55
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
@@ -60,7 +58,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
60
58
  attribute :>> propertyKind = BehaviorPropertyKind::assumption;
61
59
  attribute :>> id = "AP-001";
62
60
  attribute :>> name = "ValidPrescriptionSavedBeforeTherapy";
63
- attribute :>> propertyKind = BehaviorPropertyKind::assumption;
64
61
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
65
62
  attribute :>> formalExpression = "assume a saved prescription is available before infusion initiation";
66
63
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3.1 (REQ 7)";
@@ -71,7 +68,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
71
68
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
72
69
  attribute :>> id = "GP-001";
73
70
  attribute :>> name = "ModeRange";
74
- attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
75
71
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
76
72
  attribute :>> formalExpression = "guarantee mode_range: GPCA_SW_OUT.Current_System_Mode in {0, 1, 2, 3, 4, 6, 7, 8} (source enumeration omits 5)";
77
73
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 1)";
@@ -80,7 +76,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
80
76
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
81
77
  attribute :>> id = "GP-004";
82
78
  attribute :>> name = "NotStartImpliesModeZero";
83
- attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
84
79
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
85
80
  attribute :>> formalExpression = "guarantee not(OP_CMD_IN.System_Start) => GPCA_SW_OUT.Current_System_Mode = 0";
86
81
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
@@ -89,7 +84,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
89
84
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
90
85
  attribute :>> id = "GP-005";
91
86
  attribute :>> name = "InitialSystemStartImpliesModeOne";
92
- attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
93
87
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
94
88
  attribute :>> formalExpression = "guarantee sys_initial and OP_CMD_IN.System_Start => GPCA_SW_OUT.Current_System_Mode = 1";
95
89
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 4 allocation: TLM System_Start -> System_On; IM System_On -> mode 1)";
@@ -98,7 +92,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
98
92
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
99
93
  attribute :>> id = "GP-006";
100
94
  attribute :>> name = "OffToOnImpliesModeOne";
101
- attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
102
95
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
103
96
  attribute :>> formalExpression = "guarantee not(sys_initial) and pre(GPCA_SW_OUT.Current_System_Mode) = 0 and OP_CMD_IN.System_Start => GPCA_SW_OUT.Current_System_Mode = 1";
104
97
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 4)";
@@ -107,7 +100,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
107
100
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
108
101
  attribute :>> id = "GP-007";
109
102
  attribute :>> name = "EmptyReservoirImpliesNoFlow";
110
- attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
111
103
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
112
104
  attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and pre(Current_System_Mode) > 1 and GPCA_SW_OUT.Reservoir_Volume < CONST_IN.Empty_Reservoir) => GPCA_SW_OUT.Commanded_Flow_Rate = 0";
113
105
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 59 'Empty Reservoir')";
@@ -116,7 +108,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
116
108
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
117
109
  attribute :>> id = "GP-008";
118
110
  attribute :>> name = "OverVtbiImpliesFlowAtMostKvo";
119
- attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
120
111
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
121
112
  attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and pre(Current_System_Mode) > 1 and GPCA_SW_OUT.Volume_Infused > DB_IN.VTBI_High) => GPCA_SW_OUT.Commanded_Flow_Rate <= GPCA_SW_OUT.Flow_Rate_KVO";
122
113
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (over-infusion => keep-vein-open, not zero)";
@@ -125,7 +116,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
125
116
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
126
117
  attribute :>> id = "GP-009";
127
118
  attribute :>> name = "AirInLineImpliesFlowAtMostKvo";
128
- attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
129
119
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
130
120
  attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and SENSOR_IN.Air_In_Line) => GPCA_SW_OUT.Commanded_Flow_Rate <= GPCA_SW_OUT.Flow_Rate_KVO";
131
121
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 21 'Air embolism')";
@@ -134,7 +124,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
134
124
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
135
125
  attribute :>> id = "GP-010";
136
126
  attribute :>> name = "OcclusionImpliesFlowAtMostKvo";
137
- attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
138
127
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
139
128
  attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and SENSOR_IN.Occlusion) => GPCA_SW_OUT.Commanded_Flow_Rate <= GPCA_SW_OUT.Flow_Rate_KVO";
140
129
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
@@ -143,7 +132,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
143
132
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
144
133
  attribute :>> id = "GP-011";
145
134
  attribute :>> name = "DoorOpenImpliesFlowAtMostKvo";
146
- attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
147
135
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
148
136
  attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and SENSOR_IN.Door_Open) => GPCA_SW_OUT.Commanded_Flow_Rate <= GPCA_SW_OUT.Flow_Rate_KVO";
149
137
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
@@ -152,7 +140,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
152
140
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
153
141
  attribute :>> id = "GP-003";
154
142
  attribute :>> name = "SameStepAlarmKvoGuarantee";
155
- attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
156
143
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
157
144
  attribute :>> formalExpression = "guarantee an infusion-inhibiting notification in a step implies Commanded_Flow_Rate <= Flow_Rate_KVO in the same step (ALARM_OUT -> IM.ALARM_IN is an immediate connection)";
158
145
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl (ALARM_to_IM immediate) with the flow <= KVO guarantees above";
@@ -161,7 +148,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
161
148
  attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
162
149
  attribute :>> id = "GP-002";
163
150
  attribute :>> name = "LockoutGuarantee";
164
- attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
165
151
  attribute :>> languageKind = PropertyLanguageKind::agreeLike;
166
152
  attribute :>> formalExpression = "guarantee a BolusRequest_prog inside the LockOutPeriod_pbolus_prog window is ignored and no PATIENT BOLUS is initiated";
167
153
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.1 (REQ 25.3, REQ 26)";