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