@memoarchitect/ontology 0.6.4 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/README.md +1 -1
  2. package/examples/connected-patient-monitor/model/catalog/project.sysml +24 -0
  3. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  4. package/examples/connected-patient-monitor/model/{viewpoints → catalog/viewpoints/unassigned/views}/connected_patient_monitor_overview.sysml +1 -1
  5. package/examples/embedded-infusion-pump/model/catalog/project.sysml +24 -0
  6. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  7. package/examples/embedded-infusion-pump/model/{viewpoints → catalog/viewpoints/unassigned/views}/embedded_infusion_pump_overview.sysml +1 -1
  8. package/examples/extensions/clinical/memo.package.yaml +18 -9
  9. package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +10 -2
  10. package/examples/extensions/template/memo.package.yaml +17 -9
  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/analysis/Samples/01-model-overview.ipynb +148 -0
  15. package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +301 -0
  16. package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +229 -0
  17. package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +200 -0
  18. package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +188 -0
  19. package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +173 -0
  20. package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +180 -0
  21. package/examples/gpca-pump/analysis/Samples/README.md +37 -0
  22. package/examples/gpca-pump/gpca-pump.kpar +0 -0
  23. package/examples/gpca-pump/methodology/gpca_methodology.sysml +7 -8
  24. package/examples/gpca-pump/methodology/gpca_profiles.sysml +89 -11
  25. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +1 -1
  26. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +22 -12
  27. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +2 -2
  28. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +8 -2
  29. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +5 -5
  30. package/examples/gpca-pump/model/catalog/gpca_context.sysml +3 -8
  31. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +6 -6
  32. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +1 -15
  33. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +41 -11
  34. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +19 -8
  35. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +2 -2
  36. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +1 -1
  37. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +10 -1
  38. package/examples/gpca-pump/model/catalog/gpca_system.sysml +34 -30
  39. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +59 -31
  40. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +1 -1
  41. package/examples/gpca-pump/model/catalog/project.sysml +21 -0
  42. package/examples/gpca-pump/model/catalog/viewpoints/context/viewpoint.sysml +8 -0
  43. package/examples/gpca-pump/model/{views → catalog/viewpoints/context/views}/context_system_context_view.sysml +3 -3
  44. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/viewpoint.sysml +8 -0
  45. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/cybersecurity_cybersecurity_view.sysml +3 -3
  46. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_cyber_assessment_view.sysml +4 -4
  47. package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_threat_model_view.sysml +4 -4
  48. package/examples/gpca-pump/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
  49. package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_allocation_view.sysml +2 -2
  50. package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_browser_view.sysml +3 -3
  51. package/examples/gpca-pump/model/catalog/viewpoints/logical/viewpoint.sysml +8 -0
  52. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/behavior_action_flow_view.sysml +3 -3
  53. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/document_architecture_description_view.sysml +7 -7
  54. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_device_interconnect_view.sysml +5 -5
  55. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_logical_architecture_view.sysml +3 -3
  56. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_mode_state_view.sysml +3 -3
  57. package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_system_decomposition_view.sysml +3 -3
  58. package/examples/gpca-pump/model/catalog/viewpoints/operational/viewpoint.sysml +8 -0
  59. package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_scenario_sequence_view.sysml +2 -2
  60. package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_use_case_view.sysml +3 -3
  61. package/examples/gpca-pump/model/catalog/viewpoints/physical/viewpoint.sysml +8 -0
  62. package/examples/gpca-pump/model/{views → catalog/viewpoints/physical/views}/physical_physical_bom_view.sysml +2 -2
  63. package/examples/gpca-pump/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
  64. package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/document_dhf_index_view.sysml +6 -6
  65. package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/requirements_requirements_trace_view.sysml +2 -2
  66. package/examples/gpca-pump/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
  67. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_hazard_analysis_view.sysml +3 -3
  68. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_rmf_view.sysml +3 -3
  69. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_fmea_view.sysml +2 -2
  70. package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_risk_chain_view.sysml +3 -3
  71. package/examples/gpca-pump/model/catalog/viewpoints/software/viewpoint.sysml +8 -0
  72. package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/document_sdd_view.sysml +3 -3
  73. package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/software_software_architecture_view.sysml +3 -3
  74. package/examples/gpca-pump/model/catalog/viewpoints/usability/viewpoint.sysml +8 -0
  75. package/examples/gpca-pump/model/{views → catalog/viewpoints/usability/views}/document_usability_view.sysml +4 -4
  76. package/examples/gpca-pump/model/catalog/viewpoints/verification/viewpoint.sysml +8 -0
  77. package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/document_vv_view.sysml +3 -3
  78. package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/verification_verification_coverage_view.sysml +2 -2
  79. package/examples/ivd-laboratory-system/model/catalog/project.sysml +24 -0
  80. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  81. package/examples/ivd-laboratory-system/model/{viewpoints → catalog/viewpoints/unassigned/views}/ivd_laboratory_system_overview.sysml +1 -1
  82. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +1 -0
  83. package/examples/manual-surgical-instrument/model/catalog/project.sysml +24 -0
  84. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  85. package/examples/manual-surgical-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/manual_surgical_instrument_overview.sysml +1 -1
  86. package/examples/multidimensional-layers/model/catalog/project.sysml +24 -0
  87. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  88. package/examples/multidimensional-layers/model/{viewpoints → catalog/viewpoints/unassigned/views}/multidimensional_layers_overview.sysml +1 -1
  89. package/examples/nested-architecture-dsm/README.md +49 -0
  90. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +174 -0
  91. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +183 -0
  92. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +53 -0
  93. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +89 -0
  94. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +90 -0
  95. package/examples/nested-architecture-dsm/model/catalog/project.sysml +28 -0
  96. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +49 -0
  97. package/examples/reusable-instrument/model/catalog/project.sysml +24 -0
  98. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -6
  99. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  100. package/examples/reusable-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/reusable_instrument_overview.sysml +1 -1
  101. package/examples/software-only-medical-device/model/catalog/project.sysml +24 -0
  102. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  103. package/examples/software-only-medical-device/model/{viewpoints → catalog/viewpoints/unassigned/views}/software_only_medical_device_overview.sysml +1 -1
  104. package/examples/surgical-closure-workflow/model/catalog/project.sysml +24 -0
  105. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +23 -19
  106. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  107. package/examples/surgical-closure-workflow/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_closure_workflow_overview.sysml +1 -1
  108. package/examples/surgical-robot/model/catalog/project.sysml +24 -0
  109. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +5 -3
  110. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  111. package/examples/surgical-robot/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_robot_overview.sysml +1 -1
  112. package/examples/sysml-diagram-samples/README.md +7 -0
  113. package/examples/sysml-diagram-samples/dhf/documents/DOC-HAR-001.md +11 -0
  114. package/examples/sysml-diagram-samples/memo.package.yaml +11 -5
  115. package/examples/sysml-diagram-samples/model/catalog/project.sysml +33 -0
  116. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  117. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/action_flow_view.sysml +18 -10
  118. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/context_view.sysml +4 -2
  119. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +47 -0
  120. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/functional_flow_view.sysml +23 -20
  121. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/interconnection_view.sysml +17 -14
  122. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +94 -0
  123. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/operational_behaviour_view.sysml +23 -20
  124. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +13 -0
  125. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/requirements_view.sysml +3 -1
  126. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +51 -0
  127. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/state_transition_view.sysml +3 -1
  128. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/tree_view.sysml +3 -1
  129. package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/use_case_view.sysml +3 -1
  130. package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +93 -0
  131. package/examples/temperature-alarm/model/catalog/project.sysml +24 -0
  132. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +2 -1
  133. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
  134. package/examples/temperature-alarm/model/{viewpoints → catalog/viewpoints/unassigned/views}/temperature_alarm_overview.sysml +1 -1
  135. package/examples/ui-screen-regions/README.md +117 -0
  136. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +60 -0
  137. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +189 -0
  138. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +61 -0
  139. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/drugSelectorRegion/drug-selector-expanded-2.4.1.png +0 -0
  140. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/mainScreenLayout/main-screen-2.4.1.png +0 -0
  141. package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/settingsScreenLayout/settings-screen-2.4.1.png +0 -0
  142. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +51 -0
  143. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +27 -0
  144. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +27 -0
  145. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +59 -0
  146. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +25 -0
  147. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +178 -0
  148. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +93 -0
  149. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +60 -0
  150. package/examples/ui-screen-regions/model/catalog/project.sysml +45 -0
  151. package/examples/ui-screen-regions/model/catalog/traces.sysml +276 -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/memo.manifest.yaml +2 -0
  163. package/methodologies/default/memo.package.yaml +19 -9
  164. package/methodologies/gpca/memo.package.yaml +18 -9
  165. package/ontology/memo.package.yaml +23 -8
  166. package/package.json +1 -3
  167. package/profile/memo.package.yaml +18 -9
  168. package/src/architecture/decisions/memo_decisions.sysml +7 -0
  169. package/src/architecture/functional/behavior/memo_behavior.sysml +1 -1
  170. package/src/architecture/functional/functions/memo_functions.sysml +5 -12
  171. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +1 -3
  172. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +18 -5
  173. package/src/architecture/implementation/ui/memo_ui.sysml +210 -27
  174. package/src/architecture/logical/interfaces/memo_interfaces.sysml +1 -2
  175. package/src/architecture/logical/structure/memo_logical_structure.sysml +71 -15
  176. package/src/architecture/operational/activities/memo_activities.sysml +0 -1
  177. package/src/architecture/operational/scenarios/memo_scenarios.sysml +2 -2
  178. package/src/architecture/operational/workflows/memo_workflows.sysml +0 -6
  179. package/src/{compliance/change/memo_change.sysml → artifacts/configuration_management/memo_configuration_management.sysml} +5 -3
  180. package/src/artifacts/core/memo_controlled_artifacts.sysml +33 -0
  181. package/src/artifacts/documents/risk_management/memo_risk_management.sysml +12 -0
  182. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +1 -1
  183. package/src/assurance/human_factors/memo_human_factors.sysml +1 -1
  184. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +11 -0
  185. package/src/assurance/verification_validation/clinical_evaluation/memo_clinical_evaluation.sysml +11 -0
  186. package/src/assurance/verification_validation/memo_assurance.sysml +1 -1
  187. package/src/core/annotations/memo_annotations.sysml +77 -0
  188. package/src/core/common/memo_common.sysml +20 -3
  189. package/src/core/consistency_rules/consistency_rules.sysml +7 -0
  190. package/src/core/dimensions/dimensions.sysml +5 -1
  191. package/src/core/enumerations/memo_enumerations.sysml +41 -6
  192. package/src/core/methodology_scope/methodology_scope.sysml +7 -15
  193. package/src/core/relationships/memo_relationships.sysml +4 -2
  194. package/src/memo_namespaces.sysml +97 -67
  195. package/src/methodology/core/memo_core.sysml +45 -2
  196. package/src/methodology/profiles/memo_profiles.sysml +30 -40
  197. package/src/methodology/workflow/memo_workflow.sysml +7 -2
  198. package/src/rules/closure/closure_rules.sysml +104 -31
  199. package/src/rules/coverage/coverage_rules.sysml +4 -256
  200. package/src/rules/crosslayer/cross_layer_rules.sysml +6 -15
  201. package/src/rules/lifecycle/lifecycle_rules.sysml +4 -39
  202. package/src/rules/ontology/ontology_invariants.sysml +38 -68
  203. package/src/rules/quantitative/quantitative_rules.sysml +8 -8
  204. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +7 -0
  205. package/src/viewpoints/clinical/clinical_viewpoint.sysml +3 -1
  206. package/src/viewpoints/clinical/{clinical_evidence_view → views/clinical_evidence_view}/clinical_evidence_view.sysml +2 -2
  207. package/src/viewpoints/context/context_viewpoint.sysml +3 -1
  208. package/src/viewpoints/context/{system_context_view → views/system_context_view}/system_context_view.sysml +2 -2
  209. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +3 -1
  210. package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view → views/cybersecurity_assessment_view}/cybersecurity_assessment_view.sysml +2 -2
  211. package/src/viewpoints/cybersecurity/{threat_model_view → views/threat_model_view}/threat_model_view.sysml +2 -2
  212. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +6 -0
  213. package/src/viewpoints/functional/functional_viewpoint.sysml +3 -1
  214. package/src/viewpoints/functional/{function_allocation_view → views/function_allocation_view}/function_allocation_view.sysml +2 -2
  215. package/src/viewpoints/functional/{system_functional_tree_view → views/system_functional_tree_view}/system_functional_tree_view.sysml +2 -2
  216. package/src/viewpoints/logical/logical_viewpoint.sysml +3 -1
  217. package/src/viewpoints/logical/{logical_architecture_view → views/logical_architecture_view}/logical_architecture_view.sysml +2 -2
  218. package/src/viewpoints/operational/operational_viewpoint.sysml +3 -1
  219. package/src/viewpoints/operational/{use_case_view → views/use_case_view}/use_case_view.sysml +2 -2
  220. package/src/viewpoints/physical/physical_viewpoint.sysml +3 -1
  221. package/src/viewpoints/physical/{network_topology_view → views/network_topology_view}/network_topology_view.sysml +2 -2
  222. package/src/viewpoints/physical/{physical_bom_view → views/physical_bom_view}/physical_bom_view.sysml +2 -2
  223. package/src/viewpoints/rendering/memo_rendering.sysml +354 -0
  224. package/src/viewpoints/requirements/requirements_viewpoint.sysml +3 -1
  225. package/src/viewpoints/requirements/{requirements_traceability_view → views/requirements_traceability_view}/requirements_traceability_view.sysml +2 -2
  226. package/src/viewpoints/risk/risk_viewpoint.sysml +3 -1
  227. package/src/viewpoints/risk/{risk_chain_view → views/risk_chain_view}/risk_chain_view.sysml +2 -2
  228. package/src/viewpoints/software/software_viewpoint.sysml +3 -1
  229. package/src/viewpoints/software/{software_architecture_view → views/software_architecture_view}/software_architecture_view.sysml +2 -2
  230. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +28 -0
  231. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +23 -0
  232. package/src/viewpoints/usability/usability_viewpoint.sysml +3 -1
  233. package/src/viewpoints/usability/{usability_engineering_view → views/usability_engineering_view}/usability_engineering_view.sysml +2 -2
  234. package/src/viewpoints/verification/verification_viewpoint.sysml +3 -1
  235. package/src/viewpoints/verification/{verification_coverage_view → views/verification_coverage_view}/verification_coverage_view.sysml +2 -2
  236. package/templates/connected-device/memo.package.yaml +11 -5
  237. package/templates/connected-device/model/catalog/project.sysml +28 -0
  238. package/templates/connected-device/syside.toml +1 -1
  239. package/templates/default/memo.package.yaml +11 -5
  240. package/templates/default/model/catalog/project.sysml +28 -0
  241. package/templates/default/syside.toml +1 -1
  242. package/templates/infusion-pump/memo.package.yaml +11 -5
  243. package/templates/infusion-pump/model/catalog/project.sysml +28 -0
  244. package/templates/infusion-pump/syside.toml +1 -1
  245. package/templates/monitoring-device/memo.package.yaml +11 -5
  246. package/templates/monitoring-device/model/catalog/project.sysml +28 -0
  247. package/templates/monitoring-device/syside.toml +1 -1
  248. package/templates/samd/memo.package.yaml +11 -5
  249. package/templates/samd/model/catalog/project.sysml +28 -0
  250. package/templates/samd/syside.toml +1 -1
  251. package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +0 -3
  252. package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +0 -3
  253. package/examples/functional-logical-physical/model/functional_logical_physical.sysml +0 -3
  254. package/examples/gpca-pump/memo.config.yaml +0 -9
  255. package/examples/gpca-pump/methodology/gpca_scope.sysml +0 -25
  256. package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +0 -3
  257. package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +0 -3
  258. package/examples/multidimensional-layers/model/multidimensional_layers.sysml +0 -4
  259. package/examples/reusable-instrument/model/reusable_instrument.sysml +0 -4
  260. package/examples/software-only-medical-device/model/software_only_medical_device.sysml +0 -4
  261. package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +0 -4
  262. package/examples/surgical-robot/model/surgical_robot.sysml +0 -4
  263. package/examples/temperature-alarm/model/temperature_alarm.sysml +0 -4
  264. package/ontology/memo.rendering.yaml +0 -84
  265. package/src/compliance/artifacts/memo_artifacts.sysml +0 -12
  266. package/src/compliance/document_views/memo_document_views.sysml +0 -7
  267. package/src/compliance/iso14971/risk_management_file.sysml +0 -16
  268. package/src/compliance/postmarket/memo_postmarket.sysml +0 -16
  269. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/change-record.md +0 -0
  270. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-input.md +0 -0
  271. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-output.md +0 -0
  272. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-review.md +0 -0
  273. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-validation.md +0 -0
  274. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-verification.md +0 -0
  275. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/dhf-index.md +0 -0
  276. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/transfer-plan.md +0 -0
  277. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/user-needs.md +0 -0
  278. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-plan.md +0 -0
  279. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-report.md +0 -0
  280. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/incident-response.md +0 -0
  281. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/postmarket-surveillance.md +0 -0
  282. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/security-arch.md +0 -0
  283. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/threat-model.md +0 -0
  284. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/vuln-assessment.md +0 -0
  285. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/change-control.md +0 -0
  286. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/detailed-design.md +0 -0
  287. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/integration-test.md +0 -0
  288. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sad.md +0 -0
  289. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sbom.md +0 -0
  290. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sdp.md +0 -0
  291. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/soup.md +0 -0
  292. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/srs.md +0 -0
  293. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sw-traceability.md +0 -0
  294. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/system-test.md +0 -0
  295. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/formative-eval.md +0 -0
  296. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/summative-eval.md +0 -0
  297. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/task-analysis.md +0 -0
  298. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ue-plan.md +0 -0
  299. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ui-spec.md +0 -0
  300. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/urra.md +0 -0
  301. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/use-spec.md +0 -0
  302. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/fmea.md +0 -0
  303. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/fta.md +0 -0
  304. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/har.md +0 -0
  305. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-benefit.md +0 -0
  306. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-matrix.md +0 -0
  307. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmp.md +0 -0
  308. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmr.md +0 -0
  309. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/approval-block.md +0 -0
  310. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/document-control-header.md +0 -0
  311. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/references-section.md +0 -0
  312. /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/revision-history-table.md +0 -0
  313. /package/templates/connected-device/{src → model/catalog}/architecture/system.sysml +0 -0
  314. /package/templates/connected-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  315. /package/templates/connected-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
  316. /package/templates/default/{src → model/catalog}/architecture/system.sysml +0 -0
  317. /package/templates/default/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  318. /package/templates/default/{src → model/catalog}/assurance/requirements.sysml +0 -0
  319. /package/templates/infusion-pump/{src → model/catalog}/architecture/system.sysml +0 -0
  320. /package/templates/infusion-pump/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  321. /package/templates/infusion-pump/{src → model/catalog}/assurance/requirements.sysml +0 -0
  322. /package/templates/monitoring-device/{src → model/catalog}/architecture/system.sysml +0 -0
  323. /package/templates/monitoring-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  324. /package/templates/monitoring-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
  325. /package/templates/samd/{src → model/catalog}/architecture/system.sysml +0 -0
  326. /package/templates/samd/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
  327. /package/templates/samd/{src → model/catalog}/assurance/requirements.sysml +0 -0
@@ -0,0 +1,60 @@
1
+ // Functional architecture: the display-management function tree.
2
+ package memo_examples_ui_screen_regions_architecture_functional_functions {
3
+ private import ScalarValues::*;
4
+
5
+ private import memo_core_relationships::*;
6
+ private import memo_core_annotations::*;
7
+ private import memo_architecture_implementation_ui::*;
8
+ private import memo_assurance_requirements::*;
9
+ private import memo_assurance_requirements_needs::*;
10
+ private import memo_assurance_human_factors::*;
11
+ private import memo_assurance_safety_risk::*;
12
+ private import memo_assurance_verification_validation::*;
13
+ private import memo_artifacts_core::*;
14
+
15
+ private import memo_core_enumerations::*;
16
+ private import memo_architecture_functional_functions::*;
17
+
18
+ part fnSetInfusionRate : SystemFunction {
19
+ attribute :>> id = "UIR-FN-001"; attribute :>> name = "SetInfusionRate";
20
+ attribute :>> shortDescription = "Apply a clinician-entered rate to the pump controller.";
21
+ attribute :>> description = "Validates a requested infusion rate against the drug library limits and the pump's mechanical range, then commits it to the controller as the active setpoint.";
22
+ attribute :>> criticality = CriticalityKind::high;
23
+ }
24
+
25
+ part fnManageInfusionDisplay : SystemFunction {
26
+ attribute :>> id = "UIR-FN-002"; attribute :>> name = "ManageInfusionDisplay";
27
+ attribute :>> shortDescription = "Coordinate the running-infusion display and its interactive regions.";
28
+ attribute :>> description = "Maintains the clinician-facing infusion state and delegates rate programming, drug selection, and status presentation to focused child functions.";
29
+ attribute :>> criticality = CriticalityKind::high;
30
+ }
31
+
32
+ part fnValidateDrugSelection : SystemFunction {
33
+ attribute :>> id = "UIR-FN-003"; attribute :>> name = "ValidateDrugSelection";
34
+ attribute :>> shortDescription = "Validate a selected drug and concentration against the active care-area library.";
35
+ attribute :>> description = "Accepts only a drug and concentration present in the active drug library, then supplies its dosing limits to rate validation.";
36
+ attribute :>> criticality = CriticalityKind::high;
37
+ }
38
+
39
+ part fnPresentDeliveryStatus : SystemFunction {
40
+ attribute :>> id = "UIR-FN-004"; attribute :>> name = "PresentDeliveryStatus";
41
+ attribute :>> shortDescription = "Present current rate and cumulative delivered volume.";
42
+ attribute :>> description = "Refreshes the rate and volume-delivered indicators from controller state at the specified display update interval.";
43
+ attribute :>> criticality = CriticalityKind::medium;
44
+ }
45
+
46
+ part fnPresentLocalTime : SystemFunction {
47
+ attribute :>> id = "UIR-FN-005"; attribute :>> name = "PresentLocalTime";
48
+ attribute :>> shortDescription = "Read the synchronized clock and present local time.";
49
+ attribute :>> description = "Formats the device clock as local 24-hour time and refreshes the status-bar value once per second.";
50
+ attribute :>> criticality = CriticalityKind::medium;
51
+ }
52
+
53
+ part fnPresentBatteryStatus : SystemFunction {
54
+ attribute :>> id = "UIR-FN-006"; attribute :>> name = "PresentBatteryStatus";
55
+ attribute :>> shortDescription = "Present battery state of charge and low-battery status.";
56
+ attribute :>> description = "Converts battery telemetry into percentage, icon state, and low-battery prominence for the running-infusion screen.";
57
+ attribute :>> criticality = CriticalityKind::medium;
58
+ }
59
+
60
+ }
@@ -0,0 +1,189 @@
1
+ // UI implementation architecture: the screen tree, its actions, and the
2
+ // panel they run on. One part tree carries geometry and design record — there
3
+ // is no separate region type.
4
+ package memo_examples_ui_screen_regions_architecture_implementation_ui {
5
+ private import ScalarValues::*;
6
+
7
+ private import memo_core_relationships::*;
8
+ private import memo_core_annotations::*;
9
+ private import memo_architecture_functional_functions::*;
10
+ private import memo_assurance_requirements::*;
11
+ private import memo_assurance_requirements_needs::*;
12
+ private import memo_assurance_human_factors::*;
13
+ private import memo_assurance_safety_risk::*;
14
+ private import memo_assurance_verification_validation::*;
15
+ private import memo_artifacts_core::*;
16
+
17
+ private import memo_core_enumerations::*;
18
+ private import memo_architecture_implementation_ui::*;
19
+
20
+ // Every UIElement carries safetyClass C. Per IEC 62304 §4.3 items inherit
21
+ // the software system's class; an item is classified lower only where
22
+ // segregation is documented, and nothing here is segregated — one UI
23
+ // process draws the lot, so the chrome inherits C like the rate field.
24
+ part uiPumpPanel : UserInterface {
25
+ attribute :>> id = "UIR-UI-001"; attribute :>> name = "PumpFrontPanel";
26
+ attribute :>> shortDescription = "Front-panel touchscreen.";
27
+ attribute :>> description = "The 7-inch capacitive touchscreen on the pump front panel, the sole interface for programming and monitoring an infusion at the bedside.";
28
+ attribute :>> modality = "visual + touch";
29
+ attribute :>> uiTechnology = "embedded Qt";
30
+ }
31
+
32
+ // ── The main screen, and the tree beneath it ────────────────
33
+ // A screen is a UIElement whose formKind is `screen`. Its bounds are the
34
+ // full frame; every descendant's bounds are relative to ITS parent.
35
+ part elMainScreen : UIElement {
36
+ attribute :>> id = "UIE-001"; attribute :>> name = "MainInfusionScreen";
37
+ attribute :>> shortDescription = "Primary running-infusion screen.";
38
+ attribute :>> description = "The screen shown while an infusion is running: current rate, volume delivered, and access to settings. The default view the clinician comes back to after any subordinate task.";
39
+ attribute :>> formKind = UIElementFormKind::screen;
40
+ attribute :>> safetyClass = SafetyClassKind::C;
41
+ attribute :>> navigationRole = "home";
42
+ attribute :>> disclosureKind = UIDisclosureKind::inline;
43
+ attribute :>> bounds {
44
+ attribute :>> x = 0.0; attribute :>> y = 0.0;
45
+ attribute :>> width = 1.0; attribute :>> height = 1.0;
46
+ }
47
+ attribute :>> boundaryColor = "#1B3A4B";
48
+ attribute :>> detectionMethod = BoundsDetectionKind::manual;
49
+ }
50
+
51
+ // ── A recursively inspectable dynamic region ─────────────────
52
+ // The reusable region is the parent. Closed and expanded presentations are
53
+ // siblings beneath it, so a renderer (including a 3-D renderer) can reuse
54
+ // the region and select the state appropriate to its scene. The region has
55
+ // its own capture; geometry views stop at that boundary on the main screen
56
+ // and let the reviewer double-click to recurse into its children.
57
+ part elDrugSelectorRegion : UIElement {
58
+ attribute redefines name = "DrugSelectorRegion";
59
+ attribute redefines id = "UIE-005";
60
+ attribute redefines shortDescription = "Reusable region containing drug-selector states.";
61
+ attribute redefines description = "Parent geometry region for the drug selector. Its state presentations are sibling UI elements, permitting the same region definition to be reused in flat, spatial, or 3-D renderings.";
62
+ attribute redefines formKind = UIElementFormKind::panel;
63
+ attribute redefines safetyClass = SafetyClassKind::C;
64
+ attribute redefines labelText = "DRUG";
65
+ attribute redefines disclosureKind = UIDisclosureKind::inline;
66
+ attribute redefines boundaryColor = "#F59E0B";
67
+ attribute redefines detectionMethod = BoundsDetectionKind::manual;
68
+ attribute redefines confirmedBy = "j.okafor";
69
+ attribute redefines confirmedAt = "2026-07-15";
70
+ attribute redefines bounds {
71
+ attribute redefines x = 0.03;
72
+ attribute redefines y = 0.43;
73
+ attribute redefines width = 0.47;
74
+ attribute redefines height = 0.18;
75
+ }
76
+ }
77
+
78
+ part elDrugSelectorClosed : UIElement {
79
+ attribute :>> id = "UIE-010"; attribute :>> name = "ClosedDrugSelector";
80
+ attribute :>> shortDescription = "Closed drug selector shown on the main screen.";
81
+ attribute :>> description = "The compact, normal-state selector. It is a sibling of the expanded menu rather than a different identity for the parent region.";
82
+ attribute :>> formKind = UIElementFormKind::selector;
83
+ attribute :>> safetyClass = SafetyClassKind::C;
84
+ attribute :>> labelText = "Norepinephrine 8 mg / 250 mL";
85
+ attribute :>> disclosureKind = UIDisclosureKind::conditional;
86
+ attribute :>> visibilityCondition = "drug selector inactive";
87
+ attribute :>> bounds {
88
+ attribute :>> x = 0.0; attribute :>> y = 0.0;
89
+ attribute :>> width = 1.0; attribute :>> height = 0.25;
90
+ }
91
+ attribute :>> boundaryColor = "#F59E0B";
92
+ attribute :>> detectionMethod = BoundsDetectionKind::manual;
93
+ }
94
+
95
+ // Open, this sibling overlays the same parent region. `overlay` states that
96
+ // covering adjacent content is intended dropdown behaviour, not a defect.
97
+ part elDrugMenuExpanded : UIElement {
98
+ attribute :>> id = "UIE-011"; attribute :>> name = "ExpandedDrugMenu";
99
+ attribute :>> shortDescription = "Expanded drug library choices.";
100
+ attribute :>> description = "Expanded state listing Norepinephrine, Dopamine, and Heparin. It shares the DrugSelectorRegion parent with the closed state and can extend beyond that parent's normal inline allocation.";
101
+ attribute :>> formKind = UIElementFormKind::selector;
102
+ attribute :>> safetyClass = SafetyClassKind::C;
103
+ attribute :>> labelText = "Norepinephrine; Dopamine; Heparin";
104
+ attribute :>> disclosureKind = UIDisclosureKind::overlay;
105
+ attribute :>> visibilityCondition = "drug selector activated";
106
+ attribute :>> bounds {
107
+ attribute :>> x = 0.0; attribute :>> y = 0.20;
108
+ attribute :>> width = 1.0; attribute :>> height = 0.80;
109
+ }
110
+ attribute :>> boundaryColor = "#D97706";
111
+ attribute :>> detectionMethod = BoundsDetectionKind::manual;
112
+ }
113
+
114
+ // ── The settings screen: a sibling root, not a child ────────
115
+ part elSettingsScreen : UIElement {
116
+ attribute :>> id = "UIE-008"; attribute :>> name = "InfusionSettingsScreen";
117
+ attribute :>> shortDescription = "Settings screen reached from the main screen.";
118
+ attribute :>> description = "Secondary screen for changing infusion parameters mid-run. It is a root in its own right with its own capture and its own coordinate frame — it is not laid out inside the main screen, so no geometric rule relates the two.";
119
+ attribute :>> formKind = UIElementFormKind::screen;
120
+ attribute :>> safetyClass = SafetyClassKind::C;
121
+ attribute :>> navigationRole = "subordinate";
122
+ attribute :>> disclosureKind = UIDisclosureKind::inline;
123
+ attribute :>> bounds {
124
+ attribute :>> x = 0.0; attribute :>> y = 0.0;
125
+ attribute :>> width = 1.0; attribute :>> height = 1.0;
126
+ }
127
+ attribute :>> boundaryColor = "#1B3A4B";
128
+ attribute :>> detectionMethod = BoundsDetectionKind::manual;
129
+ }
130
+
131
+ // A modal child of the settings screen. It is visible only while a pending
132
+ // rate change awaits explicit confirmation and intentionally covers the
133
+ // settings form beneath it.
134
+ part elRateConfirmDialog : UIElement {
135
+ attribute :>> id = "UIE-009"; attribute :>> name = "RateChangeConfirmationDialog";
136
+ attribute :>> shortDescription = "Modal confirmation popup for a new infusion rate.";
137
+ attribute :>> description = "Restates the pending infusion rate above the settings screen and requires an explicit confirm or cancel disposition before the value can reach the controller.";
138
+ attribute :>> formKind = UIElementFormKind::dialog;
139
+ attribute :>> safetyClass = SafetyClassKind::C;
140
+ attribute :>> labelText = "Confirm rate change?";
141
+ attribute :>> disclosureKind = UIDisclosureKind::overlay;
142
+ attribute :>> visibilityCondition = "pending rate change";
143
+ attribute :>> bounds {
144
+ attribute :>> x = 0.28; attribute :>> y = 0.22;
145
+ attribute :>> width = 0.44; attribute :>> height = 0.56;
146
+ }
147
+ attribute :>> boundaryColor = "#D59000";
148
+ attribute :>> detectionMethod = BoundsDetectionKind::manual;
149
+ attribute :>> confirmedBy = "j.okafor";
150
+ attribute :>> confirmedAt = "2026-07-16";
151
+ }
152
+
153
+ // ── UI actions and the functions they invoke ────────────────
154
+ action uiaEditRate : UIAction {
155
+ attribute :>> id = "UIR-UIA-001"; attribute :>> name = "EditInfusionRate";
156
+ attribute :>> intent = InteractionIntentKind::userInput;
157
+ attribute :>> confirmationRequired = true;
158
+ attribute :>> feedbackProvided = "new rate echoed on a confirmation dialog before it is applied";
159
+ }
160
+
161
+ action uiaOpenSettings : UIAction {
162
+ attribute :>> id = "UIR-UIA-002"; attribute :>> name = "OpenInfusionSettings";
163
+ attribute :>> intent = InteractionIntentKind::navigation;
164
+ attribute :>> confirmationRequired = false;
165
+ }
166
+
167
+ action uiaSelectDrug : UIAction {
168
+ attribute :>> id = "UIR-UIA-003"; attribute :>> name = "SelectDrug";
169
+ attribute :>> intent = InteractionIntentKind::userInput;
170
+ attribute :>> confirmationRequired = true;
171
+ }
172
+
173
+ part uiElement12 : UIElement {
174
+ attribute redefines name = "Region UIE-012";
175
+ attribute redefines id = "UIE-012";
176
+ attribute redefines formKind = UIElementFormKind::panel;
177
+ attribute redefines disclosureKind = UIDisclosureKind::inline;
178
+ attribute redefines detectionMethod = BoundsDetectionKind::manual;
179
+ attribute redefines boundaryColor = "#14B8A6";
180
+ attribute redefines boundaryOpacity = 0.12;
181
+ attribute redefines bounds {
182
+ attribute redefines x = 0.52234;
183
+ attribute redefines y = 0.11311;
184
+ attribute redefines width = 0.45242;
185
+ attribute redefines height = 0.53172;
186
+ }
187
+ }
188
+
189
+ }
@@ -0,0 +1,61 @@
1
+ // Controlled asset identities.
2
+ //
3
+ // SysML owns each capture's identity, URI, hash, dimensions, and capture
4
+ // context; the PNG under `screen-captures/` owns its payload.
5
+ package memo_examples_ui_screen_regions_artifacts_assets {
6
+ private import ScalarValues::*;
7
+
8
+ private import memo_core_relationships::*;
9
+ private import memo_core_annotations::*;
10
+ private import memo_architecture_functional_functions::*;
11
+ private import memo_assurance_requirements::*;
12
+ private import memo_assurance_requirements_needs::*;
13
+ private import memo_assurance_human_factors::*;
14
+ private import memo_assurance_safety_risk::*;
15
+ private import memo_assurance_verification_validation::*;
16
+
17
+ private import memo_core_enumerations::*;
18
+ private import memo_artifacts_core::*;
19
+ private import memo_architecture_implementation_ui::*;
20
+
21
+ // ── The captures ────────────────────────────────────────────
22
+ part capMain : ScreenCapture {
23
+ attribute :>> id = "UIR-CAP-001"; attribute :>> name = "MainScreenCapture_v2.4.1";
24
+ attribute :>> shortDescription = "Main infusion screen, build 2.4.1.";
25
+ attribute :>> description = "Screenshot of the running-infusion screen taken from release candidate 2.4.1 on the 7-inch panel at 1024×600, English (US), daylight theme, clinician role.";
26
+ attribute :>> imageUri = "model/catalog/artifacts/assets/screen-captures/mainScreenLayout/main-screen-2.4.1.png";
27
+ attribute :>> imageHash = "sha256:086d8a3c2956ad8ed81f1e565a97308b55ba8a384c22c1b2138626ad8928a88a";
28
+ attribute :>> pixelWidth = 1024;
29
+ attribute :>> pixelHeight = 600;
30
+ attribute :>> captureDate = "2026-07-14";
31
+ attribute :>> capturedBuild = "pump-fw-2.4.1-rc3";
32
+ attribute :>> captureContext = "7in panel, 1024x600, en-US, daylight theme, clinician role";
33
+ }
34
+
35
+ part capDrugSelector : ScreenCapture {
36
+ attribute :>> id = "UIC-003"; attribute :>> name = "ExpandedDrugSelectorCapture_v2.4.1";
37
+ attribute :>> shortDescription = "Expanded drug-selector region crop.";
38
+ attribute :>> description = "Focused capture of the reusable DrugSelectorRegion in its expanded state, used when a reviewer drills into the region from the main layout.";
39
+ attribute :>> imageUri = "model/catalog/artifacts/assets/screen-captures/drugSelectorRegion/drug-selector-expanded-2.4.1.png";
40
+ attribute :>> imageHash = "sha256:2265b48864be8561a86099a99cf8aea2f4fcf06c19ccacbcc55784fbb1c37975";
41
+ attribute :>> pixelWidth = 798;
42
+ attribute :>> pixelHeight = 390;
43
+ attribute :>> captureDate = "2026-07-31";
44
+ attribute :>> capturedBuild = "pump-fw-2.4.1-rc3";
45
+ attribute :>> captureContext = "drug-selector region crop, expanded state, en-US";
46
+ }
47
+
48
+ part capSettings : ScreenCapture {
49
+ attribute :>> id = "UIR-CAP-002"; attribute :>> name = "SettingsScreenCapture_v2.4.1";
50
+ attribute :>> shortDescription = "Infusion settings screen, build 2.4.1.";
51
+ attribute :>> description = "Screenshot of the settings screen reached from the main screen's settings row, same build and capture conditions as the main screen capture.";
52
+ attribute :>> imageUri = "model/catalog/artifacts/assets/screen-captures/settingsScreenLayout/settings-screen-2.4.1.png";
53
+ attribute :>> imageHash = "sha256:2ad7f11427fdb2eb179cf94d96a1679a2ece31505d247ee0b659bec06a669dbf";
54
+ attribute :>> pixelWidth = 1024;
55
+ attribute :>> pixelHeight = 600;
56
+ attribute :>> captureDate = "2026-07-14";
57
+ attribute :>> capturedBuild = "pump-fw-2.4.1-rc3";
58
+ attribute :>> captureContext = "7in panel, 1024x600, en-US, daylight theme, clinician role";
59
+ }
60
+
61
+ }
@@ -0,0 +1,51 @@
1
+ // Review comments. Queryable model content, not source-code comments and not
2
+ // Architect-local state: each one traces to an addressable model element.
3
+ package memo_examples_ui_screen_regions_artifacts_reviews_comments {
4
+ private import ScalarValues::*;
5
+
6
+ private import memo_core_relationships::*;
7
+ private import memo_architecture_functional_functions::*;
8
+ private import memo_architecture_implementation_ui::*;
9
+ private import memo_assurance_requirements::*;
10
+ private import memo_assurance_requirements_needs::*;
11
+ private import memo_assurance_human_factors::*;
12
+ private import memo_assurance_safety_risk::*;
13
+ private import memo_assurance_verification_validation::*;
14
+ private import memo_artifacts_core::*;
15
+
16
+ private import memo_core_enumerations::*;
17
+ private import memo_core_annotations::*;
18
+
19
+ // ── Review commentary ───────────────────────────────────────
20
+ // Commentary is model content with an author and a disposition, kept
21
+ // separate from `description`: what the element IS versus what someone
22
+ // SAID about it. A generated DHF section renders the former only.
23
+ part cmtDecimalSalience : ModelComment {
24
+ attribute :>> id = "UIR-CMT-001"; attribute :>> name = "DecimalSalienceReview";
25
+ attribute :>> shortDescription = "Decimal point too small at 1 m — raised in HF review.";
26
+ attribute :>> body = "In the 2026-07-16 formative session, 3 of 8 participants hesitated over 12.5 vs 125 at bedside distance. Recommend enlarging the decimal separator or splitting the fractional digit into a smaller trailing glyph.";
27
+ attribute :>> author = "r.mehta";
28
+ attribute :>> createdAt = "2026-07-16T14:20:00Z";
29
+ attribute :>> commentStatus = CommentStatusKind::open;
30
+ attribute :>> anchor = "accessibilitySummary";
31
+ }
32
+
33
+ part cmtStatusBarScope : ModelComment {
34
+ attribute :>> id = "UIR-CMT-002"; attribute :>> name = "StatusBarScopeQuery";
35
+ attribute :>> shortDescription = "Is the battery icon really decoration?";
36
+ attribute :>> body = "Battery state is arguably an indicator, not chrome — a depleted battery during infusion is a hazard path. Should the battery icon be split out as its own indicator element with its own bounds?";
37
+ attribute :>> author = "j.okafor";
38
+ attribute :>> createdAt = "2026-07-16T09:05:00Z";
39
+ attribute :>> commentStatus = CommentStatusKind::acknowledged;
40
+ }
41
+
42
+ part cmtStatusBarReply : ModelComment {
43
+ attribute :>> id = "UIR-CMT-003"; attribute :>> name = "StatusBarScopeReply";
44
+ attribute :>> shortDescription = "Agreed — split in the next markup pass.";
45
+ attribute :>> body = "Agreed. Battery indication is in the alarm system's scope and will become its own indicator element once that requirement lands. Keeping the strip as decoration until then rather than classifying it as something it is not.";
46
+ attribute :>> author = "r.mehta";
47
+ attribute :>> createdAt = "2026-07-16T11:40:00Z";
48
+ attribute :>> commentStatus = CommentStatusKind::addressed;
49
+ }
50
+
51
+ }
@@ -0,0 +1,27 @@
1
+ // Review notes.
2
+ package memo_examples_ui_screen_regions_artifacts_reviews_notes {
3
+ private import ScalarValues::*;
4
+
5
+ private import memo_core_relationships::*;
6
+ private import memo_architecture_functional_functions::*;
7
+ private import memo_architecture_implementation_ui::*;
8
+ private import memo_assurance_requirements::*;
9
+ private import memo_assurance_requirements_needs::*;
10
+ private import memo_assurance_human_factors::*;
11
+ private import memo_assurance_safety_risk::*;
12
+ private import memo_assurance_verification_validation::*;
13
+ private import memo_artifacts_core::*;
14
+
15
+ private import memo_core_enumerations::*;
16
+ private import memo_core_annotations::*;
17
+
18
+ part noteCaptureReview : ModelNote {
19
+ attribute :>> id = "UIR-NOTE-001"; attribute :>> name = "CaptureReviewNote";
20
+ attribute :>> shortDescription = "Reconfirm automatic regions after every capture replacement.";
21
+ attribute :>> body = "Normalized manual bounds migrate between captures; automatically detected regions require renewed reviewer confirmation.";
22
+ attribute :>> author = "r.mehta";
23
+ attribute :>> createdAt = "2026-07-16T12:10:00Z";
24
+ attribute :>> noteKind = "review guidance";
25
+ }
26
+
27
+ }
@@ -0,0 +1,27 @@
1
+ // Review rationales.
2
+ package memo_examples_ui_screen_regions_artifacts_reviews_rationales {
3
+ private import ScalarValues::*;
4
+
5
+ private import memo_core_relationships::*;
6
+ private import memo_architecture_functional_functions::*;
7
+ private import memo_architecture_implementation_ui::*;
8
+ private import memo_assurance_requirements::*;
9
+ private import memo_assurance_requirements_needs::*;
10
+ private import memo_assurance_human_factors::*;
11
+ private import memo_assurance_safety_risk::*;
12
+ private import memo_assurance_verification_validation::*;
13
+ private import memo_artifacts_core::*;
14
+
15
+ private import memo_core_enumerations::*;
16
+ private import memo_core_annotations::*;
17
+
18
+ part ratOverlayGeometry : ModelRationale {
19
+ attribute :>> id = "UIR-RAT-001"; attribute :>> name = "OverlayGeometryRationale";
20
+ attribute :>> shortDescription = "The drug menu intentionally escapes its parent bounds.";
21
+ attribute :>> body = "The open drug selector overlays adjacent content, so disclosureKind carries the intended behavior and the renderer must not clip it to RatePanel.";
22
+ attribute :>> author = "j.okafor";
23
+ attribute :>> createdAt = "2026-07-16T12:00:00Z";
24
+ attribute :>> basis = "Observed interaction design and UIDisclosureKind::overlay semantics";
25
+ }
26
+
27
+ }
@@ -0,0 +1,59 @@
1
+ // Human-factors assurance: the use errors observed or anticipated at the UI.
2
+ package memo_examples_ui_screen_regions_assurance_human_factors {
3
+ private import ScalarValues::*;
4
+
5
+ private import memo_core_relationships::*;
6
+ private import memo_core_annotations::*;
7
+ private import memo_architecture_functional_functions::*;
8
+ private import memo_architecture_implementation_ui::*;
9
+ private import memo_assurance_requirements::*;
10
+ private import memo_assurance_requirements_needs::*;
11
+ private import memo_assurance_safety_risk::*;
12
+ private import memo_assurance_verification_validation::*;
13
+ private import memo_artifacts_core::*;
14
+
15
+ private import memo_core_enumerations::*;
16
+ private import memo_assurance_human_factors::*;
17
+
18
+ // ── The risk side ───────────────────────────────────────────
19
+ part ueMisreadRate : UseError {
20
+ attribute :>> id = "UIR-UE-001"; attribute :>> name = "MisreadRateDecimalPoint";
21
+ attribute :>> shortDescription = "Decimal point missed; rate read 10× high or low.";
22
+ attribute :>> description = "The clinician reads 12.5 mL/h as 125 mL/h, or the reverse, because the decimal point is not salient at a glance from the bedside.";
23
+ attribute :>> errorCategory = UseErrorCategoryKind::perception;
24
+ attribute :>> severity = SeverityKind::serious;
25
+ }
26
+
27
+ part ueSelectWrongDrug : UseError {
28
+ attribute :>> id = "UIR-UE-002"; attribute :>> name = "SelectWrongDrugConcentration";
29
+ attribute :>> shortDescription = "Clinician selects the wrong drug or concentration from the expanded list.";
30
+ attribute :>> description = "A visually adjacent drug-library entry is selected during programming and is not detected before delivery parameters are calculated.";
31
+ attribute :>> errorCategory = UseErrorCategoryKind::actionCategory;
32
+ attribute :>> severity = SeverityKind::serious;
33
+ }
34
+
35
+ part ueMissLowBattery : UseError {
36
+ attribute :>> id = "UIR-UE-003"; attribute :>> name = "MissLowBatteryStatus";
37
+ attribute :>> shortDescription = "Clinician does not notice that remaining battery operation is limited.";
38
+ attribute :>> description = "During transport or a mains outage, an inconspicuous or stale battery indicator is not noticed before the pump loses power.";
39
+ attribute :>> errorCategory = UseErrorCategoryKind::perception;
40
+ attribute :>> severity = SeverityKind::critical;
41
+ }
42
+
43
+ part ueRelyOnStaleVolume : UseError {
44
+ attribute :>> id = "UIR-UE-004"; attribute :>> name = "RelyOnStaleDeliveredVolume";
45
+ attribute :>> shortDescription = "Clinician bases a therapy decision on a stale delivered-volume value.";
46
+ attribute :>> description = "The displayed cumulative volume stops refreshing while the controller continues delivery, causing the clinician to underestimate administered therapy.";
47
+ attribute :>> errorCategory = UseErrorCategoryKind::cognition;
48
+ attribute :>> severity = SeverityKind::serious;
49
+ }
50
+
51
+ part ueMisreadDisplayedTime : UseError {
52
+ attribute :>> id = "UIR-UE-005"; attribute :>> name = "RelyOnIncorrectDisplayedTime";
53
+ attribute :>> shortDescription = "Clinician associates a therapy observation with an incorrect time.";
54
+ attribute :>> description = "A stale or unsynchronized screen clock causes an observation to be correlated with the wrong therapy event during handoff or incident review.";
55
+ attribute :>> errorCategory = UseErrorCategoryKind::cognition;
56
+ attribute :>> severity = SeverityKind::minor;
57
+ }
58
+
59
+ }
@@ -0,0 +1,25 @@
1
+ // Stakeholder needs.
2
+ package memo_examples_ui_screen_regions_assurance_requirements_needs {
3
+ private import ScalarValues::*;
4
+
5
+ private import memo_core_relationships::*;
6
+ private import memo_core_annotations::*;
7
+ private import memo_architecture_functional_functions::*;
8
+ private import memo_architecture_implementation_ui::*;
9
+ private import memo_assurance_requirements::*;
10
+ private import memo_assurance_human_factors::*;
11
+ private import memo_assurance_safety_risk::*;
12
+ private import memo_assurance_verification_validation::*;
13
+ private import memo_artifacts_core::*;
14
+
15
+ private import memo_core_enumerations::*;
16
+ private import memo_assurance_requirements_needs::*;
17
+
18
+ requirement needReadableProgramming : Need {
19
+ attribute :>> id = "UIR-NEED-001"; attribute :>> name = "ReadableAndConfirmableProgramming";
20
+ attribute :>> needKind = NeedKind::'stakeholder';
21
+ attribute :>> statement = "Clinicians need infusion programming to be readable and explicitly confirmed before therapy changes.";
22
+ attribute :>> priority = "high";
23
+ }
24
+
25
+ }