@memoarchitect/ontology 0.4.4

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 (217) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +70 -0
  3. package/examples/gpca-pump/dhf/documents/DOC-RMP-001.md +210 -0
  4. package/examples/gpca-pump/memo.config.yaml +9 -0
  5. package/examples/gpca-pump/methodology/gpca_methodology.sysml +11 -0
  6. package/examples/gpca-pump/methodology/gpca_profiles.sysml +25 -0
  7. package/examples/gpca-pump/methodology/gpca_scope.sysml +25 -0
  8. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +231 -0
  9. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +272 -0
  10. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +81 -0
  11. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +363 -0
  12. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +205 -0
  13. package/examples/gpca-pump/model/catalog/gpca_context.sysml +113 -0
  14. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +172 -0
  15. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +173 -0
  16. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +1062 -0
  17. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +209 -0
  18. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +53 -0
  19. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +1505 -0
  20. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +744 -0
  21. package/examples/gpca-pump/model/catalog/gpca_system.sysml +144 -0
  22. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +696 -0
  23. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +285 -0
  24. package/examples/gpca-pump/model/samples/README.md +24 -0
  25. package/examples/gpca-pump/model/samples/action_flow_view.sysml +72 -0
  26. package/examples/gpca-pump/model/samples/action_flow_view.viewlayout +9 -0
  27. package/examples/gpca-pump/model/samples/functional_flow_view.sysml +153 -0
  28. package/examples/gpca-pump/model/samples/interconnection_view.sysml +93 -0
  29. package/examples/gpca-pump/model/samples/interconnection_view.viewlayout +99 -0
  30. package/examples/gpca-pump/model/samples/operational_behaviour_view.sysml +145 -0
  31. package/examples/gpca-pump/model/samples/tree_view.sysml +56 -0
  32. package/examples/gpca-pump/model/views/behavior_action_flow_view.sysml +41 -0
  33. package/examples/gpca-pump/model/views/context_system_context_view.sysml +43 -0
  34. package/examples/gpca-pump/model/views/cybersecurity_cybersecurity_view.sysml +44 -0
  35. package/examples/gpca-pump/model/views/document_architecture_description_view.sysml +29 -0
  36. package/examples/gpca-pump/model/views/document_cyber_assessment_view.sysml +28 -0
  37. package/examples/gpca-pump/model/views/document_dhf_index_view.sysml +29 -0
  38. package/examples/gpca-pump/model/views/document_hazard_analysis_view.sysml +29 -0
  39. package/examples/gpca-pump/model/views/document_rmf_view.sysml +29 -0
  40. package/examples/gpca-pump/model/views/document_sdd_view.sysml +29 -0
  41. package/examples/gpca-pump/model/views/document_threat_model_view.sysml +28 -0
  42. package/examples/gpca-pump/model/views/document_usability_view.sysml +28 -0
  43. package/examples/gpca-pump/model/views/document_vv_view.sysml +29 -0
  44. package/examples/gpca-pump/model/views/functional_function_allocation_view.sysml +42 -0
  45. package/examples/gpca-pump/model/views/functional_function_browser_view.sysml +41 -0
  46. package/examples/gpca-pump/model/views/logical_device_interconnect_view.sysml +43 -0
  47. package/examples/gpca-pump/model/views/logical_logical_architecture_view.sysml +42 -0
  48. package/examples/gpca-pump/model/views/logical_mode_state_view.sysml +42 -0
  49. package/examples/gpca-pump/model/views/logical_system_decomposition_view.sysml +44 -0
  50. package/examples/gpca-pump/model/views/operational_scenario_sequence_view.sysml +41 -0
  51. package/examples/gpca-pump/model/views/operational_use_case_view.sysml +43 -0
  52. package/examples/gpca-pump/model/views/physical_physical_bom_view.sysml +41 -0
  53. package/examples/gpca-pump/model/views/requirements_requirements_trace_view.sysml +42 -0
  54. package/examples/gpca-pump/model/views/risk_fmea_view.sysml +42 -0
  55. package/examples/gpca-pump/model/views/risk_risk_chain_view.sysml +44 -0
  56. package/examples/gpca-pump/model/views/software_software_architecture_view.sysml +43 -0
  57. package/examples/gpca-pump/model/views/verification_verification_coverage_view.sysml +42 -0
  58. package/memo.manifest.yaml +13 -0
  59. package/methodologies/default/memo.package.yaml +9 -0
  60. package/methodologies/gpca/memo.package.yaml +9 -0
  61. package/ontology/memo.package.yaml +8 -0
  62. package/ontology/memo.rendering.yaml +47 -0
  63. package/package.json +65 -0
  64. package/profile/archetypes.yaml +36 -0
  65. package/profile/memo.package.yaml +9 -0
  66. package/profile/templates/connected-device/starter.sysml +8 -0
  67. package/profile/templates/infusion-pump/starter.sysml +8 -0
  68. package/profile/templates/monitoring-device/starter.sysml +8 -0
  69. package/profile/templates/samd/starter.sysml +8 -0
  70. package/src/architecture/analysis/memo_fmea.sysml +91 -0
  71. package/src/architecture/assurance/memo_assurance.sysml +29 -0
  72. package/src/architecture/behavior/memo_behavior.sysml +65 -0
  73. package/src/architecture/constraints/memo_constraints.sysml +14 -0
  74. package/src/architecture/context/memo_context.sysml +58 -0
  75. package/src/architecture/cybersecurity/memo_cybersecurity.sysml +99 -0
  76. package/src/architecture/decisions/memo_decisions.sysml +12 -0
  77. package/src/architecture/functions/memo_functions.sysml +30 -0
  78. package/src/architecture/hardware_structure/memo_hardware_structure.sysml +15 -0
  79. package/src/architecture/interfaces/memo_interfaces.sysml +103 -0
  80. package/src/architecture/logical_structure/memo_logical_structure.sysml +10 -0
  81. package/src/architecture/operational/memo_operational.sysml +51 -0
  82. package/src/architecture/physical/memo_physical_architecture.sysml +19 -0
  83. package/src/architecture/requirements/memo_requirements.sysml +69 -0
  84. package/src/architecture/risk/memo_arch_risk.sysml +7 -0
  85. package/src/architecture/risk/memo_risk.sysml +80 -0
  86. package/src/architecture/software_structure/memo_software_structure.sysml +44 -0
  87. package/src/architecture/system/memo_system_analysis.sysml +54 -0
  88. package/src/artifacts/clinical_safety_report.sysml +12 -0
  89. package/src/artifacts/cybersecurity_assessment_report.sysml +12 -0
  90. package/src/artifacts/definitions/memo_artifact_definitions.sysml +12 -0
  91. package/src/artifacts/design_change_log.sysml +12 -0
  92. package/src/artifacts/design_history_file_index.sysml +12 -0
  93. package/src/artifacts/design_input_plan.sysml +12 -0
  94. package/src/artifacts/design_output_plan.sysml +12 -0
  95. package/src/artifacts/evidence_record.sysml +12 -0
  96. package/src/artifacts/failure_mode_effects_analysis.sysml +12 -0
  97. package/src/artifacts/hazard_analysis_report.sysml +12 -0
  98. package/src/artifacts/labeling_specification.sysml +12 -0
  99. package/src/artifacts/requirements_specification.sysml +12 -0
  100. package/src/artifacts/requirements_traceability_matrix.sysml +12 -0
  101. package/src/artifacts/risk_management_plan.sysml +12 -0
  102. package/src/artifacts/software_design_description.sysml +12 -0
  103. package/src/artifacts/software_development_plan.sysml +12 -0
  104. package/src/artifacts/soup_list.sysml +12 -0
  105. package/src/artifacts/system_architecture_description.sysml +12 -0
  106. package/src/artifacts/test_protocol.sysml +12 -0
  107. package/src/artifacts/test_report.sysml +12 -0
  108. package/src/artifacts/threat_model_report.sysml +12 -0
  109. package/src/artifacts/usability_engineering_report.sysml +12 -0
  110. package/src/compliance/artifacts/memo_artifacts.sysml +13 -0
  111. package/src/compliance/change/memo_change.sysml +17 -0
  112. package/src/compliance/dhf-templates/21cfr820/change-record.md +45 -0
  113. package/src/compliance/dhf-templates/21cfr820/design-input.md +67 -0
  114. package/src/compliance/dhf-templates/21cfr820/design-output.md +80 -0
  115. package/src/compliance/dhf-templates/21cfr820/design-review.md +51 -0
  116. package/src/compliance/dhf-templates/21cfr820/design-validation.md +64 -0
  117. package/src/compliance/dhf-templates/21cfr820/design-verification.md +57 -0
  118. package/src/compliance/dhf-templates/21cfr820/dhf-index.md +111 -0
  119. package/src/compliance/dhf-templates/21cfr820/transfer-plan.md +50 -0
  120. package/src/compliance/dhf-templates/21cfr820/user-needs.md +81 -0
  121. package/src/compliance/dhf-templates/21cfr820/vv-plan.md +89 -0
  122. package/src/compliance/dhf-templates/21cfr820/vv-report.md +85 -0
  123. package/src/compliance/dhf-templates/fda-cybersecurity/incident-response.md +66 -0
  124. package/src/compliance/dhf-templates/fda-cybersecurity/postmarket-surveillance.md +63 -0
  125. package/src/compliance/dhf-templates/fda-cybersecurity/security-arch.md +83 -0
  126. package/src/compliance/dhf-templates/fda-cybersecurity/threat-model.md +100 -0
  127. package/src/compliance/dhf-templates/fda-cybersecurity/vuln-assessment.md +77 -0
  128. package/src/compliance/dhf-templates/iec-62304/change-control.md +40 -0
  129. package/src/compliance/dhf-templates/iec-62304/detailed-design.md +69 -0
  130. package/src/compliance/dhf-templates/iec-62304/integration-test.md +68 -0
  131. package/src/compliance/dhf-templates/iec-62304/sad.md +115 -0
  132. package/src/compliance/dhf-templates/iec-62304/sbom.md +67 -0
  133. package/src/compliance/dhf-templates/iec-62304/sdp.md +108 -0
  134. package/src/compliance/dhf-templates/iec-62304/soup.md +77 -0
  135. package/src/compliance/dhf-templates/iec-62304/srs.md +138 -0
  136. package/src/compliance/dhf-templates/iec-62304/sw-traceability.md +111 -0
  137. package/src/compliance/dhf-templates/iec-62304/system-test.md +67 -0
  138. package/src/compliance/dhf-templates/iec-62366/formative-eval.md +47 -0
  139. package/src/compliance/dhf-templates/iec-62366/summative-eval.md +69 -0
  140. package/src/compliance/dhf-templates/iec-62366/task-analysis.md +57 -0
  141. package/src/compliance/dhf-templates/iec-62366/ue-plan.md +81 -0
  142. package/src/compliance/dhf-templates/iec-62366/ui-spec.md +61 -0
  143. package/src/compliance/dhf-templates/iec-62366/urra.md +74 -0
  144. package/src/compliance/dhf-templates/iec-62366/use-spec.md +61 -0
  145. package/src/compliance/dhf-templates/iso-14971/fmea.md +93 -0
  146. package/src/compliance/dhf-templates/iso-14971/fta.md +70 -0
  147. package/src/compliance/dhf-templates/iso-14971/har.md +165 -0
  148. package/src/compliance/dhf-templates/iso-14971/risk-benefit.md +51 -0
  149. package/src/compliance/dhf-templates/iso-14971/risk-matrix.md +51 -0
  150. package/src/compliance/dhf-templates/iso-14971/rmp.md +169 -0
  151. package/src/compliance/dhf-templates/iso-14971/rmr.md +101 -0
  152. package/src/compliance/dhf-templates/shared/snippets/approval-block.md +16 -0
  153. package/src/compliance/dhf-templates/shared/snippets/document-control-header.md +15 -0
  154. package/src/compliance/dhf-templates/shared/snippets/references-section.md +16 -0
  155. package/src/compliance/dhf-templates/shared/snippets/revision-history-table.md +11 -0
  156. package/src/compliance/document_views/memo_document_views.sysml +7 -0
  157. package/src/compliance/iso14971/risk_management_file.sysml +16 -0
  158. package/src/compliance/postmarket/memo_postmarket.sysml +16 -0
  159. package/src/core/common/memo_common.sysml +50 -0
  160. package/src/core/consistency_rules/consistency_rules.sysml +41 -0
  161. package/src/core/dimensions/dimensions.sysml +37 -0
  162. package/src/core/enumerations/memo_enumerations.sysml +562 -0
  163. package/src/core/methodology_scope/methodology_scope.sysml +46 -0
  164. package/src/core/relationships/memo_relationships.sysml +230 -0
  165. package/src/core/semantics/semantics.sysml +20 -0
  166. package/src/core/stdlib/collections.sysml +6 -0
  167. package/src/core/stdlib/functions.sysml +6 -0
  168. package/src/core/stdlib/scalars.sysml +6 -0
  169. package/src/core/stdlib/time.sysml +6 -0
  170. package/src/medical_device_library.sysml +100 -0
  171. package/src/memo_namespaces.sysml +668 -0
  172. package/src/methodology/LICENSES/MIT.txt +19 -0
  173. package/src/methodology/memo_archetypes.sysml +93 -0
  174. package/src/methodology/memo_core.sysml +53 -0
  175. package/src/methodology/memo_gates.sysml +11 -0
  176. package/src/methodology/memo_patterns.sysml +12 -0
  177. package/src/methodology/memo_profiles.sysml +218 -0
  178. package/src/methodology/memo_rules.sysml +15 -0
  179. package/src/methodology/memo_viewpoints.sysml +5 -0
  180. package/src/methodology/memo_workflow.sysml +14 -0
  181. package/src/rules/closure/closure_rules.sysml +180 -0
  182. package/src/rules/coverage/coverage_rules.sysml +258 -0
  183. package/src/rules/crosslayer/cross_layer_rules.sysml +38 -0
  184. package/src/rules/lifecycle/lifecycle_rules.sysml +41 -0
  185. package/src/rules/quantitative/quantitative_rules.sysml +34 -0
  186. package/src/viewpoints/clinical/clinical_evidence_view.sysml +13 -0
  187. package/src/viewpoints/clinical/clinical_viewpoint.sysml +25 -0
  188. package/src/viewpoints/context/context_viewpoint.sysml +25 -0
  189. package/src/viewpoints/context/system_context_view.sysml +29 -0
  190. package/src/viewpoints/cybersecurity/cybersecurity_assessment_view.sysml +13 -0
  191. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +27 -0
  192. package/src/viewpoints/cybersecurity/threat_model_view.sysml +13 -0
  193. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +82 -0
  194. package/src/viewpoints/functional/function_allocation_view.sysml +29 -0
  195. package/src/viewpoints/functional/functional_viewpoint.sysml +25 -0
  196. package/src/viewpoints/functional/system_functional_tree_view.sysml +29 -0
  197. package/src/viewpoints/logical/logical_architecture_view.sysml +29 -0
  198. package/src/viewpoints/logical/logical_viewpoint.sysml +25 -0
  199. package/src/viewpoints/operational/operational_viewpoint.sysml +25 -0
  200. package/src/viewpoints/operational/use_case_view.sysml +29 -0
  201. package/src/viewpoints/physical/network_topology_view.sysml +29 -0
  202. package/src/viewpoints/physical/physical_bom_view.sysml +29 -0
  203. package/src/viewpoints/physical/physical_viewpoint.sysml +25 -0
  204. package/src/viewpoints/requirements/requirements_traceability_view.sysml +29 -0
  205. package/src/viewpoints/requirements/requirements_viewpoint.sysml +25 -0
  206. package/src/viewpoints/risk/risk_chain_view.sysml +30 -0
  207. package/src/viewpoints/risk/risk_viewpoint.sysml +25 -0
  208. package/src/viewpoints/software/software_architecture_view.sysml +29 -0
  209. package/src/viewpoints/software/software_viewpoint.sysml +25 -0
  210. package/src/viewpoints/usability/usability_engineering_view.sysml +13 -0
  211. package/src/viewpoints/usability/usability_viewpoint.sysml +25 -0
  212. package/src/viewpoints/verification/verification_coverage_view.sysml +29 -0
  213. package/src/viewpoints/verification/verification_viewpoint.sysml +25 -0
  214. package/template/memo.package.yaml +5 -0
  215. package/template/src/catalog/starter.sysml +12 -0
  216. package/template/src/documents/.gitkeep +1 -0
  217. package/template/src/views/.gitkeep +1 -0
@@ -0,0 +1,696 @@
1
+ package memo_examples_gpca_pump_model_catalog_gpca_trace {
2
+ private import ScalarValues::*;
3
+
4
+ private import memo_core_relationships::*;
5
+ private import memo_architecture_context::*;
6
+ private import memo_architecture_operational::*;
7
+ private import memo_architecture_system::*;
8
+ private import memo_examples_gpca_pump_model_catalog_gpca_context::*;
9
+ private import memo_examples_gpca_pump_model_catalog_gpca_operational::*;
10
+ private import memo_examples_gpca_pump_model_catalog_gpca_system::*;
11
+ private import memo_examples_gpca_pump_model_catalog_gpca_requirements::*;
12
+ private import memo_examples_gpca_pump_model_catalog_gpca_architecture::*;
13
+ private import memo_examples_gpca_pump_model_catalog_gpca_physical::*;
14
+ private import memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems::*;
15
+ private import memo_examples_gpca_pump_model_catalog_gpca_behavior_modes::*;
16
+ private import memo_examples_gpca_pump_model_catalog_gpca_interfaces::*;
17
+ private import memo_examples_gpca_pump_model_catalog_gpca_risk::*;
18
+ private import memo_examples_gpca_pump_model_catalog_gpca_analysis::*;
19
+ private import memo_examples_gpca_pump_model_catalog_gpca_verification::*;
20
+ private import memo_examples_gpca_pump_model_views_document_architecture_description_view::*;
21
+ private import memo_examples_gpca_pump_model_views_document_cyber_assessment_view::*;
22
+ private import memo_examples_gpca_pump_model_views_document_dhf_index_view::*;
23
+ private import memo_examples_gpca_pump_model_views_document_hazard_analysis_view::*;
24
+ private import memo_examples_gpca_pump_model_views_document_rmf_view::*;
25
+ private import memo_examples_gpca_pump_model_views_document_sdd_view::*;
26
+ private import memo_examples_gpca_pump_model_views_document_threat_model_view::*;
27
+ private import memo_examples_gpca_pump_model_views_document_usability_view::*;
28
+ private import memo_examples_gpca_pump_model_views_document_vv_view::*;
29
+ private import memo_examples_gpca_pump_model_catalog_gpca_formal_behavior::*;
30
+
31
+ // ── System context interactions (context view) ──────────────
32
+ connection : InteractsWith connect contextParticipant ::> actorPatient to target ::> entityGpcaPump;
33
+ connection : InteractsWith connect contextParticipant ::> actorNurse to target ::> entityGpcaPump;
34
+ connection : InteractsWith connect contextParticipant ::> actorPrescriber to target ::> entityGpcaPump;
35
+ connection : InteractsWith connect contextParticipant ::> actorPharmacist to target ::> entityGpcaPump;
36
+ connection : InteractsWith connect contextParticipant ::> actorTechnician to target ::> entityGpcaPump;
37
+ connection : InteractsWith connect contextParticipant ::> actorPharmacist to target ::> entityPharmacy;
38
+
39
+ // ── Fig 2.1 context flows (CriSys §2.1) ─────────────────────
40
+ // Data flows
41
+ connection : ExchangesWith connect source ::> entityPrescription to target ::> actorNurse;
42
+ connection : ExchangesWith connect source ::> actorNurse to target ::> entityGpcaPump;
43
+ connection : ExchangesWith connect source ::> entityGpcaPump to target ::> actorNurse;
44
+ connection : ExchangesWith connect source ::> actorPatient to target ::> entityGpcaPump;
45
+ connection : ExchangesWith connect source ::> entityPharmacyDb to target ::> entityGpcaPump;
46
+ // Physical connections (drug path)
47
+ connection : ConnectsPhysically connect source ::> entityDrugReservoir to target ::> entityGpcaPump;
48
+ connection : ConnectsPhysically connect source ::> entityGpcaPump to target ::> entityNeedle;
49
+ connection : ConnectsPhysically connect source ::> entityNeedle to target ::> actorPatient;
50
+ connection : ConnectsPhysically connect source ::> entityPowerInfrastructure to target ::> entityGpcaPump;
51
+ // Intended use and use context anchoring (no floating context nodes)
52
+ connection : GovernsUse connect intendedUse ::> gpcaIntendedUse to governedElement ::> entityGpcaPump;
53
+ connection : AppliesInContext connect useContext ::> hospitalWardContext to subjectElement ::> entityGpcaPump;
54
+ connection : AppliesInContext connect useContext ::> hospitalWardContext to subjectElement ::> entityHospital;
55
+
56
+ // ── Actor participation (use case view) ─────────────────────
57
+ connection : InteractsWith connect contextParticipant ::> actorPrescriber to target ::> oaPrescribe;
58
+ connection : InteractsWith connect contextParticipant ::> actorPharmacist to target ::> oaLoadReservoir;
59
+ connection : InteractsWith connect contextParticipant ::> actorNurse to target ::> oaProgram;
60
+ connection : InteractsWith connect contextParticipant ::> actorNurse to target ::> oaStartTherapy;
61
+ connection : InteractsWith connect contextParticipant ::> actorNurse to target ::> oaRespondAlarm;
62
+ connection : InteractsWith connect contextParticipant ::> actorNurse to target ::> oaReviewLog;
63
+ connection : InteractsWith connect contextParticipant ::> actorPatient to target ::> oaRequestBolus;
64
+ connection : InteractsWith connect contextParticipant ::> actorTechnician to target ::> oaMaintain;
65
+
66
+ // ── Operational thread (therapy lifecycle) ──────────────────
67
+ connection : SequencesStep connect activity ::> oaPrescribe to nextActivity ::> oaLoadReservoir;
68
+ connection : SequencesStep connect activity ::> oaLoadReservoir to nextActivity ::> oaProgram;
69
+ connection : SequencesStep connect activity ::> oaProgram to nextActivity ::> oaStartTherapy;
70
+ connection : SequencesStep connect activity ::> oaStartTherapy to nextActivity ::> oaRequestBolus;
71
+ connection : ContributesToCapability connect activity ::> oaStartTherapy to capability ::> ocTitratedAnalgesia;
72
+ connection : ContributesToCapability connect activity ::> oaRequestBolus to capability ::> ocTitratedAnalgesia;
73
+ connection : ContributesToCapability connect activity ::> oaRespondAlarm to capability ::> ocFailSafeTherapy;
74
+ connection : DerivesSystemNeed connect activity ::> oaProgram to systemNeed ::> reqDrugLibraryLimits;
75
+ connection : DerivesSystemNeed connect activity ::> oaRequestBolus to systemNeed ::> reqCs25;
76
+ connection : DerivesSystemNeed connect activity ::> oaRespondAlarm to systemNeed ::> reqCs59;
77
+
78
+ // ── System capabilities and functional chains ───────────────
79
+ connection : RealizesCapability connect functionalChain ::> fcPatientBolus to capability ::> scPatientBolus;
80
+ connection : RealizesCapability connect functionalChain ::> fcAlarmStop to capability ::> scAlarmAnnunciation;
81
+ connection : RealizesCapability connect functionalChain ::> fcStartup to capability ::> scBasalDelivery;
82
+ connection : InvolvesFunction connect functionalChain ::> fcPatientBolus to function ::> fnAcquireSensors;
83
+ connection : InvolvesFunction connect functionalChain ::> fcPatientBolus to function ::> fnEnforceLimits;
84
+ connection : InvolvesFunction connect functionalChain ::> fcPatientBolus to function ::> fnManageInfusion;
85
+ connection : InvolvesFunction connect functionalChain ::> fcPatientBolus to function ::> fnCommandPump;
86
+ connection : InvolvesFunction connect functionalChain ::> fcPatientBolus to function ::> fnLogEvents;
87
+ connection : InvolvesFunction connect functionalChain ::> fcAlarmStop to function ::> fnAcquireSensors;
88
+ connection : InvolvesFunction connect functionalChain ::> fcAlarmStop to function ::> fnMonitorAlarm;
89
+ connection : InvolvesFunction connect functionalChain ::> fcAlarmStop to function ::> fnManageInfusion;
90
+ connection : InvolvesFunction connect functionalChain ::> fcAlarmStop to function ::> fnAnnunciate;
91
+ connection : InvolvesFunction connect functionalChain ::> fcStartup to function ::> fnSelfTest;
92
+ connection : InvolvesFunction connect functionalChain ::> fcStartup to function ::> fnPresentStatus;
93
+ connection : RealizesScenario connect functionalChain ::> fcPatientBolus to scenario ::> ssBolusDuringBasal;
94
+ connection : RealizesScenario connect functionalChain ::> fcAlarmStop to scenario ::> ssAlarmPause;
95
+ connection : IncludesStep connect functionalChain ::> fcPatientBolus to step ::> fcsBolusSense;
96
+ connection : IncludesStep connect functionalChain ::> fcPatientBolus to step ::> fcsBolusValidate;
97
+ connection : IncludesStep connect functionalChain ::> fcPatientBolus to step ::> fcsBolusCommand;
98
+ connection : IncludesStep connect functionalChain ::> fcPatientBolus to step ::> fcsBolusActuate;
99
+ connection : IncludesStep connect functionalChain ::> fcPatientBolus to step ::> fcsBolusLog;
100
+ connection : IncludesStep connect functionalChain ::> fcAlarmStop to step ::> fcsAlarmSense;
101
+ connection : IncludesStep connect functionalChain ::> fcAlarmStop to step ::> fcsAlarmEvaluate;
102
+ connection : IncludesStep connect functionalChain ::> fcAlarmStop to step ::> fcsAlarmStopInfusion;
103
+ connection : IncludesStep connect functionalChain ::> fcAlarmStop to step ::> fcsAlarmAnnunciate;
104
+
105
+ // ── Requirement derivation ──────────────────────────────────
106
+ // MEMO extension requirements (REQ-X) derive from needs and risks.
107
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqPost;
108
+ connection : DerivesFrom connect sourceDriver ::> needEffectiveAnalgesia to targetRequirement ::> reqPumpAccuracy;
109
+ connection : DerivesFrom connect sourceDriver ::> needEffectiveAnalgesia to targetRequirement ::> reqBatteryBackup;
110
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqAlarmLoudness;
111
+ connection : DerivesFrom connect sourceDriver ::> needAuditableRecord to targetRequirement ::> reqEventLogging;
112
+ connection : DerivesFrom connect sourceDriver ::> overdoseHazard to targetRequirement ::> reqCs25;
113
+ connection : DerivesFrom connect sourceDriver ::> underdoseHazard to targetRequirement ::> reqOcclusion;
114
+ connection : DerivesFrom connect sourceDriver ::> airEmbolismHazard to targetRequirement ::> reqCs21;
115
+ connection : DerivesFrom connect sourceDriver ::> wrongDoseHazard to targetRequirement ::> reqDrugLibraryLimits;
116
+ connection : DerivesFrom connect sourceDriver ::> freeFlowHazard to targetRequirement ::> reqFreeFlowPrevention;
117
+ connection : DerivesFrom connect sourceDriver ::> reverseDeliveryHazard to targetRequirement ::> reqCs22;
118
+ connection : DerivesFrom connect sourceDriver ::> vtbiOverInfusionHazard to targetRequirement ::> reqCs20;
119
+ connection : DerivesFrom connect sourceDriver ::> vtbiOverInfusionHazard to targetRequirement ::> reqCs28;
120
+ connection : DerivesFrom connect sourceDriver ::> riskBeforeReverse to targetRequirement ::> reqCs22;
121
+ connection : DerivesFrom connect sourceDriver ::> riskBeforeVtbi to targetRequirement ::> reqCs20;
122
+ connection : DerivesFrom connect sourceDriver ::> riskBefore to targetRequirement ::> reqCs25;
123
+ connection : DerivesFrom connect sourceDriver ::> riskBefore to targetRequirement ::> reqCs19;
124
+ connection : DerivesFrom connect sourceDriver ::> riskBefore to targetRequirement ::> reqMaxHourlyDose;
125
+ connection : DerivesFrom connect sourceDriver ::> riskBefore to targetRequirement ::> reqStuckButton;
126
+ connection : DerivesFrom connect sourceDriver ::> riskBefore to targetRequirement ::> reqWatchdogSafeState;
127
+ connection : DerivesFrom connect sourceDriver ::> riskBefore to targetRequirement ::> reqFlowCrossCheck;
128
+ connection : DerivesFrom connect sourceDriver ::> riskBeforeAir to targetRequirement ::> reqCs21;
129
+ connection : DerivesFrom connect sourceDriver ::> riskBeforeUnderdose to targetRequirement ::> reqOcclusion;
130
+ connection : DerivesFrom connect sourceDriver ::> riskBeforeUnderdose to targetRequirement ::> reqCs23;
131
+ connection : DerivesFrom connect sourceDriver ::> riskBeforeUnderdose to targetRequirement ::> reqPowerLossRetention;
132
+ connection : DerivesFrom connect sourceDriver ::> riskBeforeWrongDose to targetRequirement ::> reqDrugLibraryLimits;
133
+ connection : DerivesFrom connect sourceDriver ::> riskBeforeWrongDose to targetRequirement ::> reqCs09;
134
+ connection : DerivesFrom connect sourceDriver ::> riskBeforeFreeFlow to targetRequirement ::> reqFreeFlowPrevention;
135
+ connection : DerivesFrom connect sourceDriver ::> riskBeforeFreeFlow to targetRequirement ::> reqDoorOpen;
136
+ // CriSys source requirements (REQ-CS) trace to the stakeholder
137
+ // needs they serve. §4.1 GPCA system + OFF/ON/IDLE modes.
138
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs01;
139
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs02;
140
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs03;
141
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs04;
142
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs05;
143
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs06;
144
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs07;
145
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs08;
146
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs10;
147
+ connection : DerivesFrom connect sourceDriver ::> needAuditableRecord to targetRequirement ::> reqCs11;
148
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs12;
149
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs13;
150
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs14;
151
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs15;
152
+ // §4.1 THERAPY/ACTIVE/BASAL/bolus/PAUSED modes.
153
+ connection : DerivesFrom connect sourceDriver ::> needEffectiveAnalgesia to targetRequirement ::> reqCs16;
154
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs17;
155
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs18;
156
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs20;
157
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs22;
158
+ connection : DerivesFrom connect sourceDriver ::> needEffectiveAnalgesia to targetRequirement ::> reqCs24;
159
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs26;
160
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs27;
161
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs28;
162
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs29;
163
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs30;
164
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs31;
165
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs32;
166
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs33;
167
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs34;
168
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs35;
169
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs36;
170
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs37;
171
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs38;
172
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs39;
173
+ connection : DerivesFrom connect sourceDriver ::> needEffectiveAnalgesia to targetRequirement ::> reqCs40;
174
+ connection : DerivesFrom connect sourceDriver ::> needEffectiveAnalgesia to targetRequirement ::> reqCs41;
175
+ connection : DerivesFrom connect sourceDriver ::> needEffectiveAnalgesia to targetRequirement ::> reqCs42;
176
+ connection : DerivesFrom connect sourceDriver ::> needEffectiveAnalgesia to targetRequirement ::> reqCs43;
177
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs44;
178
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs45;
179
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs46;
180
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs47;
181
+ // §4.2 data configuration.
182
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs48;
183
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs49;
184
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs50;
185
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs51;
186
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs52;
187
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs53;
188
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs54;
189
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs55;
190
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs56;
191
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs57;
192
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs58;
193
+ // §4.3 notification, §4.4 logs, §4.5 security, Ch.5 non-behavioral.
194
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs59;
195
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs60;
196
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs61;
197
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs62;
198
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs63;
199
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs64;
200
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs65;
201
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs66;
202
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs67;
203
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs68;
204
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs69;
205
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs70;
206
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs71;
207
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs72;
208
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs73;
209
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs74;
210
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs75;
211
+ connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqCs76;
212
+ connection : DerivesFrom connect sourceDriver ::> needAuditableRecord to targetRequirement ::> reqCs77;
213
+ connection : DerivesFrom connect sourceDriver ::> needAuditableRecord to targetRequirement ::> reqCs78;
214
+ connection : DerivesFrom connect sourceDriver ::> needAuditableRecord to targetRequirement ::> reqCs79;
215
+ connection : DerivesFrom connect sourceDriver ::> needAuditableRecord to targetRequirement ::> reqCs80;
216
+ connection : DerivesFrom connect sourceDriver ::> needAuditableRecord to targetRequirement ::> reqCs81;
217
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs82;
218
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs83;
219
+ connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqCs84;
220
+ connection : DerivesFrom connect sourceDriver ::> needAuditableRecord to targetRequirement ::> reqCs85;
221
+ connection : DerivesFrom connect sourceDriver ::> needAuditableRecord to targetRequirement ::> reqCs86;
222
+
223
+ // ── Requirement satisfaction ────────────────────────────────
224
+ connection : SatisfiedBy connect requirementElement ::> reqCs01 to satisfyingElement ::> tlm;
225
+ connection : SatisfiedBy connect requirementElement ::> reqCs01 to satisfyingElement ::> outputBus;
226
+ connection : SatisfiedBy connect requirementElement ::> reqCs18 to satisfyingElement ::> systemStatus;
227
+ connection : SatisfiedBy connect requirementElement ::> reqCs23 to satisfyingElement ::> systemStatus;
228
+ connection : SatisfiedBy connect requirementElement ::> reqCs25 to satisfyingElement ::> infusionMgr;
229
+ connection : SatisfiedBy connect requirementElement ::> reqCs19 to satisfyingElement ::> alarm;
230
+ connection : SatisfiedBy connect requirementElement ::> reqDrugLibraryLimits to satisfyingElement ::> config;
231
+ connection : SatisfiedBy connect requirementElement ::> reqCs09 to satisfyingElement ::> config;
232
+ connection : SatisfiedBy connect requirementElement ::> reqPowerLossRetention to satisfyingElement ::> config;
233
+ connection : SatisfiedBy connect requirementElement ::> reqPost to satisfyingElement ::> systemMonitor;
234
+ connection : SatisfiedBy connect requirementElement ::> reqWatchdogSafeState to satisfyingElement ::> systemMonitor;
235
+ connection : SatisfiedBy connect requirementElement ::> reqWatchdogSafeState to satisfyingElement ::> controllerBoard;
236
+ connection : SatisfiedBy connect requirementElement ::> reqCs59 to satisfyingElement ::> alarm;
237
+ connection : SatisfiedBy connect requirementElement ::> reqCs72 to satisfyingElement ::> audibleAlarm;
238
+ connection : SatisfiedBy connect requirementElement ::> reqCs73 to satisfyingElement ::> alarm;
239
+ connection : SatisfiedBy connect requirementElement ::> reqCs75 to satisfyingElement ::> alarm;
240
+ connection : SatisfiedBy connect requirementElement ::> reqCs21 to satisfyingElement ::> airInLineSensor;
241
+ connection : SatisfiedBy connect requirementElement ::> reqCs21 to satisfyingElement ::> alarm;
242
+ connection : SatisfiedBy connect requirementElement ::> reqOcclusion to satisfyingElement ::> occlusionSensor;
243
+ connection : SatisfiedBy connect requirementElement ::> reqOcclusion to satisfyingElement ::> alarm;
244
+ connection : SatisfiedBy connect requirementElement ::> reqCs23 to satisfyingElement ::> reservoirSensor;
245
+ connection : SatisfiedBy connect requirementElement ::> reqCs23 to satisfyingElement ::> infusionMgr;
246
+ connection : SatisfiedBy connect requirementElement ::> reqDoorOpen to satisfyingElement ::> doorSensor;
247
+ connection : SatisfiedBy connect requirementElement ::> reqDoorOpen to satisfyingElement ::> infusionMgr;
248
+ connection : SatisfiedBy connect requirementElement ::> reqMaxHourlyDose to satisfyingElement ::> infusionMgr;
249
+ connection : SatisfiedBy connect requirementElement ::> reqStuckButton to satisfyingElement ::> infusionMgr;
250
+ connection : SatisfiedBy connect requirementElement ::> reqFlowCrossCheck to satisfyingElement ::> flowSensor;
251
+ connection : SatisfiedBy connect requirementElement ::> reqFlowCrossCheck to satisfyingElement ::> alarm;
252
+ connection : SatisfiedBy connect requirementElement ::> reqCs77 to satisfyingElement ::> logging;
253
+ connection : SatisfiedBy connect requirementElement ::> reqCs78 to satisfyingElement ::> logging;
254
+ connection : SatisfiedBy connect requirementElement ::> reqEventLogging to satisfyingElement ::> logging;
255
+ // CriSys REQ-CS allocation to the UMN software subsystems
256
+ // (coarse; refined against the AADL architecture in GR.04).
257
+ // Mode control -> TLM; flow production -> Infusion_Manager;
258
+ // notifications -> Alarm; data configuration -> Config;
259
+ // logs -> Logging; enclosure non-behavioral -> DeviceEnclosure.
260
+ connection : SatisfiedBy connect requirementElement ::> reqCs02 to satisfyingElement ::> tlm;
261
+ connection : SatisfiedBy connect requirementElement ::> reqCs03 to satisfyingElement ::> infusionMgr;
262
+ connection : SatisfiedBy connect requirementElement ::> reqCs04 to satisfyingElement ::> tlm;
263
+ connection : SatisfiedBy connect requirementElement ::> reqCs05 to satisfyingElement ::> tlm;
264
+ connection : SatisfiedBy connect requirementElement ::> reqCs06 to satisfyingElement ::> infusionMgr;
265
+ connection : SatisfiedBy connect requirementElement ::> reqCs07 to satisfyingElement ::> tlm;
266
+ connection : SatisfiedBy connect requirementElement ::> reqCs08 to satisfyingElement ::> config;
267
+ connection : SatisfiedBy connect requirementElement ::> reqCs10 to satisfyingElement ::> alarm;
268
+ connection : SatisfiedBy connect requirementElement ::> reqCs11 to satisfyingElement ::> logging;
269
+ connection : SatisfiedBy connect requirementElement ::> reqCs12 to satisfyingElement ::> tlm;
270
+ connection : SatisfiedBy connect requirementElement ::> reqCs13 to satisfyingElement ::> tlm;
271
+ connection : SatisfiedBy connect requirementElement ::> reqCs14 to satisfyingElement ::> infusionMgr;
272
+ connection : SatisfiedBy connect requirementElement ::> reqCs15 to satisfyingElement ::> alarm;
273
+ connection : SatisfiedBy connect requirementElement ::> reqCs16 to satisfyingElement ::> infusionMgr;
274
+ connection : SatisfiedBy connect requirementElement ::> reqCs17 to satisfyingElement ::> alarm;
275
+ connection : SatisfiedBy connect requirementElement ::> reqCs18 to satisfyingElement ::> alarm;
276
+ connection : SatisfiedBy connect requirementElement ::> reqCs20 to satisfyingElement ::> alarm;
277
+ connection : SatisfiedBy connect requirementElement ::> reqCs22 to satisfyingElement ::> alarm;
278
+ connection : SatisfiedBy connect requirementElement ::> reqCs24 to satisfyingElement ::> infusionMgr;
279
+ connection : SatisfiedBy connect requirementElement ::> reqCs26 to satisfyingElement ::> alarm;
280
+ connection : SatisfiedBy connect requirementElement ::> reqCs27 to satisfyingElement ::> alarm;
281
+ connection : SatisfiedBy connect requirementElement ::> reqCs28 to satisfyingElement ::> tlm;
282
+ connection : SatisfiedBy connect requirementElement ::> reqCs29 to satisfyingElement ::> tlm;
283
+ connection : SatisfiedBy connect requirementElement ::> reqCs30 to satisfyingElement ::> tlm;
284
+ connection : SatisfiedBy connect requirementElement ::> reqCs31 to satisfyingElement ::> tlm;
285
+ connection : SatisfiedBy connect requirementElement ::> reqCs32 to satisfyingElement ::> tlm;
286
+ connection : SatisfiedBy connect requirementElement ::> reqCs33 to satisfyingElement ::> tlm;
287
+ connection : SatisfiedBy connect requirementElement ::> reqCs34 to satisfyingElement ::> tlm;
288
+ connection : SatisfiedBy connect requirementElement ::> reqCs35 to satisfyingElement ::> tlm;
289
+ connection : SatisfiedBy connect requirementElement ::> reqCs36 to satisfyingElement ::> tlm;
290
+ connection : SatisfiedBy connect requirementElement ::> reqCs37 to satisfyingElement ::> tlm;
291
+ connection : SatisfiedBy connect requirementElement ::> reqCs38 to satisfyingElement ::> tlm;
292
+ connection : SatisfiedBy connect requirementElement ::> reqCs39 to satisfyingElement ::> tlm;
293
+ connection : SatisfiedBy connect requirementElement ::> reqCs40 to satisfyingElement ::> infusionMgr;
294
+ connection : SatisfiedBy connect requirementElement ::> reqCs41 to satisfyingElement ::> infusionMgr;
295
+ connection : SatisfiedBy connect requirementElement ::> reqCs42 to satisfyingElement ::> infusionMgr;
296
+ connection : SatisfiedBy connect requirementElement ::> reqCs43 to satisfyingElement ::> infusionMgr;
297
+ connection : SatisfiedBy connect requirementElement ::> reqCs44 to satisfyingElement ::> alarm;
298
+ connection : SatisfiedBy connect requirementElement ::> reqCs45 to satisfyingElement ::> tlm;
299
+ connection : SatisfiedBy connect requirementElement ::> reqCs46 to satisfyingElement ::> tlm;
300
+ connection : SatisfiedBy connect requirementElement ::> reqCs47 to satisfyingElement ::> tlm;
301
+ connection : SatisfiedBy connect requirementElement ::> reqCs48 to satisfyingElement ::> config;
302
+ connection : SatisfiedBy connect requirementElement ::> reqCs49 to satisfyingElement ::> config;
303
+ connection : SatisfiedBy connect requirementElement ::> reqCs50 to satisfyingElement ::> config;
304
+ connection : SatisfiedBy connect requirementElement ::> reqCs51 to satisfyingElement ::> config;
305
+ connection : SatisfiedBy connect requirementElement ::> reqCs52 to satisfyingElement ::> config;
306
+ connection : SatisfiedBy connect requirementElement ::> reqCs53 to satisfyingElement ::> config;
307
+ connection : SatisfiedBy connect requirementElement ::> reqCs54 to satisfyingElement ::> config;
308
+ connection : SatisfiedBy connect requirementElement ::> reqCs55 to satisfyingElement ::> config;
309
+ connection : SatisfiedBy connect requirementElement ::> reqCs56 to satisfyingElement ::> config;
310
+ connection : SatisfiedBy connect requirementElement ::> reqCs57 to satisfyingElement ::> config;
311
+ connection : SatisfiedBy connect requirementElement ::> reqCs58 to satisfyingElement ::> config;
312
+ connection : SatisfiedBy connect requirementElement ::> reqCs60 to satisfyingElement ::> alarm;
313
+ connection : SatisfiedBy connect requirementElement ::> reqCs61 to satisfyingElement ::> alarm;
314
+ connection : SatisfiedBy connect requirementElement ::> reqCs62 to satisfyingElement ::> alarm;
315
+ connection : SatisfiedBy connect requirementElement ::> reqCs63 to satisfyingElement ::> alarm;
316
+ connection : SatisfiedBy connect requirementElement ::> reqCs64 to satisfyingElement ::> alarm;
317
+ connection : SatisfiedBy connect requirementElement ::> reqCs65 to satisfyingElement ::> alarm;
318
+ connection : SatisfiedBy connect requirementElement ::> reqCs66 to satisfyingElement ::> alarm;
319
+ connection : SatisfiedBy connect requirementElement ::> reqCs67 to satisfyingElement ::> alarm;
320
+ connection : SatisfiedBy connect requirementElement ::> reqCs68 to satisfyingElement ::> alarm;
321
+ connection : SatisfiedBy connect requirementElement ::> reqCs69 to satisfyingElement ::> alarm;
322
+ connection : SatisfiedBy connect requirementElement ::> reqCs70 to satisfyingElement ::> alarm;
323
+ connection : SatisfiedBy connect requirementElement ::> reqCs71 to satisfyingElement ::> alarm;
324
+ connection : SatisfiedBy connect requirementElement ::> reqCs74 to satisfyingElement ::> alarm;
325
+ connection : SatisfiedBy connect requirementElement ::> reqCs76 to satisfyingElement ::> alarm;
326
+ connection : SatisfiedBy connect requirementElement ::> reqCs79 to satisfyingElement ::> logging;
327
+ connection : SatisfiedBy connect requirementElement ::> reqCs80 to satisfyingElement ::> logging;
328
+ connection : SatisfiedBy connect requirementElement ::> reqCs81 to satisfyingElement ::> logging;
329
+ connection : SatisfiedBy connect requirementElement ::> reqCs82 to satisfyingElement ::> config;
330
+ connection : SatisfiedBy connect requirementElement ::> reqCs83 to satisfyingElement ::> enclosure;
331
+ connection : SatisfiedBy connect requirementElement ::> reqCs84 to satisfyingElement ::> enclosure;
332
+ connection : SatisfiedBy connect requirementElement ::> reqCs85 to satisfyingElement ::> logging;
333
+ connection : SatisfiedBy connect requirementElement ::> reqCs86 to satisfyingElement ::> config;
334
+ connection : SatisfiedBy connect requirementElement ::> reqPumpAccuracy to satisfyingElement ::> pumpMotorAssembly;
335
+ connection : SatisfiedBy connect requirementElement ::> reqAlarmLoudness to satisfyingElement ::> audibleAlarm;
336
+ connection : SatisfiedBy connect requirementElement ::> reqBatteryBackup to satisfyingElement ::> batteryPack;
337
+ connection : SatisfiedBy connect requirementElement ::> reqFreeFlowPrevention to satisfyingElement ::> antiFreeFlowValve;
338
+
339
+ // ── Function allocation ─────────────────────────────────────
340
+ connection : AllocatedTo connect function ::> fnAcquireSensors to allocatedElement ::> gpcaDeviceSensors;
341
+ connection : AllocatedTo connect function ::> fnAcquireSensors to allocatedElement ::> systemStatus;
342
+ connection : AllocatedTo connect function ::> fnPresentStatus to allocatedElement ::> outputBus;
343
+ connection : AllocatedTo connect function ::> fnValidatePrescription to allocatedElement ::> config;
344
+ connection : AllocatedTo connect function ::> fnMonitorAlarm to allocatedElement ::> alarm;
345
+ connection : AllocatedTo connect function ::> fnAnnunciate to allocatedElement ::> audibleAlarm;
346
+ connection : AllocatedTo connect function ::> fnManageInfusion to allocatedElement ::> infusionMgr;
347
+ connection : AllocatedTo connect function ::> fnEnforceLimits to allocatedElement ::> infusionMgr;
348
+ connection : AllocatedTo connect function ::> fnCommandPump to allocatedElement ::> pumpMotorAssembly;
349
+ connection : AllocatedTo connect function ::> fnLogEvents to allocatedElement ::> logging;
350
+ connection : AllocatedTo connect function ::> fnManagePower to allocatedElement ::> systemMonitor;
351
+ connection : AllocatedTo connect function ::> fnPresentStatus to allocatedElement ::> operatorDisplay;
352
+ connection : AllocatedTo connect function ::> fnSelfTest to allocatedElement ::> systemMonitor;
353
+
354
+ // ── Deployment, hosting, and interface realization ──────────
355
+ connection : DeploysOnto connect softwareComponent ::> gpcaSoftware to hostAssembly ::> controllerBoard;
356
+ connection : HostedBy connect processingNode ::> mainController to hostAssembly ::> controllerBoard;
357
+ connection : RealizesInterface connect logicalInterface ::> sensorInputInterface to physicalInterface ::> hwSoftwareBus;
358
+ connection : RealizesInterface connect logicalInterface ::> actuatorCommandInterface to physicalInterface ::> pumpMotorDrive;
359
+ connection : BindsToInterface connect portElement ::> portPatientPendant to boundInterface ::> bolusButtonLine;
360
+ connection : BindsToInterface connect portElement ::> portMotorDrive to boundInterface ::> pumpMotorDrive;
361
+ connection : BindsToInterface connect portElement ::> portSensorHarness to boundInterface ::> occlusionAnalogLine;
362
+ connection : AllocatesExchange connect functionalFlow ::> lfSensorAcquisition to componentExchange ::> exSensorVector;
363
+ connection : AllocatesExchange connect functionalFlow ::> lfFlowCommand to componentExchange ::> exFlowCommand;
364
+ connection : AllocatesExchange connect functionalFlow ::> lfAlarmSignal to componentExchange ::> exAlarmAnnunciation;
365
+ connection : AllocatesExchange connect functionalFlow ::> lfPrescriptionEntry to componentExchange ::> exPrescriptionEntry;
366
+
367
+ // ── Fig 4.1 mode hierarchy (CriSys §4.1) ────────────────────
368
+ connection : Composes connect parent ::> topLevelModeMachine to child ::> modeOFF;
369
+ connection : Composes connect parent ::> topLevelModeMachine to child ::> modeON;
370
+ connection : Composes connect parent ::> modeON to child ::> modeIDLE;
371
+ connection : Composes connect parent ::> modeON to child ::> modeTHERAPY;
372
+ connection : Composes connect parent ::> modeTHERAPY to child ::> modePAUSED;
373
+ connection : Composes connect parent ::> modeTHERAPY to child ::> modeACTIVE;
374
+ connection : Composes connect parent ::> modeACTIVE to child ::> modeBASAL;
375
+ connection : Composes connect parent ::> modeACTIVE to child ::> modeSQUARE;
376
+ connection : Composes connect parent ::> modeACTIVE to child ::> modePBOLUS;
377
+
378
+ // ── GPCA_SW.Impl connection topology (AADL, 1:1; CE-101..142) ──
379
+ // Edges mirror the 42 GPCA_SW.Impl port connections; immediate
380
+ // semantics per connection are carried on the CE-1xx elements.
381
+ connection : ExchangesWith connect source ::> portOpCmdIn to target ::> tlm;
382
+ connection : ExchangesWith connect source ::> portConstIn to target ::> tlm;
383
+ connection : ExchangesWith connect source ::> tlm to target ::> outputBus;
384
+ connection : ExchangesWith connect source ::> infusionMgr to target ::> systemStatus;
385
+ connection : ExchangesWith connect source ::> tlm to target ::> systemStatus;
386
+ connection : ExchangesWith connect source ::> portSensorIn to target ::> systemStatus;
387
+ connection : ExchangesWith connect source ::> portConstIn to target ::> systemStatus;
388
+ connection : ExchangesWith connect source ::> config to target ::> systemStatus;
389
+ connection : ExchangesWith connect source ::> systemStatus to target ::> outputBus;
390
+ connection : ExchangesWith connect source ::> infusionMgr to target ::> alarm;
391
+ connection : ExchangesWith connect source ::> tlm to target ::> alarm;
392
+ connection : ExchangesWith connect source ::> systemMonitor to target ::> alarm;
393
+ connection : ExchangesWith connect source ::> portOpCmdIn to target ::> alarm;
394
+ connection : ExchangesWith connect source ::> portDbIn to target ::> alarm;
395
+ connection : ExchangesWith connect source ::> portSensorIn to target ::> alarm;
396
+ connection : ExchangesWith connect source ::> portConstIn to target ::> alarm;
397
+ connection : ExchangesWith connect source ::> systemStatus to target ::> alarm;
398
+ connection : ExchangesWith connect source ::> config to target ::> alarm;
399
+ connection : ExchangesWith connect source ::> alarm to target ::> outputBus;
400
+ connection : ExchangesWith connect source ::> tlm to target ::> config;
401
+ connection : ExchangesWith connect source ::> portPresIn to target ::> config;
402
+ connection : ExchangesWith connect source ::> portOpCmdIn to target ::> config;
403
+ connection : ExchangesWith connect source ::> portDbIn to target ::> config;
404
+ connection : ExchangesWith connect source ::> portConstIn to target ::> config;
405
+ connection : ExchangesWith connect source ::> systemStatus to target ::> config;
406
+ connection : ExchangesWith connect source ::> config to target ::> outputBus;
407
+ connection : ExchangesWith connect source ::> tlm to target ::> infusionMgr;
408
+ connection : ExchangesWith connect source ::> portOpCmdIn to target ::> infusionMgr;
409
+ connection : ExchangesWith connect source ::> portPatientIn to target ::> infusionMgr;
410
+ connection : ExchangesWith connect source ::> config to target ::> infusionMgr;
411
+ connection : ExchangesWith connect source ::> alarm to target ::> infusionMgr;
412
+ connection : ExchangesWith connect source ::> systemStatus to target ::> infusionMgr;
413
+ connection : ExchangesWith connect source ::> infusionMgr to target ::> outputBus;
414
+ connection : ExchangesWith connect source ::> tlm to target ::> systemMonitor;
415
+ connection : ExchangesWith connect source ::> systemMonitor to target ::> outputBus;
416
+ connection : ExchangesWith connect source ::> tlm to target ::> logging;
417
+ connection : ExchangesWith connect source ::> config to target ::> logging;
418
+ connection : ExchangesWith connect source ::> alarm to target ::> logging;
419
+ connection : ExchangesWith connect source ::> systemStatus to target ::> logging;
420
+ connection : ExchangesWith connect source ::> infusionMgr to target ::> logging;
421
+ connection : ExchangesWith connect source ::> logging to target ::> outputBus;
422
+ connection : ExchangesWith connect source ::> outputBus to target ::> portGpcaSwOut;
423
+
424
+ // ── GPCA_SW boundary features (AADL GPCA_SW.aadl; CITE-002) ──
425
+ // The seven top-level ports are features of GPCA_Software, so
426
+ // interconnection views pin them on the software boundary.
427
+ connection : Composes connect parent ::> gpcaSoftware to child ::> portOpCmdIn;
428
+ connection : Composes connect parent ::> gpcaSoftware to child ::> portPresIn;
429
+ connection : Composes connect parent ::> gpcaSoftware to child ::> portPatientIn;
430
+ connection : Composes connect parent ::> gpcaSoftware to child ::> portSensorIn;
431
+ connection : Composes connect parent ::> gpcaSoftware to child ::> portConstIn;
432
+ connection : Composes connect parent ::> gpcaSoftware to child ::> portDbIn;
433
+ connection : Composes connect parent ::> gpcaSoftware to child ::> portGpcaSwOut;
434
+
435
+ // ── Device-boundary interconnect (GPCA_Device.aadl; CE-001..004,
436
+ // CITE-002) — hardware ↔ software-port connection topology ──
437
+ connection : ExchangesWith connect source ::> gpcaDeviceSensors to target ::> portSensorIn;
438
+ connection : ExchangesWith connect source ::> portGpcaSwOut to target ::> pumpMotorAssembly;
439
+ connection : ExchangesWith connect source ::> portGpcaSwOut to target ::> audibleAlarm;
440
+ connection : ExchangesWith connect source ::> portGpcaSwOut to target ::> operatorDisplay;
441
+ connection : ExchangesWith connect source ::> operatorKeypad to target ::> portPresIn;
442
+ connection : ExchangesWith connect source ::> operatorKeypad to target ::> portOpCmdIn;
443
+
444
+ // ── Risk chains (ISO 14971, GIIP causal-tree structure) ─────
445
+ // Categorized causes converge on each hazard (GIIP Tables 2-9
446
+ // pattern); hazard -> sequence -> hazardous situation -> harm.
447
+ // HZ-001 opioid over-infusion
448
+ connection : TracesRisk connect sourceRiskElement ::> causeFlowRateTooHigh to targetRiskElement ::> overdoseHazard;
449
+ connection : TracesRisk connect sourceRiskElement ::> causeFrequentBolus to targetRiskElement ::> overdoseHazard;
450
+ connection : TracesRisk connect sourceRiskElement ::> causeBolusVolumeTooHigh to targetRiskElement ::> overdoseHazard;
451
+ connection : TracesRisk connect sourceRiskElement ::> causePumpCalibration to targetRiskElement ::> overdoseHazard;
452
+ connection : TracesRisk connect sourceRiskElement ::> overdoseHazard to targetRiskElement ::> seqFrequentBolus;
453
+ connection : TracesRisk connect sourceRiskElement ::> seqFrequentBolus to targetRiskElement ::> hsExcessInfusion;
454
+ connection : TracesRisk connect sourceRiskElement ::> hsExcessInfusion to targetRiskElement ::> harmRespiratoryDepression;
455
+ connection : TracesRisk connect sourceRiskElement ::> harmRespiratoryDepression to targetRiskElement ::> riskBefore;
456
+ connection : AssessedAgainst connect risk ::> riskBefore to riskMatrix ::> riskMatrix;
457
+ connection : MitigatesHazard connect riskControl ::> lockoutControl to mitigatedHazard ::> overdoseHazard;
458
+ connection : MitigatesHazard connect riskControl ::> drugLibraryControl to mitigatedHazard ::> overdoseHazard;
459
+ connection : MitigatesHazard connect riskControl ::> watchdogControl to mitigatedHazard ::> overdoseHazard;
460
+ connection : MitigatesHazard connect riskControl ::> flowCrossCheckControl to mitigatedHazard ::> overdoseHazard;
461
+ connection : TracesRisk connect sourceRiskElement ::> lockoutControl to targetRiskElement ::> riskAfter;
462
+ connection : AssessedAgainst connect risk ::> riskAfter to riskMatrix ::> riskMatrix;
463
+ connection : TracesRisk connect sourceRiskElement ::> residualEval to targetRiskElement ::> riskAfter;
464
+ // HZ-002 under-infusion
465
+ connection : TracesRisk connect sourceRiskElement ::> causeOcclusion to targetRiskElement ::> underdoseHazard;
466
+ connection : TracesRisk connect sourceRiskElement ::> causeReservoirEmpty to targetRiskElement ::> underdoseHazard;
467
+ connection : TracesRisk connect sourceRiskElement ::> causeAirInLine to targetRiskElement ::> underdoseHazard;
468
+ connection : TracesRisk connect sourceRiskElement ::> causePumpMechanismFails to targetRiskElement ::> underdoseHazard;
469
+ connection : TracesRisk connect sourceRiskElement ::> causeFlowRateTooLow to targetRiskElement ::> underdoseHazard;
470
+ connection : TracesRisk connect sourceRiskElement ::> underdoseHazard to targetRiskElement ::> seqOcclusion;
471
+ connection : TracesRisk connect sourceRiskElement ::> seqOcclusion to targetRiskElement ::> hsInterruptedTherapy;
472
+ connection : TracesRisk connect sourceRiskElement ::> hsInterruptedTherapy to targetRiskElement ::> harmUntreatedPain;
473
+ connection : TracesRisk connect sourceRiskElement ::> harmUntreatedPain to targetRiskElement ::> riskBeforeUnderdose;
474
+ connection : AssessedAgainst connect risk ::> riskBeforeUnderdose to riskMatrix ::> riskMatrix;
475
+ connection : MitigatesHazard connect riskControl ::> occlusionAlarmControl to mitigatedHazard ::> underdoseHazard;
476
+ connection : MitigatesHazard connect riskControl ::> reservoirMonitorControl to mitigatedHazard ::> underdoseHazard;
477
+ connection : MitigatesHazard connect riskControl ::> flowCrossCheckControl to mitigatedHazard ::> underdoseHazard;
478
+ connection : TracesRisk connect sourceRiskElement ::> occlusionAlarmControl to targetRiskElement ::> riskAfterUnderdose;
479
+ connection : AssessedAgainst connect risk ::> riskAfterUnderdose to riskMatrix ::> riskMatrix;
480
+ connection : TracesRisk connect sourceRiskElement ::> residualEval to targetRiskElement ::> riskAfterUnderdose;
481
+ // HZ-003 air embolism (shares the air-in-line and empty-reservoir causes)
482
+ connection : TracesRisk connect sourceRiskElement ::> causeAirInLine to targetRiskElement ::> airEmbolismHazard;
483
+ connection : TracesRisk connect sourceRiskElement ::> causeReservoirEmpty to targetRiskElement ::> airEmbolismHazard;
484
+ connection : TracesRisk connect sourceRiskElement ::> causeImproperPriming to targetRiskElement ::> airEmbolismHazard;
485
+ connection : TracesRisk connect sourceRiskElement ::> causeTubingLeak to targetRiskElement ::> airEmbolismHazard;
486
+ connection : TracesRisk connect sourceRiskElement ::> causeAirSensorSilent to targetRiskElement ::> airEmbolismHazard;
487
+ connection : TracesRisk connect sourceRiskElement ::> airEmbolismHazard to targetRiskElement ::> seqAirInLine;
488
+ connection : TracesRisk connect sourceRiskElement ::> seqAirInLine to targetRiskElement ::> hsAirTowardPatient;
489
+ connection : TracesRisk connect sourceRiskElement ::> hsAirTowardPatient to targetRiskElement ::> harmAirEmbolism;
490
+ connection : TracesRisk connect sourceRiskElement ::> harmAirEmbolism to targetRiskElement ::> riskBeforeAir;
491
+ connection : AssessedAgainst connect risk ::> riskBeforeAir to riskMatrix ::> riskMatrix;
492
+ connection : MitigatesHazard connect riskControl ::> airDetectionControl to mitigatedHazard ::> airEmbolismHazard;
493
+ connection : TracesRisk connect sourceRiskElement ::> airDetectionControl to targetRiskElement ::> riskAfterAir;
494
+ connection : AssessedAgainst connect risk ::> riskAfterAir to riskMatrix ::> riskMatrix;
495
+ connection : TracesRisk connect sourceRiskElement ::> residualEval to targetRiskElement ::> riskAfterAir;
496
+ // HZ-004 misprogramming / wrong drug
497
+ connection : TracesRisk connect sourceRiskElement ::> causeWrongPrescriptionEntered to targetRiskElement ::> wrongDoseHazard;
498
+ connection : TracesRisk connect sourceRiskElement ::> causeWrongDoseUnits to targetRiskElement ::> wrongDoseHazard;
499
+ connection : TracesRisk connect sourceRiskElement ::> causeWrongDrugLoaded to targetRiskElement ::> wrongDoseHazard;
500
+ connection : TracesRisk connect sourceRiskElement ::> causeSettingsChangedInadvertently to targetRiskElement ::> wrongDoseHazard;
501
+ connection : TracesRisk connect sourceRiskElement ::> causePumpRevertsToDefaults to targetRiskElement ::> wrongDoseHazard;
502
+ connection : TracesRisk connect sourceRiskElement ::> wrongDoseHazard to targetRiskElement ::> seqMisprogram;
503
+ connection : TracesRisk connect sourceRiskElement ::> seqMisprogram to targetRiskElement ::> hsWrongTherapy;
504
+ connection : TracesRisk connect sourceRiskElement ::> hsWrongTherapy to targetRiskElement ::> harmRespiratoryDepression;
505
+ connection : TracesRisk connect sourceRiskElement ::> hsWrongTherapy to targetRiskElement ::> riskBeforeWrongDose;
506
+ connection : AssessedAgainst connect risk ::> riskBeforeWrongDose to riskMatrix ::> riskMatrix;
507
+ connection : MitigatesHazard connect riskControl ::> drugLibraryControl to mitigatedHazard ::> wrongDoseHazard;
508
+ connection : TracesRisk connect sourceRiskElement ::> drugLibraryControl to targetRiskElement ::> riskAfterWrongDose;
509
+ connection : AssessedAgainst connect risk ::> riskAfterWrongDose to riskMatrix ::> riskMatrix;
510
+ connection : TracesRisk connect sourceRiskElement ::> residualEval to targetRiskElement ::> riskAfterWrongDose;
511
+ // HZ-005 free flow
512
+ connection : TracesRisk connect sourceRiskElement ::> causeSetDisengaged to targetRiskElement ::> freeFlowHazard;
513
+ connection : TracesRisk connect sourceRiskElement ::> causeDoorOpenedDuringInfusion to targetRiskElement ::> freeFlowHazard;
514
+ connection : TracesRisk connect sourceRiskElement ::> freeFlowHazard to targetRiskElement ::> seqFreeFlow;
515
+ connection : TracesRisk connect sourceRiskElement ::> seqFreeFlow to targetRiskElement ::> hsFreeFlow;
516
+ connection : TracesRisk connect sourceRiskElement ::> hsFreeFlow to targetRiskElement ::> harmRespiratoryDepression;
517
+ connection : TracesRisk connect sourceRiskElement ::> hsFreeFlow to targetRiskElement ::> riskBeforeFreeFlow;
518
+ connection : AssessedAgainst connect risk ::> riskBeforeFreeFlow to riskMatrix ::> riskMatrix;
519
+ connection : MitigatesHazard connect riskControl ::> freeFlowValveControl to mitigatedHazard ::> freeFlowHazard;
520
+ connection : MitigatesHazard connect riskControl ::> doorInterlockControl to mitigatedHazard ::> freeFlowHazard;
521
+ connection : TracesRisk connect sourceRiskElement ::> freeFlowValveControl to targetRiskElement ::> riskAfterFreeFlow;
522
+ connection : AssessedAgainst connect risk ::> riskAfterFreeFlow to riskMatrix ::> riskMatrix;
523
+ connection : TracesRisk connect sourceRiskElement ::> residualEval to targetRiskElement ::> riskAfterFreeFlow;
524
+ // HZ-006 reverse delivery (CriSys REQ 22; GIP HID 1.14)
525
+ connection : TracesRisk connect sourceRiskElement ::> causeBleedBack to targetRiskElement ::> reverseDeliveryHazard;
526
+ connection : TracesRisk connect sourceRiskElement ::> reverseDeliveryHazard to targetRiskElement ::> seqReverseDelivery;
527
+ connection : TracesRisk connect sourceRiskElement ::> seqReverseDelivery to targetRiskElement ::> hsReverseFlow;
528
+ connection : TracesRisk connect sourceRiskElement ::> hsReverseFlow to targetRiskElement ::> harmUntreatedPain;
529
+ connection : TracesRisk connect sourceRiskElement ::> harmUntreatedPain to targetRiskElement ::> riskBeforeReverse;
530
+ connection : AssessedAgainst connect risk ::> riskBeforeReverse to riskMatrix ::> riskMatrix;
531
+ connection : MitigatesHazard connect riskControl ::> reverseDeliveryPauseControl to mitigatedHazard ::> reverseDeliveryHazard;
532
+ connection : MitigatesHazard connect riskControl ::> antiRefluxDesignControl to mitigatedHazard ::> reverseDeliveryHazard;
533
+ connection : TracesRisk connect sourceRiskElement ::> reverseDeliveryPauseControl to targetRiskElement ::> riskAfterReverse;
534
+ connection : AssessedAgainst connect risk ::> riskAfterReverse to riskMatrix ::> riskMatrix;
535
+ connection : TracesRisk connect sourceRiskElement ::> residualEval to targetRiskElement ::> riskAfterReverse;
536
+ // HZ-007 VTBI over-infusion (CriSys REQ 20/28; GIP use hazard 8.1)
537
+ connection : TracesRisk connect sourceRiskElement ::> causeVtbiTooHigh to targetRiskElement ::> vtbiOverInfusionHazard;
538
+ connection : TracesRisk connect sourceRiskElement ::> causeStaleDrugLibrary to targetRiskElement ::> vtbiOverInfusionHazard;
539
+ connection : TracesRisk connect sourceRiskElement ::> vtbiOverInfusionHazard to targetRiskElement ::> seqVtbiExceeded;
540
+ connection : TracesRisk connect sourceRiskElement ::> seqVtbiExceeded to targetRiskElement ::> hsVtbiExceeded;
541
+ connection : TracesRisk connect sourceRiskElement ::> hsVtbiExceeded to targetRiskElement ::> harmRespiratoryDepression;
542
+ connection : TracesRisk connect sourceRiskElement ::> harmRespiratoryDepression to targetRiskElement ::> riskBeforeVtbi;
543
+ connection : AssessedAgainst connect risk ::> riskBeforeVtbi to riskMatrix ::> riskMatrix;
544
+ connection : MitigatesHazard connect riskControl ::> vtbiLimitPauseControl to mitigatedHazard ::> vtbiOverInfusionHazard;
545
+ connection : MitigatesHazard connect riskControl ::> infusionCompleteControl to mitigatedHazard ::> vtbiOverInfusionHazard;
546
+ connection : MitigatesHazard connect riskControl ::> drugLibraryControl to mitigatedHazard ::> vtbiOverInfusionHazard;
547
+ connection : TracesRisk connect sourceRiskElement ::> vtbiLimitPauseControl to targetRiskElement ::> riskAfterVtbi;
548
+ connection : AssessedAgainst connect risk ::> riskAfterVtbi to riskMatrix ::> riskMatrix;
549
+ connection : TracesRisk connect sourceRiskElement ::> residualEval to targetRiskElement ::> riskAfterVtbi;
550
+ // Use errors feeding the risk chains (IEC 62366-1 §5.3)
551
+ connection : TracesRisk connect sourceRiskElement ::> ueMisprogrammedRate to targetRiskElement ::> seqMisprogram;
552
+ connection : TracesRisk connect sourceRiskElement ::> ueWrongDrugLoaded to targetRiskElement ::> seqMisprogram;
553
+ connection : TracesRisk connect sourceRiskElement ::> ueBolusByProxy to targetRiskElement ::> causeFrequentBolus;
554
+ connection : TracesRisk connect sourceRiskElement ::> ueAlarmDisregard to targetRiskElement ::> seqOcclusion;
555
+
556
+ // ── FMEA and fault tree integration ─────────────────────────
557
+ connection : AnalyzedBy connect element ::> pumpMotorAssembly to analysisArtifact ::> fmeaDelivery;
558
+ connection : HasFailureMode connect element ::> pumpMotorAssembly to failureMode ::> fmMotorRunaway;
559
+ connection : HasFailureMode connect element ::> airInLineSensor to failureMode ::> fmAirSensorSilent;
560
+ connection : HasFailureMode connect element ::> occlusionSensor to failureMode ::> fmOcclusionDrift;
561
+ connection : HasFailureMode connect element ::> bolusButton to failureMode ::> fmStuckBolusButton;
562
+ connection : HasFailureMode connect element ::> batteryPack to failureMode ::> fmBatteryEarlyDepletion;
563
+ connection : CausesEffect connect failureMode ::> fmMotorRunaway to failureEffect ::> feOverdose;
564
+ connection : CausesEffect connect failureMode ::> fmStuckBolusButton to failureEffect ::> feOverdose;
565
+ connection : CausesEffect connect failureMode ::> fmAirSensorSilent to failureEffect ::> feAirDelivered;
566
+ connection : CausesEffect connect failureMode ::> fmOcclusionDrift to failureEffect ::> feTherapyInterrupted;
567
+ connection : CausedBy connect failureMode ::> fmMotorRunaway to failureCause ::> fcMotorDriverFault;
568
+ connection : CausedBy connect failureMode ::> fmAirSensorSilent to failureCause ::> fcTransducerAging;
569
+ connection : CausedBy connect failureMode ::> fmStuckBolusButton to failureCause ::> fcPendantAbuse;
570
+ connection : DetectedBy connect failureMode ::> fmMotorRunaway to detectionMethod ::> dmFlowCrossCheck;
571
+ connection : DetectedBy connect failureMode ::> fmAirSensorSilent to detectionMethod ::> dmPostSensorCheck;
572
+ connection : DetectedBy connect failureMode ::> fmStuckBolusButton to detectionMethod ::> dmStuckInputMonitor;
573
+ connection : AddressedByAction connect failureMode ::> fmAirSensorSilent to fmeaAction ::> fmeaActionAirSensor;
574
+ connection : ContributesToHazard connect failureMode ::> fmMotorRunaway to hazard ::> overdoseHazard;
575
+ connection : ContributesToHazard connect failureMode ::> fmStuckBolusButton to hazard ::> overdoseHazard;
576
+ connection : ContributesToHazard connect failureMode ::> fmAirSensorSilent to hazard ::> airEmbolismHazard;
577
+ connection : ContributesToHazard connect failureMode ::> fmOcclusionDrift to hazard ::> underdoseHazard;
578
+ connection : MitigatedByControl connect failureMode ::> fmMotorRunaway to riskControl ::> flowCrossCheckControl;
579
+ connection : MitigatedByControl connect failureMode ::> fmStuckBolusButton to riskControl ::> lockoutControl;
580
+ connection : InputToGate connect input ::> fteMotorRunaway to gate ::> ftgMotorAnd;
581
+ connection : InputToGate connect input ::> fteCrossCheckFails to gate ::> ftgMotorAnd;
582
+ connection : InputToGate connect input ::> fteLockoutFault to gate ::> ftgBolusAnd;
583
+ connection : InputToGate connect input ::> fteStuckButtonUndetected to gate ::> ftgBolusAnd;
584
+ connection : InputToGate connect input ::> ftgMotorAnd to gate ::> ftgOverdoseOr;
585
+ connection : InputToGate connect input ::> ftgBolusAnd to gate ::> ftgOverdoseOr;
586
+ connection : ProducesEvent connect gate ::> ftgOverdoseOr to eventElement ::> fteOverdoseTop;
587
+ connection : LeadsToHazard connect topEvent ::> fteOverdoseTop to hazard ::> overdoseHazard;
588
+ connection : OriginatesFrom connect eventElement ::> fteMotorRunaway to origin ::> pumpMotorAssembly;
589
+ connection : OriginatesFrom connect eventElement ::> fteStuckButtonUndetected to origin ::> bolusButton;
590
+ connection : ContainsEvent connect cutSet ::> mcsMotorPath to eventElement ::> fteMotorRunaway;
591
+ connection : ContainsEvent connect cutSet ::> mcsMotorPath to eventElement ::> fteCrossCheckFails;
592
+ connection : ContainsEvent connect cutSet ::> mcsBolusPath to eventElement ::> fteLockoutFault;
593
+ connection : ContainsEvent connect cutSet ::> mcsBolusPath to eventElement ::> fteStuckButtonUndetected;
594
+ connection : BrokenByControl connect cutSet ::> mcsMotorPath to riskControl ::> flowCrossCheckControl;
595
+ connection : BrokenByControl connect cutSet ::> mcsBolusPath to riskControl ::> lockoutControl;
596
+
597
+ // ── Verification coverage (IEC 62304 §5.7) ──────────────────
598
+ connection : VerifiedBy connect verificationTarget ::> reqCs01 to verificationCase ::> vcModeRange;
599
+ connection : VerifiedBy connect verificationTarget ::> reqCs25 to verificationCase ::> vcLockout;
600
+ connection : VerifiedBy connect verificationTarget ::> reqCs19 to verificationCase ::> vcSameStepAlarm;
601
+ connection : VerifiedBy connect verificationTarget ::> reqDrugLibraryLimits to verificationCase ::> vcDrugLibrary;
602
+ connection : VerifiedBy connect verificationTarget ::> reqCs09 to verificationCase ::> vcPrescriptionConfirm;
603
+ connection : VerifiedBy connect verificationTarget ::> reqPost to verificationCase ::> vcPost;
604
+ connection : VerifiedBy connect verificationTarget ::> reqPowerLossRetention to verificationCase ::> vcPowerLoss;
605
+ connection : VerifiedBy connect verificationTarget ::> reqCs72 to verificationCase ::> vcAlarmLoudness;
606
+ connection : VerifiedBy connect verificationTarget ::> reqCs75 to verificationCase ::> vcTemporalModeSafety;
607
+ connection : VerifiedBy connect verificationTarget ::> reqCs21 to verificationCase ::> vcAirInLine;
608
+ connection : VerifiedBy connect verificationTarget ::> reqOcclusion to verificationCase ::> vcOcclusion;
609
+ connection : VerifiedBy connect verificationTarget ::> reqCs23 to verificationCase ::> vcEmptyReservoir;
610
+ connection : VerifiedBy connect verificationTarget ::> reqDoorOpen to verificationCase ::> vcTemporalModeSafety;
611
+ connection : VerifiedBy connect verificationTarget ::> reqMaxHourlyDose to verificationCase ::> vcHourlyMax;
612
+ connection : VerifiedBy connect verificationTarget ::> reqCs78 to verificationCase ::> vcEventLog;
613
+ connection : VerifiedBy connect verificationTarget ::> reqEventLogging to verificationCase ::> vcEventLog;
614
+ connection : VerifiedBy connect verificationTarget ::> reqWatchdogSafeState to verificationCase ::> vcWatchdog;
615
+ connection : VerifiedBy connect verificationTarget ::> reqStuckButton to verificationCase ::> vcStuckButton;
616
+ connection : VerifiedBy connect verificationTarget ::> reqFlowCrossCheck to verificationCase ::> vcFlowCrossCheck;
617
+ connection : VerifiedBy connect verificationTarget ::> reqPumpAccuracy to verificationCase ::> vcPumpAccuracy;
618
+ connection : VerifiedBy connect verificationTarget ::> reqAlarmLoudness to verificationCase ::> vcAlarmLoudness;
619
+ connection : VerifiedBy connect verificationTarget ::> reqBatteryBackup to verificationCase ::> vcPowerLoss;
620
+ connection : VerifiedBy connect verificationTarget ::> reqFreeFlowPrevention to verificationCase ::> vcFreeFlow;
621
+ // risk controls
622
+ connection : VerifiedBy connect verificationTarget ::> lockoutControl to verificationCase ::> vcLockout;
623
+ connection : VerifiedBy connect verificationTarget ::> airDetectionControl to verificationCase ::> vcAirInLine;
624
+ connection : VerifiedBy connect verificationTarget ::> occlusionAlarmControl to verificationCase ::> vcOcclusion;
625
+ connection : VerifiedBy connect verificationTarget ::> reservoirMonitorControl to verificationCase ::> vcEmptyReservoir;
626
+ connection : VerifiedBy connect verificationTarget ::> drugLibraryControl to verificationCase ::> vcDrugLibrary;
627
+ connection : VerifiedBy connect verificationTarget ::> freeFlowValveControl to verificationCase ::> vcFreeFlow;
628
+ connection : VerifiedBy connect verificationTarget ::> watchdogControl to verificationCase ::> vcWatchdog;
629
+ connection : VerifiedBy connect verificationTarget ::> flowCrossCheckControl to verificationCase ::> vcFlowCrossCheck;
630
+ connection : VerifiedBy connect verificationTarget ::> doorInterlockControl to verificationCase ::> vcDoorInterlock;
631
+ connection : VerifiedBy connect verificationTarget ::> reverseDeliveryPauseControl to verificationCase ::> vcReverseDeliveryPause;
632
+ connection : VerifiedBy connect verificationTarget ::> antiRefluxDesignControl to verificationCase ::> vcAntiRefluxMechanism;
633
+ connection : VerifiedBy connect verificationTarget ::> vtbiLimitPauseControl to verificationCase ::> vcVtbiCeiling;
634
+ connection : VerifiedBy connect verificationTarget ::> infusionCompleteControl to verificationCase ::> vcInfusionComplete;
635
+ // behavior properties, contracts, and timing
636
+ connection : VerifiedBy connect verificationTarget ::> propAlarmStopsSameStep to verificationCase ::> vcSameStepAlarm;
637
+ connection : VerifiedBy connect verificationTarget ::> propLockoutTimerMonotonic to verificationCase ::> vcTemporalModeSafety;
638
+ connection : VerifiedBy connect verificationTarget ::> guaranteeExclusiveMode to verificationCase ::> vcModeRange;
639
+ connection : VerifiedBy connect verificationTarget ::> guaranteeLockoutPreventsBolus to verificationCase ::> vcLockout;
640
+ connection : VerifiedBy connect verificationTarget ::> guaranteeAlarmStopsSameStep to verificationCase ::> vcSameStepAlarm;
641
+ connection : VerifiedBy connect verificationTarget ::> temporalNoInvalidTransition to verificationCase ::> vcTemporalModeSafety;
642
+ connection : VerifiedBy connect verificationTarget ::> tcAlarmLatency to verificationCase ::> vcSameStepAlarm;
643
+ connection : VerifiedBy connect verificationTarget ::> tcBolusResponse to verificationCase ::> vcLockout;
644
+ connection : VerifiedBy connect verificationTarget ::> tcWatchdogTimeout to verificationCase ::> vcWatchdog;
645
+ // class-C software items
646
+ connection : VerifiedBy connect verificationTarget ::> tlm to verificationCase ::> vcModeRange;
647
+ connection : VerifiedBy connect verificationTarget ::> alarm to verificationCase ::> vcSameStepAlarm;
648
+ connection : VerifiedBy connect verificationTarget ::> infusionMgr to verificationCase ::> vcLockout;
649
+ connection : VerifiedBy connect verificationTarget ::> config to verificationCase ::> vcDrugLibrary;
650
+ connection : VerifiedBy connect verificationTarget ::> logging to verificationCase ::> vcEventLog;
651
+ connection : VerifiedBy connect verificationTarget ::> systemMonitor to verificationCase ::> vcPost;
652
+ connection : VerifiedBy connect verificationTarget ::> systemStatus to verificationCase ::> vcEmptyReservoir;
653
+ connection : VerifiedBy connect verificationTarget ::> outputBus to verificationCase ::> vcModeRange;
654
+
655
+ // ── Validation and usability testing ────────────────────────
656
+ connection : Validates connect validationTarget ::> reqCs59 to validationCase ::> valSimulatedWard;
657
+ connection : Validates connect validationTarget ::> reqCs09 to validationCase ::> valSummativeUsability;
658
+ connection : Validates connect validationTarget ::> reqCs73 to validationCase ::> valSummativeUsability;
659
+ connection : TestedByUsability connect uiElementOrTask ::> ueMisprogrammedRate to usabilityTest ::> valSummativeUsability;
660
+ connection : TestedByUsability connect uiElementOrTask ::> ueBolusByProxy to usabilityTest ::> valSummativeUsability;
661
+ connection : TestedByUsability connect uiElementOrTask ::> ueWrongDrugLoaded to usabilityTest ::> valSummativeUsability;
662
+ connection : TestedByUsability connect uiElementOrTask ::> ueAlarmDisregard to usabilityTest ::> valSummativeUsability;
663
+ connection : TestedByUsability connect uiElementOrTask ::> oaProgram to usabilityTest ::> valSummativeUsability;
664
+
665
+ // ── Evidence production and document inclusion ──────────────
666
+ connection : ProducesEvidence connect producer ::> vcLockout to producedEvidence ::> evidenceLockout;
667
+ connection : ProducesEvidence connect producer ::> vcModeRange to producedEvidence ::> evidenceModeRange;
668
+ connection : ProducesEvidence connect producer ::> vcSameStepAlarm to producedEvidence ::> evidenceSameStepAlarm;
669
+ connection : ProducesEvidence connect producer ::> vcTemporalModeSafety to producedEvidence ::> evidenceTemporalModeSafety;
670
+ connection : ProducesEvidence connect producer ::> vcAirInLine to producedEvidence ::> evidenceSafetyAlarmSuite;
671
+ connection : ProducesEvidence connect producer ::> vcOcclusion to producedEvidence ::> evidenceSafetyAlarmSuite;
672
+ connection : ProducesEvidence connect producer ::> vcEmptyReservoir to producedEvidence ::> evidenceSafetyAlarmSuite;
673
+ connection : ProducesEvidence connect producer ::> vcWatchdog to producedEvidence ::> evidenceSafetyAlarmSuite;
674
+ connection : ProducesEvidence connect producer ::> vcPost to producedEvidence ::> evidenceSafetyAlarmSuite;
675
+ connection : ProducesEvidence connect producer ::> vcPowerLoss to producedEvidence ::> evidenceSafetyAlarmSuite;
676
+ connection : ProducesEvidence connect producer ::> vcStuckButton to producedEvidence ::> evidenceSafetyAlarmSuite;
677
+ connection : ProducesEvidence connect producer ::> vcFlowCrossCheck to producedEvidence ::> evidenceSafetyAlarmSuite;
678
+ connection : ProducesEvidence connect producer ::> vcReverseDeliveryPause to producedEvidence ::> evidenceSafetyAlarmSuite;
679
+ connection : ProducesEvidence connect producer ::> vcVtbiCeiling to producedEvidence ::> evidenceSafetyAlarmSuite;
680
+ connection : ProducesEvidence connect producer ::> vcInfusionComplete to producedEvidence ::> evidenceSafetyAlarmSuite;
681
+ connection : ProducesEvidence connect producer ::> vcDoorInterlock to producedEvidence ::> evidenceSafetyAlarmSuite;
682
+ connection : ProducesEvidence connect producer ::> vcAntiRefluxMechanism to producedEvidence ::> evidenceHardwareBench;
683
+ connection : ProducesEvidence connect producer ::> vcAlarmLoudness to producedEvidence ::> evidenceHardwareBench;
684
+ connection : ProducesEvidence connect producer ::> vcFreeFlow to producedEvidence ::> evidenceHardwareBench;
685
+ connection : ProducesEvidence connect producer ::> vcHourlyMax to producedEvidence ::> evidenceDoseProgramming;
686
+ connection : ProducesEvidence connect producer ::> vcDrugLibrary to producedEvidence ::> evidenceDoseProgramming;
687
+ connection : ProducesEvidence connect producer ::> vcPrescriptionConfirm to producedEvidence ::> evidenceDoseProgramming;
688
+ connection : ProducesEvidence connect producer ::> vcEventLog to producedEvidence ::> evidenceDoseProgramming;
689
+ connection : ProducesEvidence connect producer ::> vcPumpAccuracy to producedEvidence ::> evidenceDeliveryAccuracy;
690
+ connection : ProducesEvidence connect producer ::> valSummativeUsability to producedEvidence ::> evidenceUsability;
691
+ connection : IncludedIn connect sourceElement ::> evidenceLockout to targetView ::> rmfView;
692
+ connection : IncludedIn connect sourceElement ::> evidenceSafetyAlarmSuite to targetView ::> vvView;
693
+ connection : IncludedIn connect sourceElement ::> evidenceUsability to targetView ::> usabilityView;
694
+ connection : IncludedIn connect sourceElement ::> fmeaDelivery to targetView ::> hazardAnalysisView;
695
+ connection : IncludedIn connect sourceElement ::> ftaOverdose to targetView ::> hazardAnalysisView;
696
+ }