@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.
- package/LICENSE +19 -0
- package/README.md +70 -0
- package/examples/gpca-pump/dhf/documents/DOC-RMP-001.md +210 -0
- package/examples/gpca-pump/memo.config.yaml +9 -0
- package/examples/gpca-pump/methodology/gpca_methodology.sysml +11 -0
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +25 -0
- package/examples/gpca-pump/methodology/gpca_scope.sysml +25 -0
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +231 -0
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +272 -0
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +81 -0
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +363 -0
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +205 -0
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +113 -0
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +172 -0
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +173 -0
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +1062 -0
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +209 -0
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +53 -0
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +1505 -0
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +744 -0
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +144 -0
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +696 -0
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +285 -0
- package/examples/gpca-pump/model/samples/README.md +24 -0
- package/examples/gpca-pump/model/samples/action_flow_view.sysml +72 -0
- package/examples/gpca-pump/model/samples/action_flow_view.viewlayout +9 -0
- package/examples/gpca-pump/model/samples/functional_flow_view.sysml +153 -0
- package/examples/gpca-pump/model/samples/interconnection_view.sysml +93 -0
- package/examples/gpca-pump/model/samples/interconnection_view.viewlayout +99 -0
- package/examples/gpca-pump/model/samples/operational_behaviour_view.sysml +145 -0
- package/examples/gpca-pump/model/samples/tree_view.sysml +56 -0
- package/examples/gpca-pump/model/views/behavior_action_flow_view.sysml +41 -0
- package/examples/gpca-pump/model/views/context_system_context_view.sysml +43 -0
- package/examples/gpca-pump/model/views/cybersecurity_cybersecurity_view.sysml +44 -0
- package/examples/gpca-pump/model/views/document_architecture_description_view.sysml +29 -0
- package/examples/gpca-pump/model/views/document_cyber_assessment_view.sysml +28 -0
- package/examples/gpca-pump/model/views/document_dhf_index_view.sysml +29 -0
- package/examples/gpca-pump/model/views/document_hazard_analysis_view.sysml +29 -0
- package/examples/gpca-pump/model/views/document_rmf_view.sysml +29 -0
- package/examples/gpca-pump/model/views/document_sdd_view.sysml +29 -0
- package/examples/gpca-pump/model/views/document_threat_model_view.sysml +28 -0
- package/examples/gpca-pump/model/views/document_usability_view.sysml +28 -0
- package/examples/gpca-pump/model/views/document_vv_view.sysml +29 -0
- package/examples/gpca-pump/model/views/functional_function_allocation_view.sysml +42 -0
- package/examples/gpca-pump/model/views/functional_function_browser_view.sysml +41 -0
- package/examples/gpca-pump/model/views/logical_device_interconnect_view.sysml +43 -0
- package/examples/gpca-pump/model/views/logical_logical_architecture_view.sysml +42 -0
- package/examples/gpca-pump/model/views/logical_mode_state_view.sysml +42 -0
- package/examples/gpca-pump/model/views/logical_system_decomposition_view.sysml +44 -0
- package/examples/gpca-pump/model/views/operational_scenario_sequence_view.sysml +41 -0
- package/examples/gpca-pump/model/views/operational_use_case_view.sysml +43 -0
- package/examples/gpca-pump/model/views/physical_physical_bom_view.sysml +41 -0
- package/examples/gpca-pump/model/views/requirements_requirements_trace_view.sysml +42 -0
- package/examples/gpca-pump/model/views/risk_fmea_view.sysml +42 -0
- package/examples/gpca-pump/model/views/risk_risk_chain_view.sysml +44 -0
- package/examples/gpca-pump/model/views/software_software_architecture_view.sysml +43 -0
- package/examples/gpca-pump/model/views/verification_verification_coverage_view.sysml +42 -0
- package/memo.manifest.yaml +13 -0
- package/methodologies/default/memo.package.yaml +9 -0
- package/methodologies/gpca/memo.package.yaml +9 -0
- package/ontology/memo.package.yaml +8 -0
- package/ontology/memo.rendering.yaml +47 -0
- package/package.json +65 -0
- package/profile/archetypes.yaml +36 -0
- package/profile/memo.package.yaml +9 -0
- package/profile/templates/connected-device/starter.sysml +8 -0
- package/profile/templates/infusion-pump/starter.sysml +8 -0
- package/profile/templates/monitoring-device/starter.sysml +8 -0
- package/profile/templates/samd/starter.sysml +8 -0
- package/src/architecture/analysis/memo_fmea.sysml +91 -0
- package/src/architecture/assurance/memo_assurance.sysml +29 -0
- package/src/architecture/behavior/memo_behavior.sysml +65 -0
- package/src/architecture/constraints/memo_constraints.sysml +14 -0
- package/src/architecture/context/memo_context.sysml +58 -0
- package/src/architecture/cybersecurity/memo_cybersecurity.sysml +99 -0
- package/src/architecture/decisions/memo_decisions.sysml +12 -0
- package/src/architecture/functions/memo_functions.sysml +30 -0
- package/src/architecture/hardware_structure/memo_hardware_structure.sysml +15 -0
- package/src/architecture/interfaces/memo_interfaces.sysml +103 -0
- package/src/architecture/logical_structure/memo_logical_structure.sysml +10 -0
- package/src/architecture/operational/memo_operational.sysml +51 -0
- package/src/architecture/physical/memo_physical_architecture.sysml +19 -0
- package/src/architecture/requirements/memo_requirements.sysml +69 -0
- package/src/architecture/risk/memo_arch_risk.sysml +7 -0
- package/src/architecture/risk/memo_risk.sysml +80 -0
- package/src/architecture/software_structure/memo_software_structure.sysml +44 -0
- package/src/architecture/system/memo_system_analysis.sysml +54 -0
- package/src/artifacts/clinical_safety_report.sysml +12 -0
- package/src/artifacts/cybersecurity_assessment_report.sysml +12 -0
- package/src/artifacts/definitions/memo_artifact_definitions.sysml +12 -0
- package/src/artifacts/design_change_log.sysml +12 -0
- package/src/artifacts/design_history_file_index.sysml +12 -0
- package/src/artifacts/design_input_plan.sysml +12 -0
- package/src/artifacts/design_output_plan.sysml +12 -0
- package/src/artifacts/evidence_record.sysml +12 -0
- package/src/artifacts/failure_mode_effects_analysis.sysml +12 -0
- package/src/artifacts/hazard_analysis_report.sysml +12 -0
- package/src/artifacts/labeling_specification.sysml +12 -0
- package/src/artifacts/requirements_specification.sysml +12 -0
- package/src/artifacts/requirements_traceability_matrix.sysml +12 -0
- package/src/artifacts/risk_management_plan.sysml +12 -0
- package/src/artifacts/software_design_description.sysml +12 -0
- package/src/artifacts/software_development_plan.sysml +12 -0
- package/src/artifacts/soup_list.sysml +12 -0
- package/src/artifacts/system_architecture_description.sysml +12 -0
- package/src/artifacts/test_protocol.sysml +12 -0
- package/src/artifacts/test_report.sysml +12 -0
- package/src/artifacts/threat_model_report.sysml +12 -0
- package/src/artifacts/usability_engineering_report.sysml +12 -0
- package/src/compliance/artifacts/memo_artifacts.sysml +13 -0
- package/src/compliance/change/memo_change.sysml +17 -0
- package/src/compliance/dhf-templates/21cfr820/change-record.md +45 -0
- package/src/compliance/dhf-templates/21cfr820/design-input.md +67 -0
- package/src/compliance/dhf-templates/21cfr820/design-output.md +80 -0
- package/src/compliance/dhf-templates/21cfr820/design-review.md +51 -0
- package/src/compliance/dhf-templates/21cfr820/design-validation.md +64 -0
- package/src/compliance/dhf-templates/21cfr820/design-verification.md +57 -0
- package/src/compliance/dhf-templates/21cfr820/dhf-index.md +111 -0
- package/src/compliance/dhf-templates/21cfr820/transfer-plan.md +50 -0
- package/src/compliance/dhf-templates/21cfr820/user-needs.md +81 -0
- package/src/compliance/dhf-templates/21cfr820/vv-plan.md +89 -0
- package/src/compliance/dhf-templates/21cfr820/vv-report.md +85 -0
- package/src/compliance/dhf-templates/fda-cybersecurity/incident-response.md +66 -0
- package/src/compliance/dhf-templates/fda-cybersecurity/postmarket-surveillance.md +63 -0
- package/src/compliance/dhf-templates/fda-cybersecurity/security-arch.md +83 -0
- package/src/compliance/dhf-templates/fda-cybersecurity/threat-model.md +100 -0
- package/src/compliance/dhf-templates/fda-cybersecurity/vuln-assessment.md +77 -0
- package/src/compliance/dhf-templates/iec-62304/change-control.md +40 -0
- package/src/compliance/dhf-templates/iec-62304/detailed-design.md +69 -0
- package/src/compliance/dhf-templates/iec-62304/integration-test.md +68 -0
- package/src/compliance/dhf-templates/iec-62304/sad.md +115 -0
- package/src/compliance/dhf-templates/iec-62304/sbom.md +67 -0
- package/src/compliance/dhf-templates/iec-62304/sdp.md +108 -0
- package/src/compliance/dhf-templates/iec-62304/soup.md +77 -0
- package/src/compliance/dhf-templates/iec-62304/srs.md +138 -0
- package/src/compliance/dhf-templates/iec-62304/sw-traceability.md +111 -0
- package/src/compliance/dhf-templates/iec-62304/system-test.md +67 -0
- package/src/compliance/dhf-templates/iec-62366/formative-eval.md +47 -0
- package/src/compliance/dhf-templates/iec-62366/summative-eval.md +69 -0
- package/src/compliance/dhf-templates/iec-62366/task-analysis.md +57 -0
- package/src/compliance/dhf-templates/iec-62366/ue-plan.md +81 -0
- package/src/compliance/dhf-templates/iec-62366/ui-spec.md +61 -0
- package/src/compliance/dhf-templates/iec-62366/urra.md +74 -0
- package/src/compliance/dhf-templates/iec-62366/use-spec.md +61 -0
- package/src/compliance/dhf-templates/iso-14971/fmea.md +93 -0
- package/src/compliance/dhf-templates/iso-14971/fta.md +70 -0
- package/src/compliance/dhf-templates/iso-14971/har.md +165 -0
- package/src/compliance/dhf-templates/iso-14971/risk-benefit.md +51 -0
- package/src/compliance/dhf-templates/iso-14971/risk-matrix.md +51 -0
- package/src/compliance/dhf-templates/iso-14971/rmp.md +169 -0
- package/src/compliance/dhf-templates/iso-14971/rmr.md +101 -0
- package/src/compliance/dhf-templates/shared/snippets/approval-block.md +16 -0
- package/src/compliance/dhf-templates/shared/snippets/document-control-header.md +15 -0
- package/src/compliance/dhf-templates/shared/snippets/references-section.md +16 -0
- package/src/compliance/dhf-templates/shared/snippets/revision-history-table.md +11 -0
- package/src/compliance/document_views/memo_document_views.sysml +7 -0
- package/src/compliance/iso14971/risk_management_file.sysml +16 -0
- package/src/compliance/postmarket/memo_postmarket.sysml +16 -0
- package/src/core/common/memo_common.sysml +50 -0
- package/src/core/consistency_rules/consistency_rules.sysml +41 -0
- package/src/core/dimensions/dimensions.sysml +37 -0
- package/src/core/enumerations/memo_enumerations.sysml +562 -0
- package/src/core/methodology_scope/methodology_scope.sysml +46 -0
- package/src/core/relationships/memo_relationships.sysml +230 -0
- package/src/core/semantics/semantics.sysml +20 -0
- package/src/core/stdlib/collections.sysml +6 -0
- package/src/core/stdlib/functions.sysml +6 -0
- package/src/core/stdlib/scalars.sysml +6 -0
- package/src/core/stdlib/time.sysml +6 -0
- package/src/medical_device_library.sysml +100 -0
- package/src/memo_namespaces.sysml +668 -0
- package/src/methodology/LICENSES/MIT.txt +19 -0
- package/src/methodology/memo_archetypes.sysml +93 -0
- package/src/methodology/memo_core.sysml +53 -0
- package/src/methodology/memo_gates.sysml +11 -0
- package/src/methodology/memo_patterns.sysml +12 -0
- package/src/methodology/memo_profiles.sysml +218 -0
- package/src/methodology/memo_rules.sysml +15 -0
- package/src/methodology/memo_viewpoints.sysml +5 -0
- package/src/methodology/memo_workflow.sysml +14 -0
- package/src/rules/closure/closure_rules.sysml +180 -0
- package/src/rules/coverage/coverage_rules.sysml +258 -0
- package/src/rules/crosslayer/cross_layer_rules.sysml +38 -0
- package/src/rules/lifecycle/lifecycle_rules.sysml +41 -0
- package/src/rules/quantitative/quantitative_rules.sysml +34 -0
- package/src/viewpoints/clinical/clinical_evidence_view.sysml +13 -0
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +25 -0
- package/src/viewpoints/context/context_viewpoint.sysml +25 -0
- package/src/viewpoints/context/system_context_view.sysml +29 -0
- package/src/viewpoints/cybersecurity/cybersecurity_assessment_view.sysml +13 -0
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +27 -0
- package/src/viewpoints/cybersecurity/threat_model_view.sysml +13 -0
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +82 -0
- package/src/viewpoints/functional/function_allocation_view.sysml +29 -0
- package/src/viewpoints/functional/functional_viewpoint.sysml +25 -0
- package/src/viewpoints/functional/system_functional_tree_view.sysml +29 -0
- package/src/viewpoints/logical/logical_architecture_view.sysml +29 -0
- package/src/viewpoints/logical/logical_viewpoint.sysml +25 -0
- package/src/viewpoints/operational/operational_viewpoint.sysml +25 -0
- package/src/viewpoints/operational/use_case_view.sysml +29 -0
- package/src/viewpoints/physical/network_topology_view.sysml +29 -0
- package/src/viewpoints/physical/physical_bom_view.sysml +29 -0
- package/src/viewpoints/physical/physical_viewpoint.sysml +25 -0
- package/src/viewpoints/requirements/requirements_traceability_view.sysml +29 -0
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +25 -0
- package/src/viewpoints/risk/risk_chain_view.sysml +30 -0
- package/src/viewpoints/risk/risk_viewpoint.sysml +25 -0
- package/src/viewpoints/software/software_architecture_view.sysml +29 -0
- package/src/viewpoints/software/software_viewpoint.sysml +25 -0
- package/src/viewpoints/usability/usability_engineering_view.sysml +13 -0
- package/src/viewpoints/usability/usability_viewpoint.sysml +25 -0
- package/src/viewpoints/verification/verification_coverage_view.sysml +29 -0
- package/src/viewpoints/verification/verification_viewpoint.sysml +25 -0
- package/template/memo.package.yaml +5 -0
- package/template/src/catalog/starter.sysml +12 -0
- package/template/src/documents/.gitkeep +1 -0
- package/template/src/views/.gitkeep +1 -0
|
@@ -0,0 +1,744 @@
|
|
|
1
|
+
package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
2
|
+
private import ScalarValues::*;
|
|
3
|
+
|
|
4
|
+
private import memo_architecture_risk_risk::*;
|
|
5
|
+
private import memo_core_common::Citation;
|
|
6
|
+
private import memo_core_enumerations::*;
|
|
7
|
+
|
|
8
|
+
// ── Source corpus citations (verified 2026-07-05, extended 2026-07-08) ──
|
|
9
|
+
part citeCriSysSysReq : Citation {
|
|
10
|
+
attribute :>> id = "CITE-001";
|
|
11
|
+
attribute :>> name = "CriSysGpcaSystemRequirements";
|
|
12
|
+
attribute :>> source = "System Requirements: Generic Patient Controlled Analgesic Infusion (GPCA) System, draft — Murugesan, Rayadurgam, Heimdahl, University of Minnesota";
|
|
13
|
+
attribute :>> section = "Ch.2 system description; Ch.3 interfaces (I 1-I 11, data dictionary); Ch.4 behavioral requirements (mode tree, REQ 1-86, REQ 59 notification table); Ch.5 non-behavioral; App. A.4 constants";
|
|
14
|
+
attribute :>> uri = "https://crisys.cs.umn.edu/downloads/gpca/SystemRequirements.pdf";
|
|
15
|
+
attribute :>> year = "2013";
|
|
16
|
+
}
|
|
17
|
+
part citeCriSysAadl : Citation {
|
|
18
|
+
attribute :>> id = "CITE-002";
|
|
19
|
+
attribute :>> name = "CriSysGpcaAadlModel";
|
|
20
|
+
attribute :>> source = "GPCA System Architectural Model v2.0 (AADL packages, AGREE contracts, ModelDocumentation.pdf) — University of Minnesota CriSys";
|
|
21
|
+
attribute :>> section = "8 software subcomponents + port topology + AGREE contracts";
|
|
22
|
+
attribute :>> uri = "https://crisys.cs.umn.edu/downloads/gpca/AADL.zip";
|
|
23
|
+
attribute :>> year = "undated";
|
|
24
|
+
}
|
|
25
|
+
part citeCriSysVerification : Citation {
|
|
26
|
+
attribute :>> id = "CITE-003";
|
|
27
|
+
attribute :>> name = "CriSysGpcaVerification";
|
|
28
|
+
attribute :>> source = "GPCA compositional verification package (AGREE properties, Simulink/Stateflow models) — University of Minnesota CriSys";
|
|
29
|
+
attribute :>> section = "Full package";
|
|
30
|
+
attribute :>> uri = "https://crisys.cs.umn.edu/downloads/gpca/Verification.zip";
|
|
31
|
+
attribute :>> year = "undated";
|
|
32
|
+
}
|
|
33
|
+
part citeGipHazardAnalysis : Citation {
|
|
34
|
+
attribute :>> id = "CITE-004";
|
|
35
|
+
attribute :>> name = "GipHazardAnalysis";
|
|
36
|
+
attribute :>> source = "Generic Infusion Pump Hazard Analysis and Safety Requirements Version 1.0 — Arney, Jetley, Jones, Lee, Ray, Sokolsky, Zhang; University of Pennsylvania / FDA OSEL (Tech Report MS-CIS-08-31)";
|
|
37
|
+
attribute :>> section = "§2.1 hazard categories; §2.2 alarms and alerts; §2.3 pump checks; §2.4.1-2.4.8 hazard tables (HID rows: cause, action, mitigated-by, safety requirement); §3 safety requirements";
|
|
38
|
+
attribute :>> uri = "https://repository.upenn.edu/cis_reports/893/";
|
|
39
|
+
attribute :>> year = "2009";
|
|
40
|
+
}
|
|
41
|
+
part citeOpenPcaPump : Citation {
|
|
42
|
+
attribute :>> id = "CITE-005";
|
|
43
|
+
attribute :>> name = "OpenPcaPumpArtifacts";
|
|
44
|
+
attribute :>> source = "Model-based Risk Analysis for an Open-Source PCA Pump using the AADL Error Modeling Annex — Thiagarajan, Larson, Hatcliff, Zhang; Kansas State University SAnToS Lab (Open PCA Pump project ISO 14971 risk analysis)";
|
|
45
|
+
attribute :>> section = "§4 Table 1 (harm / hazardous situation / hazard / initiating cause for the two primary hazards: opioid over-infusion, air embolism); Fig. 3 ISO 14971 causality chain; §5 harm and cause instances";
|
|
46
|
+
attribute :>> uri = "https://awas.sireum.org/_static/awas-ISO14971-risk-analysis.pdf";
|
|
47
|
+
attribute :>> year = "undated";
|
|
48
|
+
}
|
|
49
|
+
part citeGiipTaxonomy : Citation {
|
|
50
|
+
attribute :>> id = "CITE-006";
|
|
51
|
+
attribute :>> name = "FdaGiipHazardTaxonomy";
|
|
52
|
+
attribute :>> source = "A Hazard Analysis for a Generic Insulin Infusion Pump — Zhang, Jones et al., Journal of Diabetes Science and Technology (structure template only; insulin-pump content, not GPCA)";
|
|
53
|
+
attribute :>> section = "Table 1 hazardous-situation taxonomy; Tables 2-9 cause-source tables (operational, software, hardware, physical, electrical, biological/chemical, use, environmental) forming cause -> hazardous situation -> harm causal trees";
|
|
54
|
+
attribute :>> uri = "https://pmc.ncbi.nlm.nih.gov/articles/PMC2864162/";
|
|
55
|
+
attribute :>> year = "2010";
|
|
56
|
+
}
|
|
57
|
+
part citeGpcaHazardDoc : Citation {
|
|
58
|
+
attribute :>> id = "CITE-007";
|
|
59
|
+
attribute :>> name = "FdaGpcaHazardAnalysisDoc";
|
|
60
|
+
attribute :>> source = "The Generic Patient Controlled Analgesia Pump Hazard Analysis (GPCA Model ver. 0.9) — FDA OSEL GIP project working document (Jetley); GPCA specialization of the GIP v1.0 hazard tables, retrieved from the archived GIP project site";
|
|
61
|
+
attribute :>> section = "System domain; pump components; hazard tables: Operational HID 1.1-1.27, Environmental 2.1-2.13, Electrical 3.1-3.11, Hardware 4.1-4.13, Software 5.1-5.12, Mechanical 6.1-6.6, Biological/Chemical 7.1-7.2, Use 8.1-8.14";
|
|
62
|
+
attribute :>> uri = "https://web.archive.org/web/20111121142920/http://rtg.cis.upenn.edu/gip-docs/Hazard_Analysis_GPCA.doc";
|
|
63
|
+
attribute :>> year = "2009";
|
|
64
|
+
}
|
|
65
|
+
part citeGpcaSafetyReqDoc : Citation {
|
|
66
|
+
attribute :>> id = "CITE-008";
|
|
67
|
+
attribute :>> name = "FdaGpcaSafetyRequirementsDoc";
|
|
68
|
+
attribute :>> source = "Safety Requirements for the Generic Patient Controlled Analgesia Pump (GPCA Model ver. 0.9) — FDA OSEL GIP project working document (Jetley), retrieved from the archived GIP project site";
|
|
69
|
+
attribute :>> section = "Infusion Control (flow rate + KVO, flow rate accuracy, VTBI, bolus dose, drug reservoir, pump suspend, reverse delivery, air-in-line alarm, occlusion alarm); User Interface (tamper resistance, confirmation); Error Handling; POST; Power; Dose Error Reduction (drug library hard/soft limits); System Environment";
|
|
70
|
+
attribute :>> uri = "https://web.archive.org/web/20120124081510/http://rtg.cis.upenn.edu/gip-docs/Safety_Requirements_GPCA.doc";
|
|
71
|
+
attribute :>> year = "2009";
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// ── Shared risk matrix ───────────────────────────────────────────
|
|
75
|
+
part riskMatrix : RiskMatrix {
|
|
76
|
+
attribute :>> id = "RMX-001";
|
|
77
|
+
attribute :>> name = "StandardRiskMatrix";
|
|
78
|
+
attribute :>> probabilityScaleDefinition = "Remote, Occasional, Probable";
|
|
79
|
+
attribute :>> severityScaleDefinition = "Minor, Serious, Catastrophic";
|
|
80
|
+
attribute :>> riskLevelMapping = "matrix based";
|
|
81
|
+
attribute :>> acceptabilityThresholds = "High unacceptable";
|
|
82
|
+
attribute :>> sourceReference = "illustrative — no source";
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// ═══ HZ-001: Opioid over-infusion ═══════════════════════════════
|
|
86
|
+
// Primary hazard 1 of the Open PCA ISO 14971 analysis; GIP
|
|
87
|
+
// operational-hazard rows HID 1.1-1.3. Causal tree per GIIP
|
|
88
|
+
// pattern: categorized causes converge on the hazard.
|
|
89
|
+
part overdoseHazard : Hazard {
|
|
90
|
+
attribute :>> id = "HZ-001";
|
|
91
|
+
attribute :>> name = "OpioidOverInfusion";
|
|
92
|
+
attribute :>> hazardType = HazardTypeKind::drugDeliveryError;
|
|
93
|
+
attribute :>> severity = SeverityKind::catastrophic;
|
|
94
|
+
attribute :>> foreseeable = true;
|
|
95
|
+
attribute :>> description = "Drug delivered at a rate above the prescription (overinfusion).";
|
|
96
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 Operational Hazards HID 1.1-1.3 (overinfusion); CITE-005: Open PCA ISO 14971 risk analysis, §4 (primary hazard: opioid over-infusion)";
|
|
97
|
+
}
|
|
98
|
+
part causeFlowRateTooHigh : HazardCause {
|
|
99
|
+
attribute :>> id = "CAUSE-001";
|
|
100
|
+
attribute :>> name = "ProgrammedFlowRateTooHigh";
|
|
101
|
+
attribute :>> causeSource = CauseSourceKind::operational;
|
|
102
|
+
attribute :>> contributingFactors = "Programmed value not checked against drug-database hard limits";
|
|
103
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.1 (programmed flow rate too high; mitigated by drug library)";
|
|
104
|
+
}
|
|
105
|
+
part causeFrequentBolus : HazardCause {
|
|
106
|
+
attribute :>> id = "CAUSE-002";
|
|
107
|
+
attribute :>> name = "BolusRequestsTooFrequent";
|
|
108
|
+
attribute :>> causeSource = CauseSourceKind::usageCause;
|
|
109
|
+
attribute :>> contributingFactors = "Patient bolus button pressed too often, or pressed by someone other than the patient (bolus by proxy)";
|
|
110
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.2 (dose limit exceeded due to too many bolus requests); CITE-005: Open PCA ISO 14971 risk analysis, §4 Table 1 (bolus button pressed too frequent) and §5 (TooSoonPress, ThirdPartyPress error types)";
|
|
111
|
+
}
|
|
112
|
+
part causeBolusVolumeTooHigh : HazardCause {
|
|
113
|
+
attribute :>> id = "CAUSE-003";
|
|
114
|
+
attribute :>> name = "ProgrammedBolusVolumeTooHigh";
|
|
115
|
+
attribute :>> causeSource = CauseSourceKind::operational;
|
|
116
|
+
attribute :>> contributingFactors = "Bolus volume or drug concentration programmed above safe limits";
|
|
117
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.3 ((programmed) bolus volume/concentration too high; mitigated by drug library)";
|
|
118
|
+
}
|
|
119
|
+
part causePumpCalibration : HazardCause {
|
|
120
|
+
attribute :>> id = "CAUSE-004";
|
|
121
|
+
attribute :>> name = "IncorrectPumpCalibrationOrMotorRunaway";
|
|
122
|
+
attribute :>> causeSource = CauseSourceKind::hardware;
|
|
123
|
+
attribute :>> contributingFactors = "Uncalibrated pumping mechanism or motor-driver fault drives flow above the commanded rate";
|
|
124
|
+
attribute :>> sourceReference = "CITE-005: Open PCA ISO 14971 risk analysis, §4 Table 1 (incorrect pump calibration) and §5 (calibration_over error source on drug_outlet); CITE-004: §2.4.1 HID 1.21 (increased pump speed)";
|
|
125
|
+
}
|
|
126
|
+
part seqFrequentBolus : SequenceOfEvents {
|
|
127
|
+
attribute :>> id = "SEQ-001";
|
|
128
|
+
attribute :>> name = "RepeatedBolusOverDeliverySequence";
|
|
129
|
+
attribute :>> initiatingEvent = "Repeated patient bolus presses over time propagate through button-press detection and control logic to increased motor flow commands";
|
|
130
|
+
attribute :>> contributingFactors = "Lockout or max-dose filtering fails or is misconfigured";
|
|
131
|
+
attribute :>> sourceReference = "CITE-005: Open PCA ISO 14971 risk analysis, §4 (bottom-up causality walk of Fig. 3, right side); CITE-001: CriSys GPCA System Requirements (2013), §4.1.9 PATIENT BOLUS mode (REQ 25/26 lockout and max-dose filtering)";
|
|
132
|
+
}
|
|
133
|
+
part hsExcessInfusion : HazardousSituation {
|
|
134
|
+
attribute :>> id = "HS-001";
|
|
135
|
+
attribute :>> name = "PatientExposedToOpioidOverDelivery";
|
|
136
|
+
attribute :>> exposedPersons = "patient";
|
|
137
|
+
attribute :>> operatingCondition = "ACTIVE therapy; opioid infused while the patient's respiration is deteriorating";
|
|
138
|
+
attribute :>> sourceReference = "CITE-005: Open PCA ISO 14971 risk analysis, §4 Table 1 (infusing opioid when patient's respiration is deteriorating) and §6 (OverInfusion hazardous-situation instance)";
|
|
139
|
+
}
|
|
140
|
+
part harmRespiratoryDepression : Harm {
|
|
141
|
+
attribute :>> id = "HM-001";
|
|
142
|
+
attribute :>> name = "RespiratoryDepression";
|
|
143
|
+
attribute :>> clinicalImpact = "respiratory depression progressing to cardiac arrest";
|
|
144
|
+
attribute :>> reversibility = "potentially irreversible";
|
|
145
|
+
attribute :>> severity = SeverityKind::catastrophic;
|
|
146
|
+
attribute :>> sourceReference = "CITE-005: Open PCA ISO 14971 risk analysis, §4 Table 1 (harm: cardiac arrest) and §5 (H1 respiratory depression, severity catastrophic)";
|
|
147
|
+
}
|
|
148
|
+
part riskBefore : RiskBeforeMitigation {
|
|
149
|
+
attribute :>> id = "RISK-B-001";
|
|
150
|
+
attribute :>> name = "OverInfusionRiskBeforeMitigation";
|
|
151
|
+
attribute :>> driverKind = "risk";
|
|
152
|
+
attribute :>> probabilityEstimate = ProbabilityKind::occasional;
|
|
153
|
+
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
154
|
+
attribute :>> riskLevel = CriticalityKind::high;
|
|
155
|
+
attribute :>> acceptability = RiskAcceptabilityKind::unacceptable;
|
|
156
|
+
attribute :>> estimationBasis = "mode and bolus hazard analysis";
|
|
157
|
+
attribute :>> analysisContext = "patient bolus and active mode control";
|
|
158
|
+
attribute :>> foreseeableMisuseIncluded = true;
|
|
159
|
+
attribute :>> sourceReference = "illustrative — no source";
|
|
160
|
+
}
|
|
161
|
+
part lockoutControl : RiskControl {
|
|
162
|
+
attribute :>> id = "RC-001";
|
|
163
|
+
attribute :>> name = "LockoutAndMaxDoseEnforcement";
|
|
164
|
+
attribute :>> controlKind = RiskControlKind::inherentSafeDesign;
|
|
165
|
+
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
166
|
+
attribute :>> verificationStatus = "planned";
|
|
167
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.9 (REQ 25/26 — model REQ-CS-25/26: ignore bolus requests during lockout or past max doses per hour); CITE-002: CriSys AADL v2.0, GPCA_SW AGREE lockout guarantee (model GP-002)";
|
|
168
|
+
}
|
|
169
|
+
part riskAfter : RiskAfterMitigation {
|
|
170
|
+
attribute :>> id = "RISK-A-001";
|
|
171
|
+
attribute :>> name = "OverInfusionRiskAfterMitigation";
|
|
172
|
+
attribute :>> driverKind = "risk";
|
|
173
|
+
attribute :>> probabilityEstimate = ProbabilityKind::remote;
|
|
174
|
+
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
175
|
+
attribute :>> riskLevel = CriticalityKind::medium;
|
|
176
|
+
attribute :>> acceptability = RiskAcceptabilityKind::alarp;
|
|
177
|
+
attribute :>> residualProbability = ProbabilityKind::remote;
|
|
178
|
+
attribute :>> residualSeverity = SeverityKind::catastrophic;
|
|
179
|
+
attribute :>> residualAcceptability = RiskAcceptabilityKind::acceptable;
|
|
180
|
+
attribute :>> benefitRiskRequired = false;
|
|
181
|
+
attribute :>> sourceReference = "illustrative — no source";
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// ═══ HZ-002: Under-infusion / therapy interruption ══════════════
|
|
185
|
+
part underdoseHazard : Hazard {
|
|
186
|
+
attribute :>> id = "HZ-002";
|
|
187
|
+
attribute :>> name = "UnderInfusion";
|
|
188
|
+
attribute :>> hazardType = HazardTypeKind::drugDeliveryError;
|
|
189
|
+
attribute :>> severity = SeverityKind::serious;
|
|
190
|
+
attribute :>> foreseeable = true;
|
|
191
|
+
attribute :>> description = "Delivered dose falls below prescription (underinfusion).";
|
|
192
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 Operational Hazards HID 1.5-1.10 (underinfusion); CITE-005: Open PCA ISO 14971 risk analysis, §5 (under-infusion captured as functional-safety hazard)";
|
|
193
|
+
}
|
|
194
|
+
part causeOcclusion : HazardCause {
|
|
195
|
+
attribute :>> id = "CAUSE-005";
|
|
196
|
+
attribute :>> name = "LineOcclusion";
|
|
197
|
+
attribute :>> causeSource = CauseSourceKind::operational;
|
|
198
|
+
attribute :>> contributingFactors = "Supply-side or patient-side occlusion; kinked or clamped administration set";
|
|
199
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.7 (occlusion, supply side and patient side; mitigated by flow sensor)";
|
|
200
|
+
}
|
|
201
|
+
part causeReservoirEmpty : HazardCause {
|
|
202
|
+
attribute :>> id = "CAUSE-006";
|
|
203
|
+
attribute :>> name = "ReservoirEmptyOrLow";
|
|
204
|
+
attribute :>> causeSource = CauseSourceKind::operational;
|
|
205
|
+
attribute :>> contributingFactors = "Reservoir exhausted during therapy without timely replacement";
|
|
206
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.8/1.9 (reservoir empty, reservoir low; mitigated by flow sensor and drug library)";
|
|
207
|
+
}
|
|
208
|
+
part causeAirInLine : HazardCause {
|
|
209
|
+
attribute :>> id = "CAUSE-007";
|
|
210
|
+
attribute :>> name = "AirInLine";
|
|
211
|
+
attribute :>> causeSource = CauseSourceKind::operational;
|
|
212
|
+
attribute :>> contributingFactors = "Air enters the administration set and displaces drug delivery";
|
|
213
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.6 (underinfusion: air in line) and HID 1.27 (air bubble introduced in blood stream; mitigated by flow sensor)";
|
|
214
|
+
}
|
|
215
|
+
part causePumpMechanismFails : HazardCause {
|
|
216
|
+
attribute :>> id = "CAUSE-008";
|
|
217
|
+
attribute :>> name = "PumpMotorFailsToStroke";
|
|
218
|
+
attribute :>> causeSource = CauseSourceKind::mechanical;
|
|
219
|
+
attribute :>> contributingFactors = "Motor failure or mechanism unable to stroke stops infusion";
|
|
220
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.6 Mechanical Hazards HID 6.6 (pump stops infusion: pump motor fails, pump unable to stroke; mitigated by flow sensor)";
|
|
221
|
+
}
|
|
222
|
+
part causeFlowRateTooLow : HazardCause {
|
|
223
|
+
attribute :>> id = "CAUSE-009";
|
|
224
|
+
attribute :>> name = "ProgrammedFlowRateTooLow";
|
|
225
|
+
attribute :>> causeSource = CauseSourceKind::operational;
|
|
226
|
+
attribute :>> contributingFactors = "Programmed value below therapeutic range and not caught by drug-database limits";
|
|
227
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.5 (programmed flow rate too low; mitigated by drug library)";
|
|
228
|
+
}
|
|
229
|
+
part seqOcclusion : SequenceOfEvents {
|
|
230
|
+
attribute :>> id = "SEQ-002";
|
|
231
|
+
attribute :>> name = "UndetectedOcclusionSequence";
|
|
232
|
+
attribute :>> initiatingEvent = "Downstream line kinked or clamped during active therapy";
|
|
233
|
+
attribute :>> contributingFactors = "Occlusion not detected or alarm not annunciated; post-occlusion bolus released when the occlusion clears";
|
|
234
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.2 Alarms (occlusion); CITE-008: GPCA Safety Requirements (2009), Occlusion alarm (stop and alarm within max delay; bounded post-occlusion bolus volume)";
|
|
235
|
+
}
|
|
236
|
+
part hsInterruptedTherapy : HazardousSituation {
|
|
237
|
+
attribute :>> id = "HS-002";
|
|
238
|
+
attribute :>> name = "PatientReceivingLessThanPrescribedDose";
|
|
239
|
+
attribute :>> exposedPersons = "patient";
|
|
240
|
+
attribute :>> operatingCondition = "ACTIVE therapy with blocked, exhausted, or failed fluid path";
|
|
241
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.5-1.10 (underinfusion)";
|
|
242
|
+
}
|
|
243
|
+
part harmUntreatedPain : Harm {
|
|
244
|
+
attribute :>> id = "HM-002";
|
|
245
|
+
attribute :>> name = "UntreatedPainAndClinicalDeterioration";
|
|
246
|
+
attribute :>> clinicalImpact = "uncontrolled pain, delayed recovery, post-occlusion bolus injury";
|
|
247
|
+
attribute :>> reversibility = "reversible with intervention";
|
|
248
|
+
attribute :>> severity = SeverityKind::serious;
|
|
249
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 (underinfusion rows); CITE-008: GPCA Safety Requirements (2009), Flow rate accuracy (underinfusion alarm)";
|
|
250
|
+
}
|
|
251
|
+
part riskBeforeUnderdose : RiskBeforeMitigation {
|
|
252
|
+
attribute :>> id = "RISK-B-002";
|
|
253
|
+
attribute :>> name = "UnderInfusionRiskBeforeMitigation";
|
|
254
|
+
attribute :>> driverKind = "risk";
|
|
255
|
+
attribute :>> probabilityEstimate = ProbabilityKind::probable;
|
|
256
|
+
attribute :>> severityEstimate = SeverityKind::serious;
|
|
257
|
+
attribute :>> riskLevel = CriticalityKind::high;
|
|
258
|
+
attribute :>> acceptability = RiskAcceptabilityKind::unacceptable;
|
|
259
|
+
attribute :>> estimationBasis = "occlusion and reservoir exhaustion frequency in ward use";
|
|
260
|
+
attribute :>> analysisContext = "fluid path monitoring during active therapy";
|
|
261
|
+
attribute :>> foreseeableMisuseIncluded = true;
|
|
262
|
+
attribute :>> sourceReference = "illustrative — no source";
|
|
263
|
+
}
|
|
264
|
+
part occlusionAlarmControl : RiskControl {
|
|
265
|
+
attribute :>> id = "RC-003";
|
|
266
|
+
attribute :>> name = "OcclusionDetectionAndKvoPause";
|
|
267
|
+
attribute :>> controlKind = RiskControlKind::alarm;
|
|
268
|
+
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
269
|
+
attribute :>> verificationStatus = "planned";
|
|
270
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.2 Alarms (occlusion); CITE-008: GPCA Safety Requirements (2009), Occlusion alarm; CITE-002: CriSys AADL v2.0, AGREE occlusion => flow <= KVO (model GP-010; model extension REQ-X-04)";
|
|
271
|
+
}
|
|
272
|
+
part reservoirMonitorControl : RiskControl {
|
|
273
|
+
attribute :>> id = "RC-004";
|
|
274
|
+
attribute :>> name = "ReservoirEmptyDetectionAndAlarm";
|
|
275
|
+
attribute :>> controlKind = RiskControlKind::monitoring;
|
|
276
|
+
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
277
|
+
attribute :>> verificationStatus = "planned";
|
|
278
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 23 — model REQ-CS-23: empty-reservoir pause) and §4.3 REQ 59 (Empty Reservoir row); CITE-002: CriSys AADL v2.0, AGREE empty reservoir => no flow (model GP-007); CITE-004: §2.2 Alarms (empty reservoir) and Alerts (low reservoir)";
|
|
279
|
+
}
|
|
280
|
+
part riskAfterUnderdose : RiskAfterMitigation {
|
|
281
|
+
attribute :>> id = "RISK-A-002";
|
|
282
|
+
attribute :>> name = "UnderInfusionRiskAfterMitigation";
|
|
283
|
+
attribute :>> driverKind = "risk";
|
|
284
|
+
attribute :>> probabilityEstimate = ProbabilityKind::remote;
|
|
285
|
+
attribute :>> severityEstimate = SeverityKind::serious;
|
|
286
|
+
attribute :>> riskLevel = CriticalityKind::medium;
|
|
287
|
+
attribute :>> acceptability = RiskAcceptabilityKind::alarp;
|
|
288
|
+
attribute :>> residualProbability = ProbabilityKind::remote;
|
|
289
|
+
attribute :>> residualSeverity = SeverityKind::serious;
|
|
290
|
+
attribute :>> residualAcceptability = RiskAcceptabilityKind::acceptable;
|
|
291
|
+
attribute :>> benefitRiskRequired = false;
|
|
292
|
+
attribute :>> sourceReference = "illustrative — no source";
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// ═══ HZ-003: Air embolism ═══════════════════════════════════════
|
|
296
|
+
// Primary hazard 2 of the Open PCA ISO 14971 analysis.
|
|
297
|
+
part airEmbolismHazard : Hazard {
|
|
298
|
+
attribute :>> id = "HZ-003";
|
|
299
|
+
attribute :>> name = "AirEmbolism";
|
|
300
|
+
attribute :>> hazardType = HazardTypeKind::drugDeliveryError;
|
|
301
|
+
attribute :>> severity = SeverityKind::catastrophic;
|
|
302
|
+
attribute :>> foreseeable = true;
|
|
303
|
+
attribute :>> description = "Air infused into the patient line above the clinically tolerable volume.";
|
|
304
|
+
attribute :>> sourceReference = "CITE-005: Open PCA ISO 14971 risk analysis, §4 Table 1 (primary hazard: air embolism); CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.27 (air bubble introduced in blood stream); CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 21)";
|
|
305
|
+
}
|
|
306
|
+
part causeImproperPriming : HazardCause {
|
|
307
|
+
attribute :>> id = "CAUSE-010";
|
|
308
|
+
attribute :>> name = "InappropriatePriming";
|
|
309
|
+
attribute :>> causeSource = CauseSourceKind::usageCause;
|
|
310
|
+
attribute :>> contributingFactors = "Infusion continued after set primed incompletely";
|
|
311
|
+
attribute :>> sourceReference = "CITE-005: Open PCA ISO 14971 risk analysis, §4 Table 1 (continue infusion after inappropriate priming); CITE-004: §2.4.1 HID 1.24 (failure to prime: air in line)";
|
|
312
|
+
}
|
|
313
|
+
part causeTubingLeak : HazardCause {
|
|
314
|
+
attribute :>> id = "CAUSE-011";
|
|
315
|
+
attribute :>> name = "TubingLeakageAdmitsAir";
|
|
316
|
+
attribute :>> causeSource = CauseSourceKind::mechanical;
|
|
317
|
+
attribute :>> contributingFactors = "Infusion continued under tubing leakage";
|
|
318
|
+
attribute :>> sourceReference = "CITE-005: Open PCA ISO 14971 risk analysis, §4 Table 1 (continue infusion under tubing leakage)";
|
|
319
|
+
}
|
|
320
|
+
part causeAirSensorSilent : HazardCause {
|
|
321
|
+
attribute :>> id = "CAUSE-012";
|
|
322
|
+
attribute :>> name = "AirSensorFailureSuppressesAlarm";
|
|
323
|
+
attribute :>> causeSource = CauseSourceKind::hardware;
|
|
324
|
+
attribute :>> contributingFactors = "Air sensor failed, disabled, or threshold miscalibrated so air passes undetected";
|
|
325
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.4 Hardware Hazards HID 4.13 (failure to alarm: sensor failure)";
|
|
326
|
+
}
|
|
327
|
+
part seqAirInLine : SequenceOfEvents {
|
|
328
|
+
attribute :>> id = "SEQ-003";
|
|
329
|
+
attribute :>> name = "AirEntersLineSequence";
|
|
330
|
+
attribute :>> initiatingEvent = "Infusion continues after inappropriate priming, with an empty reservoir, or under tubing leakage";
|
|
331
|
+
attribute :>> contributingFactors = "Air-in-line detection failed or thresholds miscalibrated";
|
|
332
|
+
attribute :>> sourceReference = "CITE-005: Open PCA ISO 14971 risk analysis, §4 Table 1 (initiating causes for air embolism); CITE-004: §2.2 Alarms (air-in-line)";
|
|
333
|
+
}
|
|
334
|
+
part hsAirTowardPatient : HazardousSituation {
|
|
335
|
+
attribute :>> id = "HS-003";
|
|
336
|
+
attribute :>> name = "AirInfusedIntoPatientBloodStream";
|
|
337
|
+
attribute :>> exposedPersons = "patient";
|
|
338
|
+
attribute :>> operatingCondition = "ACTIVE therapy with air in the administration set";
|
|
339
|
+
attribute :>> sourceReference = "CITE-005: Open PCA ISO 14971 risk analysis, §4 Table 1 (infusing air bubbles into the patient's blood stream)";
|
|
340
|
+
}
|
|
341
|
+
part harmAirEmbolism : Harm {
|
|
342
|
+
attribute :>> id = "HM-003";
|
|
343
|
+
attribute :>> name = "TissueOrOrganDamage";
|
|
344
|
+
attribute :>> clinicalImpact = "tissue or organ damage from vascular air embolism, potentially fatal";
|
|
345
|
+
attribute :>> reversibility = "potentially irreversible";
|
|
346
|
+
attribute :>> severity = SeverityKind::catastrophic;
|
|
347
|
+
attribute :>> sourceReference = "CITE-005: Open PCA ISO 14971 risk analysis, §4 Table 1 (harm: tissue or organ damage)";
|
|
348
|
+
}
|
|
349
|
+
part riskBeforeAir : RiskBeforeMitigation {
|
|
350
|
+
attribute :>> id = "RISK-B-003";
|
|
351
|
+
attribute :>> name = "AirEmbolismRiskBeforeMitigation";
|
|
352
|
+
attribute :>> driverKind = "risk";
|
|
353
|
+
attribute :>> probabilityEstimate = ProbabilityKind::occasional;
|
|
354
|
+
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
355
|
+
attribute :>> riskLevel = CriticalityKind::high;
|
|
356
|
+
attribute :>> acceptability = RiskAcceptabilityKind::unacceptable;
|
|
357
|
+
attribute :>> estimationBasis = "reservoir exhaustion and priming error frequency";
|
|
358
|
+
attribute :>> analysisContext = "fluid path integrity during active therapy";
|
|
359
|
+
attribute :>> foreseeableMisuseIncluded = true;
|
|
360
|
+
attribute :>> sourceReference = "illustrative — no source";
|
|
361
|
+
}
|
|
362
|
+
part airDetectionControl : RiskControl {
|
|
363
|
+
attribute :>> id = "RC-002";
|
|
364
|
+
attribute :>> name = "AirInLineDetectionAndKvoPause";
|
|
365
|
+
attribute :>> controlKind = RiskControlKind::protectiveMeasure;
|
|
366
|
+
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
367
|
+
attribute :>> verificationStatus = "planned";
|
|
368
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 21 — model REQ-CS-21: air-embolism pause on single or cumulative bubble volume); CITE-002: CriSys AADL v2.0, AGREE air-in-line => flow <= KVO (model GP-009); CITE-008: GPCA Safety Requirements (2009), Air-in-line alarm";
|
|
369
|
+
}
|
|
370
|
+
part riskAfterAir : RiskAfterMitigation {
|
|
371
|
+
attribute :>> id = "RISK-A-003";
|
|
372
|
+
attribute :>> name = "AirEmbolismRiskAfterMitigation";
|
|
373
|
+
attribute :>> driverKind = "risk";
|
|
374
|
+
attribute :>> probabilityEstimate = ProbabilityKind::remote;
|
|
375
|
+
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
376
|
+
attribute :>> riskLevel = CriticalityKind::medium;
|
|
377
|
+
attribute :>> acceptability = RiskAcceptabilityKind::alarp;
|
|
378
|
+
attribute :>> residualProbability = ProbabilityKind::remote;
|
|
379
|
+
attribute :>> residualSeverity = SeverityKind::catastrophic;
|
|
380
|
+
attribute :>> residualAcceptability = RiskAcceptabilityKind::acceptable;
|
|
381
|
+
attribute :>> benefitRiskRequired = false;
|
|
382
|
+
attribute :>> sourceReference = "illustrative — no source";
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
// ═══ HZ-004: Incorrect therapy programmed (use error) ═══════════
|
|
386
|
+
part wrongDoseHazard : Hazard {
|
|
387
|
+
attribute :>> id = "HZ-004";
|
|
388
|
+
attribute :>> name = "IncorrectDrugOrDoseProgrammed";
|
|
389
|
+
attribute :>> hazardType = HazardTypeKind::useError;
|
|
390
|
+
attribute :>> severity = SeverityKind::catastrophic;
|
|
391
|
+
attribute :>> foreseeable = true;
|
|
392
|
+
attribute :>> description = "Prescription programmed or reservoir loaded so delivered therapy differs from the intended prescription.";
|
|
393
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.8 Use Hazards and §2.4.1 HID 1.25 (prescription/dosage values out of default range); CITE-007: GPCA Hazard Analysis doc (2009), Use Hazards HID 8.6/8.10/8.14";
|
|
394
|
+
}
|
|
395
|
+
part causeWrongPrescriptionEntered : HazardCause {
|
|
396
|
+
attribute :>> id = "CAUSE-013";
|
|
397
|
+
attribute :>> name = "IncorrectPrescriptionEntered";
|
|
398
|
+
attribute :>> causeSource = CauseSourceKind::usageCause;
|
|
399
|
+
attribute :>> contributingFactors = "Attentional failure during prescription entry";
|
|
400
|
+
attribute :>> sourceReference = "CITE-004/CITE-007: GIP/GPCA hazard analysis (2009), Use Hazards HID 8.10 (attentional failure: incorrect prescription entered)";
|
|
401
|
+
}
|
|
402
|
+
part causeWrongDoseUnits : HazardCause {
|
|
403
|
+
attribute :>> id = "CAUSE-014";
|
|
404
|
+
attribute :>> name = "IncorrectDoseUnits";
|
|
405
|
+
attribute :>> causeSource = CauseSourceKind::usageCause;
|
|
406
|
+
attribute :>> contributingFactors = "Incorrect units used for dose parameters (e.g., ml/hr instead of mcg/hr)";
|
|
407
|
+
attribute :>> sourceReference = "CITE-004/CITE-007: GIP/GPCA hazard analysis (2009), Use Hazards HID 8.14 (incorrect dose mode; mitigated by barcode scanner)";
|
|
408
|
+
}
|
|
409
|
+
part causeWrongDrugLoaded : HazardCause {
|
|
410
|
+
attribute :>> id = "CAUSE-015";
|
|
411
|
+
attribute :>> name = "WrongPrescriptionOrDrugConcentration";
|
|
412
|
+
attribute :>> causeSource = CauseSourceKind::usageCause;
|
|
413
|
+
attribute :>> contributingFactors = "Incorrect prescription given to patient; incorrect drug concentration specified; look-alike packaging";
|
|
414
|
+
attribute :>> sourceReference = "CITE-004/CITE-007: GIP/GPCA hazard analysis (2009), Use Hazards HID 8.6 (incorrect prescription; incorrect drug library) and §2.4.1 HID 1.4 (incorrect drug concentration specified; mitigated by barcode scanner)";
|
|
415
|
+
}
|
|
416
|
+
part causeSettingsChangedInadvertently : HazardCause {
|
|
417
|
+
attribute :>> id = "CAUSE-016";
|
|
418
|
+
attribute :>> name = "SettingsChangedInadvertently";
|
|
419
|
+
attribute :>> causeSource = CauseSourceKind::usageCause;
|
|
420
|
+
attribute :>> contributingFactors = "User or patient changes infusion settings inadvertently during therapy";
|
|
421
|
+
attribute :>> sourceReference = "CITE-004/CITE-007: GIP/GPCA hazard analysis (2009), Use Hazards HID 8.7/8.8 (user/patient change infusion settings inadvertently; mitigated by drug library)";
|
|
422
|
+
}
|
|
423
|
+
part causePumpRevertsToDefaults : HazardCause {
|
|
424
|
+
attribute :>> id = "CAUSE-017";
|
|
425
|
+
attribute :>> name = "PumpRevertsToDefaultDoseValues";
|
|
426
|
+
attribute :>> causeSource = CauseSourceKind::software;
|
|
427
|
+
attribute :>> contributingFactors = "Programmed dose set incorrectly; inappropriate reset to default values";
|
|
428
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.5 Software Hazards HID 5.11 (pump reverts to default dose values; mitigated by drug library)";
|
|
429
|
+
}
|
|
430
|
+
part seqMisprogram : SequenceOfEvents {
|
|
431
|
+
attribute :>> id = "SEQ-004";
|
|
432
|
+
attribute :>> name = "MisprogrammingSequence";
|
|
433
|
+
attribute :>> initiatingEvent = "Prescription entered with wrong value, units, or drug and accepted for delivery";
|
|
434
|
+
attribute :>> contributingFactors = "Safe-value check against the pharmacy database skipped or unavailable; confirmation bypassed";
|
|
435
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.25 (prescription/dosage values fall out of default value range; mitigated by drug library and barcode scanner)";
|
|
436
|
+
}
|
|
437
|
+
part hsWrongTherapy : HazardousSituation {
|
|
438
|
+
attribute :>> id = "HS-004";
|
|
439
|
+
attribute :>> name = "PatientReceivingUnintendedTherapy";
|
|
440
|
+
attribute :>> exposedPersons = "patient";
|
|
441
|
+
attribute :>> operatingCondition = "therapy started from an unverified prescription";
|
|
442
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.25 and §2.4.8 Use Hazards (incorrect therapy rows)";
|
|
443
|
+
}
|
|
444
|
+
part riskBeforeWrongDose : RiskBeforeMitigation {
|
|
445
|
+
attribute :>> id = "RISK-B-004";
|
|
446
|
+
attribute :>> name = "MisprogrammingRiskBeforeMitigation";
|
|
447
|
+
attribute :>> driverKind = "risk";
|
|
448
|
+
attribute :>> probabilityEstimate = ProbabilityKind::probable;
|
|
449
|
+
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
450
|
+
attribute :>> riskLevel = CriticalityKind::high;
|
|
451
|
+
attribute :>> acceptability = RiskAcceptabilityKind::unacceptable;
|
|
452
|
+
attribute :>> estimationBasis = "published PCA misprogramming incident rates";
|
|
453
|
+
attribute :>> analysisContext = "prescription entry and reservoir loading tasks";
|
|
454
|
+
attribute :>> foreseeableMisuseIncluded = true;
|
|
455
|
+
attribute :>> sourceReference = "illustrative — no source";
|
|
456
|
+
}
|
|
457
|
+
part drugLibraryControl : RiskControl {
|
|
458
|
+
attribute :>> id = "RC-005";
|
|
459
|
+
attribute :>> name = "DrugDatabaseLimitsAndConfirmation";
|
|
460
|
+
attribute :>> controlKind = RiskControlKind::plausibilityCheck;
|
|
461
|
+
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
462
|
+
attribute :>> verificationStatus = "planned";
|
|
463
|
+
attribute :>> sourceReference = "CITE-008: GPCA Safety Requirements (2009), Dose Error Reduction (drug library hard/soft limits, re-entry and confirmation prompts) and User Interface (two-step setting changes, confirmation); CITE-001: CriSys GPCA System Requirements (2013), Ch.3 Pharmacy DB interface (safe-value lookup)";
|
|
464
|
+
}
|
|
465
|
+
part riskAfterWrongDose : RiskAfterMitigation {
|
|
466
|
+
attribute :>> id = "RISK-A-004";
|
|
467
|
+
attribute :>> name = "MisprogrammingRiskAfterMitigation";
|
|
468
|
+
attribute :>> driverKind = "risk";
|
|
469
|
+
attribute :>> probabilityEstimate = ProbabilityKind::remote;
|
|
470
|
+
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
471
|
+
attribute :>> riskLevel = CriticalityKind::medium;
|
|
472
|
+
attribute :>> acceptability = RiskAcceptabilityKind::alarp;
|
|
473
|
+
attribute :>> residualProbability = ProbabilityKind::remote;
|
|
474
|
+
attribute :>> residualSeverity = SeverityKind::catastrophic;
|
|
475
|
+
attribute :>> residualAcceptability = RiskAcceptabilityKind::acceptable;
|
|
476
|
+
attribute :>> benefitRiskRequired = true;
|
|
477
|
+
attribute :>> sourceReference = "illustrative — no source";
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
// ═══ HZ-005: Free flow ══════════════════════════════════════════
|
|
481
|
+
part freeFlowHazard : Hazard {
|
|
482
|
+
attribute :>> id = "HZ-005";
|
|
483
|
+
attribute :>> name = "GravityFreeFlow";
|
|
484
|
+
attribute :>> hazardType = HazardTypeKind::mechanicalFailure;
|
|
485
|
+
attribute :>> severity = SeverityKind::catastrophic;
|
|
486
|
+
attribute :>> foreseeable = true;
|
|
487
|
+
attribute :>> description = "Unregulated gravity flow of drug when the set is disengaged from the pumping mechanism.";
|
|
488
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.13 (improper flow: free flow of drug; mitigated by flow sensor)";
|
|
489
|
+
}
|
|
490
|
+
part causeSetDisengaged : HazardCause {
|
|
491
|
+
attribute :>> id = "CAUSE-018";
|
|
492
|
+
attribute :>> name = "AdministrationSetDisengaged";
|
|
493
|
+
attribute :>> causeSource = CauseSourceKind::mechanical;
|
|
494
|
+
attribute :>> contributingFactors = "Set removed or loaded improperly with reservoir above patient level";
|
|
495
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.13 (free flow of drug) and §2.2 Alerts (infusion set not loaded properly)";
|
|
496
|
+
}
|
|
497
|
+
part causeDoorOpenedDuringInfusion : HazardCause {
|
|
498
|
+
attribute :>> id = "CAUSE-019";
|
|
499
|
+
attribute :>> name = "DoorOpenedDuringInfusion";
|
|
500
|
+
attribute :>> causeSource = CauseSourceKind::environmental;
|
|
501
|
+
attribute :>> contributingFactors = "Panel/door opened during infusion, or infusion started when door open";
|
|
502
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.2 Environmental Hazards HID 2.9 (panel/door opened during infusion; alert and log)";
|
|
503
|
+
}
|
|
504
|
+
part seqFreeFlow : SequenceOfEvents {
|
|
505
|
+
attribute :>> id = "SEQ-005";
|
|
506
|
+
attribute :>> name = "SetDisengagedSequence";
|
|
507
|
+
attribute :>> initiatingEvent = "Door opened / set removed with reservoir above patient level";
|
|
508
|
+
attribute :>> contributingFactors = "Anti-free-flow protection absent, defeated, or failed";
|
|
509
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.13 and §2.4.2 HID 2.9";
|
|
510
|
+
}
|
|
511
|
+
part hsFreeFlow : HazardousSituation {
|
|
512
|
+
attribute :>> id = "HS-005";
|
|
513
|
+
attribute :>> name = "PatientConnectedToUnregulatedFluidPath";
|
|
514
|
+
attribute :>> exposedPersons = "patient";
|
|
515
|
+
attribute :>> operatingCondition = "set change or door open with line still connected";
|
|
516
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.13 (free flow of drug)";
|
|
517
|
+
}
|
|
518
|
+
part riskBeforeFreeFlow : RiskBeforeMitigation {
|
|
519
|
+
attribute :>> id = "RISK-B-005";
|
|
520
|
+
attribute :>> name = "FreeFlowRiskBeforeMitigation";
|
|
521
|
+
attribute :>> driverKind = "risk";
|
|
522
|
+
attribute :>> probabilityEstimate = ProbabilityKind::occasional;
|
|
523
|
+
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
524
|
+
attribute :>> riskLevel = CriticalityKind::high;
|
|
525
|
+
attribute :>> acceptability = RiskAcceptabilityKind::unacceptable;
|
|
526
|
+
attribute :>> estimationBasis = "set-change frequency and historic free-flow incidents";
|
|
527
|
+
attribute :>> analysisContext = "reservoir and set handling during therapy";
|
|
528
|
+
attribute :>> foreseeableMisuseIncluded = true;
|
|
529
|
+
attribute :>> sourceReference = "illustrative — no source";
|
|
530
|
+
}
|
|
531
|
+
part freeFlowValveControl : RiskControl {
|
|
532
|
+
attribute :>> id = "RC-006";
|
|
533
|
+
attribute :>> name = "AdministrationSetFreeFlowPrevention";
|
|
534
|
+
attribute :>> controlKind = RiskControlKind::inherentSafeDesign;
|
|
535
|
+
attribute :>> implementationKind = RiskControlImplementationKind::hardwareDesign;
|
|
536
|
+
attribute :>> verificationStatus = "planned";
|
|
537
|
+
attribute :>> sourceReference = "CITE-008: GPCA Safety Requirements (2009), User Interface (the administration set should be designed to prevent compromising patient safety or causing an unacceptable flow error); CITE-004: §2.4.1 HID 1.13 (free-flow detection via flow sensor, safety requirement 1.2.2)";
|
|
538
|
+
}
|
|
539
|
+
part doorInterlockControl : RiskControl {
|
|
540
|
+
attribute :>> id = "RC-009";
|
|
541
|
+
attribute :>> name = "DoorOpenDeliveryInhibit";
|
|
542
|
+
attribute :>> controlKind = RiskControlKind::interlock;
|
|
543
|
+
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
544
|
+
attribute :>> verificationStatus = "planned";
|
|
545
|
+
attribute :>> sourceReference = "CITE-002: CriSys AADL v2.0, AGREE door open => flow <= KVO (model GP-011); CITE-004: §2.4.2 HID 2.8/2.9 (panel/door opened during infusion: alert and stop); model extension REQ-X-05";
|
|
546
|
+
}
|
|
547
|
+
part riskAfterFreeFlow : RiskAfterMitigation {
|
|
548
|
+
attribute :>> id = "RISK-A-005";
|
|
549
|
+
attribute :>> name = "FreeFlowRiskAfterMitigation";
|
|
550
|
+
attribute :>> driverKind = "risk";
|
|
551
|
+
attribute :>> probabilityEstimate = ProbabilityKind::improbable;
|
|
552
|
+
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
553
|
+
attribute :>> riskLevel = CriticalityKind::medium;
|
|
554
|
+
attribute :>> acceptability = RiskAcceptabilityKind::acceptable;
|
|
555
|
+
attribute :>> residualProbability = ProbabilityKind::improbable;
|
|
556
|
+
attribute :>> residualSeverity = SeverityKind::catastrophic;
|
|
557
|
+
attribute :>> residualAcceptability = RiskAcceptabilityKind::acceptable;
|
|
558
|
+
attribute :>> benefitRiskRequired = false;
|
|
559
|
+
attribute :>> sourceReference = "illustrative — no source";
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
// ═══ HZ-006: Reverse delivery ═══════════════════════════════════
|
|
563
|
+
part reverseDeliveryHazard : Hazard {
|
|
564
|
+
attribute :>> id = "HZ-006";
|
|
565
|
+
attribute :>> name = "ReverseDelivery";
|
|
566
|
+
attribute :>> hazardType = HazardTypeKind::drugDeliveryError;
|
|
567
|
+
attribute :>> severity = SeverityKind::serious;
|
|
568
|
+
attribute :>> foreseeable = true;
|
|
569
|
+
attribute :>> description = "Drug or body fluid drawn backwards through the administration set (bleed back / reflux).";
|
|
570
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.14 (improper flow: bleed back, reflux within device); CITE-008: GPCA Safety Requirements (2009), Reverse delivery (continuous reverse delivery shall not be possible, from IEC 601-2-24); CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 22)";
|
|
571
|
+
}
|
|
572
|
+
part causeBleedBack : HazardCause {
|
|
573
|
+
attribute :>> id = "CAUSE-020";
|
|
574
|
+
attribute :>> name = "BleedBackRefluxWithinDevice";
|
|
575
|
+
attribute :>> causeSource = CauseSourceKind::operational;
|
|
576
|
+
attribute :>> contributingFactors = "Pressure gradient or mechanism fault reverses flow through the set";
|
|
577
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.14 (bleed back; reflux within device; mitigated by flow sensor, safety requirement 1.8)";
|
|
578
|
+
}
|
|
579
|
+
part seqReverseDelivery : SequenceOfEvents {
|
|
580
|
+
attribute :>> id = "SEQ-006";
|
|
581
|
+
attribute :>> name = "SustainedReverseFlowSequence";
|
|
582
|
+
attribute :>> initiatingEvent = "Reflux within the device draws drug or blood back through the administration set";
|
|
583
|
+
attribute :>> contributingFactors = "Reverse flow undetected; continuous episode or cumulative episodes exceed the permitted duration limits";
|
|
584
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 22: continuous and cumulative reverse-delivery duration limits, App. A.4 Rev_Delivery constants); CITE-004: §2.4.1 HID 1.14";
|
|
585
|
+
}
|
|
586
|
+
part hsReverseFlow : HazardousSituation {
|
|
587
|
+
attribute :>> id = "HS-006";
|
|
588
|
+
attribute :>> name = "PatientLineFlowReversed";
|
|
589
|
+
attribute :>> exposedPersons = "patient";
|
|
590
|
+
attribute :>> operatingCondition = "THERAPY with reverse flow past the continuous or cumulative duration limits";
|
|
591
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 22); CITE-008: GPCA Safety Requirements (2009), Reverse delivery";
|
|
592
|
+
}
|
|
593
|
+
part riskBeforeReverse : RiskBeforeMitigation {
|
|
594
|
+
attribute :>> id = "RISK-B-006";
|
|
595
|
+
attribute :>> name = "ReverseDeliveryRiskBeforeMitigation";
|
|
596
|
+
attribute :>> driverKind = "risk";
|
|
597
|
+
attribute :>> probabilityEstimate = ProbabilityKind::occasional;
|
|
598
|
+
attribute :>> severityEstimate = SeverityKind::serious;
|
|
599
|
+
attribute :>> riskLevel = CriticalityKind::high;
|
|
600
|
+
attribute :>> acceptability = RiskAcceptabilityKind::unacceptable;
|
|
601
|
+
attribute :>> estimationBasis = "reflux behavior of pumping mechanisms under adverse pressure gradients";
|
|
602
|
+
attribute :>> analysisContext = "fluid path integrity during active therapy";
|
|
603
|
+
attribute :>> foreseeableMisuseIncluded = true;
|
|
604
|
+
attribute :>> sourceReference = "illustrative — no source";
|
|
605
|
+
}
|
|
606
|
+
part reverseDeliveryPauseControl : RiskControl {
|
|
607
|
+
attribute :>> id = "RC-010";
|
|
608
|
+
attribute :>> name = "ReverseDeliveryDetectionAndPause";
|
|
609
|
+
attribute :>> controlKind = RiskControlKind::alarm;
|
|
610
|
+
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
611
|
+
attribute :>> verificationStatus = "planned";
|
|
612
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 22 — model REQ-CS-22: transition to PAUSED and REQ 59 'Reverse Delivery' actions, model NOTIF-04); CITE-004: §2.4.1 HID 1.14 (flow sensor)";
|
|
613
|
+
}
|
|
614
|
+
part antiRefluxDesignControl : RiskControl {
|
|
615
|
+
attribute :>> id = "RC-011";
|
|
616
|
+
attribute :>> name = "ContinuousReverseDeliveryPrevention";
|
|
617
|
+
attribute :>> controlKind = RiskControlKind::inherentSafeDesign;
|
|
618
|
+
attribute :>> implementationKind = RiskControlImplementationKind::hardwareDesign;
|
|
619
|
+
attribute :>> verificationStatus = "planned";
|
|
620
|
+
attribute :>> sourceReference = "CITE-008: GPCA Safety Requirements (2009), Reverse delivery (during normal use and/or single fault condition, continuous reverse delivery shall not be possible; from IEC 601-2-24)";
|
|
621
|
+
}
|
|
622
|
+
part riskAfterReverse : RiskAfterMitigation {
|
|
623
|
+
attribute :>> id = "RISK-A-006";
|
|
624
|
+
attribute :>> name = "ReverseDeliveryRiskAfterMitigation";
|
|
625
|
+
attribute :>> driverKind = "risk";
|
|
626
|
+
attribute :>> probabilityEstimate = ProbabilityKind::remote;
|
|
627
|
+
attribute :>> severityEstimate = SeverityKind::serious;
|
|
628
|
+
attribute :>> riskLevel = CriticalityKind::medium;
|
|
629
|
+
attribute :>> acceptability = RiskAcceptabilityKind::alarp;
|
|
630
|
+
attribute :>> residualProbability = ProbabilityKind::remote;
|
|
631
|
+
attribute :>> residualSeverity = SeverityKind::serious;
|
|
632
|
+
attribute :>> residualAcceptability = RiskAcceptabilityKind::acceptable;
|
|
633
|
+
attribute :>> benefitRiskRequired = false;
|
|
634
|
+
attribute :>> sourceReference = "illustrative — no source";
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
// ═══ HZ-007: VTBI over-infusion ═════════════════════════════════
|
|
638
|
+
part vtbiOverInfusionHazard : Hazard {
|
|
639
|
+
attribute :>> id = "HZ-007";
|
|
640
|
+
attribute :>> name = "VtbiOverInfusion";
|
|
641
|
+
attribute :>> hazardType = HazardTypeKind::drugDeliveryError;
|
|
642
|
+
attribute :>> severity = SeverityKind::catastrophic;
|
|
643
|
+
attribute :>> foreseeable = true;
|
|
644
|
+
attribute :>> description = "Total volume infused exceeds the prescribed or drug-database maximum VTBI (volume to be infused).";
|
|
645
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 20: Over Infusion VTBI); CITE-008: GPCA Safety Requirements (2009), VTBI (range and increments) and Dose Error Reduction (hard/soft VTBI limits); CITE-004/CITE-007: Use Hazards HID 8.1 (overfill: incorrect fill volume specified)";
|
|
646
|
+
}
|
|
647
|
+
part causeVtbiTooHigh : HazardCause {
|
|
648
|
+
attribute :>> id = "CAUSE-021";
|
|
649
|
+
attribute :>> name = "IncorrectVtbiOrFillVolumeSpecified";
|
|
650
|
+
attribute :>> causeSource = CauseSourceKind::usageCause;
|
|
651
|
+
attribute :>> contributingFactors = "Overfill: incorrect fill volume or VTBI specified at programming time";
|
|
652
|
+
attribute :>> sourceReference = "CITE-004/CITE-007: GIP/GPCA hazard analysis (2009), Use Hazards HID 8.1 (overfill: incorrect fill volume specified; mitigated by barcode scanner)";
|
|
653
|
+
}
|
|
654
|
+
part causeStaleDrugLibrary : HazardCause {
|
|
655
|
+
attribute :>> id = "CAUSE-022";
|
|
656
|
+
attribute :>> name = "IncorrectOrOutdatedDrugLibraryLimits";
|
|
657
|
+
attribute :>> causeSource = CauseSourceKind::software;
|
|
658
|
+
attribute :>> contributingFactors = "Incorrect drug library or old version leaves VTBI limits wrong or missing";
|
|
659
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.5 Software Hazards HID 5.6 (incorrect dose administered: incorrect drug library, old version of drug library)";
|
|
660
|
+
}
|
|
661
|
+
part seqVtbiExceeded : SequenceOfEvents {
|
|
662
|
+
attribute :>> id = "SEQ-007";
|
|
663
|
+
attribute :>> name = "VtbiCeilingExceededSequence";
|
|
664
|
+
attribute :>> initiatingEvent = "Volume infused accumulates past the drug-database maximum VTBI during THERAPY";
|
|
665
|
+
attribute :>> contributingFactors = "Infusion-complete transition missed; VTBI limit misprogrammed or outdated";
|
|
666
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 20) and §4.1.6 (REQ 28: infusion complete at prescribed duration or maximum VTBI)";
|
|
667
|
+
}
|
|
668
|
+
part hsVtbiExceeded : HazardousSituation {
|
|
669
|
+
attribute :>> id = "HS-007";
|
|
670
|
+
attribute :>> name = "PatientReceivingVolumeBeyondPrescribedVtbi";
|
|
671
|
+
attribute :>> exposedPersons = "patient";
|
|
672
|
+
attribute :>> operatingCondition = "ACTIVE therapy continuing past the prescribed total volume";
|
|
673
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 20: actual volume infused exceeds the drug-database maximum VTBI)";
|
|
674
|
+
}
|
|
675
|
+
part riskBeforeVtbi : RiskBeforeMitigation {
|
|
676
|
+
attribute :>> id = "RISK-B-007";
|
|
677
|
+
attribute :>> name = "VtbiOverInfusionRiskBeforeMitigation";
|
|
678
|
+
attribute :>> driverKind = "risk";
|
|
679
|
+
attribute :>> probabilityEstimate = ProbabilityKind::occasional;
|
|
680
|
+
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
681
|
+
attribute :>> riskLevel = CriticalityKind::high;
|
|
682
|
+
attribute :>> acceptability = RiskAcceptabilityKind::unacceptable;
|
|
683
|
+
attribute :>> estimationBasis = "programming error rates for volume-based dose settings";
|
|
684
|
+
attribute :>> analysisContext = "prescription entry and long-running therapy volume accounting";
|
|
685
|
+
attribute :>> foreseeableMisuseIncluded = true;
|
|
686
|
+
attribute :>> sourceReference = "illustrative — no source";
|
|
687
|
+
}
|
|
688
|
+
part vtbiLimitPauseControl : RiskControl {
|
|
689
|
+
attribute :>> id = "RC-012";
|
|
690
|
+
attribute :>> name = "VtbiCeilingPauseAtKvo";
|
|
691
|
+
attribute :>> controlKind = RiskControlKind::alarm;
|
|
692
|
+
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
693
|
+
attribute :>> verificationStatus = "planned";
|
|
694
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 20 — model REQ-CS-20: transition to PAUSED and REQ 59 'Over Infusion VTBI' actions, model NOTIF-06); CITE-002: CriSys AADL v2.0, AGREE over-VTBI => flow <= KVO (model GP-008)";
|
|
695
|
+
}
|
|
696
|
+
part infusionCompleteControl : RiskControl {
|
|
697
|
+
attribute :>> id = "RC-013";
|
|
698
|
+
attribute :>> name = "InfusionCompleteStopAtVtbi";
|
|
699
|
+
attribute :>> controlKind = RiskControlKind::inherentSafeDesign;
|
|
700
|
+
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
701
|
+
attribute :>> verificationStatus = "planned";
|
|
702
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6 (REQ 28 — model REQ-CS-28: transition to IDLE when total volume infused reaches the programmed prescription maximum VTBI)";
|
|
703
|
+
}
|
|
704
|
+
part riskAfterVtbi : RiskAfterMitigation {
|
|
705
|
+
attribute :>> id = "RISK-A-007";
|
|
706
|
+
attribute :>> name = "VtbiOverInfusionRiskAfterMitigation";
|
|
707
|
+
attribute :>> driverKind = "risk";
|
|
708
|
+
attribute :>> probabilityEstimate = ProbabilityKind::remote;
|
|
709
|
+
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
710
|
+
attribute :>> riskLevel = CriticalityKind::medium;
|
|
711
|
+
attribute :>> acceptability = RiskAcceptabilityKind::alarp;
|
|
712
|
+
attribute :>> residualProbability = ProbabilityKind::remote;
|
|
713
|
+
attribute :>> residualSeverity = SeverityKind::catastrophic;
|
|
714
|
+
attribute :>> residualAcceptability = RiskAcceptabilityKind::acceptable;
|
|
715
|
+
attribute :>> benefitRiskRequired = false;
|
|
716
|
+
attribute :>> sourceReference = "illustrative — no source";
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
// ── Cross-cutting platform controls ─────────────────────────────
|
|
720
|
+
part watchdogControl : RiskControl {
|
|
721
|
+
attribute :>> id = "RC-007";
|
|
722
|
+
attribute :>> name = "HardwareWatchdogSafeState";
|
|
723
|
+
attribute :>> controlKind = RiskControlKind::protectiveMeasure;
|
|
724
|
+
attribute :>> implementationKind = RiskControlImplementationKind::hardwareDesign;
|
|
725
|
+
attribute :>> verificationStatus = "planned";
|
|
726
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.2 Alarms (watchdog alarm) and §2.3 Pump Checks (watchdog interrupt tests); CITE-008: GPCA Safety Requirements (2009), POST (watchdog test)";
|
|
727
|
+
}
|
|
728
|
+
part flowCrossCheckControl : RiskControl {
|
|
729
|
+
attribute :>> id = "RC-008";
|
|
730
|
+
attribute :>> name = "IndependentFlowCrossCheck";
|
|
731
|
+
attribute :>> controlKind = RiskControlKind::monitoring;
|
|
732
|
+
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
733
|
+
attribute :>> verificationStatus = "planned";
|
|
734
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.2/1.10/1.16 (flow sensor mitigation); CITE-008: GPCA Safety Requirements (2009), Flow rate accuracy (over-infusion and under-infusion alarms from flow sensor comparison)";
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
part residualEval : OverallResidualRiskEvaluation {
|
|
738
|
+
attribute :>> id = "RREV-001";
|
|
739
|
+
attribute :>> name = "OverallResidualRiskEvaluation";
|
|
740
|
+
attribute :>> conclusion = "Residual risk across opioid over-infusion, under-infusion, air embolism, misprogramming, free flow, reverse delivery, and VTBI over-infusion is acceptable given lockout and max-dose enforcement, KVO-pause alarm semantics for air/occlusion/VTBI/reverse-delivery conditions, drug-database limit checking with confirmation, administration-set free-flow prevention, door interlock, watchdog safe state, and independent flow cross-check, each with planned verification.";
|
|
741
|
+
attribute :>> reviewer = "Safety review";
|
|
742
|
+
attribute :>> sourceReference = "illustrative — no source";
|
|
743
|
+
}
|
|
744
|
+
}
|