@memoarchitect/ontology 0.7.0 → 0.8.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/README.md +4 -2
  2. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
  3. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +7 -5
  4. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
  5. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +18 -8
  6. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +341 -99
  7. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +25 -11
  8. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +328 -271
  9. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +52 -11
  10. package/examples/gpca-pump/model/catalog/gpca_context.sysml +9 -0
  11. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +9 -5
  12. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +175 -259
  13. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +82 -58
  14. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +5 -10
  15. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +101 -100
  16. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
  17. package/examples/gpca-pump/model/catalog/gpca_system.sysml +15 -2
  18. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +274 -331
  19. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +115 -35
  20. package/examples/gpca-pump/model/catalog/project.sysml +5 -0
  21. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +1 -1
  22. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +1 -1
  23. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +1 -1
  24. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +1 -1
  25. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +2 -2
  26. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +1 -1
  27. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +1 -1
  28. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +1 -1
  29. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +2 -2
  30. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +5 -2
  31. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -2
  32. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +1 -1
  33. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +1 -1
  34. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +2 -2
  35. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -2
  36. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +4 -2
  37. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +1 -1
  38. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +3 -2
  39. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
  40. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +133 -128
  41. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +139 -157
  42. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +56 -33
  43. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +25 -26
  44. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -5
  45. package/examples/ros-mobile-robot/README.md +40 -0
  46. package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
  47. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
  48. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
  49. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +13 -0
  50. package/examples/software-only-medical-device/model/catalog/project.sysml +4 -0
  51. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -5
  52. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +56 -60
  53. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +1 -1
  54. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +10 -15
  55. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +7 -9
  56. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +42 -66
  57. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +56 -66
  58. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +26 -55
  59. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +3 -6
  60. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +0 -18
  61. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +51 -82
  62. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +21 -31
  63. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +12 -8
  64. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +28 -21
  65. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +57 -33
  66. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +102 -79
  67. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +5 -5
  68. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +21 -6
  69. package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
  70. package/examples/ui-screen-regions/model/catalog/traces.sysml +28 -125
  71. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -1
  72. package/extensions/LICENSES/MIT.txt +19 -0
  73. package/extensions/README.md +94 -0
  74. package/extensions/aadl/memo.package.yaml +18 -0
  75. package/extensions/aadl/src/aadl_extension.sysml +6 -0
  76. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
  77. package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
  78. package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
  79. package/extensions/cloud/memo.package.yaml +18 -0
  80. package/extensions/cloud/src/cloud_extension.sysml +44 -0
  81. package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
  82. package/extensions/container/memo.package.yaml +18 -0
  83. package/extensions/container/src/container_extension.sysml +37 -0
  84. package/extensions/container/src/methodology/container_methodology.sysml +17 -0
  85. package/extensions/messaging/memo.package.yaml +18 -0
  86. package/extensions/messaging/src/messaging_extension.sysml +64 -0
  87. package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
  88. package/extensions/ros/memo.package.yaml +18 -0
  89. package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
  90. package/extensions/ros/src/ros_extension.sysml +200 -0
  91. package/extensions/template/src/extension.sysml +37 -0
  92. package/memo.manifest.yaml +13 -2
  93. package/methodologies/default/memo.package.yaml +1 -1
  94. package/methodologies/gpca/memo.package.yaml +1 -1
  95. package/ontology/memo.package.yaml +1 -1
  96. package/package.json +5 -3
  97. package/profile/memo.package.yaml +1 -1
  98. package/src/architecture/decisions/memo_decisions.sysml +23 -2
  99. package/src/architecture/functional/behavior/memo_behavior.sysml +49 -21
  100. package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
  101. package/src/architecture/functional/functions/memo_functions.sysml +91 -34
  102. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -22
  103. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +37 -10
  104. package/src/architecture/implementation/ui/memo_ui.sysml +78 -38
  105. package/src/architecture/logical/interfaces/memo_interfaces.sysml +63 -11
  106. package/src/architecture/logical/structure/memo_logical_structure.sysml +21 -20
  107. package/src/architecture/operational/activities/memo_activities.sysml +10 -3
  108. package/src/architecture/operational/context/actors/memo_actors.sysml +5 -8
  109. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +13 -30
  110. package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -16
  111. package/src/architecture/operational/scenarios/memo_scenarios.sysml +57 -23
  112. package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -26
  113. package/src/architecture/operational/workflows/memo_workflows.sysml +29 -10
  114. package/src/architecture/realization/deployment/memo_deployment.sysml +111 -16
  115. package/src/architecture/realization/physical/memo_physical_architecture.sysml +27 -2
  116. package/src/artifacts/configuration_management/memo_configuration_management.sysml +16 -0
  117. package/src/artifacts/core/memo_controlled_artifacts.sysml +3 -1
  118. package/src/artifacts/standards/cfr_21_820.sysml +116 -0
  119. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
  120. package/src/artifacts/standards/iec_60601_1.sysml +149 -0
  121. package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
  122. package/src/artifacts/standards/iec_60812.sysml +51 -0
  123. package/src/artifacts/standards/iec_62304.sysml +210 -0
  124. package/src/artifacts/standards/iec_62366_1.sysml +113 -0
  125. package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
  126. package/src/artifacts/standards/iso_13485.sysml +113 -0
  127. package/src/artifacts/standards/iso_14971.sysml +94 -0
  128. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
  129. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
  130. package/src/artifacts/templates/dhf/21cfr820/design-input.md +1 -1
  131. package/src/artifacts/templates/dhf/21cfr820/design-output.md +5 -5
  132. package/src/artifacts/templates/dhf/21cfr820/design-review.md +1 -1
  133. package/src/artifacts/templates/dhf/21cfr820/design-validation.md +2 -2
  134. package/src/artifacts/templates/dhf/21cfr820/design-verification.md +2 -2
  135. package/src/artifacts/templates/dhf/21cfr820/dhf-index.md +2 -2
  136. package/src/artifacts/templates/dhf/21cfr820/transfer-plan.md +1 -1
  137. package/src/artifacts/templates/dhf/21cfr820/user-needs.md +1 -1
  138. package/src/artifacts/templates/dhf/21cfr820/vv-plan.md +3 -3
  139. package/src/artifacts/templates/dhf/21cfr820/vv-report.md +4 -4
  140. package/src/artifacts/templates/dhf/fda-cybersecurity/incident-response.md +1 -1
  141. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +3 -2
  142. package/src/artifacts/templates/dhf/fda-cybersecurity/security-arch.md +2 -2
  143. package/src/artifacts/templates/dhf/fda-cybersecurity/threat-model.md +4 -4
  144. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +4 -3
  145. package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
  146. package/src/artifacts/templates/dhf/iec-62304/detailed-design.md +1 -1
  147. package/src/artifacts/templates/dhf/iec-62304/integration-test.md +3 -3
  148. package/src/artifacts/templates/dhf/iec-62304/sad.md +6 -5
  149. package/src/artifacts/templates/dhf/iec-62304/sbom.md +3 -2
  150. package/src/artifacts/templates/dhf/iec-62304/sdp.md +5 -4
  151. package/src/artifacts/templates/dhf/iec-62304/soup.md +4 -2
  152. package/src/artifacts/templates/dhf/iec-62304/srs.md +54 -20
  153. package/src/artifacts/templates/dhf/iec-62304/sw-traceability.md +3 -3
  154. package/src/artifacts/templates/dhf/iec-62304/system-test.md +1 -1
  155. package/src/artifacts/templates/dhf/iec-62366/summative-eval.md +1 -1
  156. package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +40 -4
  157. package/src/artifacts/templates/dhf/iec-62366/ue-plan.md +1 -1
  158. package/src/artifacts/templates/dhf/iec-62366/urra.md +3 -3
  159. package/src/artifacts/templates/dhf/iso-14971/fmea.md +42 -19
  160. package/src/artifacts/templates/dhf/iso-14971/har.md +3 -3
  161. package/src/artifacts/templates/dhf/iso-14971/rmp.md +2 -2
  162. package/src/artifacts/templates/dhf/system/sad.md +173 -0
  163. package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
  164. package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
  165. package/src/artifacts/templates/dhf/system/syrs.md +128 -0
  166. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +39 -20
  167. package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
  168. package/src/assurance/requirements/memo_requirements.sysml +5 -2
  169. package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
  170. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
  171. package/src/assurance/safety_risk/memo_risk.sysml +78 -7
  172. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +16 -0
  173. package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
  174. package/src/core/annotations/memo_annotations.sysml +25 -6
  175. package/src/core/common/memo_common.sysml +121 -16
  176. package/src/core/consistency_rules/consistency_rules.sysml +1 -1
  177. package/src/core/dimensions/dimensions.sysml +12 -0
  178. package/src/core/enumerations/memo_enumerations.sysml +60 -14
  179. package/src/core/relationships/memo_relationships.sysml +199 -196
  180. package/src/memo_namespaces.sysml +30 -0
  181. package/src/methodology/core/memo_core.sysml +24 -0
  182. package/src/methodology/profiles/memo_profiles.sysml +1 -1
  183. package/src/rules/ontology/ontology_invariants.sysml +213 -1
  184. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +3 -3
  185. package/src/viewpoints/clinical/clinical_viewpoint.sysml +1 -1
  186. package/src/viewpoints/context/context_viewpoint.sysml +1 -1
  187. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +1 -1
  188. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +1 -0
  189. package/src/viewpoints/functional/functional_viewpoint.sysml +1 -1
  190. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +1 -1
  191. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +1 -1
  192. package/src/viewpoints/operational/operational_viewpoint.sysml +1 -1
  193. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +1 -1
  194. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +1 -1
  195. package/src/viewpoints/verification/verification_viewpoint.sysml +1 -1
  196. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +1 -1
  197. package/examples/extensions/README.md +0 -16
  198. package/examples/extensions/template/src/extension.sysml +0 -15
  199. package/examples/gpca-pump/gpca-pump.kpar +0 -0
  200. /package/{examples/extensions → extensions}/clinical/memo.package.yaml +0 -0
  201. /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
  202. /package/{examples/extensions → extensions}/clinical/src/methodology/clinical_methodology.sysml +0 -0
  203. /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
  204. /package/{examples/extensions → extensions}/template/memo.package.yaml +0 -0
@@ -1,5 +1,6 @@
1
1
  package memo_examples_gpca_pump_gpca_operational {
2
2
  private import ScalarValues::*;
3
+ private import ModelingMetadata::*;
3
4
 
4
5
  private import memo_architecture_operational_structure::*;
5
6
  private import memo_architecture_operational_activities::*;
@@ -8,6 +9,7 @@ package memo_examples_gpca_pump_gpca_operational {
8
9
  private import memo_architecture_operational_workflows::*;
9
10
  private import memo_core_enumerations::*;
10
11
  private import memo_examples_gpca_pump_gpca_context::*;
12
+ private import memo_examples_gpca_pump_gpca_system::*;
11
13
  private import memo_core_relationships::*;
12
14
 
13
15
  // ── Operational entities beyond the human actors ────────────
@@ -154,6 +156,11 @@ package memo_examples_gpca_pump_gpca_operational {
154
156
  ref :>> primaryUser = actorNurse;
155
157
  ref :>> supportingActors = (actorPatient, actorPrescriber, actorPharmacist);
156
158
  ref :>> useContext = hospitalWardContext;
159
+ subject supportingSystem;
160
+ actor nurseInitiator = actorNurse;
161
+ actor patientActor = actorPatient;
162
+ actor prescriberActor = actorPrescriber;
163
+ actor pharmacistActor = actorPharmacist;
157
164
  }
158
165
 
159
166
  action wfPrepareAndStartTherapy : OperationalWorkflow {
@@ -161,62 +168,43 @@ package memo_examples_gpca_pump_gpca_operational {
161
168
  attribute :>> workflowState = WorkflowStateKind::toBe;
162
169
  attribute :>> entryCondition = "A valid prescription and prepared reservoir are available.";
163
170
  attribute :>> completionCondition = "Therapy is started with confirmed prescription limits.";
171
+
172
+ action wsProgram : WorkflowStep { ref :>> performedActivity = oaProgram; }
173
+ action wsStart : WorkflowStep { ref :>> performedActivity = oaStartTherapy; }
164
174
  }
165
175
  action wfManageActiveTherapy : OperationalWorkflow {
166
176
  attribute :>> name = "ManageActiveTherapy";
167
177
  attribute :>> workflowState = WorkflowStateKind::toBe;
168
178
  attribute :>> entryCondition = "Basal therapy is active.";
169
179
  attribute :>> completionCondition = "A bolus is handled or active therapy continues safely.";
180
+
181
+ action wsRequestBolus : WorkflowStep { ref :>> performedActivity = oaRequestBolus; }
182
+ // Refinement targets a nested step by its local name — the shorthand's
183
+ // `to` end does not accept a qualified path — so this is written
184
+ // inside wsRequestBolus's own owning scope rather than at package
185
+ // level.
186
+ #refinement dependency fcsBolusSense to wsRequestBolus;
187
+ #refinement dependency fcsBolusValidate to wsRequestBolus;
188
+ #refinement dependency fcsBolusCommand to wsRequestBolus;
189
+ #refinement dependency fcsBolusActuate to wsRequestBolus;
190
+ #refinement dependency fcsBolusLog to wsRequestBolus;
170
191
  }
171
192
  action wfRespondToTherapyAlarm : OperationalWorkflow {
172
193
  attribute :>> name = "RespondToTherapyAlarm";
173
194
  attribute :>> workflowState = WorkflowStateKind::toBe;
174
195
  attribute :>> entryCondition = "A therapy alarm or degraded condition is detected.";
175
196
  attribute :>> completionCondition = "The pump is safe and the clinician has resolved or escalated the condition.";
197
+
198
+ action wsRespondAlarm : WorkflowStep { ref :>> performedActivity = oaRespondAlarm; }
199
+ #refinement dependency fcsAlarmSense to wsRespondAlarm;
200
+ #refinement dependency fcsAlarmEvaluate to wsRespondAlarm;
201
+ #refinement dependency fcsAlarmStopInfusion to wsRespondAlarm;
202
+ #refinement dependency fcsAlarmAnnunciate to wsRespondAlarm;
176
203
  }
177
- action wsProgram : WorkflowStep { ref :>> performedActivity = oaProgram; }
178
- action wsStart : WorkflowStep { ref :>> performedActivity = oaStartTherapy; }
179
- action wsRequestBolus : WorkflowStep { ref :>> performedActivity = oaRequestBolus; }
180
- action wsRespondAlarm : WorkflowStep { ref :>> performedActivity = oaRespondAlarm; }
181
204
  connection : Supports { attribute :>> supportKind = SupportKind::useCase; connect supporter ::> wfPrepareAndStartTherapy to supported ::> ucDeliverPcaTherapy; }
182
205
  connection : Supports { attribute :>> supportKind = SupportKind::useCase; connect supporter ::> wfManageActiveTherapy to supported ::> ucDeliverPcaTherapy; }
183
206
  connection : Supports { attribute :>> supportKind = SupportKind::useCase; connect supporter ::> wfRespondToTherapyAlarm to supported ::> ucDeliverPcaTherapy; }
184
- connection : Composes connect parent ::> wfPrepareAndStartTherapy to child ::> wsProgram;
185
- connection : Composes connect parent ::> wfPrepareAndStartTherapy to child ::> wsStart;
186
- connection : Composes connect parent ::> wfManageActiveTherapy to child ::> wsRequestBolus;
187
- connection : Composes connect parent ::> wfRespondToTherapyAlarm to child ::> wsRespondAlarm;
188
207
 
189
- // ── Scenario-owned operational activities and action flows ──
190
- action oaCompleteNominalTherapy : OperationalActivity {
191
- attribute :>> name = "CompleteNominalTherapy";
192
- action deliverWithinLimits; action recordTherapyEvent;
193
- first start then deliverWithinLimits; first deliverWithinLimits then recordTherapyEvent; first recordTherapyEvent then done;
194
- }
195
- action oaRejectBolusDuringLockout : OperationalActivity {
196
- attribute :>> name = "RejectBolusDuringLockout";
197
- action checkLockout; action rejectAndLog;
198
- first start then checkLockout; first checkLockout then rejectAndLog; first rejectAndLog then done;
199
- }
200
- action oaRespondToOcclusion : OperationalActivity {
201
- attribute :>> name = "RespondToOcclusion";
202
- action pauseInfusion; action annunciateOcclusion; action resolveAndResume;
203
- first start then pauseInfusion; first pauseInfusion then annunciateOcclusion; first annunciateOcclusion then resolveAndResume; first resolveAndResume then done;
204
- }
205
- action oaRespondToAirInLine : OperationalActivity {
206
- attribute :>> name = "RespondToAirInLine";
207
- action stopOrKvo; action annunciateAir; action reprimeAndRestart;
208
- first start then stopOrKvo; first stopOrKvo then annunciateAir; first annunciateAir then reprimeAndRestart; first reprimeAndRestart then done;
209
- }
210
- action oaReplaceEmptyReservoir : OperationalActivity {
211
- attribute :>> name = "ReplaceEmptyReservoir";
212
- action stopAndAnnunciate; action replaceReservoir; action resumeTherapy;
213
- first start then stopAndAnnunciate; first stopAndAnnunciate then replaceReservoir; first replaceReservoir then resumeTherapy; first resumeTherapy then done;
214
- }
215
- action oaRecoverAfterPowerLoss : OperationalActivity {
216
- attribute :>> name = "RecoverAfterPowerLoss";
217
- action switchToBattery; action restorePrescription; action confirmRestart;
218
- first start then switchToBattery; first switchToBattery then restorePrescription; first restorePrescription then confirmRestart; first confirmRestart then done;
219
- }
220
208
 
221
209
  // ── Operational capabilities ────────────────────────────────
222
210
  part ocTitratedAnalgesia : OperationalCapability {
@@ -235,9 +223,10 @@ package memo_examples_gpca_pump_gpca_operational {
235
223
  }
236
224
 
237
225
  // ── Operational scenarios ───────────────────────────────────
238
- action osNominalTherapy : OperativeScenario {
226
+ action osNominalTherapy : MemoScenario {
239
227
  attribute :>> id = "OS-001";
240
228
  attribute :>> name = "NominalTherapySession";
229
+ attribute :>> scenarioKind = ScenarioKind::operative;
241
230
  attribute :>> variantKind = ScenarioVariantKind::nominal;
242
231
  attribute :>> operationalCondition = OperationalConditionKind::normal;
243
232
  attribute :>> preCondition = "prescription issued, reservoir loaded";
@@ -247,10 +236,17 @@ package memo_examples_gpca_pump_gpca_operational {
247
236
  ref :>> parentWorkflow = wfManageActiveTherapy;
248
237
  ref :>> parentUseCase = ucDeliverPcaTherapy;
249
238
  ref :>> activities = oaCompleteNominalTherapy;
239
+
240
+ action oaCompleteNominalTherapy : OperationalActivity {
241
+ attribute :>> name = "CompleteNominalTherapy";
242
+ action deliverWithinLimits; action recordTherapyEvent;
243
+ first start then deliverWithinLimits; first deliverWithinLimits then recordTherapyEvent; first recordTherapyEvent then done;
244
+ }
250
245
  }
251
- action osLockoutBolus : OperativeScenario {
246
+ action osLockoutBolus : MemoScenario {
252
247
  attribute :>> id = "OS-002";
253
248
  attribute :>> name = "BolusRequestDuringLockout";
249
+ attribute :>> scenarioKind = ScenarioKind::operative;
254
250
  attribute :>> variantKind = ScenarioVariantKind::alternate;
255
251
  attribute :>> variationPoint = "patient bolus request during the nominal therapy lockout interval";
256
252
  attribute :>> operationalCondition = OperationalConditionKind::foreseeableMisuse;
@@ -262,10 +258,17 @@ package memo_examples_gpca_pump_gpca_operational {
262
258
  ref :>> parentUseCase = ucDeliverPcaTherapy;
263
259
  ref :>> baseScenario = osNominalTherapy;
264
260
  ref :>> activities = oaRejectBolusDuringLockout;
261
+
262
+ action oaRejectBolusDuringLockout : OperationalActivity {
263
+ attribute :>> name = "RejectBolusDuringLockout";
264
+ action checkLockout; action rejectAndLog;
265
+ first start then checkLockout; first checkLockout then rejectAndLog; first rejectAndLog then done;
266
+ }
265
267
  }
266
- action osOcclusionAlarm : OperativeScenario {
268
+ action osOcclusionAlarm : MemoScenario {
267
269
  attribute :>> id = "OS-003";
268
270
  attribute :>> name = "OcclusionDetectedDuringInfusion";
271
+ attribute :>> scenarioKind = ScenarioKind::operative;
269
272
  attribute :>> variantKind = ScenarioVariantKind::exception;
270
273
  attribute :>> variationPoint = "occlusion detected while nominal infusion is active";
271
274
  attribute :>> operationalCondition = OperationalConditionKind::degraded;
@@ -277,10 +280,17 @@ package memo_examples_gpca_pump_gpca_operational {
277
280
  ref :>> parentUseCase = ucDeliverPcaTherapy;
278
281
  ref :>> baseScenario = osNominalTherapy;
279
282
  ref :>> activities = oaRespondToOcclusion;
283
+
284
+ action oaRespondToOcclusion : OperationalActivity {
285
+ attribute :>> name = "RespondToOcclusion";
286
+ action pauseInfusion; action annunciateOcclusion; action resolveAndResume;
287
+ first start then pauseInfusion; first pauseInfusion then annunciateOcclusion; first annunciateOcclusion then resolveAndResume; first resolveAndResume then done;
288
+ }
280
289
  }
281
- action osAirInLine : OperativeScenario {
290
+ action osAirInLine : MemoScenario {
282
291
  attribute :>> id = "OS-004";
283
292
  attribute :>> name = "AirInLineDetected";
293
+ attribute :>> scenarioKind = ScenarioKind::operative;
284
294
  attribute :>> variantKind = ScenarioVariantKind::exception;
285
295
  attribute :>> variationPoint = "air-in-line detected while nominal infusion is active";
286
296
  attribute :>> operationalCondition = OperationalConditionKind::degraded;
@@ -292,10 +302,17 @@ package memo_examples_gpca_pump_gpca_operational {
292
302
  ref :>> parentUseCase = ucDeliverPcaTherapy;
293
303
  ref :>> baseScenario = osNominalTherapy;
294
304
  ref :>> activities = oaRespondToAirInLine;
305
+
306
+ action oaRespondToAirInLine : OperationalActivity {
307
+ attribute :>> name = "RespondToAirInLine";
308
+ action stopOrKvo; action annunciateAir; action reprimeAndRestart;
309
+ first start then stopOrKvo; first stopOrKvo then annunciateAir; first annunciateAir then reprimeAndRestart; first reprimeAndRestart then done;
310
+ }
295
311
  }
296
- action osEmptyReservoir : OperativeScenario {
312
+ action osEmptyReservoir : MemoScenario {
297
313
  attribute :>> id = "OS-005";
298
314
  attribute :>> name = "ReservoirEmptyDuringTherapy";
315
+ attribute :>> scenarioKind = ScenarioKind::operative;
299
316
  attribute :>> variantKind = ScenarioVariantKind::exception;
300
317
  attribute :>> variationPoint = "reservoir-empty threshold reached during nominal therapy";
301
318
  attribute :>> operationalCondition = OperationalConditionKind::degraded;
@@ -307,10 +324,17 @@ package memo_examples_gpca_pump_gpca_operational {
307
324
  ref :>> parentUseCase = ucDeliverPcaTherapy;
308
325
  ref :>> baseScenario = osNominalTherapy;
309
326
  ref :>> activities = oaReplaceEmptyReservoir;
327
+
328
+ action oaReplaceEmptyReservoir : OperationalActivity {
329
+ attribute :>> name = "ReplaceEmptyReservoir";
330
+ action stopAndAnnunciate; action replaceReservoir; action resumeTherapy;
331
+ first start then stopAndAnnunciate; first stopAndAnnunciate then replaceReservoir; first replaceReservoir then resumeTherapy; first resumeTherapy then done;
332
+ }
310
333
  }
311
- action osPowerLoss : OperativeScenario {
334
+ action osPowerLoss : MemoScenario {
312
335
  attribute :>> id = "OS-006";
313
336
  attribute :>> name = "MainsPowerLossAndRecovery";
337
+ attribute :>> scenarioKind = ScenarioKind::operative;
314
338
  attribute :>> variantKind = ScenarioVariantKind::recovery;
315
339
  attribute :>> variationPoint = "mains supply lost during nominal therapy";
316
340
  attribute :>> operationalCondition = OperationalConditionKind::degraded;
@@ -322,17 +346,17 @@ package memo_examples_gpca_pump_gpca_operational {
322
346
  ref :>> parentUseCase = ucDeliverPcaTherapy;
323
347
  ref :>> baseScenario = osNominalTherapy;
324
348
  ref :>> activities = oaRecoverAfterPowerLoss;
325
- }
326
- connection : Realizes connect realizing ::> osNominalTherapy to realized ::> ucDeliverPcaTherapy;
327
- connection : Realizes connect realizing ::> osLockoutBolus to realized ::> ucDeliverPcaTherapy;
328
- connection : Realizes connect realizing ::> osOcclusionAlarm to realized ::> ucDeliverPcaTherapy;
329
- connection : Realizes connect realizing ::> osAirInLine to realized ::> ucDeliverPcaTherapy;
330
- connection : Realizes connect realizing ::> osEmptyReservoir to realized ::> ucDeliverPcaTherapy;
331
- connection : Realizes connect realizing ::> osPowerLoss to realized ::> ucDeliverPcaTherapy;
332
- connection : Composes connect parent ::> osNominalTherapy to child ::> oaCompleteNominalTherapy;
333
- connection : Composes connect parent ::> osLockoutBolus to child ::> oaRejectBolusDuringLockout;
334
- connection : Composes connect parent ::> osOcclusionAlarm to child ::> oaRespondToOcclusion;
335
- connection : Composes connect parent ::> osAirInLine to child ::> oaRespondToAirInLine;
336
- connection : Composes connect parent ::> osEmptyReservoir to child ::> oaReplaceEmptyReservoir;
337
- connection : Composes connect parent ::> osPowerLoss to child ::> oaRecoverAfterPowerLoss;
349
+
350
+ action oaRecoverAfterPowerLoss : OperationalActivity {
351
+ attribute :>> name = "RecoverAfterPowerLoss";
352
+ action switchToBattery; action restorePrescription; action confirmRestart;
353
+ first start then switchToBattery; first switchToBattery then restorePrescription; first restorePrescription then confirmRestart; first confirmRestart then done;
354
+ }
355
+ }
356
+ #refinement dependency osNominalTherapy to ucDeliverPcaTherapy;
357
+ #refinement dependency osLockoutBolus to ucDeliverPcaTherapy;
358
+ #refinement dependency osOcclusionAlarm to ucDeliverPcaTherapy;
359
+ #refinement dependency osAirInLine to ucDeliverPcaTherapy;
360
+ #refinement dependency osEmptyReservoir to ucDeliverPcaTherapy;
361
+ #refinement dependency osPowerLoss to ucDeliverPcaTherapy;
338
362
  }
@@ -15,39 +15,34 @@ package memo_examples_gpca_pump_gpca_physical {
15
15
  attribute :>> redundancyKind = "hardware watchdog plus independent flow cross-check";
16
16
  }
17
17
 
18
- part portSensorHarness : PhysicalPort {
18
+ in port portSensorHarness : PhysicalPort {
19
19
  attribute :>> id = "PP-001";
20
20
  attribute :>> name = "SensorHarnessConnector";
21
21
  attribute :>> portKind = InterfaceKind::digitalSignal;
22
22
  attribute :>> connectorType = "keyed 12-pin locking header";
23
- attribute :>> direction = DirectionKind::input;
24
23
  }
25
- part portMotorDrive : PhysicalPort {
24
+ out port portMotorDrive : PhysicalPort {
26
25
  attribute :>> id = "PP-002";
27
26
  attribute :>> name = "MotorDriveConnector";
28
27
  attribute :>> portKind = InterfaceKind::digitalSignal;
29
28
  attribute :>> connectorType = "keyed 6-pin locking header with enable interlock";
30
- attribute :>> direction = DirectionKind::output;
31
29
  }
32
- part portPatientPendant : PhysicalPort {
30
+ in port portPatientPendant : PhysicalPort {
33
31
  attribute :>> id = "PP-003";
34
32
  attribute :>> name = "PatientPendantJack";
35
33
  attribute :>> portKind = InterfaceKind::digitalSignal;
36
34
  attribute :>> connectorType = "latching 3.5 mm pendant jack";
37
- attribute :>> direction = DirectionKind::input;
38
35
  }
39
- part portServiceAccess : PhysicalPort {
36
+ inout port portServiceAccess : PhysicalPort {
40
37
  attribute :>> id = "PP-004";
41
38
  attribute :>> name = "ServiceMaintenancePort";
42
39
  attribute :>> portKind = InterfaceKind::api;
43
40
  attribute :>> connectorType = "covered UART/USB service connector";
44
- attribute :>> direction = DirectionKind::inputOutput;
45
41
  }
46
- part portMainsInlet : PhysicalPort {
42
+ in port portMainsInlet : PhysicalPort {
47
43
  attribute :>> id = "PP-005";
48
44
  attribute :>> name = "MainsPowerInlet";
49
45
  attribute :>> portKind = InterfaceKind::power;
50
46
  attribute :>> connectorType = "IEC 60320 C8 inlet";
51
- attribute :>> direction = DirectionKind::input;
52
47
  }
53
48
  }