@memoarchitect/ontology 0.4.6 → 0.6.1

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 (278) hide show
  1. package/README.md +7 -6
  2. package/examples/connected-patient-monitor/README.md +7 -0
  3. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +70 -0
  4. package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +3 -0
  5. package/examples/connected-patient-monitor/model/viewpoints/connected_patient_monitor_overview.sysml +6 -0
  6. package/examples/embedded-infusion-pump/README.md +7 -0
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +66 -0
  8. package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +3 -0
  9. package/examples/embedded-infusion-pump/model/viewpoints/embedded_infusion_pump_overview.sysml +6 -0
  10. package/examples/extensions/README.md +16 -0
  11. package/examples/extensions/clinical/memo.package.yaml +9 -0
  12. package/examples/extensions/clinical/src/clinical_extension.sysml +3 -0
  13. package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +14 -0
  14. package/examples/extensions/clinical/src/procedures/memo_clinical_procedures.sysml +16 -0
  15. package/examples/extensions/template/memo.package.yaml +9 -0
  16. package/examples/extensions/template/src/extension.sysml +15 -0
  17. package/examples/functional-logical-physical/README.md +7 -0
  18. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +50 -0
  19. package/examples/functional-logical-physical/model/functional_logical_physical.sysml +3 -0
  20. package/examples/functional-logical-physical/model/viewpoints/functional_logical_physical_overview.sysml +6 -0
  21. package/examples/gpca-pump/README.md +26 -0
  22. package/examples/gpca-pump/dhf/documents/DOC-RMP-001.md +1 -1
  23. package/examples/gpca-pump/memo.config.yaml +2 -2
  24. package/examples/gpca-pump/methodology/gpca_profiles.sysml +1 -1
  25. package/examples/gpca-pump/methodology/gpca_scope.sysml +2 -2
  26. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +1 -1
  27. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +10 -10
  28. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +17 -6
  29. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +11 -11
  30. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +35 -22
  31. package/examples/gpca-pump/model/catalog/gpca_context.sysml +25 -6
  32. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +6 -6
  33. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +29 -15
  34. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +293 -169
  35. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +145 -27
  36. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +1 -1
  37. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +210 -105
  38. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +66 -69
  39. package/examples/gpca-pump/model/catalog/gpca_system.sysml +43 -76
  40. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +73 -70
  41. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +27 -27
  42. package/examples/gpca-pump/model/views/context_system_context_view.sysml +2 -2
  43. package/examples/gpca-pump/model/views/document_architecture_description_view.sysml +2 -2
  44. package/examples/gpca-pump/model/views/document_cyber_assessment_view.sysml +2 -2
  45. package/examples/gpca-pump/model/views/document_hazard_analysis_view.sysml +1 -1
  46. package/examples/gpca-pump/model/views/document_rmf_view.sysml +2 -2
  47. package/examples/gpca-pump/model/views/document_sdd_view.sysml +2 -2
  48. package/examples/gpca-pump/model/views/document_threat_model_view.sysml +1 -1
  49. package/examples/gpca-pump/model/views/document_usability_view.sysml +1 -1
  50. package/examples/gpca-pump/model/views/document_vv_view.sysml +1 -1
  51. package/examples/gpca-pump/model/views/functional_function_allocation_view.sysml +1 -1
  52. package/examples/gpca-pump/model/views/functional_function_browser_view.sysml +1 -1
  53. package/examples/gpca-pump/model/views/logical_device_interconnect_view.sysml +1 -1
  54. package/examples/gpca-pump/model/views/logical_mode_state_view.sysml +1 -1
  55. package/examples/gpca-pump/model/views/logical_system_decomposition_view.sysml +1 -1
  56. package/examples/gpca-pump/model/views/operational_scenario_sequence_view.sysml +1 -1
  57. package/examples/gpca-pump/model/views/operational_use_case_view.sysml +6 -6
  58. package/examples/gpca-pump/model/views/physical_physical_bom_view.sysml +1 -1
  59. package/examples/gpca-pump/model/views/requirements_requirements_trace_view.sysml +1 -1
  60. package/examples/gpca-pump/model/views/risk_risk_chain_view.sysml +2 -2
  61. package/examples/gpca-pump/model/views/software_software_architecture_view.sysml +1 -1
  62. package/examples/gpca-pump/model/views/verification_verification_coverage_view.sysml +1 -1
  63. package/examples/ivd-laboratory-system/README.md +7 -0
  64. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +58 -0
  65. package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +3 -0
  66. package/examples/ivd-laboratory-system/model/viewpoints/ivd_laboratory_system_overview.sysml +6 -0
  67. package/examples/manual-surgical-instrument/README.md +7 -0
  68. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +41 -0
  69. package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +3 -0
  70. package/examples/manual-surgical-instrument/model/viewpoints/manual_surgical_instrument_overview.sysml +6 -0
  71. package/examples/multidimensional-layers/README.md +7 -0
  72. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +51 -0
  73. package/examples/multidimensional-layers/model/multidimensional_layers.sysml +4 -0
  74. package/examples/multidimensional-layers/model/viewpoints/multidimensional_layers_overview.sysml +13 -0
  75. package/examples/reusable-instrument/README.md +7 -0
  76. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +71 -0
  77. package/examples/reusable-instrument/model/reusable_instrument.sysml +4 -0
  78. package/examples/reusable-instrument/model/viewpoints/reusable_instrument_overview.sysml +13 -0
  79. package/examples/software-only-medical-device/README.md +7 -0
  80. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +62 -0
  81. package/examples/software-only-medical-device/model/software_only_medical_device.sysml +4 -0
  82. package/examples/software-only-medical-device/model/viewpoints/software_only_medical_device_overview.sysml +13 -0
  83. package/examples/surgical-closure-workflow/README.md +8 -0
  84. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +151 -0
  85. package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +4 -0
  86. package/examples/surgical-closure-workflow/model/viewpoints/surgical_closure_workflow_overview.sysml +13 -0
  87. package/examples/surgical-robot/README.md +7 -0
  88. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +58 -0
  89. package/examples/surgical-robot/model/surgical_robot.sysml +4 -0
  90. package/examples/surgical-robot/model/viewpoints/surgical_robot_overview.sysml +13 -0
  91. package/examples/sysml-diagram-samples/README.md +32 -0
  92. package/examples/sysml-diagram-samples/memo.package.yaml +5 -0
  93. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/action_flow_view.sysml +22 -4
  94. package/examples/sysml-diagram-samples/model/samples/context_view.sysml +55 -0
  95. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/functional_flow_view.sysml +17 -6
  96. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/interconnection_view.sysml +4 -3
  97. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/operational_behaviour_view.sysml +32 -42
  98. package/examples/sysml-diagram-samples/model/samples/requirements_view.sysml +63 -0
  99. package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +109 -0
  100. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/tree_view.sysml +3 -3
  101. package/examples/sysml-diagram-samples/model/samples/use_case_view.sysml +81 -0
  102. package/examples/temperature-alarm/README.md +7 -0
  103. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +140 -0
  104. package/examples/temperature-alarm/model/temperature_alarm.sysml +4 -0
  105. package/examples/temperature-alarm/model/viewpoints/temperature_alarm_overview.sysml +13 -0
  106. package/memo.manifest.yaml +12 -4
  107. package/methodologies/default/memo.package.yaml +1 -1
  108. package/methodologies/gpca/memo.package.yaml +4 -4
  109. package/ontology/memo.package.yaml +1 -1
  110. package/ontology/memo.rendering.yaml +37 -0
  111. package/package.json +19 -11
  112. package/profile/memo.package.yaml +3 -3
  113. package/src/architecture/decisions/memo_decisions.sysml +1 -1
  114. package/src/architecture/{behavior → functional/behavior}/memo_behavior.sysml +12 -11
  115. package/src/architecture/{constraints → functional/constraints}/memo_constraints.sysml +2 -2
  116. package/src/architecture/functional/functions/memo_functions.sysml +81 -0
  117. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +46 -0
  118. package/src/architecture/implementation/hardware/electrical/memo_hardware_electrical.sysml +36 -0
  119. package/src/architecture/implementation/hardware/fluidic/memo_hardware_fluidic.sysml +14 -0
  120. package/src/architecture/implementation/hardware/mechanical/memo_hardware_mechanical.sysml +14 -0
  121. package/src/architecture/implementation/hardware/optical/memo_hardware_optical.sysml +11 -0
  122. package/src/architecture/implementation/hardware/sensing/memo_hardware_sensing.sysml +17 -0
  123. package/src/architecture/implementation/hardware/structure/memo_hardware_structure.sysml +12 -0
  124. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +70 -0
  125. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +80 -0
  126. package/src/architecture/implementation/ui/memo_ui.sysml +159 -0
  127. package/src/architecture/logical/interfaces/memo_interfaces.sysml +102 -0
  128. package/src/architecture/logical/structure/memo_logical_structure.sysml +150 -0
  129. package/src/architecture/operational/activities/memo_activities.sysml +86 -0
  130. package/src/architecture/operational/context/actors/memo_actors.sysml +38 -0
  131. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +64 -0
  132. package/src/architecture/operational/context/use_context/memo_use_context.sysml +53 -0
  133. package/src/architecture/operational/scenarios/memo_scenarios.sysml +116 -0
  134. package/src/architecture/operational/structure/memo_operational.sysml +31 -0
  135. package/src/architecture/operational/use_cases/memo_use_cases.sysml +67 -0
  136. package/src/architecture/operational/workflows/memo_workflows.sysml +126 -0
  137. package/src/architecture/realization/deployment/memo_deployment.sysml +90 -0
  138. package/src/architecture/{physical → realization/physical}/memo_physical_architecture.sysml +12 -1
  139. package/src/artifacts/definitions/memo_artifact_definitions.sysml +1 -1
  140. package/src/{architecture → assurance}/cybersecurity/memo_cybersecurity.sysml +14 -10
  141. package/src/assurance/human_factors/memo_human_factors.sysml +50 -0
  142. package/src/{architecture → assurance}/requirements/memo_requirements.sysml +45 -21
  143. package/src/assurance/requirements/needs/memo_needs.sysml +43 -0
  144. package/src/{architecture → assurance/safety_risk}/analysis/memo_fmea.sysml +13 -13
  145. package/src/{architecture/risk → assurance/safety_risk}/memo_arch_risk.sysml +2 -2
  146. package/src/{architecture/risk → assurance/safety_risk}/memo_risk.sysml +25 -16
  147. package/src/assurance/verification_validation/memo_assurance.sysml +49 -0
  148. package/src/compliance/artifacts/memo_artifacts.sysml +1 -1
  149. package/src/compliance/change/memo_change.sysml +2 -2
  150. package/src/compliance/dhf-templates/21cfr820/design-input.md +1 -1
  151. package/src/compliance/dhf-templates/21cfr820/design-validation.md +1 -1
  152. package/src/compliance/dhf-templates/21cfr820/user-needs.md +2 -2
  153. package/src/compliance/dhf-templates/iec-62366/urra.md +1 -1
  154. package/src/compliance/dhf-templates/iso-14971/fmea.md +1 -1
  155. package/src/compliance/dhf-templates/iso-14971/har.md +4 -4
  156. package/src/compliance/dhf-templates/iso-14971/risk-matrix.md +1 -1
  157. package/src/compliance/dhf-templates/iso-14971/rmp.md +1 -1
  158. package/src/compliance/dhf-templates/iso-14971/rmr.md +1 -1
  159. package/src/compliance/iso14971/risk_management_file.sysml +1 -1
  160. package/src/compliance/postmarket/memo_postmarket.sysml +2 -2
  161. package/src/core/common/memo_common.sysml +123 -14
  162. package/src/core/consistency_rules/consistency_rules.sysml +2 -2
  163. package/src/core/dimensions/dimensions.sysml +45 -24
  164. package/src/core/enumerations/memo_enumerations.sysml +11 -16
  165. package/src/core/methodology_scope/methodology_scope.sysml +10 -28
  166. package/src/core/relationships/memo_relationships.sysml +178 -146
  167. package/src/core/stdlib/{collections.sysml → collections/collections.sysml} +1 -1
  168. package/src/core/stdlib/{functions.sysml → functions/functions.sysml} +1 -1
  169. package/src/core/stdlib/{scalars.sysml → scalars/scalars.sysml} +1 -1
  170. package/src/core/stdlib/{time.sysml → time/time.sysml} +1 -1
  171. package/src/core/terminology/terminology.sysml +35 -0
  172. package/src/memo_namespaces.sysml +247 -302
  173. package/src/methodology/{memo_core.sysml → core/memo_core.sysml} +19 -13
  174. package/src/methodology/{memo_gates.sysml → gates/memo_gates.sysml} +1 -1
  175. package/src/methodology/{memo_patterns.sysml → patterns/memo_patterns.sysml} +1 -1
  176. package/src/methodology/{memo_profiles.sysml → profiles/memo_profiles.sysml} +27 -35
  177. package/src/methodology/{memo_workflow.sysml → workflow/memo_workflow.sysml} +1 -1
  178. package/src/rules/closure/closure_rules.sysml +11 -11
  179. package/src/rules/coverage/coverage_rules.sysml +8 -8
  180. package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
  181. package/src/rules/lifecycle/lifecycle_rules.sysml +1 -1
  182. package/src/rules/ontology/ontology_invariants.sysml +133 -0
  183. package/src/rules/quantitative/quantitative_rules.sysml +2 -2
  184. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +189 -0
  185. package/src/viewpoints/clinical/clinical_viewpoint.sysml +0 -1
  186. package/src/viewpoints/context/context_viewpoint.sysml +1 -2
  187. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +1 -2
  188. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +8 -8
  189. package/src/viewpoints/functional/{function_allocation_view.sysml → function_allocation_view/function_allocation_view.sysml} +1 -1
  190. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  191. package/src/viewpoints/functional/{system_functional_tree_view.sysml → system_functional_tree_view/system_functional_tree_view.sysml} +1 -1
  192. package/src/viewpoints/logical/logical_viewpoint.sysml +0 -1
  193. package/src/viewpoints/operational/operational_viewpoint.sysml +1 -2
  194. package/src/viewpoints/operational/{use_case_view.sysml → use_case_view/use_case_view.sysml} +1 -1
  195. package/src/viewpoints/physical/physical_viewpoint.sysml +0 -1
  196. package/src/viewpoints/requirements/{requirements_traceability_view.sysml → requirements_traceability_view/requirements_traceability_view.sysml} +1 -1
  197. package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
  198. package/src/viewpoints/risk/{risk_chain_view.sysml → risk_chain_view/risk_chain_view.sysml} +2 -2
  199. package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
  200. package/src/viewpoints/software/{software_architecture_view.sysml → software_architecture_view/software_architecture_view.sysml} +1 -1
  201. package/src/viewpoints/software/software_viewpoint.sysml +1 -2
  202. package/src/viewpoints/usability/usability_viewpoint.sysml +0 -1
  203. package/src/viewpoints/verification/verification_viewpoint.sysml +0 -1
  204. package/templates/connected-device/memo.package.yaml +5 -0
  205. package/templates/connected-device/src/architecture/system.sysml +5 -0
  206. package/templates/connected-device/src/artifacts/artifacts.sysml +5 -0
  207. package/templates/connected-device/src/assurance/requirements.sysml +7 -0
  208. package/templates/default/memo.package.yaml +5 -0
  209. package/templates/default/src/architecture/system.sysml +7 -0
  210. package/templates/default/src/artifacts/artifacts.sysml +5 -0
  211. package/templates/default/src/assurance/requirements.sysml +8 -0
  212. package/templates/infusion-pump/memo.package.yaml +5 -0
  213. package/templates/infusion-pump/src/architecture/system.sysml +5 -0
  214. package/templates/infusion-pump/src/artifacts/artifacts.sysml +5 -0
  215. package/templates/infusion-pump/src/assurance/requirements.sysml +7 -0
  216. package/templates/monitoring-device/memo.package.yaml +5 -0
  217. package/templates/monitoring-device/src/architecture/system.sysml +5 -0
  218. package/templates/monitoring-device/src/artifacts/artifacts.sysml +5 -0
  219. package/templates/monitoring-device/src/assurance/requirements.sysml +7 -0
  220. package/templates/samd/memo.package.yaml +5 -0
  221. package/templates/samd/src/architecture/system.sysml +5 -0
  222. package/templates/samd/src/artifacts/artifacts.sysml +5 -0
  223. package/templates/samd/src/assurance/requirements.sysml +7 -0
  224. package/examples/gpca-pump/model/samples/README.md +0 -24
  225. package/examples/gpca-pump/model/samples/action_flow_view.viewlayout +0 -9
  226. package/examples/gpca-pump/model/samples/interconnection_view.viewlayout +0 -99
  227. package/profile/archetypes.yaml +0 -36
  228. package/profile/templates/connected-device/starter.sysml +0 -8
  229. package/profile/templates/infusion-pump/starter.sysml +0 -8
  230. package/profile/templates/monitoring-device/starter.sysml +0 -8
  231. package/profile/templates/samd/starter.sysml +0 -8
  232. package/src/architecture/assurance/memo_assurance.sysml +0 -29
  233. package/src/architecture/context/memo_context.sysml +0 -58
  234. package/src/architecture/functions/memo_functions.sysml +0 -30
  235. package/src/architecture/hardware_structure/memo_hardware_structure.sysml +0 -15
  236. package/src/architecture/interfaces/memo_interfaces.sysml +0 -103
  237. package/src/architecture/logical_structure/memo_logical_structure.sysml +0 -10
  238. package/src/architecture/operational/memo_operational.sysml +0 -51
  239. package/src/architecture/software_structure/memo_software_structure.sysml +0 -44
  240. package/src/architecture/system/memo_system_analysis.sysml +0 -54
  241. package/src/artifacts/clinical_safety_report.sysml +0 -12
  242. package/src/artifacts/cybersecurity_assessment_report.sysml +0 -12
  243. package/src/artifacts/design_change_log.sysml +0 -12
  244. package/src/artifacts/design_history_file_index.sysml +0 -12
  245. package/src/artifacts/design_input_plan.sysml +0 -12
  246. package/src/artifacts/design_output_plan.sysml +0 -12
  247. package/src/artifacts/evidence_record.sysml +0 -12
  248. package/src/artifacts/failure_mode_effects_analysis.sysml +0 -12
  249. package/src/artifacts/hazard_analysis_report.sysml +0 -12
  250. package/src/artifacts/labeling_specification.sysml +0 -12
  251. package/src/artifacts/requirements_specification.sysml +0 -12
  252. package/src/artifacts/requirements_traceability_matrix.sysml +0 -12
  253. package/src/artifacts/risk_management_plan.sysml +0 -12
  254. package/src/artifacts/software_design_description.sysml +0 -12
  255. package/src/artifacts/software_development_plan.sysml +0 -12
  256. package/src/artifacts/soup_list.sysml +0 -12
  257. package/src/artifacts/system_architecture_description.sysml +0 -12
  258. package/src/artifacts/test_protocol.sysml +0 -12
  259. package/src/artifacts/test_report.sysml +0 -12
  260. package/src/artifacts/threat_model_report.sysml +0 -12
  261. package/src/artifacts/usability_engineering_report.sysml +0 -12
  262. package/src/medical_device_library.sysml +0 -100
  263. package/template/memo.package.yaml +0 -5
  264. package/template/src/catalog/starter.sysml +0 -12
  265. package/template/src/documents/.gitkeep +0 -1
  266. package/template/src/views/.gitkeep +0 -1
  267. /package/src/methodology/{memo_archetypes.sysml → archetypes/memo_archetypes.sysml} +0 -0
  268. /package/src/methodology/{memo_rules.sysml → rules/memo_rules.sysml} +0 -0
  269. /package/src/methodology/{memo_viewpoints.sysml → viewpoints/memo_viewpoints.sysml} +0 -0
  270. /package/src/viewpoints/clinical/{clinical_evidence_view.sysml → clinical_evidence_view/clinical_evidence_view.sysml} +0 -0
  271. /package/src/viewpoints/context/{system_context_view.sysml → system_context_view/system_context_view.sysml} +0 -0
  272. /package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view.sysml → cybersecurity_assessment_view/cybersecurity_assessment_view.sysml} +0 -0
  273. /package/src/viewpoints/cybersecurity/{threat_model_view.sysml → threat_model_view/threat_model_view.sysml} +0 -0
  274. /package/src/viewpoints/logical/{logical_architecture_view.sysml → logical_architecture_view/logical_architecture_view.sysml} +0 -0
  275. /package/src/viewpoints/physical/{network_topology_view.sysml → network_topology_view/network_topology_view.sysml} +0 -0
  276. /package/src/viewpoints/physical/{physical_bom_view.sysml → physical_bom_view/physical_bom_view.sysml} +0 -0
  277. /package/src/viewpoints/usability/{usability_engineering_view.sysml → usability_engineering_view/usability_engineering_view.sysml} +0 -0
  278. /package/src/viewpoints/verification/{verification_coverage_view.sysml → verification_coverage_view/verification_coverage_view.sysml} +0 -0
@@ -31,7 +31,7 @@ package memo_examples_gpca_pump_model_views_functional_function_allocation_view
31
31
  part :>> selectionQuery {
32
32
  attribute :>> id = "QRY-FUN-102";
33
33
  attribute :>> name = "GPCA_FunctionAllocationQuery";
34
- attribute :>> includeElementKinds = ("LogicalFunction", "SoftwareComponent", "HardwareAssembly");
34
+ attribute :>> includeElementKinds = ("SystemFunction", "SoftwareModule", "HardwareAssembly");
35
35
  attribute :>> includeRelationshipKinds = ("AllocatedTo");
36
36
  attribute :>> includeLayers = ("functions", "software_structure", "hardware_structure");
37
37
  attribute :>> selectionExpression = "product == 'GPCA'";
@@ -31,7 +31,7 @@ package memo_examples_gpca_pump_model_views_functional_function_browser_view {
31
31
  part :>> selectionQuery {
32
32
  attribute :>> id = "QRY-FUN-103";
33
33
  attribute :>> name = "GPCA_FunctionBrowserQuery";
34
- attribute :>> includeElementKinds = ("LogicalFunction", "LogicalFlow", "DataDefinition", "ControlDefinition");
34
+ attribute :>> includeElementKinds = ("SystemFunction", "FunctionalExchange", "InterfaceItem");
35
35
  attribute :>> includeLayers = ("functions");
36
36
  attribute :>> selectionExpression = "product == 'GPCA'";
37
37
  attribute :>> rationaleText = "Auto-populate the function browser from the functions layer.";
@@ -32,7 +32,7 @@ package memo_examples_gpca_pump_model_views_logical_device_interconnect_view {
32
32
  part :>> selectionQuery {
33
33
  attribute :>> id = "QRY-LOG-003";
34
34
  attribute :>> name = "GPCA_DeviceInterconnectQuery";
35
- attribute :>> includeElementKinds = ("HardwareAssembly", "SoftwareSystem", "SoftwareComponent", "SoftwarePort");
35
+ attribute :>> includeElementKinds = ("HardwareAssembly", "SoftwareSystem", "SoftwareModule", "SoftwarePort");
36
36
  attribute :>> includeRelationshipKinds = ("ExchangesWith", "Composes");
37
37
  attribute :>> includeLayers = ("logical_structure", "software_structure", "interfaces");
38
38
  attribute :>> selectionExpression = "product == 'GPCA'";
@@ -32,7 +32,7 @@ package memo_examples_gpca_pump_model_views_logical_mode_state_view {
32
32
  part :>> selectionQuery {
33
33
  attribute :>> id = "QRY-BHV-101";
34
34
  attribute :>> name = "GPCA_ModeStateQuery";
35
- attribute :>> includeElementKinds = ("BehaviorMachine", "ModeState", "Transition", "BehaviorProperty", "TimingConstraint");
35
+ attribute :>> includeElementKinds = ("StateMachine", "ModeState", "Transition", "BehaviorProperty", "TimingConstraint");
36
36
  attribute :>> includeLayers = ("behavior");
37
37
  attribute :>> selectionExpression = "product == 'GPCA'";
38
38
  attribute :>> rationaleText = "Auto-populate the mode state view from the behavior layer.";
@@ -33,7 +33,7 @@ package memo_examples_gpca_pump_model_views_logical_system_decomposition_view {
33
33
  part :>> selectionQuery {
34
34
  attribute :>> id = "QRY-LOG-002";
35
35
  attribute :>> name = "GPCA_SystemDecompositionQuery";
36
- attribute :>> includeElementKinds = ("HardwareAssembly", "SoftwareSystem", "SoftwareComponent");
36
+ attribute :>> includeElementKinds = ("HardwareAssembly", "SoftwareSystem", "SoftwareModule");
37
37
  attribute :>> includeRelationshipKinds = ("Composes");
38
38
  attribute :>> includeLayers = ("logical_structure", "software_structure");
39
39
  attribute :>> selectionExpression = "product == 'GPCA'";
@@ -31,7 +31,7 @@ package memo_examples_gpca_pump_model_views_operational_scenario_sequence_view {
31
31
  part :>> selectionQuery {
32
32
  attribute :>> id = "QRY-BHV-102";
33
33
  attribute :>> name = "GPCA_ScenarioSequenceQuery";
34
- attribute :>> includeElementKinds = ("SystemScenario", "OperationalScenario", "FunctionalChain", "FunctionalChainStep");
34
+ attribute :>> includeElementKinds = ("FunctionalScenario", "OperativeScenario", "FunctionalFlow", "FunctionalFlowStep");
35
35
  attribute :>> includeLayers = ("operational", "system");
36
36
  attribute :>> selectionExpression = "product == 'GPCA'";
37
37
  attribute :>> rationaleText = "Auto-populate scenario sequences from the system layer.";
@@ -19,21 +19,21 @@ package memo_examples_gpca_pump_model_views_operational_use_case_view {
19
19
  attribute :>> id = "VIEW-OPS-101";
20
20
  attribute :>> name = "GPCA_UseCaseView";
21
21
  attribute :>> title = "GPCA Use Case View";
22
- attribute :>> shortDescription = "Actors connected to the therapy lifecycle activities and scenarios.";
23
- attribute :>> longDescription = "Connects patient, nurse, prescriber, pharmacist, and technician to the operational activities (prescribe, load, program, start, bolus, alarm response, log review, maintain) and their scenarios.";
22
+ attribute :>> shortDescription = "Actors connected to the patient-controlled analgesia use case.";
23
+ attribute :>> longDescription = "Connects the nurse, patient, prescriber, and pharmacist to the patient-controlled analgesia use case.";
24
24
  attribute :>> outputKind = (ViewOutputKind::diagram);
25
25
  attribute :>> presentationKind = (PresentationKind::custom);
26
26
  attribute :>> viewKind = DiagramViewKind::general;
27
27
  attribute :>> diagramType = "ucd";
28
- attribute :>> dataSourceDescription = "GPCA operational activities, scenarios, and context actors";
28
+ attribute :>> dataSourceDescription = "GPCA use case and participating context actors";
29
29
  attribute :>> autoPopulate = true;
30
- attribute :>> queryDescription = "Include actors, operational activities, scenarios, and capabilities.";
30
+ attribute :>> queryDescription = "Include actors, use cases, and their participation relationships.";
31
31
  attribute :>> documentUsage = ("Usability Engineering File", "Architecture Description");
32
32
  part :>> selectionQuery {
33
33
  attribute :>> id = "QRY-OPS-101";
34
34
  attribute :>> name = "GPCA_UseCaseQuery";
35
- attribute :>> includeElementKinds = ("Actor", "OperationalActivity", "OperationalScenario", "OperationalCapability");
36
- attribute :>> includeRelationshipKinds = ("InteractsWith", "SequencesStep", "ContributesToCapability");
35
+ attribute :>> includeElementKinds = ("Actor", "User", "UseCase");
36
+ attribute :>> includeRelationshipKinds = ("Initiates", "ParticipatesIn");
37
37
  attribute :>> includeLayers = ("context", "operational");
38
38
  attribute :>> selectionExpression = "product == 'GPCA'";
39
39
  attribute :>> rationaleText = "Auto-populate the GPCA use case view from the operational layer.";
@@ -31,7 +31,7 @@ package memo_examples_gpca_pump_model_views_physical_physical_bom_view {
31
31
  part :>> selectionQuery {
32
32
  attribute :>> id = "QRY-PHY-101";
33
33
  attribute :>> name = "GPCA_PhysicalBomQuery";
34
- attribute :>> includeElementKinds = ("HardwareAssembly", "ProcessingNode", "PhysicalPort", "HardwareInterface");
34
+ attribute :>> includeElementKinds = ("HardwareAssembly", "ProcessingNode", "PhysicalPort", "Interface");
35
35
  attribute :>> includeLayers = ("hardware_structure", "physical", "interfaces");
36
36
  attribute :>> selectionExpression = "product == 'GPCA'";
37
37
  attribute :>> rationaleText = "Auto-populate the physical BOM from the hardware and physical layers.";
@@ -31,7 +31,7 @@ package memo_examples_gpca_pump_model_views_requirements_requirements_trace_view
31
31
  part :>> selectionQuery {
32
32
  attribute :>> id = "QRY-REQ-101";
33
33
  attribute :>> name = "GPCA_RequirementsTraceQuery";
34
- attribute :>> includeElementKinds = ("StakeholderNeed", "SystemRequirement", "SoftwareRequirement", "HardwareRequirement", "VerificationCase");
34
+ attribute :>> includeElementKinds = ("Need", "Requirement", "VerificationCase");
35
35
  attribute :>> includeRelationshipKinds = ("DerivesFrom", "SatisfiedBy", "VerifiedBy");
36
36
  attribute :>> includeLayers = ("requirements", "assurance");
37
37
  attribute :>> selectionExpression = "product == 'GPCA'";
@@ -32,8 +32,8 @@ package memo_examples_gpca_pump_model_views_risk_risk_chain_view {
32
32
  part :>> selectionQuery {
33
33
  attribute :>> id = "QRY-RISK-101";
34
34
  attribute :>> name = "GPCA_RiskChainQuery";
35
- attribute :>> includeElementKinds = ("Hazard", "HazardCause", "SequenceOfEvents", "HazardousSituation", "Harm", "RiskBeforeMitigation", "RiskAfterMitigation", "RiskControl", "OverallResidualRiskEvaluation");
36
- attribute :>> includeRelationshipKinds = ("TracesRisk", "MitigatesHazard", "CausedBy", "ContributesToHazard", "MitigatedByControl", "LeadsToHazard");
35
+ attribute :>> includeElementKinds = ("SafetyRelatedCharacteristic", "Hazard", "HazardCause", "SequenceOfEvents", "HazardousSituation", "Harm", "Risk", "RiskControlMeasure", "ResidualRisk", "Benefit", "OverallResidualRiskEvaluation");
36
+ attribute :>> includeRelationshipKinds = ("TracesRisk", "Mitigates", "Causes", "Mitigates");
37
37
  attribute :>> includeLayers = ("risk", "assurance");
38
38
  attribute :>> includeConcerns = (ConcernKind::safety);
39
39
  attribute :>> selectionExpression = "product == 'GPCA'";
@@ -32,7 +32,7 @@ package memo_examples_gpca_pump_model_views_software_software_architecture_view
32
32
  part :>> selectionQuery {
33
33
  attribute :>> id = "QRY-SW-101";
34
34
  attribute :>> name = "GPCA_SoftwareArchitectureQuery";
35
- attribute :>> includeElementKinds = ("SoftwareSystem", "SoftwareComponent", "SoftwarePort");
35
+ attribute :>> includeElementKinds = ("SoftwareSystem", "SoftwareModule", "SoftwarePort");
36
36
  attribute :>> includeRelationshipKinds = ("ExchangesWith", "Composes");
37
37
  attribute :>> includeLayers = ("software_structure", "interfaces");
38
38
  attribute :>> selectionExpression = "product == 'GPCA'";
@@ -31,7 +31,7 @@ package memo_examples_gpca_pump_model_views_verification_verification_coverage_v
31
31
  part :>> selectionQuery {
32
32
  attribute :>> id = "QRY-VER-101";
33
33
  attribute :>> name = "GPCA_VerificationCoverageQuery";
34
- attribute :>> includeElementKinds = ("Requirement", "RiskControl", "VerificationCase", "ValidationCase", "TestArtifact", "Evidence");
34
+ attribute :>> includeElementKinds = ("Requirement", "RiskControlMeasure", "VerificationCase", "ValidationCase", "TestArtifact", "Evidence");
35
35
  attribute :>> includeRelationshipKinds = ("VerifiedBy", "Validates", "ProducesEvidence");
36
36
  attribute :>> includeLayers = ("requirements", "risk", "assurance");
37
37
  attribute :>> selectionExpression = "product == 'GPCA'";
@@ -0,0 +1,7 @@
1
+ # IVD laboratory system
2
+
3
+ A focused MEMO example for an IVD laboratory system.
4
+
5
+ - `model/ivd_laboratory_system.sysml` is the public parent package.
6
+ - `model/catalog/` holds the canonical model elements.
7
+ - `model/viewpoints/` holds diagram views of that catalog.
@@ -0,0 +1,58 @@
1
+ // Focused example: in-vitro diagnostic laboratory analyzer. Specimen as
2
+ // material flow through fluidic components, a LOINC-coded measurement
3
+ // result, and an operational activity for running a panel.
4
+ package memo_examples_ivd_laboratory_system {
5
+ private import ScalarValues::*;
6
+
7
+ private import memo_core_enumerations::*;
8
+ private import memo_core_terminology::*;
9
+ private import memo_core_relationships::*;
10
+ private import memo_architecture_operational_activities::*;
11
+ private import memo_architecture_logical_structure::*;
12
+ private import memo_architecture_implementation_hardware_structure::*;
13
+
14
+ part analyzer : PhysicalAssembly {
15
+ attribute :>> id = "IVD-DEV-001"; attribute :>> name = "ChemAnalyzer";
16
+ attribute :>> responsibility = "automate clinical chemistry measurements";
17
+ }
18
+
19
+ // Specimen path: material flow through fluidic hardware.
20
+ part fluidSampleProbe : FluidicComponent {
21
+ attribute :>> id = "IVD-HW-001"; attribute :>> name = "SampleProbe";
22
+ attribute :>> fluidPathRole = "aspirates specimen from primary tube";
23
+ }
24
+ part fluidReactionCuvette : FluidicComponent {
25
+ attribute :>> id = "IVD-HW-002"; attribute :>> name = "ReactionCuvette";
26
+ attribute :>> fluidPathRole = "holds specimen-reagent reaction mix";
27
+ }
28
+ part optPhotometer : OpticalComponent {
29
+ attribute :>> id = "IVD-HW-003"; attribute :>> name = "PhotometerAssembly";
30
+ attribute :>> opticalFunction = "absorbance measurement";
31
+ attribute :>> wavelengthRange = "340-800 nm";
32
+ }
33
+ part exSpecimenFlow : LogicalExchange {
34
+ attribute :>> id = "IVD-EX-001"; attribute :>> name = "SpecimenTransfer";
35
+ attribute :>> contentKind = FlowContentKind::material;
36
+ attribute :>> direction = DirectionKind::output;
37
+ }
38
+
39
+ // Result item coded with LOINC.
40
+ item glucoseResult : LogicalExchangeItem {
41
+ attribute :>> id = "IVD-IT-001"; attribute :>> name = "GlucoseResult";
42
+ attribute :>> contentKind = FlowContentKind::measurement;
43
+ attribute :>> unit = "mg/dL";
44
+ attribute :>> timestampRequired = true;
45
+ attribute :>> codes = loincGlucose;
46
+ }
47
+ attribute loincGlucose : TerminologyCode {
48
+ attribute :>> systemUri = "http://loinc.org";
49
+ attribute :>> code = "2345-7";
50
+ attribute :>> display = "Glucose [Mass/volume] in Serum or Plasma";
51
+ }
52
+
53
+ // Operating activity for the analyzer.
54
+ action actRunPanel : OperationalActivity {
55
+ attribute :>> id = "IVD-ACT-001"; attribute :>> name = "RunChemistryPanel";
56
+ attribute :>> criticality = CriticalityKind::high;
57
+ }
58
+ }
@@ -0,0 +1,3 @@
1
+ package memo_examples_ivd_laboratory_system_parent {
2
+ public import memo_examples_ivd_laboratory_system::*;
3
+ }
@@ -0,0 +1,6 @@
1
+ package memo_examples_ivd_laboratory_system_viewpoints {
2
+ private import memo_examples_ivd_laboratory_system::*;
3
+ private import memo_viewpoints_definitions::*;
4
+ private import memo_core_enumerations::*;
5
+ view ivdLaboratorySystemOverview : MemoDiagramView { expose memo_examples_ivd_laboratory_system::*; attribute depth = 2; attribute :>> title = "IVD Laboratory System Overview"; attribute :>> viewKind = DiagramViewKind::interconnection; attribute :>> diagramType = "ibd"; }
6
+ }
@@ -0,0 +1,7 @@
1
+ # Manual surgical instrument
2
+
3
+ A focused MEMO example for a manual surgical instrument.
4
+
5
+ - `model/manual_surgical_instrument.sysml` is the public parent package.
6
+ - `model/catalog/` holds the canonical model elements.
7
+ - `model/viewpoints/` holds diagram views of that catalog.
@@ -0,0 +1,41 @@
1
+ // Focused architecture example: a passive manual instrument (needle holder).
2
+ // It demonstrates physical decomposition and patient-contact declarations
3
+ // without adding functional, logical, or software layers.
4
+ package memo_examples_manual_surgical_instrument {
5
+ private import ScalarValues::*;
6
+
7
+ private import memo_core_enumerations::*;
8
+ private import memo_architecture_operational_activities::*;
9
+ private import memo_architecture_implementation_hardware_structure::*;
10
+
11
+ // ── Modeled product and physical structure ──────────────────
12
+ part needleHolder : PhysicalAssembly {
13
+ attribute :>> id = "MSI-DEV-001";
14
+ attribute :>> name = "NeedleHolder";
15
+ attribute :>> responsibility = "grasp and drive a suture needle";
16
+ }
17
+ part jawAssembly : MechanicalPart {
18
+ attribute :>> id = "MSI-PART-001";
19
+ attribute :>> name = "TungstenCarbideJaws";
20
+ attribute :>> mechanicalFunction = "serrated needle grip";
21
+ attribute :>> patientContact = true;
22
+ attribute :>> contactNature = "intact tissue / surgical site, indirect";
23
+ attribute :>> contactDuration = "limited (<24 h)";
24
+ }
25
+ part ratchetLock : MechanicalPart {
26
+ attribute :>> id = "MSI-PART-002";
27
+ attribute :>> name = "RatchetLock";
28
+ attribute :>> mechanicalFunction = "maintains jaw clamping force without continuous grip";
29
+ attribute :>> patientContact = false;
30
+ }
31
+ connection : Realizes connect realized ::> needleHolder to realizing ::> jawAssembly;
32
+ connection : Realizes connect realized ::> needleHolder to realizing ::> ratchetLock;
33
+
34
+ // A task may be traced to the architecture later when the project has a
35
+ // specific allocation or interaction claim to make.
36
+ action taskPlaceSutures : UserTask {
37
+ attribute :>> id = "MSI-TASK-001";
38
+ attribute :>> name = "PlaceSutures";
39
+ attribute :>> taskGoal = "place interrupted sutures";
40
+ }
41
+ }
@@ -0,0 +1,3 @@
1
+ package memo_examples_manual_surgical_instrument_parent {
2
+ public import memo_examples_manual_surgical_instrument::*;
3
+ }
@@ -0,0 +1,6 @@
1
+ package memo_examples_manual_surgical_instrument_viewpoints {
2
+ private import memo_examples_manual_surgical_instrument::*;
3
+ private import memo_viewpoints_definitions::*;
4
+ private import memo_core_enumerations::*;
5
+ view manualSurgicalInstrumentOverview : MemoDiagramView { expose memo_examples_manual_surgical_instrument::*; attribute depth = 2; attribute :>> title = "Manual Surgical Instrument Overview"; attribute :>> viewKind = DiagramViewKind::general; attribute :>> diagramType = "bdd"; }
6
+ }
@@ -0,0 +1,7 @@
1
+ # Multidimensional layers
2
+
3
+ A focused MEMO example showing layers and cross-cutting disciplines.
4
+
5
+ - `model/multidimensional_layers.sysml` is the public parent package.
6
+ - `model/catalog/` holds the canonical model elements.
7
+ - `model/viewpoints/` holds diagram views of that catalog.
@@ -0,0 +1,51 @@
1
+ // Focused example for CR-ONT-045 single-axis ownership.
2
+ // The dose-limit checker is owned by exactly ONE axis — the implementation
3
+ // architecture layer, encoded by its owning package — and is never duplicated.
4
+ // Its safety, cybersecurity, and verification character are not tags on the
5
+ // element; they are typed relationships to elements owned by the vertical
6
+ // assurance disciplines (a Hazard/RiskControlMeasure it mitigates, a VerificationCase
7
+ // that checks it). Ownership lives on one axis; participation crosses axes only
8
+ // through relationships.
9
+ package memo_examples_multidimensional_layers {
10
+ private import ScalarValues::*;
11
+
12
+ private import memo_core_enumerations::*;
13
+ private import memo_core_dimensions::*;
14
+ private import memo_architecture_implementation_software_structure::*;
15
+ private import memo_architecture_implementation_software_runtime::*;
16
+ private import memo_assurance_verification_validation::*;
17
+ private import memo_core_relationships::*;
18
+
19
+ part doseLimitChecker : SoftwareModule {
20
+ attribute :>> id = "MDL-SW-001";
21
+ attribute :>> name = "DoseLimitChecker";
22
+ attribute :>> responsibility = "Reject therapy parameters outside the drug library's hard limits.";
23
+ attribute :>> safetyClass = SafetyClassKind::C;
24
+ // Axis ownership is this element's package (implementation layer) — not
25
+ // an attribute. Only genuinely orthogonal dimensions remain as tags:
26
+ attribute :>> realizationStage = RealizationStageKind::designed;
27
+ attribute :>> crossCuttingConcerns = (
28
+ CrossCuttingConcernKind::traceability,
29
+ CrossCuttingConcernKind::evidence);
30
+ }
31
+
32
+ // The SAME identity progresses through realization stages — a deployed
33
+ // configuration is a stage of the element, not a second element.
34
+ part doseLimitCheckerRuntime : SoftwareComponent {
35
+ attribute :>> id = "MDL-RT-001";
36
+ attribute :>> name = "DoseLimitCheckerTask";
37
+ attribute :>> periodMs = 50.0;
38
+ attribute :>> deadlineMs = 50.0;
39
+ attribute :>> wcetMs = 8.0;
40
+ attribute :>> schedulingPolicy = SchedulingPolicyKind::fixedPriorityPreemptive;
41
+ attribute :>> realizationStage = RealizationStageKind::deployed;
42
+ }
43
+ connection : Realizes connect realizing ::> doseLimitCheckerRuntime to realized ::> doseLimitChecker;
44
+
45
+ verification vcLimitEnforcement : VerificationCase {
46
+ attribute :>> id = "MDL-VC-001"; attribute :>> name = "VerifyHardLimitEnforcement";
47
+ attribute :>> methodKind = VerificationMethodKind::test;
48
+ attribute :>> acceptanceCriteria = "all out-of-limit programs rejected across the equivalence classes";
49
+ }
50
+ connection : VerifiedBy connect verificationTarget ::> doseLimitChecker to verificationCase ::> vcLimitEnforcement;
51
+ }
@@ -0,0 +1,4 @@
1
+ // Public entry point for this example. Keep model content in catalog/ and views in viewpoints/.
2
+ package memo_examples_multidimensional_layers_parent {
3
+ public import memo_examples_multidimensional_layers::*;
4
+ }
@@ -0,0 +1,13 @@
1
+ package memo_examples_multidimensional_layers_viewpoints {
2
+ private import memo_examples_multidimensional_layers::*;
3
+ private import memo_viewpoints_definitions::*;
4
+ private import memo_core_enumerations::*;
5
+
6
+ view multidimensionalLayersOverview : MemoDiagramView {
7
+ expose memo_examples_multidimensional_layers::*;
8
+ attribute depth = 2;
9
+ attribute :>> title = "Multidimensional Layers Overview";
10
+ attribute :>> viewKind = DiagramViewKind::general;
11
+ attribute :>> diagramType = "bdd";
12
+ }
13
+ }
@@ -0,0 +1,7 @@
1
+ # Reusable instrument
2
+
3
+ A focused MEMO example for a reusable medical instrument.
4
+
5
+ - `model/reusable_instrument.sysml` is the public parent package.
6
+ - `model/catalog/` holds the canonical model elements.
7
+ - `model/viewpoints/` holds diagram views of that catalog.
@@ -0,0 +1,71 @@
1
+ // Focused example: reusable, reprocessable instrument. Centers on the
2
+ // "Sterilize a reusable instrument" use case and its reprocessing workflow.
3
+ // Product identity and manufacturing records remain outside this model.
4
+ package memo_examples_reusable_instrument {
5
+ private import ScalarValues::*;
6
+
7
+ private import memo_core_enumerations::*;
8
+ private import memo_architecture_operational_context_actors::*;
9
+ private import memo_architecture_operational_use_cases::*;
10
+ private import memo_architecture_operational_activities::*;
11
+ private import memo_architecture_operational_workflows::*;
12
+ private import memo_architecture_operational_scenarios::*;
13
+
14
+ part sterileProcessingTech : User {
15
+ attribute :>> actorKind = ActorKind::technician;
16
+ attribute :>> id = "RI-USR-001"; attribute :>> name = "SterileProcessingTechnician";
17
+ attribute :>> serviceScope = "central sterile services department";
18
+ }
19
+
20
+ use case ucSterilize : UseCase {
21
+ attribute :>> useCaseKind = UseCaseKind::clinical;
22
+ attribute :>> id = "RI-UC-001"; attribute :>> name = "SterilizeReusableInstrument";
23
+ attribute :>> goalStatement = "Return a used instrument to sterile, functional condition for the next case.";
24
+ attribute :>> preCondition = "instrument collected from the OR; gross soil removed at point of use";
25
+ attribute :>> successOutcome = "instrument cleaned, inspected, sterilized, and released to sterile storage";
26
+ }
27
+ connection : Initiates connect initiatingUser ::> sterileProcessingTech to initiatedUseCase ::> ucSterilize;
28
+
29
+ // Reprocessing workflow: exists independently of any single instrument.
30
+ action wfReprocess : OperationalWorkflow {
31
+ attribute :>> id = "RI-WF-001"; attribute :>> name = "InstrumentReprocessingWorkflow";
32
+ attribute :>> workflowState = WorkflowStateKind::asIs;
33
+ attribute :>> entryCondition = "used instrument received in decontamination";
34
+ attribute :>> completionCondition = "sterile pack released to storage";
35
+ }
36
+ action actClean : OperationalActivity {
37
+ attribute :>> id = "RI-ACT-001"; attribute :>> name = "CleanAndDisinfect";
38
+ attribute :>> criticality = CriticalityKind::high;
39
+ }
40
+ action actInspect : OperationalActivity {
41
+ attribute :>> id = "RI-ACT-002"; attribute :>> name = "InspectAndFunctionTest";
42
+ attribute :>> criticality = CriticalityKind::high;
43
+ }
44
+ action actSterilizeLoad : OperationalActivity {
45
+ attribute :>> id = "RI-ACT-003"; attribute :>> name = "PackAndAutoclave";
46
+ attribute :>> criticality = CriticalityKind::high;
47
+ }
48
+ action wsClean : WorkflowStep { attribute :>> stepOrder = 1; ref :>> performedActivity = actClean; }
49
+ action wsInspect : WorkflowStep { attribute :>> stepOrder = 2; ref :>> performedActivity = actInspect; }
50
+ action wsSterilize : WorkflowStep { attribute :>> stepOrder = 3; ref :>> performedActivity = actSterilizeLoad; }
51
+ connection : Composes connect parent ::> wfReprocess to child ::> wsClean;
52
+ connection : StepPrecedes connect predecessor ::> wsClean to successor ::> wsInspect;
53
+ connection : StepPrecedes connect predecessor ::> wsInspect to successor ::> wsSterilize;
54
+ connection : Supports { attribute :>> supportKind = SupportKind::useCase; connect supporter ::> wfReprocess to supported ::> ucSterilize; }
55
+
56
+ part scNominalCycle : OperativeScenario {
57
+ attribute :>> id = "RI-SC-001"; attribute :>> name = "NominalReprocessingCycle";
58
+ attribute :>> variantKind = ScenarioVariantKind::nominal;
59
+ attribute :>> operationalCondition = OperationalConditionKind::normal;
60
+ ref :>> parentWorkflow = wfReprocess;
61
+ }
62
+ // One modeled occurrence of the workflow. External operational systems
63
+ // may associate this occurrence with their asset or batch record.
64
+ part occCycle113 : ScenarioOccurrence {
65
+ attribute :>> id = "RI-OCC-113"; attribute :>> name = "ReprocessingCycle113";
66
+ attribute :>> occurredAt = "2026-07-15T14:02:00Z";
67
+ attribute :>> hypothetical = false;
68
+ attribute :>> outcomeSummary = "cycle completed; biological indicator passed";
69
+ ref :>> executedScenario = scNominalCycle;
70
+ }
71
+ }
@@ -0,0 +1,4 @@
1
+ // Public entry point for this example. Keep model content in catalog/ and views in viewpoints/.
2
+ package memo_examples_reusable_instrument_parent {
3
+ public import memo_examples_reusable_instrument::*;
4
+ }
@@ -0,0 +1,13 @@
1
+ package memo_examples_reusable_instrument_viewpoints {
2
+ private import memo_examples_reusable_instrument::*;
3
+ private import memo_viewpoints_definitions::*;
4
+ private import memo_core_enumerations::*;
5
+
6
+ view reusableInstrumentOverview : MemoDiagramView {
7
+ expose memo_examples_reusable_instrument::*;
8
+ attribute depth = 2;
9
+ attribute :>> title = "Reusable Instrument Overview";
10
+ attribute :>> viewKind = DiagramViewKind::actionflow;
11
+ attribute :>> diagramType = "ofd";
12
+ }
13
+ }
@@ -0,0 +1,7 @@
1
+ # Software-only medical device
2
+
3
+ A focused MEMO example for software without a hardware layer.
4
+
5
+ - `model/software_only_medical_device.sysml` is the public parent package.
6
+ - `model/catalog/` holds the canonical model elements.
7
+ - `model/viewpoints/` holds diagram views of that catalog.
@@ -0,0 +1,62 @@
1
+ // Focused example: software-only medical device (SaMD, IMDRF N10/N12).
2
+ // There is deliberately no device-specific product record or physical layer.
3
+ // Deployment targets
4
+ // off-the-shelf infrastructure the manufacturer does not control.
5
+ package memo_examples_software_only_medical_device {
6
+ private import ScalarValues::*;
7
+
8
+ private import memo_core_enumerations::*;
9
+ private import memo_core_relationships::*;
10
+ private import memo_architecture_implementation_software_structure::*;
11
+ private import memo_architecture_implementation_software_runtime::*;
12
+ private import memo_architecture_realization_deployment::*;
13
+ private import memo_architecture_realization_physical::*;
14
+
15
+ part swScreeningApp : SoftwareSystem {
16
+ attribute :>> id = "SMD-SW-001"; attribute :>> name = "ScreeningApplication";
17
+ attribute :>> safetyClass = SafetyClassKind::B;
18
+ attribute :>> version = "1.4.0";
19
+ }
20
+ part algGrading : Algorithm {
21
+ attribute :>> id = "SMD-ALG-001"; attribute :>> name = "RetinopathyGradingModel";
22
+ attribute :>> algorithmKind = "convolutional neural network, locked (non-adaptive)";
23
+ attribute :>> clinicalPerformanceClaim = "sensitivity >= 87%, specificity >= 90% vs. reference standard";
24
+ }
25
+ part soupInference : SoftwareModule {
26
+ attribute :>> moduleKind = ModuleKind::soup;
27
+ attribute :>> id = "SMD-SOUP-001"; attribute :>> name = "InferenceRuntimeLibrary";
28
+ attribute :>> soupVendor = "third-party OSS";
29
+ attribute :>> soupClassification = SOUPClassificationKind::classB;
30
+ }
31
+ part swGradingModule : SoftwareModule {
32
+ attribute :>> id = "SMD-SW-002"; attribute :>> name = "GradingModule";
33
+ attribute :>> responsibility = "Wraps the grading model behind the service API; owns input validation and result structuring.";
34
+ attribute :>> safetyClass = SafetyClassKind::B;
35
+ }
36
+ connection : ModuleUses connect usingModule ::> swGradingModule to usedModule ::> soupInference;
37
+
38
+ part svcGrading : SoftwareComponent {
39
+ attribute :>> runtimeKind = RuntimeKind::service;
40
+ attribute :>> id = "SMD-RT-001"; attribute :>> name = "GradingService";
41
+ attribute :>> serviceContract = "REST /grade: image in, structured finding out";
42
+ attribute :>> updatePolicy = "blue/green rollout";
43
+ attribute :>> rollbackPolicy = "previous validated version retained hot";
44
+ }
45
+ connection : Realizes connect realizing ::> svcGrading to realized ::> swGradingModule;
46
+
47
+ part duContainerImage : DeploymentUnit {
48
+ attribute :>> id = "SMD-DU-001"; attribute :>> name = "ScreeningServiceImage";
49
+ attribute :>> unitKind = "OCI container image";
50
+ attribute :>> integrityProtection = "image signature + SBOM attestation";
51
+ }
52
+ part nodeCloud : ProcessingNode {
53
+ attribute :>> id = "SMD-HW-001"; attribute :>> name = "CloudComputeNode";
54
+ attribute :>> nodeKind = ProcessingNodeKind::cloudServer;
55
+ attribute :>> supportsContainerization = true;
56
+ attribute :>> realTimeCapable = false;
57
+ }
58
+ connection : DeploysTo connect deploymentUnit ::> duContainerImage to node ::> nodeCloud {
59
+ attribute :>> deploymentKind = DeploymentKind::containerized;
60
+ }
61
+ connection : HostedBy connect hostAssembly ::> nodeCloud to processingNode ::> svcGrading;
62
+ }
@@ -0,0 +1,4 @@
1
+ // Public entry point for this example. Keep model content in catalog/ and views in viewpoints/.
2
+ package memo_examples_software_only_medical_device_parent {
3
+ public import memo_examples_software_only_medical_device::*;
4
+ }
@@ -0,0 +1,13 @@
1
+ package memo_examples_software_only_medical_device_viewpoints {
2
+ private import memo_examples_software_only_medical_device::*;
3
+ private import memo_viewpoints_definitions::*;
4
+ private import memo_core_enumerations::*;
5
+
6
+ view softwareOnlyMedicalDeviceOverview : MemoDiagramView {
7
+ expose memo_examples_software_only_medical_device::*;
8
+ attribute depth = 2;
9
+ attribute :>> title = "Software-only Medical Device Overview";
10
+ attribute :>> viewKind = DiagramViewKind::general;
11
+ attribute :>> diagramType = "bdd";
12
+ }
13
+ }
@@ -0,0 +1,8 @@
1
+ # Laparoscopic sleeve gastrectomy workflow
2
+
3
+ A focused MEMO operational model of an illustrative laparoscopic sleeve
4
+ gastrectomy workflow. It is a modelling example, not a clinical protocol.
5
+
6
+ - `model/surgical_closure_workflow.sysml` is the public parent package.
7
+ - `model/catalog/` holds the canonical model elements.
8
+ - `model/viewpoints/` holds diagram views of that catalog.