@memoarchitect/ontology 0.8.22 → 0.10.9
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/README.md +1 -1
- package/examples/connected-patient-monitor/memo.package.yaml +3 -0
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +9 -7
- package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -1
- package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
- package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +11 -9
- package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
- package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
- package/examples/functional-logical-physical/memo.package.yaml +3 -0
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +9 -7
- package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
- package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
- package/examples/gpca-pump/memo.identity.yaml +2179 -0
- package/examples/gpca-pump/memo.package.yaml +3 -0
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +27 -23
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +15 -15
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +146 -180
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +290 -288
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +21 -33
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -11
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
- package/examples/gpca-pump/model/catalog/project.sysml +3 -1
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +7 -7
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +7 -7
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +7 -8
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +8 -9
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +7 -7
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +8 -9
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +8 -9
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +6 -6
- package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +10 -8
- package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -1
- package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
- package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +7 -5
- package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
- package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
- package/examples/multidimensional-layers/memo.package.yaml +3 -0
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -4
- package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
- package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
- package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +20 -18
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +6 -4
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +9 -7
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
- package/examples/nested-architecture-dsm/model/catalog/project.sysml +3 -1
- package/examples/reusable-instrument/memo.package.yaml +3 -0
- package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +23 -31
- package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
- package/examples/ros-mobile-robot/memo.package.yaml +3 -0
- package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
- package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +0 -1
- package/examples/software-only-medical-device/memo.package.yaml +3 -0
- package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -9
- package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
- package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
- package/examples/surgical-closure-workflow/model/catalog/project.sysml +3 -1
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +56 -69
- package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
- package/examples/surgical-robot/memo.package.yaml +3 -0
- package/examples/surgical-robot/model/catalog/project.sysml +3 -1
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
- package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
- package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
- package/examples/sysml-diagram-samples/model/catalog/project.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -11
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +4 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +3 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +17 -16
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +9 -8
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +4 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +3 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +4 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +12 -9
- package/examples/temperature-alarm/memo.identity.yaml +64 -0
- package/examples/temperature-alarm/memo.package.yaml +3 -0
- package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +30 -29
- package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
- package/examples/ui-screen-regions/memo.package.yaml +3 -0
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +14 -12
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +14 -12
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
- package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
- package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +6 -5
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +6 -5
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +6 -5
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +4 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +4 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +4 -3
- package/extensions/aadl/memo.package.yaml +1 -1
- package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
- package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
- package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
- package/extensions/cloud/memo.package.yaml +1 -1
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
- package/extensions/container/memo.package.yaml +1 -1
- package/extensions/container/src/container_extension.sysml +2 -2
- package/extensions/container/src/methodology/container_methodology.sysml +3 -1
- package/extensions/messaging/memo.package.yaml +1 -1
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
- package/extensions/ros/memo.package.yaml +1 -1
- package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
- package/extensions/template/src/extension.sysml +3 -1
- package/methodologies/default/memo.package.yaml +1 -1
- package/methodologies/gpca/memo.package.yaml +1 -1
- package/ontology/memo.package.yaml +1 -1
- package/package.json +2 -2
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/functional/behavior/memo_behavior.sysml +5 -5
- package/src/architecture/functional/functions/memo_functions.sysml +6 -6
- package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +7 -7
- package/src/architecture/implementation/ui/memo_ui.sysml +8 -31
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +4 -2
- package/src/architecture/logical/structure/memo_logical_structure.sysml +5 -5
- package/src/architecture/operational/activities/memo_activities.sysml +19 -28
- package/src/architecture/operational/context/actors/memo_actors.sysml +5 -4
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +7 -7
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +5 -14
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +12 -104
- package/src/architecture/operational/structure/memo_operational.sysml +42 -13
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -12
- package/src/architecture/operational/workflows/memo_workflows.sysml +20 -42
- package/src/architecture/realization/deployment/memo_deployment.sysml +26 -19
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
- package/src/artifacts/standards/cfr_21_820.sysml +80 -89
- package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
- package/src/artifacts/standards/iec_60601_1.sysml +108 -121
- package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
- package/src/artifacts/standards/iec_60812.sysml +21 -22
- package/src/artifacts/standards/iec_62304.sysml +150 -169
- package/src/artifacts/standards/iec_62366_1.sysml +80 -89
- package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
- package/src/artifacts/standards/iso_13485.sysml +80 -89
- package/src/artifacts/standards/iso_14971.sysml +66 -73
- package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
- package/src/artifacts/templates/dhf/system/sad.md +3 -3
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +2 -2
- package/src/assurance/human_factors/memo_human_factors.sysml +2 -2
- package/src/assurance/requirements/memo_requirements.sysml +2 -18
- package/src/assurance/safety_risk/analysis/memo_fmea.sysml +1 -1
- package/src/assurance/safety_risk/memo_risk.sysml +12 -0
- package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
- package/src/core/common/memo_common.sysml +59 -55
- package/src/core/enumerations/memo_enumerations.sysml +1 -1
- package/src/core/relationships/memo_relationships.sysml +29 -56
- package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
- package/src/methodology/core/memo_core.sysml +0 -10
- package/src/methodology/profiles/memo_profiles.sysml +18 -16
- package/src/methodology/workflow/memo_workflow.sysml +5 -5
- package/src/rules/closure/closure_rules.sysml +22 -20
- package/src/rules/crosslayer/cross_layer_rules.sysml +4 -2
- package/src/rules/ontology/ontology_invariants.sysml +121 -48
- package/src/rules/quantitative/quantitative_rules.sysml +4 -2
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +58 -57
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +5 -4
- package/src/viewpoints/context/context_viewpoint.sysml +6 -5
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +6 -5
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +6 -6
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +36 -4
- package/src/viewpoints/functional/functional_viewpoint.sysml +6 -5
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +6 -5
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +6 -5
- package/src/viewpoints/logical/logical_viewpoint.sysml +5 -4
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +6 -5
- package/src/viewpoints/operational/operational_viewpoint.sysml +6 -5
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +7 -6
- package/src/viewpoints/physical/physical_viewpoint.sysml +5 -4
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +6 -5
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +6 -5
- package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +5 -4
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +6 -5
- package/src/viewpoints/risk/risk_viewpoint.sysml +5 -4
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +6 -5
- package/src/viewpoints/software/software_viewpoint.sysml +5 -4
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +6 -5
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +5 -4
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
- package/src/viewpoints/usability/usability_viewpoint.sysml +5 -4
- package/src/viewpoints/verification/verification_viewpoint.sysml +5 -4
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +6 -5
- package/templates/connected-device/memo.package.yaml +2 -0
- package/templates/connected-device/model/catalog/project.sysml +3 -1
- package/templates/default/memo.package.yaml +2 -0
- package/templates/default/model/catalog/project.sysml +3 -1
- package/templates/infusion-pump/memo.package.yaml +2 -0
- package/templates/infusion-pump/model/catalog/project.sysml +3 -1
- package/templates/monitoring-device/memo.package.yaml +2 -0
- package/templates/monitoring-device/model/catalog/project.sysml +3 -1
- package/templates/samd/memo.package.yaml +2 -0
- package/templates/samd/model/catalog/project.sysml +3 -1
|
@@ -5,9 +5,10 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
5
5
|
private import memo_core_common::Citation;
|
|
6
6
|
private import memo_core_enumerations::*;
|
|
7
7
|
|
|
8
|
+
private import memo_core_common::MemoIdentity;
|
|
8
9
|
// ── Source corpus citations (verified 2026-07-05, extended 2026-07-08) ──
|
|
9
10
|
part citeCriSysSysReq : Citation {
|
|
10
|
-
|
|
11
|
+
@MemoIdentity { :>> providedId = "CITE-001"; }
|
|
11
12
|
attribute :>> name = "CriSysGpcaSystemRequirements";
|
|
12
13
|
attribute :>> source = "System Requirements: Generic Patient Controlled Analgesic Infusion (GPCA) System, draft — Murugesan, Rayadurgam, Heimdahl, University of Minnesota";
|
|
13
14
|
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";
|
|
@@ -15,7 +16,7 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
15
16
|
attribute :>> year = "2013";
|
|
16
17
|
}
|
|
17
18
|
part citeCriSysAadl : Citation {
|
|
18
|
-
|
|
19
|
+
@MemoIdentity { :>> providedId = "CITE-002"; }
|
|
19
20
|
attribute :>> name = "CriSysGpcaAadlModel";
|
|
20
21
|
attribute :>> source = "GPCA System Architectural Model v2.0 (AADL packages, AGREE contracts, ModelDocumentation.pdf) — University of Minnesota CriSys";
|
|
21
22
|
attribute :>> section = "8 software subcomponents + port topology + AGREE contracts";
|
|
@@ -23,7 +24,7 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
23
24
|
attribute :>> year = "undated";
|
|
24
25
|
}
|
|
25
26
|
part citeCriSysVerification : Citation {
|
|
26
|
-
|
|
27
|
+
@MemoIdentity { :>> providedId = "CITE-003"; }
|
|
27
28
|
attribute :>> name = "CriSysGpcaVerification";
|
|
28
29
|
attribute :>> source = "GPCA compositional verification package (AGREE properties, Simulink/Stateflow models) — University of Minnesota CriSys";
|
|
29
30
|
attribute :>> section = "Full package";
|
|
@@ -31,7 +32,7 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
31
32
|
attribute :>> year = "undated";
|
|
32
33
|
}
|
|
33
34
|
part citeGipHazardAnalysis : Citation {
|
|
34
|
-
|
|
35
|
+
@MemoIdentity { :>> providedId = "CITE-004"; }
|
|
35
36
|
attribute :>> name = "GipHazardAnalysis";
|
|
36
37
|
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
38
|
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";
|
|
@@ -39,7 +40,7 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
39
40
|
attribute :>> year = "2009";
|
|
40
41
|
}
|
|
41
42
|
part citeOpenPcaPump : Citation {
|
|
42
|
-
|
|
43
|
+
@MemoIdentity { :>> providedId = "CITE-005"; }
|
|
43
44
|
attribute :>> name = "OpenPcaPumpArtifacts";
|
|
44
45
|
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
46
|
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";
|
|
@@ -47,7 +48,7 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
47
48
|
attribute :>> year = "undated";
|
|
48
49
|
}
|
|
49
50
|
part citeGiipTaxonomy : Citation {
|
|
50
|
-
|
|
51
|
+
@MemoIdentity { :>> providedId = "CITE-006"; }
|
|
51
52
|
attribute :>> name = "FdaGiipHazardTaxonomy";
|
|
52
53
|
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
54
|
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";
|
|
@@ -55,7 +56,7 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
55
56
|
attribute :>> year = "2010";
|
|
56
57
|
}
|
|
57
58
|
part citeGpcaHazardDoc : Citation {
|
|
58
|
-
|
|
59
|
+
@MemoIdentity { :>> providedId = "CITE-007"; }
|
|
59
60
|
attribute :>> name = "FdaGpcaHazardAnalysisDoc";
|
|
60
61
|
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
62
|
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";
|
|
@@ -63,7 +64,7 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
63
64
|
attribute :>> year = "2009";
|
|
64
65
|
}
|
|
65
66
|
part citeGpcaSafetyReqDoc : Citation {
|
|
66
|
-
|
|
67
|
+
@MemoIdentity { :>> providedId = "CITE-008"; }
|
|
67
68
|
attribute :>> name = "FdaGpcaSafetyRequirementsDoc";
|
|
68
69
|
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
70
|
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";
|
|
@@ -72,7 +73,7 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
72
73
|
}
|
|
73
74
|
|
|
74
75
|
part citeCriSysSoftwareBehavior : Citation {
|
|
75
|
-
|
|
76
|
+
@MemoIdentity { :>> providedId = "CITE-009"; }
|
|
76
77
|
attribute :>> name = "CriSysGpcaSoftwareBehaviorModel";
|
|
77
78
|
attribute :>> source = "PCA Pump Software Model (Simulink/Stateflow) — University of Minnesota CriSys";
|
|
78
79
|
attribute :>> section = "Infusion Pump Software Model Stateflow chart";
|
|
@@ -82,31 +83,31 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
82
83
|
|
|
83
84
|
// ── Shared risk matrix ───────────────────────────────────────────
|
|
84
85
|
part riskMatrix : RiskMatrix {
|
|
85
|
-
|
|
86
|
+
@MemoIdentity { :>> providedId = "RMX-001"; }
|
|
86
87
|
attribute :>> name = "StandardRiskMatrix";
|
|
87
88
|
attribute :>> probabilityScaleDefinition = "Remote, Occasional, Probable";
|
|
88
89
|
attribute :>> severityScaleDefinition = "Minor, Serious, Catastrophic";
|
|
89
90
|
attribute :>> riskLevelMapping = "matrix based";
|
|
90
91
|
attribute :>> acceptabilityThresholds = "High unacceptable";
|
|
91
|
-
|
|
92
|
+
@MemoIdentity { :>> sourceReference = "illustrative — no source"; }
|
|
92
93
|
}
|
|
93
94
|
part programmedDoseCharacteristic : SafetyRelatedCharacteristic {
|
|
94
|
-
|
|
95
|
+
@MemoIdentity { :>> providedId = "SRC-001"; }
|
|
95
96
|
attribute :>> name = "ProgrammedDoseAndFlowLimits";
|
|
96
97
|
attribute :>> characteristic = "Programmable basal rate, bolus volume, lockout interval, and maximum dose";
|
|
97
98
|
attribute :>> safetyImpact = "Incorrect values or failed enforcement can expose the patient to over-infusion or under-infusion.";
|
|
98
99
|
attribute :>> normalUseRelevant = true;
|
|
99
100
|
attribute :>> faultConditionRelevant = true;
|
|
100
|
-
|
|
101
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), prescription and bolus parameters; CITE-004: GIP Hazard Analysis v1.0"; }
|
|
101
102
|
}
|
|
102
103
|
part analgesiaBenefit : Benefit {
|
|
103
|
-
|
|
104
|
+
@MemoIdentity { :>> providedId = "BEN-001"; }
|
|
104
105
|
attribute :>> name = "PatientTitratedAnalgesiaBenefit";
|
|
105
106
|
attribute :>> beneficialOutcome = "Timely pain relief using patient-titrated opioid delivery within prescribed limits.";
|
|
106
107
|
attribute :>> beneficiary = "patient";
|
|
107
108
|
attribute :>> clinicalSignificance = "Improved pain management with lower total opioid consumption than fixed-schedule dosing.";
|
|
108
109
|
attribute :>> supportingEvidence = "IU-001 intended-use clinical benefit and applicable clinical evidence.";
|
|
109
|
-
|
|
110
|
+
@MemoIdentity { :>> sourceReference = "IU-001"; }
|
|
110
111
|
}
|
|
111
112
|
|
|
112
113
|
// ═══ HZ-001: Opioid over-infusion ═══════════════════════════════
|
|
@@ -114,66 +115,66 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
114
115
|
// operational-hazard rows HID 1.1-1.3. Causal tree per GIIP
|
|
115
116
|
// pattern: categorized causes converge on the hazard.
|
|
116
117
|
part overdoseHazard : Hazard {
|
|
117
|
-
|
|
118
|
+
@MemoIdentity { :>> providedId = "HZ-001"; }
|
|
118
119
|
attribute :>> name = "OpioidOverInfusion";
|
|
119
120
|
attribute :>> hazardType = HazardTypeKind::drugDeliveryError;
|
|
120
121
|
attribute :>> severity = SeverityKind::catastrophic;
|
|
121
122
|
attribute :>> foreseeable = true;
|
|
122
123
|
attribute :>> description = "Drug delivered at a rate above the prescription (overinfusion).";
|
|
123
|
-
|
|
124
|
+
@MemoIdentity { :>> 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)"; }
|
|
124
125
|
}
|
|
125
126
|
part causeFlowRateTooHigh : HazardCause {
|
|
126
|
-
|
|
127
|
+
@MemoIdentity { :>> providedId = "CAUSE-001"; }
|
|
127
128
|
attribute :>> name = "ProgrammedFlowRateTooHigh";
|
|
128
129
|
attribute :>> causeSource = CauseSourceKind::operational;
|
|
129
130
|
attribute :>> contributingFactors = "Programmed value not checked against drug-database hard limits";
|
|
130
|
-
|
|
131
|
+
@MemoIdentity { :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.1 (programmed flow rate too high; mitigated by drug library)"; }
|
|
131
132
|
}
|
|
132
133
|
part causeFrequentBolus : HazardCause {
|
|
133
|
-
|
|
134
|
+
@MemoIdentity { :>> providedId = "CAUSE-002"; }
|
|
134
135
|
attribute :>> name = "BolusRequestsTooFrequent";
|
|
135
136
|
attribute :>> causeSource = CauseSourceKind::usageCause;
|
|
136
137
|
attribute :>> contributingFactors = "Patient bolus button pressed too often, or pressed by someone other than the patient (bolus by proxy)";
|
|
137
|
-
|
|
138
|
+
@MemoIdentity { :>> 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)"; }
|
|
138
139
|
}
|
|
139
140
|
part causeBolusVolumeTooHigh : HazardCause {
|
|
140
|
-
|
|
141
|
+
@MemoIdentity { :>> providedId = "CAUSE-003"; }
|
|
141
142
|
attribute :>> name = "ProgrammedBolusVolumeTooHigh";
|
|
142
143
|
attribute :>> causeSource = CauseSourceKind::operational;
|
|
143
144
|
attribute :>> contributingFactors = "Bolus volume or drug concentration programmed above safe limits";
|
|
144
|
-
|
|
145
|
+
@MemoIdentity { :>> 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)"; }
|
|
145
146
|
}
|
|
146
147
|
part causePumpCalibration : HazardCause {
|
|
147
|
-
|
|
148
|
+
@MemoIdentity { :>> providedId = "CAUSE-004"; }
|
|
148
149
|
attribute :>> name = "IncorrectPumpCalibrationOrMotorRunaway";
|
|
149
150
|
attribute :>> causeSource = CauseSourceKind::hardware;
|
|
150
151
|
attribute :>> contributingFactors = "Uncalibrated pumping mechanism or motor-driver fault drives flow above the commanded rate";
|
|
151
|
-
|
|
152
|
+
@MemoIdentity { :>> 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)"; }
|
|
152
153
|
}
|
|
153
154
|
part seqFrequentBolus : SequenceOfEvents {
|
|
154
|
-
|
|
155
|
+
@MemoIdentity { :>> providedId = "SEQ-001"; }
|
|
155
156
|
attribute :>> name = "RepeatedBolusOverDeliverySequence";
|
|
156
157
|
attribute :>> initiatingEvent = "Repeated patient bolus presses over time propagate through button-press detection and control logic to increased motor flow commands";
|
|
157
158
|
attribute :>> contributingFactors = "Lockout or max-dose filtering fails or is misconfigured";
|
|
158
|
-
|
|
159
|
+
@MemoIdentity { :>> 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)"; }
|
|
159
160
|
}
|
|
160
161
|
part hsExcessInfusion : HazardousSituation {
|
|
161
|
-
|
|
162
|
+
@MemoIdentity { :>> providedId = "HS-001"; }
|
|
162
163
|
attribute :>> name = "PatientExposedToOpioidOverDelivery";
|
|
163
164
|
attribute :>> exposedPersons = "patient";
|
|
164
165
|
attribute :>> operatingCondition = "ACTIVE therapy; opioid infused while the patient's respiration is deteriorating";
|
|
165
|
-
|
|
166
|
+
@MemoIdentity { :>> 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)"; }
|
|
166
167
|
}
|
|
167
168
|
part harmRespiratoryDepression : Harm {
|
|
168
|
-
|
|
169
|
+
@MemoIdentity { :>> providedId = "HM-001"; }
|
|
169
170
|
attribute :>> name = "RespiratoryDepression";
|
|
170
171
|
attribute :>> clinicalImpact = "respiratory depression progressing to cardiac arrest";
|
|
171
172
|
attribute :>> reversibility = "potentially irreversible";
|
|
172
173
|
attribute :>> severity = SeverityKind::catastrophic;
|
|
173
|
-
|
|
174
|
+
@MemoIdentity { :>> sourceReference = "CITE-005: Open PCA ISO 14971 risk analysis, §4 Table 1 (harm: cardiac arrest) and §5 (H1 respiratory depression, severity catastrophic)"; }
|
|
174
175
|
}
|
|
175
176
|
part riskBefore : Risk {
|
|
176
|
-
|
|
177
|
+
@MemoIdentity { :>> providedId = "RISK-B-001"; }
|
|
177
178
|
attribute :>> name = "OverInfusionInitialRisk";
|
|
178
179
|
attribute :>> driverKind = "risk";
|
|
179
180
|
attribute :>> probabilityEstimate = ProbabilityKind::occasional;
|
|
@@ -183,18 +184,18 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
183
184
|
attribute :>> estimationBasis = "mode and bolus hazard analysis";
|
|
184
185
|
attribute :>> analysisContext = "patient bolus and active mode control";
|
|
185
186
|
attribute :>> foreseeableMisuseIncluded = true;
|
|
186
|
-
|
|
187
|
+
@MemoIdentity { :>> sourceReference = "illustrative — no source"; }
|
|
187
188
|
}
|
|
188
189
|
part lockoutControl : RiskControlMeasure {
|
|
189
|
-
|
|
190
|
+
@MemoIdentity { :>> providedId = "RC-001"; }
|
|
190
191
|
attribute :>> name = "LockoutAndMaxDoseEnforcement";
|
|
191
192
|
attribute :>> controlKind = RiskControlKind::inherentSafeDesign;
|
|
192
193
|
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
193
194
|
attribute :>> verificationStatus = "planned";
|
|
194
|
-
|
|
195
|
+
@MemoIdentity { :>> 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)"; }
|
|
195
196
|
}
|
|
196
197
|
part riskAfter : ResidualRisk {
|
|
197
|
-
|
|
198
|
+
@MemoIdentity { :>> providedId = "RISK-A-001"; }
|
|
198
199
|
attribute :>> name = "OverInfusionResidualRisk";
|
|
199
200
|
attribute :>> driverKind = "risk";
|
|
200
201
|
attribute :>> probabilityEstimate = ProbabilityKind::remote;
|
|
@@ -202,78 +203,78 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
202
203
|
attribute :>> riskLevel = CriticalityKind::medium;
|
|
203
204
|
attribute :>> acceptability = RiskAcceptabilityKind::acceptable;
|
|
204
205
|
attribute :>> benefitRiskRequired = false;
|
|
205
|
-
|
|
206
|
+
@MemoIdentity { :>> sourceReference = "illustrative — no source"; }
|
|
206
207
|
}
|
|
207
208
|
|
|
208
209
|
// ═══ HZ-002: Under-infusion / therapy interruption ══════════════
|
|
209
210
|
part underdoseHazard : Hazard {
|
|
210
|
-
|
|
211
|
+
@MemoIdentity { :>> providedId = "HZ-002"; }
|
|
211
212
|
attribute :>> name = "UnderInfusion";
|
|
212
213
|
attribute :>> hazardType = HazardTypeKind::drugDeliveryError;
|
|
213
214
|
attribute :>> severity = SeverityKind::serious;
|
|
214
215
|
attribute :>> foreseeable = true;
|
|
215
216
|
attribute :>> description = "Delivered dose falls below prescription (underinfusion).";
|
|
216
|
-
|
|
217
|
+
@MemoIdentity { :>> 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)"; }
|
|
217
218
|
}
|
|
218
219
|
part causeOcclusion : HazardCause {
|
|
219
|
-
|
|
220
|
+
@MemoIdentity { :>> providedId = "CAUSE-005"; }
|
|
220
221
|
attribute :>> name = "LineOcclusion";
|
|
221
222
|
attribute :>> causeSource = CauseSourceKind::operational;
|
|
222
223
|
attribute :>> contributingFactors = "Supply-side or patient-side occlusion; kinked or clamped administration set";
|
|
223
|
-
|
|
224
|
+
@MemoIdentity { :>> 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)"; }
|
|
224
225
|
}
|
|
225
226
|
part causeReservoirEmpty : HazardCause {
|
|
226
|
-
|
|
227
|
+
@MemoIdentity { :>> providedId = "CAUSE-006"; }
|
|
227
228
|
attribute :>> name = "ReservoirEmptyOrLow";
|
|
228
229
|
attribute :>> causeSource = CauseSourceKind::operational;
|
|
229
230
|
attribute :>> contributingFactors = "Reservoir exhausted during therapy without timely replacement";
|
|
230
|
-
|
|
231
|
+
@MemoIdentity { :>> 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)"; }
|
|
231
232
|
}
|
|
232
233
|
part causeAirInLine : HazardCause {
|
|
233
|
-
|
|
234
|
+
@MemoIdentity { :>> providedId = "CAUSE-007"; }
|
|
234
235
|
attribute :>> name = "AirInLine";
|
|
235
236
|
attribute :>> causeSource = CauseSourceKind::operational;
|
|
236
237
|
attribute :>> contributingFactors = "Air enters the administration set and displaces drug delivery";
|
|
237
|
-
|
|
238
|
+
@MemoIdentity { :>> 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)"; }
|
|
238
239
|
}
|
|
239
240
|
part causePumpMechanismFails : HazardCause {
|
|
240
|
-
|
|
241
|
+
@MemoIdentity { :>> providedId = "CAUSE-008"; }
|
|
241
242
|
attribute :>> name = "PumpMotorFailsToStroke";
|
|
242
243
|
attribute :>> causeSource = CauseSourceKind::mechanical;
|
|
243
244
|
attribute :>> contributingFactors = "Motor failure or mechanism unable to stroke stops infusion";
|
|
244
|
-
|
|
245
|
+
@MemoIdentity { :>> 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)"; }
|
|
245
246
|
}
|
|
246
247
|
part causeFlowRateTooLow : HazardCause {
|
|
247
|
-
|
|
248
|
+
@MemoIdentity { :>> providedId = "CAUSE-009"; }
|
|
248
249
|
attribute :>> name = "ProgrammedFlowRateTooLow";
|
|
249
250
|
attribute :>> causeSource = CauseSourceKind::operational;
|
|
250
251
|
attribute :>> contributingFactors = "Programmed value below therapeutic range and not caught by drug-database limits";
|
|
251
|
-
|
|
252
|
+
@MemoIdentity { :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.5 (programmed flow rate too low; mitigated by drug library)"; }
|
|
252
253
|
}
|
|
253
254
|
part seqOcclusion : SequenceOfEvents {
|
|
254
|
-
|
|
255
|
+
@MemoIdentity { :>> providedId = "SEQ-002"; }
|
|
255
256
|
attribute :>> name = "UndetectedOcclusionSequence";
|
|
256
257
|
attribute :>> initiatingEvent = "Downstream line kinked or clamped during active therapy";
|
|
257
258
|
attribute :>> contributingFactors = "Occlusion not detected or alarm not annunciated; post-occlusion bolus released when the occlusion clears";
|
|
258
|
-
|
|
259
|
+
@MemoIdentity { :>> 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)"; }
|
|
259
260
|
}
|
|
260
261
|
part hsInterruptedTherapy : HazardousSituation {
|
|
261
|
-
|
|
262
|
+
@MemoIdentity { :>> providedId = "HS-002"; }
|
|
262
263
|
attribute :>> name = "PatientReceivingLessThanPrescribedDose";
|
|
263
264
|
attribute :>> exposedPersons = "patient";
|
|
264
265
|
attribute :>> operatingCondition = "ACTIVE therapy with blocked, exhausted, or failed fluid path";
|
|
265
|
-
|
|
266
|
+
@MemoIdentity { :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.5-1.10 (underinfusion)"; }
|
|
266
267
|
}
|
|
267
268
|
part harmUntreatedPain : Harm {
|
|
268
|
-
|
|
269
|
+
@MemoIdentity { :>> providedId = "HM-002"; }
|
|
269
270
|
attribute :>> name = "UntreatedPainAndClinicalDeterioration";
|
|
270
271
|
attribute :>> clinicalImpact = "uncontrolled pain, delayed recovery, post-occlusion bolus injury";
|
|
271
272
|
attribute :>> reversibility = "reversible with intervention";
|
|
272
273
|
attribute :>> severity = SeverityKind::serious;
|
|
273
|
-
|
|
274
|
+
@MemoIdentity { :>> 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)"; }
|
|
274
275
|
}
|
|
275
276
|
part riskBeforeUnderdose : Risk {
|
|
276
|
-
|
|
277
|
+
@MemoIdentity { :>> providedId = "RISK-B-002"; }
|
|
277
278
|
attribute :>> name = "UnderInfusionInitialRisk";
|
|
278
279
|
attribute :>> driverKind = "risk";
|
|
279
280
|
attribute :>> probabilityEstimate = ProbabilityKind::probable;
|
|
@@ -283,26 +284,26 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
283
284
|
attribute :>> estimationBasis = "occlusion and reservoir exhaustion frequency in ward use";
|
|
284
285
|
attribute :>> analysisContext = "fluid path monitoring during active therapy";
|
|
285
286
|
attribute :>> foreseeableMisuseIncluded = true;
|
|
286
|
-
|
|
287
|
+
@MemoIdentity { :>> sourceReference = "illustrative — no source"; }
|
|
287
288
|
}
|
|
288
289
|
part occlusionAlarmControl : RiskControlMeasure {
|
|
289
|
-
|
|
290
|
+
@MemoIdentity { :>> providedId = "RC-003"; }
|
|
290
291
|
attribute :>> name = "OcclusionDetectionAndKvoPause";
|
|
291
292
|
attribute :>> controlKind = RiskControlKind::alarm;
|
|
292
293
|
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
293
294
|
attribute :>> verificationStatus = "planned";
|
|
294
|
-
|
|
295
|
+
@MemoIdentity { :>> 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)"; }
|
|
295
296
|
}
|
|
296
297
|
part reservoirMonitorControl : RiskControlMeasure {
|
|
297
|
-
|
|
298
|
+
@MemoIdentity { :>> providedId = "RC-004"; }
|
|
298
299
|
attribute :>> name = "ReservoirEmptyDetectionAndAlarm";
|
|
299
300
|
attribute :>> controlKind = RiskControlKind::monitoring;
|
|
300
301
|
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
301
302
|
attribute :>> verificationStatus = "planned";
|
|
302
|
-
|
|
303
|
+
@MemoIdentity { :>> 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)"; }
|
|
303
304
|
}
|
|
304
305
|
part riskAfterUnderdose : ResidualRisk {
|
|
305
|
-
|
|
306
|
+
@MemoIdentity { :>> providedId = "RISK-A-002"; }
|
|
306
307
|
attribute :>> name = "UnderInfusionResidualRisk";
|
|
307
308
|
attribute :>> driverKind = "risk";
|
|
308
309
|
attribute :>> probabilityEstimate = ProbabilityKind::remote;
|
|
@@ -310,65 +311,65 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
310
311
|
attribute :>> riskLevel = CriticalityKind::medium;
|
|
311
312
|
attribute :>> acceptability = RiskAcceptabilityKind::acceptable;
|
|
312
313
|
attribute :>> benefitRiskRequired = false;
|
|
313
|
-
|
|
314
|
+
@MemoIdentity { :>> sourceReference = "illustrative — no source"; }
|
|
314
315
|
}
|
|
315
316
|
|
|
316
317
|
// ═══ HZ-003: Air embolism ═══════════════════════════════════════
|
|
317
318
|
// Primary hazard 2 of the Open PCA ISO 14971 analysis.
|
|
318
319
|
part airEmbolismHazard : Hazard {
|
|
319
|
-
|
|
320
|
+
@MemoIdentity { :>> providedId = "HZ-003"; }
|
|
320
321
|
attribute :>> name = "AirEmbolism";
|
|
321
322
|
attribute :>> hazardType = HazardTypeKind::drugDeliveryError;
|
|
322
323
|
attribute :>> severity = SeverityKind::catastrophic;
|
|
323
324
|
attribute :>> foreseeable = true;
|
|
324
325
|
attribute :>> description = "Air infused into the patient line above the clinically tolerable volume.";
|
|
325
|
-
|
|
326
|
+
@MemoIdentity { :>> 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)"; }
|
|
326
327
|
}
|
|
327
328
|
part causeImproperPriming : HazardCause {
|
|
328
|
-
|
|
329
|
+
@MemoIdentity { :>> providedId = "CAUSE-010"; }
|
|
329
330
|
attribute :>> name = "InappropriatePriming";
|
|
330
331
|
attribute :>> causeSource = CauseSourceKind::usageCause;
|
|
331
332
|
attribute :>> contributingFactors = "Infusion continued after set primed incompletely";
|
|
332
|
-
|
|
333
|
+
@MemoIdentity { :>> 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)"; }
|
|
333
334
|
}
|
|
334
335
|
part causeTubingLeak : HazardCause {
|
|
335
|
-
|
|
336
|
+
@MemoIdentity { :>> providedId = "CAUSE-011"; }
|
|
336
337
|
attribute :>> name = "TubingLeakageAdmitsAir";
|
|
337
338
|
attribute :>> causeSource = CauseSourceKind::mechanical;
|
|
338
339
|
attribute :>> contributingFactors = "Infusion continued under tubing leakage";
|
|
339
|
-
|
|
340
|
+
@MemoIdentity { :>> sourceReference = "CITE-005: Open PCA ISO 14971 risk analysis, §4 Table 1 (continue infusion under tubing leakage)"; }
|
|
340
341
|
}
|
|
341
342
|
part causeAirSensorSilent : HazardCause {
|
|
342
|
-
|
|
343
|
+
@MemoIdentity { :>> providedId = "CAUSE-012"; }
|
|
343
344
|
attribute :>> name = "AirSensorFailureSuppressesAlarm";
|
|
344
345
|
attribute :>> causeSource = CauseSourceKind::hardware;
|
|
345
346
|
attribute :>> contributingFactors = "Air sensor failed, disabled, or threshold miscalibrated so air passes undetected";
|
|
346
|
-
|
|
347
|
+
@MemoIdentity { :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.4 Hardware Hazards HID 4.13 (failure to alarm: sensor failure)"; }
|
|
347
348
|
}
|
|
348
349
|
part seqAirInLine : SequenceOfEvents {
|
|
349
|
-
|
|
350
|
+
@MemoIdentity { :>> providedId = "SEQ-003"; }
|
|
350
351
|
attribute :>> name = "AirEntersLineSequence";
|
|
351
352
|
attribute :>> initiatingEvent = "Infusion continues after inappropriate priming, with an empty reservoir, or under tubing leakage";
|
|
352
353
|
attribute :>> contributingFactors = "Air-in-line detection failed or thresholds miscalibrated";
|
|
353
|
-
|
|
354
|
+
@MemoIdentity { :>> 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)"; }
|
|
354
355
|
}
|
|
355
356
|
part hsAirTowardPatient : HazardousSituation {
|
|
356
|
-
|
|
357
|
+
@MemoIdentity { :>> providedId = "HS-003"; }
|
|
357
358
|
attribute :>> name = "AirInfusedIntoPatientBloodStream";
|
|
358
359
|
attribute :>> exposedPersons = "patient";
|
|
359
360
|
attribute :>> operatingCondition = "ACTIVE therapy with air in the administration set";
|
|
360
|
-
|
|
361
|
+
@MemoIdentity { :>> sourceReference = "CITE-005: Open PCA ISO 14971 risk analysis, §4 Table 1 (infusing air bubbles into the patient's blood stream)"; }
|
|
361
362
|
}
|
|
362
363
|
part harmAirEmbolism : Harm {
|
|
363
|
-
|
|
364
|
+
@MemoIdentity { :>> providedId = "HM-003"; }
|
|
364
365
|
attribute :>> name = "TissueOrOrganDamage";
|
|
365
366
|
attribute :>> clinicalImpact = "tissue or organ damage from vascular air embolism, potentially fatal";
|
|
366
367
|
attribute :>> reversibility = "potentially irreversible";
|
|
367
368
|
attribute :>> severity = SeverityKind::catastrophic;
|
|
368
|
-
|
|
369
|
+
@MemoIdentity { :>> sourceReference = "CITE-005: Open PCA ISO 14971 risk analysis, §4 Table 1 (harm: tissue or organ damage)"; }
|
|
369
370
|
}
|
|
370
371
|
part riskBeforeAir : Risk {
|
|
371
|
-
|
|
372
|
+
@MemoIdentity { :>> providedId = "RISK-B-003"; }
|
|
372
373
|
attribute :>> name = "AirEmbolismInitialRisk";
|
|
373
374
|
attribute :>> driverKind = "risk";
|
|
374
375
|
attribute :>> probabilityEstimate = ProbabilityKind::occasional;
|
|
@@ -378,18 +379,18 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
378
379
|
attribute :>> estimationBasis = "reservoir exhaustion and priming error frequency";
|
|
379
380
|
attribute :>> analysisContext = "fluid path integrity during active therapy";
|
|
380
381
|
attribute :>> foreseeableMisuseIncluded = true;
|
|
381
|
-
|
|
382
|
+
@MemoIdentity { :>> sourceReference = "illustrative — no source"; }
|
|
382
383
|
}
|
|
383
384
|
part airDetectionControl : RiskControlMeasure {
|
|
384
|
-
|
|
385
|
+
@MemoIdentity { :>> providedId = "RC-002"; }
|
|
385
386
|
attribute :>> name = "AirInLineDetectionAndKvoPause";
|
|
386
387
|
attribute :>> controlKind = RiskControlKind::protectiveMeasure;
|
|
387
388
|
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
388
389
|
attribute :>> verificationStatus = "planned";
|
|
389
|
-
|
|
390
|
+
@MemoIdentity { :>> 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"; }
|
|
390
391
|
}
|
|
391
392
|
part riskAfterAir : ResidualRisk {
|
|
392
|
-
|
|
393
|
+
@MemoIdentity { :>> providedId = "RISK-A-003"; }
|
|
393
394
|
attribute :>> name = "AirEmbolismResidualRisk";
|
|
394
395
|
attribute :>> driverKind = "risk";
|
|
395
396
|
attribute :>> probabilityEstimate = ProbabilityKind::remote;
|
|
@@ -397,70 +398,70 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
397
398
|
attribute :>> riskLevel = CriticalityKind::medium;
|
|
398
399
|
attribute :>> acceptability = RiskAcceptabilityKind::acceptable;
|
|
399
400
|
attribute :>> benefitRiskRequired = false;
|
|
400
|
-
|
|
401
|
+
@MemoIdentity { :>> sourceReference = "illustrative — no source"; }
|
|
401
402
|
}
|
|
402
403
|
|
|
403
404
|
// ═══ HZ-004: Incorrect therapy programmed (use error) ═══════════
|
|
404
405
|
part wrongDoseHazard : Hazard {
|
|
405
|
-
|
|
406
|
+
@MemoIdentity { :>> providedId = "HZ-004"; }
|
|
406
407
|
attribute :>> name = "IncorrectDrugOrDoseProgrammed";
|
|
407
408
|
attribute :>> hazardType = HazardTypeKind::useError;
|
|
408
409
|
attribute :>> severity = SeverityKind::catastrophic;
|
|
409
410
|
attribute :>> foreseeable = true;
|
|
410
411
|
attribute :>> description = "Prescription programmed or reservoir loaded so delivered therapy differs from the intended prescription.";
|
|
411
|
-
|
|
412
|
+
@MemoIdentity { :>> 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"; }
|
|
412
413
|
}
|
|
413
414
|
part causeWrongPrescriptionEntered : HazardCause {
|
|
414
|
-
|
|
415
|
+
@MemoIdentity { :>> providedId = "CAUSE-013"; }
|
|
415
416
|
attribute :>> name = "IncorrectPrescriptionEntered";
|
|
416
417
|
attribute :>> causeSource = CauseSourceKind::usageCause;
|
|
417
418
|
attribute :>> contributingFactors = "Attentional failure during prescription entry";
|
|
418
|
-
|
|
419
|
+
@MemoIdentity { :>> sourceReference = "CITE-004/CITE-007: GIP/GPCA hazard analysis (2009), Use Hazards HID 8.10 (attentional failure: incorrect prescription entered)"; }
|
|
419
420
|
}
|
|
420
421
|
part causeWrongDoseUnits : HazardCause {
|
|
421
|
-
|
|
422
|
+
@MemoIdentity { :>> providedId = "CAUSE-014"; }
|
|
422
423
|
attribute :>> name = "IncorrectDoseUnits";
|
|
423
424
|
attribute :>> causeSource = CauseSourceKind::usageCause;
|
|
424
425
|
attribute :>> contributingFactors = "Incorrect units used for dose parameters (e.g., ml/hr instead of mcg/hr)";
|
|
425
|
-
|
|
426
|
+
@MemoIdentity { :>> sourceReference = "CITE-004/CITE-007: GIP/GPCA hazard analysis (2009), Use Hazards HID 8.14 (incorrect dose mode; mitigated by barcode scanner)"; }
|
|
426
427
|
}
|
|
427
428
|
part causeWrongDrugLoaded : HazardCause {
|
|
428
|
-
|
|
429
|
+
@MemoIdentity { :>> providedId = "CAUSE-015"; }
|
|
429
430
|
attribute :>> name = "WrongPrescriptionOrDrugConcentration";
|
|
430
431
|
attribute :>> causeSource = CauseSourceKind::usageCause;
|
|
431
432
|
attribute :>> contributingFactors = "Incorrect prescription given to patient; incorrect drug concentration specified; look-alike packaging";
|
|
432
|
-
|
|
433
|
+
@MemoIdentity { :>> 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)"; }
|
|
433
434
|
}
|
|
434
435
|
part causeSettingsChangedInadvertently : HazardCause {
|
|
435
|
-
|
|
436
|
+
@MemoIdentity { :>> providedId = "CAUSE-016"; }
|
|
436
437
|
attribute :>> name = "SettingsChangedInadvertently";
|
|
437
438
|
attribute :>> causeSource = CauseSourceKind::usageCause;
|
|
438
439
|
attribute :>> contributingFactors = "User or patient changes infusion settings inadvertently during therapy";
|
|
439
|
-
|
|
440
|
+
@MemoIdentity { :>> 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)"; }
|
|
440
441
|
}
|
|
441
442
|
part causePumpRevertsToDefaults : HazardCause {
|
|
442
|
-
|
|
443
|
+
@MemoIdentity { :>> providedId = "CAUSE-017"; }
|
|
443
444
|
attribute :>> name = "PumpRevertsToDefaultDoseValues";
|
|
444
445
|
attribute :>> causeSource = CauseSourceKind::software;
|
|
445
446
|
attribute :>> contributingFactors = "Programmed dose set incorrectly; inappropriate reset to default values";
|
|
446
|
-
|
|
447
|
+
@MemoIdentity { :>> 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)"; }
|
|
447
448
|
}
|
|
448
449
|
part seqMisprogram : SequenceOfEvents {
|
|
449
|
-
|
|
450
|
+
@MemoIdentity { :>> providedId = "SEQ-004"; }
|
|
450
451
|
attribute :>> name = "MisprogrammingSequence";
|
|
451
452
|
attribute :>> initiatingEvent = "Prescription entered with wrong value, units, or drug and accepted for delivery";
|
|
452
453
|
attribute :>> contributingFactors = "Safe-value check against the pharmacy database skipped or unavailable; confirmation bypassed";
|
|
453
|
-
|
|
454
|
+
@MemoIdentity { :>> 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)"; }
|
|
454
455
|
}
|
|
455
456
|
part hsWrongTherapy : HazardousSituation {
|
|
456
|
-
|
|
457
|
+
@MemoIdentity { :>> providedId = "HS-004"; }
|
|
457
458
|
attribute :>> name = "PatientReceivingUnintendedTherapy";
|
|
458
459
|
attribute :>> exposedPersons = "patient";
|
|
459
460
|
attribute :>> operatingCondition = "therapy started from an unverified prescription";
|
|
460
|
-
|
|
461
|
+
@MemoIdentity { :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.25 and §2.4.8 Use Hazards (incorrect therapy rows)"; }
|
|
461
462
|
}
|
|
462
463
|
part riskBeforeWrongDose : Risk {
|
|
463
|
-
|
|
464
|
+
@MemoIdentity { :>> providedId = "RISK-B-004"; }
|
|
464
465
|
attribute :>> name = "MisprogrammingInitialRisk";
|
|
465
466
|
attribute :>> driverKind = "risk";
|
|
466
467
|
attribute :>> probabilityEstimate = ProbabilityKind::probable;
|
|
@@ -470,18 +471,18 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
470
471
|
attribute :>> estimationBasis = "published PCA misprogramming incident rates";
|
|
471
472
|
attribute :>> analysisContext = "prescription entry and reservoir loading tasks";
|
|
472
473
|
attribute :>> foreseeableMisuseIncluded = true;
|
|
473
|
-
|
|
474
|
+
@MemoIdentity { :>> sourceReference = "illustrative — no source"; }
|
|
474
475
|
}
|
|
475
476
|
part drugLibraryControl : RiskControlMeasure {
|
|
476
|
-
|
|
477
|
+
@MemoIdentity { :>> providedId = "RC-005"; }
|
|
477
478
|
attribute :>> name = "DrugDatabaseLimitsAndConfirmation";
|
|
478
479
|
attribute :>> controlKind = RiskControlKind::plausibilityCheck;
|
|
479
480
|
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
480
481
|
attribute :>> verificationStatus = "planned";
|
|
481
|
-
|
|
482
|
+
@MemoIdentity { :>> 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)"; }
|
|
482
483
|
}
|
|
483
484
|
part riskAfterWrongDose : ResidualRisk {
|
|
484
|
-
|
|
485
|
+
@MemoIdentity { :>> providedId = "RISK-A-004"; }
|
|
485
486
|
attribute :>> name = "MisprogrammingResidualRisk";
|
|
486
487
|
attribute :>> driverKind = "risk";
|
|
487
488
|
attribute :>> probabilityEstimate = ProbabilityKind::remote;
|
|
@@ -489,49 +490,49 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
489
490
|
attribute :>> riskLevel = CriticalityKind::medium;
|
|
490
491
|
attribute :>> acceptability = RiskAcceptabilityKind::acceptable;
|
|
491
492
|
attribute :>> benefitRiskRequired = true;
|
|
492
|
-
|
|
493
|
+
@MemoIdentity { :>> sourceReference = "illustrative — no source"; }
|
|
493
494
|
}
|
|
494
495
|
|
|
495
496
|
// ═══ HZ-005: Free flow ══════════════════════════════════════════
|
|
496
497
|
part freeFlowHazard : Hazard {
|
|
497
|
-
|
|
498
|
+
@MemoIdentity { :>> providedId = "HZ-005"; }
|
|
498
499
|
attribute :>> name = "GravityFreeFlow";
|
|
499
500
|
attribute :>> hazardType = HazardTypeKind::mechanicalFailure;
|
|
500
501
|
attribute :>> severity = SeverityKind::catastrophic;
|
|
501
502
|
attribute :>> foreseeable = true;
|
|
502
503
|
attribute :>> description = "Unregulated gravity flow of drug when the set is disengaged from the pumping mechanism.";
|
|
503
|
-
|
|
504
|
+
@MemoIdentity { :>> 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)"; }
|
|
504
505
|
}
|
|
505
506
|
part causeSetDisengaged : HazardCause {
|
|
506
|
-
|
|
507
|
+
@MemoIdentity { :>> providedId = "CAUSE-018"; }
|
|
507
508
|
attribute :>> name = "AdministrationSetDisengaged";
|
|
508
509
|
attribute :>> causeSource = CauseSourceKind::mechanical;
|
|
509
510
|
attribute :>> contributingFactors = "Set removed or loaded improperly with reservoir above patient level";
|
|
510
|
-
|
|
511
|
+
@MemoIdentity { :>> 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)"; }
|
|
511
512
|
}
|
|
512
513
|
part causeDoorOpenedDuringInfusion : HazardCause {
|
|
513
|
-
|
|
514
|
+
@MemoIdentity { :>> providedId = "CAUSE-019"; }
|
|
514
515
|
attribute :>> name = "DoorOpenedDuringInfusion";
|
|
515
516
|
attribute :>> causeSource = CauseSourceKind::environmental;
|
|
516
517
|
attribute :>> contributingFactors = "Panel/door opened during infusion, or infusion started when door open";
|
|
517
|
-
|
|
518
|
+
@MemoIdentity { :>> 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)"; }
|
|
518
519
|
}
|
|
519
520
|
part seqFreeFlow : SequenceOfEvents {
|
|
520
|
-
|
|
521
|
+
@MemoIdentity { :>> providedId = "SEQ-005"; }
|
|
521
522
|
attribute :>> name = "SetDisengagedSequence";
|
|
522
523
|
attribute :>> initiatingEvent = "Door opened / set removed with reservoir above patient level";
|
|
523
524
|
attribute :>> contributingFactors = "Anti-free-flow protection absent, defeated, or failed";
|
|
524
|
-
|
|
525
|
+
@MemoIdentity { :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.13 and §2.4.2 HID 2.9"; }
|
|
525
526
|
}
|
|
526
527
|
part hsFreeFlow : HazardousSituation {
|
|
527
|
-
|
|
528
|
+
@MemoIdentity { :>> providedId = "HS-005"; }
|
|
528
529
|
attribute :>> name = "PatientConnectedToUnregulatedFluidPath";
|
|
529
530
|
attribute :>> exposedPersons = "patient";
|
|
530
531
|
attribute :>> operatingCondition = "set change or door open with line still connected";
|
|
531
|
-
|
|
532
|
+
@MemoIdentity { :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.13 (free flow of drug)"; }
|
|
532
533
|
}
|
|
533
534
|
part riskBeforeFreeFlow : Risk {
|
|
534
|
-
|
|
535
|
+
@MemoIdentity { :>> providedId = "RISK-B-005"; }
|
|
535
536
|
attribute :>> name = "FreeFlowInitialRisk";
|
|
536
537
|
attribute :>> driverKind = "risk";
|
|
537
538
|
attribute :>> probabilityEstimate = ProbabilityKind::occasional;
|
|
@@ -541,26 +542,26 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
541
542
|
attribute :>> estimationBasis = "set-change frequency and historic free-flow incidents";
|
|
542
543
|
attribute :>> analysisContext = "reservoir and set handling during therapy";
|
|
543
544
|
attribute :>> foreseeableMisuseIncluded = true;
|
|
544
|
-
|
|
545
|
+
@MemoIdentity { :>> sourceReference = "illustrative — no source"; }
|
|
545
546
|
}
|
|
546
547
|
part freeFlowValveControl : RiskControlMeasure {
|
|
547
|
-
|
|
548
|
+
@MemoIdentity { :>> providedId = "RC-006"; }
|
|
548
549
|
attribute :>> name = "AdministrationSetFreeFlowPrevention";
|
|
549
550
|
attribute :>> controlKind = RiskControlKind::inherentSafeDesign;
|
|
550
551
|
attribute :>> implementationKind = RiskControlImplementationKind::hardwareDesign;
|
|
551
552
|
attribute :>> verificationStatus = "planned";
|
|
552
|
-
|
|
553
|
+
@MemoIdentity { :>> 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)"; }
|
|
553
554
|
}
|
|
554
555
|
part doorInterlockControl : RiskControlMeasure {
|
|
555
|
-
|
|
556
|
+
@MemoIdentity { :>> providedId = "RC-009"; }
|
|
556
557
|
attribute :>> name = "DoorOpenDeliveryInhibit";
|
|
557
558
|
attribute :>> controlKind = RiskControlKind::interlock;
|
|
558
559
|
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
559
560
|
attribute :>> verificationStatus = "planned";
|
|
560
|
-
|
|
561
|
+
@MemoIdentity { :>> 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"; }
|
|
561
562
|
}
|
|
562
563
|
part riskAfterFreeFlow : ResidualRisk {
|
|
563
|
-
|
|
564
|
+
@MemoIdentity { :>> providedId = "RISK-A-005"; }
|
|
564
565
|
attribute :>> name = "FreeFlowResidualRisk";
|
|
565
566
|
attribute :>> driverKind = "risk";
|
|
566
567
|
attribute :>> probabilityEstimate = ProbabilityKind::improbable;
|
|
@@ -568,42 +569,42 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
568
569
|
attribute :>> riskLevel = CriticalityKind::medium;
|
|
569
570
|
attribute :>> acceptability = RiskAcceptabilityKind::acceptable;
|
|
570
571
|
attribute :>> benefitRiskRequired = false;
|
|
571
|
-
|
|
572
|
+
@MemoIdentity { :>> sourceReference = "illustrative — no source"; }
|
|
572
573
|
}
|
|
573
574
|
|
|
574
575
|
// ═══ HZ-006: Reverse delivery ═══════════════════════════════════
|
|
575
576
|
part reverseDeliveryHazard : Hazard {
|
|
576
|
-
|
|
577
|
+
@MemoIdentity { :>> providedId = "HZ-006"; }
|
|
577
578
|
attribute :>> name = "ReverseDelivery";
|
|
578
579
|
attribute :>> hazardType = HazardTypeKind::drugDeliveryError;
|
|
579
580
|
attribute :>> severity = SeverityKind::serious;
|
|
580
581
|
attribute :>> foreseeable = true;
|
|
581
582
|
attribute :>> description = "Drug or body fluid drawn backwards through the administration set (bleed back / reflux).";
|
|
582
|
-
|
|
583
|
+
@MemoIdentity { :>> 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)"; }
|
|
583
584
|
}
|
|
584
585
|
part causeBleedBack : HazardCause {
|
|
585
|
-
|
|
586
|
+
@MemoIdentity { :>> providedId = "CAUSE-020"; }
|
|
586
587
|
attribute :>> name = "BleedBackRefluxWithinDevice";
|
|
587
588
|
attribute :>> causeSource = CauseSourceKind::operational;
|
|
588
589
|
attribute :>> contributingFactors = "Pressure gradient or mechanism fault reverses flow through the set";
|
|
589
|
-
|
|
590
|
+
@MemoIdentity { :>> 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)"; }
|
|
590
591
|
}
|
|
591
592
|
part seqReverseDelivery : SequenceOfEvents {
|
|
592
|
-
|
|
593
|
+
@MemoIdentity { :>> providedId = "SEQ-006"; }
|
|
593
594
|
attribute :>> name = "SustainedReverseFlowSequence";
|
|
594
595
|
attribute :>> initiatingEvent = "Reflux within the device draws drug or blood back through the administration set";
|
|
595
596
|
attribute :>> contributingFactors = "Reverse flow undetected; continuous episode or cumulative episodes exceed the permitted duration limits";
|
|
596
|
-
|
|
597
|
+
@MemoIdentity { :>> 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"; }
|
|
597
598
|
}
|
|
598
599
|
part hsReverseFlow : HazardousSituation {
|
|
599
|
-
|
|
600
|
+
@MemoIdentity { :>> providedId = "HS-006"; }
|
|
600
601
|
attribute :>> name = "PatientLineFlowReversed";
|
|
601
602
|
attribute :>> exposedPersons = "patient";
|
|
602
603
|
attribute :>> operatingCondition = "THERAPY with reverse flow past the continuous or cumulative duration limits";
|
|
603
|
-
|
|
604
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 22); CITE-008: GPCA Safety Requirements (2009), Reverse delivery"; }
|
|
604
605
|
}
|
|
605
606
|
part riskBeforeReverse : Risk {
|
|
606
|
-
|
|
607
|
+
@MemoIdentity { :>> providedId = "RISK-B-006"; }
|
|
607
608
|
attribute :>> name = "ReverseDeliveryInitialRisk";
|
|
608
609
|
attribute :>> driverKind = "risk";
|
|
609
610
|
attribute :>> probabilityEstimate = ProbabilityKind::occasional;
|
|
@@ -613,26 +614,26 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
613
614
|
attribute :>> estimationBasis = "reflux behavior of pumping mechanisms under adverse pressure gradients";
|
|
614
615
|
attribute :>> analysisContext = "fluid path integrity during active therapy";
|
|
615
616
|
attribute :>> foreseeableMisuseIncluded = true;
|
|
616
|
-
|
|
617
|
+
@MemoIdentity { :>> sourceReference = "illustrative — no source"; }
|
|
617
618
|
}
|
|
618
619
|
part reverseDeliveryPauseControl : RiskControlMeasure {
|
|
619
|
-
|
|
620
|
+
@MemoIdentity { :>> providedId = "RC-010"; }
|
|
620
621
|
attribute :>> name = "ReverseDeliveryDetectionAndPause";
|
|
621
622
|
attribute :>> controlKind = RiskControlKind::alarm;
|
|
622
623
|
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
623
624
|
attribute :>> verificationStatus = "planned";
|
|
624
|
-
|
|
625
|
+
@MemoIdentity { :>> 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)"; }
|
|
625
626
|
}
|
|
626
627
|
part antiRefluxDesignControl : RiskControlMeasure {
|
|
627
|
-
|
|
628
|
+
@MemoIdentity { :>> providedId = "RC-011"; }
|
|
628
629
|
attribute :>> name = "ContinuousReverseDeliveryPrevention";
|
|
629
630
|
attribute :>> controlKind = RiskControlKind::inherentSafeDesign;
|
|
630
631
|
attribute :>> implementationKind = RiskControlImplementationKind::hardwareDesign;
|
|
631
632
|
attribute :>> verificationStatus = "planned";
|
|
632
|
-
|
|
633
|
+
@MemoIdentity { :>> 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)"; }
|
|
633
634
|
}
|
|
634
635
|
part riskAfterReverse : ResidualRisk {
|
|
635
|
-
|
|
636
|
+
@MemoIdentity { :>> providedId = "RISK-A-006"; }
|
|
636
637
|
attribute :>> name = "ReverseDeliveryResidualRisk";
|
|
637
638
|
attribute :>> driverKind = "risk";
|
|
638
639
|
attribute :>> probabilityEstimate = ProbabilityKind::remote;
|
|
@@ -640,49 +641,49 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
640
641
|
attribute :>> riskLevel = CriticalityKind::medium;
|
|
641
642
|
attribute :>> acceptability = RiskAcceptabilityKind::acceptable;
|
|
642
643
|
attribute :>> benefitRiskRequired = false;
|
|
643
|
-
|
|
644
|
+
@MemoIdentity { :>> sourceReference = "illustrative — no source"; }
|
|
644
645
|
}
|
|
645
646
|
|
|
646
647
|
// ═══ HZ-007: VTBI over-infusion ═════════════════════════════════
|
|
647
648
|
part vtbiOverInfusionHazard : Hazard {
|
|
648
|
-
|
|
649
|
+
@MemoIdentity { :>> providedId = "HZ-007"; }
|
|
649
650
|
attribute :>> name = "VtbiOverInfusion";
|
|
650
651
|
attribute :>> hazardType = HazardTypeKind::drugDeliveryError;
|
|
651
652
|
attribute :>> severity = SeverityKind::catastrophic;
|
|
652
653
|
attribute :>> foreseeable = true;
|
|
653
654
|
attribute :>> description = "Total volume infused exceeds the prescribed or drug-database maximum VTBI (volume to be infused).";
|
|
654
|
-
|
|
655
|
+
@MemoIdentity { :>> 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)"; }
|
|
655
656
|
}
|
|
656
657
|
part causeVtbiTooHigh : HazardCause {
|
|
657
|
-
|
|
658
|
+
@MemoIdentity { :>> providedId = "CAUSE-021"; }
|
|
658
659
|
attribute :>> name = "IncorrectVtbiOrFillVolumeSpecified";
|
|
659
660
|
attribute :>> causeSource = CauseSourceKind::usageCause;
|
|
660
661
|
attribute :>> contributingFactors = "Overfill: incorrect fill volume or VTBI specified at programming time";
|
|
661
|
-
|
|
662
|
+
@MemoIdentity { :>> sourceReference = "CITE-004/CITE-007: GIP/GPCA hazard analysis (2009), Use Hazards HID 8.1 (overfill: incorrect fill volume specified; mitigated by barcode scanner)"; }
|
|
662
663
|
}
|
|
663
664
|
part causeStaleDrugLibrary : HazardCause {
|
|
664
|
-
|
|
665
|
+
@MemoIdentity { :>> providedId = "CAUSE-022"; }
|
|
665
666
|
attribute :>> name = "IncorrectOrOutdatedDrugLibraryLimits";
|
|
666
667
|
attribute :>> causeSource = CauseSourceKind::software;
|
|
667
668
|
attribute :>> contributingFactors = "Incorrect drug library or old version leaves VTBI limits wrong or missing";
|
|
668
|
-
|
|
669
|
+
@MemoIdentity { :>> 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)"; }
|
|
669
670
|
}
|
|
670
671
|
part seqVtbiExceeded : SequenceOfEvents {
|
|
671
|
-
|
|
672
|
+
@MemoIdentity { :>> providedId = "SEQ-007"; }
|
|
672
673
|
attribute :>> name = "VtbiCeilingExceededSequence";
|
|
673
674
|
attribute :>> initiatingEvent = "Volume infused accumulates past the drug-database maximum VTBI during THERAPY";
|
|
674
675
|
attribute :>> contributingFactors = "Infusion-complete transition missed; VTBI limit misprogrammed or outdated";
|
|
675
|
-
|
|
676
|
+
@MemoIdentity { :>> 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)"; }
|
|
676
677
|
}
|
|
677
678
|
part hsVtbiExceeded : HazardousSituation {
|
|
678
|
-
|
|
679
|
+
@MemoIdentity { :>> providedId = "HS-007"; }
|
|
679
680
|
attribute :>> name = "PatientReceivingVolumeBeyondPrescribedVtbi";
|
|
680
681
|
attribute :>> exposedPersons = "patient";
|
|
681
682
|
attribute :>> operatingCondition = "ACTIVE therapy continuing past the prescribed total volume";
|
|
682
|
-
|
|
683
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 20: actual volume infused exceeds the drug-database maximum VTBI)"; }
|
|
683
684
|
}
|
|
684
685
|
part riskBeforeVtbi : Risk {
|
|
685
|
-
|
|
686
|
+
@MemoIdentity { :>> providedId = "RISK-B-007"; }
|
|
686
687
|
attribute :>> name = "VtbiOverInfusionInitialRisk";
|
|
687
688
|
attribute :>> driverKind = "risk";
|
|
688
689
|
attribute :>> probabilityEstimate = ProbabilityKind::occasional;
|
|
@@ -692,26 +693,26 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
692
693
|
attribute :>> estimationBasis = "programming error rates for volume-based dose settings";
|
|
693
694
|
attribute :>> analysisContext = "prescription entry and long-running therapy volume accounting";
|
|
694
695
|
attribute :>> foreseeableMisuseIncluded = true;
|
|
695
|
-
|
|
696
|
+
@MemoIdentity { :>> sourceReference = "illustrative — no source"; }
|
|
696
697
|
}
|
|
697
698
|
part vtbiLimitPauseControl : RiskControlMeasure {
|
|
698
|
-
|
|
699
|
+
@MemoIdentity { :>> providedId = "RC-012"; }
|
|
699
700
|
attribute :>> name = "VtbiCeilingPauseAtKvo";
|
|
700
701
|
attribute :>> controlKind = RiskControlKind::alarm;
|
|
701
702
|
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
702
703
|
attribute :>> verificationStatus = "planned";
|
|
703
|
-
|
|
704
|
+
@MemoIdentity { :>> 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)"; }
|
|
704
705
|
}
|
|
705
706
|
part infusionCompleteControl : RiskControlMeasure {
|
|
706
|
-
|
|
707
|
+
@MemoIdentity { :>> providedId = "RC-013"; }
|
|
707
708
|
attribute :>> name = "InfusionCompleteStopAtVtbi";
|
|
708
709
|
attribute :>> controlKind = RiskControlKind::inherentSafeDesign;
|
|
709
710
|
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
710
711
|
attribute :>> verificationStatus = "planned";
|
|
711
|
-
|
|
712
|
+
@MemoIdentity { :>> 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)"; }
|
|
712
713
|
}
|
|
713
714
|
part riskAfterVtbi : ResidualRisk {
|
|
714
|
-
|
|
715
|
+
@MemoIdentity { :>> providedId = "RISK-A-007"; }
|
|
715
716
|
attribute :>> name = "VtbiOverInfusionResidualRisk";
|
|
716
717
|
attribute :>> driverKind = "risk";
|
|
717
718
|
attribute :>> probabilityEstimate = ProbabilityKind::remote;
|
|
@@ -719,32 +720,32 @@ package memo_examples_gpca_pump_gpca_risk {
|
|
|
719
720
|
attribute :>> riskLevel = CriticalityKind::medium;
|
|
720
721
|
attribute :>> acceptability = RiskAcceptabilityKind::acceptable;
|
|
721
722
|
attribute :>> benefitRiskRequired = false;
|
|
722
|
-
|
|
723
|
+
@MemoIdentity { :>> sourceReference = "illustrative — no source"; }
|
|
723
724
|
}
|
|
724
725
|
|
|
725
726
|
// ── Cross-cutting platform controls ─────────────────────────────
|
|
726
727
|
part watchdogControl : RiskControlMeasure {
|
|
727
|
-
|
|
728
|
+
@MemoIdentity { :>> providedId = "RC-007"; }
|
|
728
729
|
attribute :>> name = "HardwareWatchdogSafeState";
|
|
729
730
|
attribute :>> controlKind = RiskControlKind::protectiveMeasure;
|
|
730
731
|
attribute :>> implementationKind = RiskControlImplementationKind::hardwareDesign;
|
|
731
732
|
attribute :>> verificationStatus = "planned";
|
|
732
|
-
|
|
733
|
+
@MemoIdentity { :>> 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)"; }
|
|
733
734
|
}
|
|
734
735
|
part flowCrossCheckControl : RiskControlMeasure {
|
|
735
|
-
|
|
736
|
+
@MemoIdentity { :>> providedId = "RC-008"; }
|
|
736
737
|
attribute :>> name = "IndependentFlowCrossCheck";
|
|
737
738
|
attribute :>> controlKind = RiskControlKind::monitoring;
|
|
738
739
|
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
739
740
|
attribute :>> verificationStatus = "planned";
|
|
740
|
-
|
|
741
|
+
@MemoIdentity { :>> 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)"; }
|
|
741
742
|
}
|
|
742
743
|
|
|
743
744
|
part residualEval : OverallResidualRiskEvaluation {
|
|
744
|
-
|
|
745
|
+
@MemoIdentity { :>> providedId = "RREV-001"; }
|
|
745
746
|
attribute :>> name = "OverallResidualRiskEvaluation";
|
|
746
747
|
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.";
|
|
747
748
|
attribute :>> reviewer = "Safety review";
|
|
748
|
-
|
|
749
|
+
@MemoIdentity { :>> sourceReference = "illustrative — no source"; }
|
|
749
750
|
}
|
|
750
751
|
}
|