@memoarchitect/ontology 0.4.5 → 0.6.0
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 -4
- package/examples/connected-patient-monitor/README.md +7 -0
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +70 -0
- package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +3 -0
- package/examples/connected-patient-monitor/model/viewpoints/connected_patient_monitor_overview.sysml +6 -0
- package/examples/embedded-infusion-pump/README.md +7 -0
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +66 -0
- package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +3 -0
- package/examples/embedded-infusion-pump/model/viewpoints/embedded_infusion_pump_overview.sysml +6 -0
- package/examples/extensions/README.md +16 -0
- package/examples/extensions/clinical/memo.package.yaml +9 -0
- package/examples/extensions/clinical/src/clinical_extension.sysml +3 -0
- package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +14 -0
- package/examples/extensions/clinical/src/procedures/memo_clinical_procedures.sysml +16 -0
- package/examples/extensions/template/memo.package.yaml +9 -0
- package/examples/extensions/template/src/extension.sysml +15 -0
- package/examples/functional-logical-physical/README.md +7 -0
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +50 -0
- package/examples/functional-logical-physical/model/functional_logical_physical.sysml +3 -0
- package/examples/functional-logical-physical/model/viewpoints/functional_logical_physical_overview.sysml +6 -0
- package/examples/gpca-pump/README.md +26 -0
- package/examples/gpca-pump/dhf/documents/DOC-RMP-001.md +1 -1
- package/examples/gpca-pump/memo.config.yaml +2 -2
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +1 -1
- package/examples/gpca-pump/methodology/gpca_scope.sysml +2 -2
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +10 -10
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +17 -6
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +11 -11
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +35 -22
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +25 -6
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +6 -6
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +29 -15
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +293 -169
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +139 -21
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +210 -105
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +66 -69
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +43 -76
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +73 -70
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +27 -27
- package/examples/gpca-pump/model/views/context_system_context_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_architecture_description_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_cyber_assessment_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_hazard_analysis_view.sysml +1 -1
- package/examples/gpca-pump/model/views/document_rmf_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_sdd_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_threat_model_view.sysml +1 -1
- package/examples/gpca-pump/model/views/document_usability_view.sysml +1 -1
- package/examples/gpca-pump/model/views/document_vv_view.sysml +1 -1
- package/examples/gpca-pump/model/views/functional_function_allocation_view.sysml +1 -1
- package/examples/gpca-pump/model/views/functional_function_browser_view.sysml +1 -1
- package/examples/gpca-pump/model/views/logical_device_interconnect_view.sysml +1 -1
- package/examples/gpca-pump/model/views/logical_mode_state_view.sysml +1 -1
- package/examples/gpca-pump/model/views/logical_system_decomposition_view.sysml +1 -1
- package/examples/gpca-pump/model/views/operational_scenario_sequence_view.sysml +1 -1
- package/examples/gpca-pump/model/views/operational_use_case_view.sysml +6 -6
- package/examples/gpca-pump/model/views/physical_physical_bom_view.sysml +1 -1
- package/examples/gpca-pump/model/views/requirements_requirements_trace_view.sysml +1 -1
- package/examples/gpca-pump/model/views/risk_risk_chain_view.sysml +2 -2
- package/examples/gpca-pump/model/views/software_software_architecture_view.sysml +1 -1
- package/examples/gpca-pump/model/views/verification_verification_coverage_view.sysml +1 -1
- package/examples/ivd-laboratory-system/README.md +7 -0
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +58 -0
- package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +3 -0
- package/examples/ivd-laboratory-system/model/viewpoints/ivd_laboratory_system_overview.sysml +6 -0
- package/examples/manual-surgical-instrument/README.md +7 -0
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +41 -0
- package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +3 -0
- package/examples/manual-surgical-instrument/model/viewpoints/manual_surgical_instrument_overview.sysml +6 -0
- package/examples/multidimensional-layers/README.md +7 -0
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +51 -0
- package/examples/multidimensional-layers/model/multidimensional_layers.sysml +4 -0
- package/examples/multidimensional-layers/model/viewpoints/multidimensional_layers_overview.sysml +13 -0
- package/examples/reusable-instrument/README.md +7 -0
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +71 -0
- package/examples/reusable-instrument/model/reusable_instrument.sysml +4 -0
- package/examples/reusable-instrument/model/viewpoints/reusable_instrument_overview.sysml +13 -0
- package/examples/software-only-medical-device/README.md +7 -0
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +62 -0
- package/examples/software-only-medical-device/model/software_only_medical_device.sysml +4 -0
- package/examples/software-only-medical-device/model/viewpoints/software_only_medical_device_overview.sysml +13 -0
- package/examples/surgical-closure-workflow/README.md +8 -0
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +151 -0
- package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +4 -0
- package/examples/surgical-closure-workflow/model/viewpoints/surgical_closure_workflow_overview.sysml +13 -0
- package/examples/surgical-robot/README.md +7 -0
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +58 -0
- package/examples/surgical-robot/model/surgical_robot.sysml +4 -0
- package/examples/surgical-robot/model/viewpoints/surgical_robot_overview.sysml +13 -0
- package/examples/sysml-diagram-samples/README.md +32 -0
- package/examples/sysml-diagram-samples/memo.package.yaml +5 -0
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/action_flow_view.sysml +22 -4
- package/examples/sysml-diagram-samples/model/samples/context_view.sysml +55 -0
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/functional_flow_view.sysml +17 -6
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/interconnection_view.sysml +4 -3
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/operational_behaviour_view.sysml +32 -42
- package/examples/sysml-diagram-samples/model/samples/requirements_view.sysml +63 -0
- package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +109 -0
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/tree_view.sysml +3 -3
- package/examples/sysml-diagram-samples/model/samples/use_case_view.sysml +81 -0
- package/examples/temperature-alarm/README.md +7 -0
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +140 -0
- package/examples/temperature-alarm/model/temperature_alarm.sysml +4 -0
- package/examples/temperature-alarm/model/viewpoints/temperature_alarm_overview.sysml +13 -0
- package/memo.manifest.yaml +4 -1
- package/methodologies/default/memo.package.yaml +1 -1
- package/methodologies/gpca/memo.package.yaml +4 -4
- package/ontology/memo.package.yaml +1 -1
- package/ontology/memo.rendering.yaml +37 -0
- package/package.json +17 -7
- package/profile/memo.package.yaml +1 -1
- package/profile/templates/connected-device/starter.sysml +3 -3
- package/profile/templates/infusion-pump/starter.sysml +3 -3
- package/profile/templates/monitoring-device/starter.sysml +3 -3
- package/profile/templates/samd/starter.sysml +3 -3
- package/src/architecture/decisions/memo_decisions.sysml +1 -1
- package/src/architecture/{behavior → functional/behavior}/memo_behavior.sysml +12 -11
- package/src/architecture/{constraints → functional/constraints}/memo_constraints.sysml +2 -2
- package/src/architecture/functional/functions/memo_functions.sysml +81 -0
- package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +46 -0
- package/src/architecture/implementation/hardware/electrical/memo_hardware_electrical.sysml +36 -0
- package/src/architecture/implementation/hardware/fluidic/memo_hardware_fluidic.sysml +14 -0
- package/src/architecture/implementation/hardware/mechanical/memo_hardware_mechanical.sysml +14 -0
- package/src/architecture/implementation/hardware/optical/memo_hardware_optical.sysml +11 -0
- package/src/architecture/implementation/hardware/sensing/memo_hardware_sensing.sysml +17 -0
- package/src/architecture/implementation/hardware/structure/memo_hardware_structure.sysml +12 -0
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +70 -0
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +80 -0
- package/src/architecture/implementation/ui/memo_ui.sysml +159 -0
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +102 -0
- package/src/architecture/logical/structure/memo_logical_structure.sysml +150 -0
- package/src/architecture/operational/activities/memo_activities.sysml +86 -0
- package/src/architecture/operational/context/actors/memo_actors.sysml +38 -0
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +64 -0
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +53 -0
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +116 -0
- package/src/architecture/operational/structure/memo_operational.sysml +26 -0
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +67 -0
- package/src/architecture/operational/workflows/memo_workflows.sysml +126 -0
- package/src/architecture/realization/deployment/memo_deployment.sysml +90 -0
- package/src/architecture/{physical → realization/physical}/memo_physical_architecture.sysml +12 -1
- package/src/artifacts/definitions/memo_artifact_definitions.sysml +1 -1
- package/src/{architecture → assurance}/cybersecurity/memo_cybersecurity.sysml +14 -10
- package/src/assurance/human_factors/memo_human_factors.sysml +50 -0
- package/src/{architecture → assurance}/requirements/memo_requirements.sysml +45 -21
- package/src/assurance/requirements/needs/memo_needs.sysml +43 -0
- package/src/{architecture → assurance/safety_risk}/analysis/memo_fmea.sysml +13 -13
- package/src/{architecture/risk → assurance/safety_risk}/memo_arch_risk.sysml +2 -2
- package/src/{architecture/risk → assurance/safety_risk}/memo_risk.sysml +25 -16
- package/src/assurance/verification_validation/memo_assurance.sysml +49 -0
- package/src/compliance/artifacts/memo_artifacts.sysml +1 -1
- package/src/compliance/change/memo_change.sysml +2 -2
- package/src/compliance/dhf-templates/21cfr820/design-input.md +1 -1
- package/src/compliance/dhf-templates/21cfr820/design-validation.md +1 -1
- package/src/compliance/dhf-templates/21cfr820/user-needs.md +2 -2
- package/src/compliance/dhf-templates/iec-62366/urra.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/fmea.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/har.md +4 -4
- package/src/compliance/dhf-templates/iso-14971/risk-matrix.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/rmp.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/rmr.md +1 -1
- package/src/compliance/iso14971/risk_management_file.sysml +1 -1
- package/src/compliance/postmarket/memo_postmarket.sysml +2 -2
- package/src/core/common/memo_common.sysml +123 -14
- package/src/core/consistency_rules/consistency_rules.sysml +2 -2
- package/src/core/dimensions/dimensions.sysml +45 -24
- package/src/core/enumerations/memo_enumerations.sysml +11 -16
- package/src/core/methodology_scope/methodology_scope.sysml +10 -28
- package/src/core/relationships/memo_relationships.sysml +178 -146
- package/src/core/stdlib/{collections.sysml → collections/collections.sysml} +1 -1
- package/src/core/stdlib/{functions.sysml → functions/functions.sysml} +1 -1
- package/src/core/stdlib/{scalars.sysml → scalars/scalars.sysml} +1 -1
- package/src/core/stdlib/{time.sysml → time/time.sysml} +1 -1
- package/src/core/terminology/terminology.sysml +35 -0
- package/src/memo_namespaces.sysml +247 -302
- package/src/methodology/{memo_core.sysml → core/memo_core.sysml} +19 -13
- package/src/methodology/{memo_gates.sysml → gates/memo_gates.sysml} +1 -1
- package/src/methodology/{memo_patterns.sysml → patterns/memo_patterns.sysml} +1 -1
- package/src/methodology/{memo_profiles.sysml → profiles/memo_profiles.sysml} +27 -35
- package/src/methodology/{memo_workflow.sysml → workflow/memo_workflow.sysml} +1 -1
- package/src/rules/closure/closure_rules.sysml +11 -11
- package/src/rules/coverage/coverage_rules.sysml +8 -8
- package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
- package/src/rules/lifecycle/lifecycle_rules.sysml +1 -1
- package/src/rules/ontology/ontology_invariants.sysml +133 -0
- package/src/rules/quantitative/quantitative_rules.sysml +2 -2
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +189 -0
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +0 -1
- package/src/viewpoints/context/context_viewpoint.sysml +1 -2
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +1 -2
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +8 -8
- package/src/viewpoints/functional/{function_allocation_view.sysml → function_allocation_view/function_allocation_view.sysml} +1 -1
- package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
- package/src/viewpoints/functional/{system_functional_tree_view.sysml → system_functional_tree_view/system_functional_tree_view.sysml} +1 -1
- package/src/viewpoints/logical/logical_viewpoint.sysml +0 -1
- package/src/viewpoints/operational/operational_viewpoint.sysml +1 -2
- package/src/viewpoints/operational/{use_case_view.sysml → use_case_view/use_case_view.sysml} +1 -1
- package/src/viewpoints/physical/physical_viewpoint.sysml +0 -1
- package/src/viewpoints/requirements/{requirements_traceability_view.sysml → requirements_traceability_view/requirements_traceability_view.sysml} +1 -1
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
- package/src/viewpoints/risk/{risk_chain_view.sysml → risk_chain_view/risk_chain_view.sysml} +2 -2
- package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
- package/src/viewpoints/software/{software_architecture_view.sysml → software_architecture_view/software_architecture_view.sysml} +1 -1
- package/src/viewpoints/software/software_viewpoint.sysml +1 -2
- package/src/viewpoints/usability/usability_viewpoint.sysml +0 -1
- package/src/viewpoints/verification/verification_viewpoint.sysml +0 -1
- package/template/memo.package.yaml +1 -1
- package/template/src/catalog/starter.sysml +3 -3
- package/examples/gpca-pump/model/samples/README.md +0 -24
- package/examples/gpca-pump/model/samples/action_flow_view.viewlayout +0 -9
- package/examples/gpca-pump/model/samples/interconnection_view.viewlayout +0 -99
- package/src/architecture/assurance/memo_assurance.sysml +0 -29
- package/src/architecture/context/memo_context.sysml +0 -58
- package/src/architecture/functions/memo_functions.sysml +0 -30
- package/src/architecture/hardware_structure/memo_hardware_structure.sysml +0 -15
- package/src/architecture/interfaces/memo_interfaces.sysml +0 -103
- package/src/architecture/logical_structure/memo_logical_structure.sysml +0 -10
- package/src/architecture/operational/memo_operational.sysml +0 -51
- package/src/architecture/software_structure/memo_software_structure.sysml +0 -44
- package/src/architecture/system/memo_system_analysis.sysml +0 -54
- package/src/artifacts/clinical_safety_report.sysml +0 -12
- package/src/artifacts/cybersecurity_assessment_report.sysml +0 -12
- package/src/artifacts/design_change_log.sysml +0 -12
- package/src/artifacts/design_history_file_index.sysml +0 -12
- package/src/artifacts/design_input_plan.sysml +0 -12
- package/src/artifacts/design_output_plan.sysml +0 -12
- package/src/artifacts/evidence_record.sysml +0 -12
- package/src/artifacts/failure_mode_effects_analysis.sysml +0 -12
- package/src/artifacts/hazard_analysis_report.sysml +0 -12
- package/src/artifacts/labeling_specification.sysml +0 -12
- package/src/artifacts/requirements_specification.sysml +0 -12
- package/src/artifacts/requirements_traceability_matrix.sysml +0 -12
- package/src/artifacts/risk_management_plan.sysml +0 -12
- package/src/artifacts/software_design_description.sysml +0 -12
- package/src/artifacts/software_development_plan.sysml +0 -12
- package/src/artifacts/soup_list.sysml +0 -12
- package/src/artifacts/system_architecture_description.sysml +0 -12
- package/src/artifacts/test_protocol.sysml +0 -12
- package/src/artifacts/test_report.sysml +0 -12
- package/src/artifacts/threat_model_report.sysml +0 -12
- package/src/artifacts/usability_engineering_report.sysml +0 -12
- package/src/medical_device_library.sysml +0 -100
- /package/src/methodology/{memo_archetypes.sysml → archetypes/memo_archetypes.sysml} +0 -0
- /package/src/methodology/{memo_rules.sysml → rules/memo_rules.sysml} +0 -0
- /package/src/methodology/{memo_viewpoints.sysml → viewpoints/memo_viewpoints.sysml} +0 -0
- /package/src/viewpoints/clinical/{clinical_evidence_view.sysml → clinical_evidence_view/clinical_evidence_view.sysml} +0 -0
- /package/src/viewpoints/context/{system_context_view.sysml → system_context_view/system_context_view.sysml} +0 -0
- /package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view.sysml → cybersecurity_assessment_view/cybersecurity_assessment_view.sysml} +0 -0
- /package/src/viewpoints/cybersecurity/{threat_model_view.sysml → threat_model_view/threat_model_view.sysml} +0 -0
- /package/src/viewpoints/logical/{logical_architecture_view.sysml → logical_architecture_view/logical_architecture_view.sysml} +0 -0
- /package/src/viewpoints/physical/{network_topology_view.sysml → network_topology_view/network_topology_view.sysml} +0 -0
- /package/src/viewpoints/physical/{physical_bom_view.sysml → physical_bom_view/physical_bom_view.sysml} +0 -0
- /package/src/viewpoints/usability/{usability_engineering_view.sysml → usability_engineering_view/usability_engineering_view.sysml} +0 -0
- /package/src/viewpoints/verification/{verification_coverage_view.sysml → verification_coverage_view/verification_coverage_view.sysml} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
|
-
private import
|
|
4
|
+
private import memo_assurance_safety_risk::*;
|
|
5
5
|
private import memo_core_common::Citation;
|
|
6
6
|
private import memo_core_enumerations::*;
|
|
7
7
|
|
|
@@ -81,6 +81,24 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
81
81
|
attribute :>> acceptabilityThresholds = "High unacceptable";
|
|
82
82
|
attribute :>> sourceReference = "illustrative — no source";
|
|
83
83
|
}
|
|
84
|
+
part programmedDoseCharacteristic : SafetyRelatedCharacteristic {
|
|
85
|
+
attribute :>> id = "SRC-001";
|
|
86
|
+
attribute :>> name = "ProgrammedDoseAndFlowLimits";
|
|
87
|
+
attribute :>> characteristic = "Programmable basal rate, bolus volume, lockout interval, and maximum dose";
|
|
88
|
+
attribute :>> safetyImpact = "Incorrect values or failed enforcement can expose the patient to over-infusion or under-infusion.";
|
|
89
|
+
attribute :>> normalUseRelevant = true;
|
|
90
|
+
attribute :>> faultConditionRelevant = true;
|
|
91
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), prescription and bolus parameters; CITE-004: GIP Hazard Analysis v1.0";
|
|
92
|
+
}
|
|
93
|
+
part analgesiaBenefit : Benefit {
|
|
94
|
+
attribute :>> id = "BEN-001";
|
|
95
|
+
attribute :>> name = "PatientTitratedAnalgesiaBenefit";
|
|
96
|
+
attribute :>> beneficialOutcome = "Timely pain relief using patient-titrated opioid delivery within prescribed limits.";
|
|
97
|
+
attribute :>> beneficiary = "patient";
|
|
98
|
+
attribute :>> clinicalSignificance = "Improved pain management with lower total opioid consumption than fixed-schedule dosing.";
|
|
99
|
+
attribute :>> supportingEvidence = "IU-001 intended-use clinical benefit and applicable clinical evidence.";
|
|
100
|
+
attribute :>> sourceReference = "IU-001";
|
|
101
|
+
}
|
|
84
102
|
|
|
85
103
|
// ═══ HZ-001: Opioid over-infusion ═══════════════════════════════
|
|
86
104
|
// Primary hazard 1 of the Open PCA ISO 14971 analysis; GIP
|
|
@@ -145,9 +163,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
145
163
|
attribute :>> severity = SeverityKind::catastrophic;
|
|
146
164
|
attribute :>> sourceReference = "CITE-005: Open PCA ISO 14971 risk analysis, §4 Table 1 (harm: cardiac arrest) and §5 (H1 respiratory depression, severity catastrophic)";
|
|
147
165
|
}
|
|
148
|
-
part riskBefore :
|
|
166
|
+
part riskBefore : Risk {
|
|
149
167
|
attribute :>> id = "RISK-B-001";
|
|
150
|
-
attribute :>> name = "
|
|
168
|
+
attribute :>> name = "OverInfusionInitialRisk";
|
|
151
169
|
attribute :>> driverKind = "risk";
|
|
152
170
|
attribute :>> probabilityEstimate = ProbabilityKind::occasional;
|
|
153
171
|
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
@@ -158,7 +176,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
158
176
|
attribute :>> foreseeableMisuseIncluded = true;
|
|
159
177
|
attribute :>> sourceReference = "illustrative — no source";
|
|
160
178
|
}
|
|
161
|
-
part lockoutControl :
|
|
179
|
+
part lockoutControl : RiskControlMeasure {
|
|
162
180
|
attribute :>> id = "RC-001";
|
|
163
181
|
attribute :>> name = "LockoutAndMaxDoseEnforcement";
|
|
164
182
|
attribute :>> controlKind = RiskControlKind::inherentSafeDesign;
|
|
@@ -166,17 +184,14 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
166
184
|
attribute :>> verificationStatus = "planned";
|
|
167
185
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.9 (REQ 25/26 — model REQ-CS-25/26: ignore bolus requests during lockout or past max doses per hour); CITE-002: CriSys AADL v2.0, GPCA_SW AGREE lockout guarantee (model GP-002)";
|
|
168
186
|
}
|
|
169
|
-
part riskAfter :
|
|
187
|
+
part riskAfter : ResidualRisk {
|
|
170
188
|
attribute :>> id = "RISK-A-001";
|
|
171
|
-
attribute :>> name = "
|
|
189
|
+
attribute :>> name = "OverInfusionResidualRisk";
|
|
172
190
|
attribute :>> driverKind = "risk";
|
|
173
191
|
attribute :>> probabilityEstimate = ProbabilityKind::remote;
|
|
174
192
|
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
175
193
|
attribute :>> riskLevel = CriticalityKind::medium;
|
|
176
|
-
attribute :>> acceptability = RiskAcceptabilityKind::
|
|
177
|
-
attribute :>> residualProbability = ProbabilityKind::remote;
|
|
178
|
-
attribute :>> residualSeverity = SeverityKind::catastrophic;
|
|
179
|
-
attribute :>> residualAcceptability = RiskAcceptabilityKind::acceptable;
|
|
194
|
+
attribute :>> acceptability = RiskAcceptabilityKind::acceptable;
|
|
180
195
|
attribute :>> benefitRiskRequired = false;
|
|
181
196
|
attribute :>> sourceReference = "illustrative — no source";
|
|
182
197
|
}
|
|
@@ -248,9 +263,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
248
263
|
attribute :>> severity = SeverityKind::serious;
|
|
249
264
|
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 (underinfusion rows); CITE-008: GPCA Safety Requirements (2009), Flow rate accuracy (underinfusion alarm)";
|
|
250
265
|
}
|
|
251
|
-
part riskBeforeUnderdose :
|
|
266
|
+
part riskBeforeUnderdose : Risk {
|
|
252
267
|
attribute :>> id = "RISK-B-002";
|
|
253
|
-
attribute :>> name = "
|
|
268
|
+
attribute :>> name = "UnderInfusionInitialRisk";
|
|
254
269
|
attribute :>> driverKind = "risk";
|
|
255
270
|
attribute :>> probabilityEstimate = ProbabilityKind::probable;
|
|
256
271
|
attribute :>> severityEstimate = SeverityKind::serious;
|
|
@@ -261,7 +276,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
261
276
|
attribute :>> foreseeableMisuseIncluded = true;
|
|
262
277
|
attribute :>> sourceReference = "illustrative — no source";
|
|
263
278
|
}
|
|
264
|
-
part occlusionAlarmControl :
|
|
279
|
+
part occlusionAlarmControl : RiskControlMeasure {
|
|
265
280
|
attribute :>> id = "RC-003";
|
|
266
281
|
attribute :>> name = "OcclusionDetectionAndKvoPause";
|
|
267
282
|
attribute :>> controlKind = RiskControlKind::alarm;
|
|
@@ -269,7 +284,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
269
284
|
attribute :>> verificationStatus = "planned";
|
|
270
285
|
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.2 Alarms (occlusion); CITE-008: GPCA Safety Requirements (2009), Occlusion alarm; CITE-002: CriSys AADL v2.0, AGREE occlusion => flow <= KVO (model GP-010; model extension REQ-X-04)";
|
|
271
286
|
}
|
|
272
|
-
part reservoirMonitorControl :
|
|
287
|
+
part reservoirMonitorControl : RiskControlMeasure {
|
|
273
288
|
attribute :>> id = "RC-004";
|
|
274
289
|
attribute :>> name = "ReservoirEmptyDetectionAndAlarm";
|
|
275
290
|
attribute :>> controlKind = RiskControlKind::monitoring;
|
|
@@ -277,17 +292,14 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
277
292
|
attribute :>> verificationStatus = "planned";
|
|
278
293
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 23 — model REQ-CS-23: empty-reservoir pause) and §4.3 REQ 59 (Empty Reservoir row); CITE-002: CriSys AADL v2.0, AGREE empty reservoir => no flow (model GP-007); CITE-004: §2.2 Alarms (empty reservoir) and Alerts (low reservoir)";
|
|
279
294
|
}
|
|
280
|
-
part riskAfterUnderdose :
|
|
295
|
+
part riskAfterUnderdose : ResidualRisk {
|
|
281
296
|
attribute :>> id = "RISK-A-002";
|
|
282
|
-
attribute :>> name = "
|
|
297
|
+
attribute :>> name = "UnderInfusionResidualRisk";
|
|
283
298
|
attribute :>> driverKind = "risk";
|
|
284
299
|
attribute :>> probabilityEstimate = ProbabilityKind::remote;
|
|
285
300
|
attribute :>> severityEstimate = SeverityKind::serious;
|
|
286
301
|
attribute :>> riskLevel = CriticalityKind::medium;
|
|
287
|
-
attribute :>> acceptability = RiskAcceptabilityKind::
|
|
288
|
-
attribute :>> residualProbability = ProbabilityKind::remote;
|
|
289
|
-
attribute :>> residualSeverity = SeverityKind::serious;
|
|
290
|
-
attribute :>> residualAcceptability = RiskAcceptabilityKind::acceptable;
|
|
302
|
+
attribute :>> acceptability = RiskAcceptabilityKind::acceptable;
|
|
291
303
|
attribute :>> benefitRiskRequired = false;
|
|
292
304
|
attribute :>> sourceReference = "illustrative — no source";
|
|
293
305
|
}
|
|
@@ -346,9 +358,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
346
358
|
attribute :>> severity = SeverityKind::catastrophic;
|
|
347
359
|
attribute :>> sourceReference = "CITE-005: Open PCA ISO 14971 risk analysis, §4 Table 1 (harm: tissue or organ damage)";
|
|
348
360
|
}
|
|
349
|
-
part riskBeforeAir :
|
|
361
|
+
part riskBeforeAir : Risk {
|
|
350
362
|
attribute :>> id = "RISK-B-003";
|
|
351
|
-
attribute :>> name = "
|
|
363
|
+
attribute :>> name = "AirEmbolismInitialRisk";
|
|
352
364
|
attribute :>> driverKind = "risk";
|
|
353
365
|
attribute :>> probabilityEstimate = ProbabilityKind::occasional;
|
|
354
366
|
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
@@ -359,7 +371,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
359
371
|
attribute :>> foreseeableMisuseIncluded = true;
|
|
360
372
|
attribute :>> sourceReference = "illustrative — no source";
|
|
361
373
|
}
|
|
362
|
-
part airDetectionControl :
|
|
374
|
+
part airDetectionControl : RiskControlMeasure {
|
|
363
375
|
attribute :>> id = "RC-002";
|
|
364
376
|
attribute :>> name = "AirInLineDetectionAndKvoPause";
|
|
365
377
|
attribute :>> controlKind = RiskControlKind::protectiveMeasure;
|
|
@@ -367,17 +379,14 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
367
379
|
attribute :>> verificationStatus = "planned";
|
|
368
380
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 21 — model REQ-CS-21: air-embolism pause on single or cumulative bubble volume); CITE-002: CriSys AADL v2.0, AGREE air-in-line => flow <= KVO (model GP-009); CITE-008: GPCA Safety Requirements (2009), Air-in-line alarm";
|
|
369
381
|
}
|
|
370
|
-
part riskAfterAir :
|
|
382
|
+
part riskAfterAir : ResidualRisk {
|
|
371
383
|
attribute :>> id = "RISK-A-003";
|
|
372
|
-
attribute :>> name = "
|
|
384
|
+
attribute :>> name = "AirEmbolismResidualRisk";
|
|
373
385
|
attribute :>> driverKind = "risk";
|
|
374
386
|
attribute :>> probabilityEstimate = ProbabilityKind::remote;
|
|
375
387
|
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
376
388
|
attribute :>> riskLevel = CriticalityKind::medium;
|
|
377
|
-
attribute :>> acceptability = RiskAcceptabilityKind::
|
|
378
|
-
attribute :>> residualProbability = ProbabilityKind::remote;
|
|
379
|
-
attribute :>> residualSeverity = SeverityKind::catastrophic;
|
|
380
|
-
attribute :>> residualAcceptability = RiskAcceptabilityKind::acceptable;
|
|
389
|
+
attribute :>> acceptability = RiskAcceptabilityKind::acceptable;
|
|
381
390
|
attribute :>> benefitRiskRequired = false;
|
|
382
391
|
attribute :>> sourceReference = "illustrative — no source";
|
|
383
392
|
}
|
|
@@ -441,9 +450,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
441
450
|
attribute :>> operatingCondition = "therapy started from an unverified prescription";
|
|
442
451
|
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.25 and §2.4.8 Use Hazards (incorrect therapy rows)";
|
|
443
452
|
}
|
|
444
|
-
part riskBeforeWrongDose :
|
|
453
|
+
part riskBeforeWrongDose : Risk {
|
|
445
454
|
attribute :>> id = "RISK-B-004";
|
|
446
|
-
attribute :>> name = "
|
|
455
|
+
attribute :>> name = "MisprogrammingInitialRisk";
|
|
447
456
|
attribute :>> driverKind = "risk";
|
|
448
457
|
attribute :>> probabilityEstimate = ProbabilityKind::probable;
|
|
449
458
|
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
@@ -454,7 +463,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
454
463
|
attribute :>> foreseeableMisuseIncluded = true;
|
|
455
464
|
attribute :>> sourceReference = "illustrative — no source";
|
|
456
465
|
}
|
|
457
|
-
part drugLibraryControl :
|
|
466
|
+
part drugLibraryControl : RiskControlMeasure {
|
|
458
467
|
attribute :>> id = "RC-005";
|
|
459
468
|
attribute :>> name = "DrugDatabaseLimitsAndConfirmation";
|
|
460
469
|
attribute :>> controlKind = RiskControlKind::plausibilityCheck;
|
|
@@ -462,17 +471,14 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
462
471
|
attribute :>> verificationStatus = "planned";
|
|
463
472
|
attribute :>> sourceReference = "CITE-008: GPCA Safety Requirements (2009), Dose Error Reduction (drug library hard/soft limits, re-entry and confirmation prompts) and User Interface (two-step setting changes, confirmation); CITE-001: CriSys GPCA System Requirements (2013), Ch.3 Pharmacy DB interface (safe-value lookup)";
|
|
464
473
|
}
|
|
465
|
-
part riskAfterWrongDose :
|
|
474
|
+
part riskAfterWrongDose : ResidualRisk {
|
|
466
475
|
attribute :>> id = "RISK-A-004";
|
|
467
|
-
attribute :>> name = "
|
|
476
|
+
attribute :>> name = "MisprogrammingResidualRisk";
|
|
468
477
|
attribute :>> driverKind = "risk";
|
|
469
478
|
attribute :>> probabilityEstimate = ProbabilityKind::remote;
|
|
470
479
|
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
471
480
|
attribute :>> riskLevel = CriticalityKind::medium;
|
|
472
|
-
attribute :>> acceptability = RiskAcceptabilityKind::
|
|
473
|
-
attribute :>> residualProbability = ProbabilityKind::remote;
|
|
474
|
-
attribute :>> residualSeverity = SeverityKind::catastrophic;
|
|
475
|
-
attribute :>> residualAcceptability = RiskAcceptabilityKind::acceptable;
|
|
481
|
+
attribute :>> acceptability = RiskAcceptabilityKind::acceptable;
|
|
476
482
|
attribute :>> benefitRiskRequired = true;
|
|
477
483
|
attribute :>> sourceReference = "illustrative — no source";
|
|
478
484
|
}
|
|
@@ -515,9 +521,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
515
521
|
attribute :>> operatingCondition = "set change or door open with line still connected";
|
|
516
522
|
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.1 HID 1.13 (free flow of drug)";
|
|
517
523
|
}
|
|
518
|
-
part riskBeforeFreeFlow :
|
|
524
|
+
part riskBeforeFreeFlow : Risk {
|
|
519
525
|
attribute :>> id = "RISK-B-005";
|
|
520
|
-
attribute :>> name = "
|
|
526
|
+
attribute :>> name = "FreeFlowInitialRisk";
|
|
521
527
|
attribute :>> driverKind = "risk";
|
|
522
528
|
attribute :>> probabilityEstimate = ProbabilityKind::occasional;
|
|
523
529
|
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
@@ -528,7 +534,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
528
534
|
attribute :>> foreseeableMisuseIncluded = true;
|
|
529
535
|
attribute :>> sourceReference = "illustrative — no source";
|
|
530
536
|
}
|
|
531
|
-
part freeFlowValveControl :
|
|
537
|
+
part freeFlowValveControl : RiskControlMeasure {
|
|
532
538
|
attribute :>> id = "RC-006";
|
|
533
539
|
attribute :>> name = "AdministrationSetFreeFlowPrevention";
|
|
534
540
|
attribute :>> controlKind = RiskControlKind::inherentSafeDesign;
|
|
@@ -536,7 +542,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
536
542
|
attribute :>> verificationStatus = "planned";
|
|
537
543
|
attribute :>> sourceReference = "CITE-008: GPCA Safety Requirements (2009), User Interface (the administration set should be designed to prevent compromising patient safety or causing an unacceptable flow error); CITE-004: §2.4.1 HID 1.13 (free-flow detection via flow sensor, safety requirement 1.2.2)";
|
|
538
544
|
}
|
|
539
|
-
part doorInterlockControl :
|
|
545
|
+
part doorInterlockControl : RiskControlMeasure {
|
|
540
546
|
attribute :>> id = "RC-009";
|
|
541
547
|
attribute :>> name = "DoorOpenDeliveryInhibit";
|
|
542
548
|
attribute :>> controlKind = RiskControlKind::interlock;
|
|
@@ -544,17 +550,14 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
544
550
|
attribute :>> verificationStatus = "planned";
|
|
545
551
|
attribute :>> sourceReference = "CITE-002: CriSys AADL v2.0, AGREE door open => flow <= KVO (model GP-011); CITE-004: §2.4.2 HID 2.8/2.9 (panel/door opened during infusion: alert and stop); model extension REQ-X-05";
|
|
546
552
|
}
|
|
547
|
-
part riskAfterFreeFlow :
|
|
553
|
+
part riskAfterFreeFlow : ResidualRisk {
|
|
548
554
|
attribute :>> id = "RISK-A-005";
|
|
549
|
-
attribute :>> name = "
|
|
555
|
+
attribute :>> name = "FreeFlowResidualRisk";
|
|
550
556
|
attribute :>> driverKind = "risk";
|
|
551
557
|
attribute :>> probabilityEstimate = ProbabilityKind::improbable;
|
|
552
558
|
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
553
559
|
attribute :>> riskLevel = CriticalityKind::medium;
|
|
554
560
|
attribute :>> acceptability = RiskAcceptabilityKind::acceptable;
|
|
555
|
-
attribute :>> residualProbability = ProbabilityKind::improbable;
|
|
556
|
-
attribute :>> residualSeverity = SeverityKind::catastrophic;
|
|
557
|
-
attribute :>> residualAcceptability = RiskAcceptabilityKind::acceptable;
|
|
558
561
|
attribute :>> benefitRiskRequired = false;
|
|
559
562
|
attribute :>> sourceReference = "illustrative — no source";
|
|
560
563
|
}
|
|
@@ -590,9 +593,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
590
593
|
attribute :>> operatingCondition = "THERAPY with reverse flow past the continuous or cumulative duration limits";
|
|
591
594
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 22); CITE-008: GPCA Safety Requirements (2009), Reverse delivery";
|
|
592
595
|
}
|
|
593
|
-
part riskBeforeReverse :
|
|
596
|
+
part riskBeforeReverse : Risk {
|
|
594
597
|
attribute :>> id = "RISK-B-006";
|
|
595
|
-
attribute :>> name = "
|
|
598
|
+
attribute :>> name = "ReverseDeliveryInitialRisk";
|
|
596
599
|
attribute :>> driverKind = "risk";
|
|
597
600
|
attribute :>> probabilityEstimate = ProbabilityKind::occasional;
|
|
598
601
|
attribute :>> severityEstimate = SeverityKind::serious;
|
|
@@ -603,7 +606,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
603
606
|
attribute :>> foreseeableMisuseIncluded = true;
|
|
604
607
|
attribute :>> sourceReference = "illustrative — no source";
|
|
605
608
|
}
|
|
606
|
-
part reverseDeliveryPauseControl :
|
|
609
|
+
part reverseDeliveryPauseControl : RiskControlMeasure {
|
|
607
610
|
attribute :>> id = "RC-010";
|
|
608
611
|
attribute :>> name = "ReverseDeliveryDetectionAndPause";
|
|
609
612
|
attribute :>> controlKind = RiskControlKind::alarm;
|
|
@@ -611,7 +614,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
611
614
|
attribute :>> verificationStatus = "planned";
|
|
612
615
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 22 — model REQ-CS-22: transition to PAUSED and REQ 59 'Reverse Delivery' actions, model NOTIF-04); CITE-004: §2.4.1 HID 1.14 (flow sensor)";
|
|
613
616
|
}
|
|
614
|
-
part antiRefluxDesignControl :
|
|
617
|
+
part antiRefluxDesignControl : RiskControlMeasure {
|
|
615
618
|
attribute :>> id = "RC-011";
|
|
616
619
|
attribute :>> name = "ContinuousReverseDeliveryPrevention";
|
|
617
620
|
attribute :>> controlKind = RiskControlKind::inherentSafeDesign;
|
|
@@ -619,17 +622,14 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
619
622
|
attribute :>> verificationStatus = "planned";
|
|
620
623
|
attribute :>> sourceReference = "CITE-008: GPCA Safety Requirements (2009), Reverse delivery (during normal use and/or single fault condition, continuous reverse delivery shall not be possible; from IEC 601-2-24)";
|
|
621
624
|
}
|
|
622
|
-
part riskAfterReverse :
|
|
625
|
+
part riskAfterReverse : ResidualRisk {
|
|
623
626
|
attribute :>> id = "RISK-A-006";
|
|
624
|
-
attribute :>> name = "
|
|
627
|
+
attribute :>> name = "ReverseDeliveryResidualRisk";
|
|
625
628
|
attribute :>> driverKind = "risk";
|
|
626
629
|
attribute :>> probabilityEstimate = ProbabilityKind::remote;
|
|
627
630
|
attribute :>> severityEstimate = SeverityKind::serious;
|
|
628
631
|
attribute :>> riskLevel = CriticalityKind::medium;
|
|
629
|
-
attribute :>> acceptability = RiskAcceptabilityKind::
|
|
630
|
-
attribute :>> residualProbability = ProbabilityKind::remote;
|
|
631
|
-
attribute :>> residualSeverity = SeverityKind::serious;
|
|
632
|
-
attribute :>> residualAcceptability = RiskAcceptabilityKind::acceptable;
|
|
632
|
+
attribute :>> acceptability = RiskAcceptabilityKind::acceptable;
|
|
633
633
|
attribute :>> benefitRiskRequired = false;
|
|
634
634
|
attribute :>> sourceReference = "illustrative — no source";
|
|
635
635
|
}
|
|
@@ -672,9 +672,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
672
672
|
attribute :>> operatingCondition = "ACTIVE therapy continuing past the prescribed total volume";
|
|
673
673
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 20: actual volume infused exceeds the drug-database maximum VTBI)";
|
|
674
674
|
}
|
|
675
|
-
part riskBeforeVtbi :
|
|
675
|
+
part riskBeforeVtbi : Risk {
|
|
676
676
|
attribute :>> id = "RISK-B-007";
|
|
677
|
-
attribute :>> name = "
|
|
677
|
+
attribute :>> name = "VtbiOverInfusionInitialRisk";
|
|
678
678
|
attribute :>> driverKind = "risk";
|
|
679
679
|
attribute :>> probabilityEstimate = ProbabilityKind::occasional;
|
|
680
680
|
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
@@ -685,7 +685,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
685
685
|
attribute :>> foreseeableMisuseIncluded = true;
|
|
686
686
|
attribute :>> sourceReference = "illustrative — no source";
|
|
687
687
|
}
|
|
688
|
-
part vtbiLimitPauseControl :
|
|
688
|
+
part vtbiLimitPauseControl : RiskControlMeasure {
|
|
689
689
|
attribute :>> id = "RC-012";
|
|
690
690
|
attribute :>> name = "VtbiCeilingPauseAtKvo";
|
|
691
691
|
attribute :>> controlKind = RiskControlKind::alarm;
|
|
@@ -693,7 +693,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
693
693
|
attribute :>> verificationStatus = "planned";
|
|
694
694
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 20 — model REQ-CS-20: transition to PAUSED and REQ 59 'Over Infusion VTBI' actions, model NOTIF-06); CITE-002: CriSys AADL v2.0, AGREE over-VTBI => flow <= KVO (model GP-008)";
|
|
695
695
|
}
|
|
696
|
-
part infusionCompleteControl :
|
|
696
|
+
part infusionCompleteControl : RiskControlMeasure {
|
|
697
697
|
attribute :>> id = "RC-013";
|
|
698
698
|
attribute :>> name = "InfusionCompleteStopAtVtbi";
|
|
699
699
|
attribute :>> controlKind = RiskControlKind::inherentSafeDesign;
|
|
@@ -701,23 +701,20 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
701
701
|
attribute :>> verificationStatus = "planned";
|
|
702
702
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6 (REQ 28 — model REQ-CS-28: transition to IDLE when total volume infused reaches the programmed prescription maximum VTBI)";
|
|
703
703
|
}
|
|
704
|
-
part riskAfterVtbi :
|
|
704
|
+
part riskAfterVtbi : ResidualRisk {
|
|
705
705
|
attribute :>> id = "RISK-A-007";
|
|
706
|
-
attribute :>> name = "
|
|
706
|
+
attribute :>> name = "VtbiOverInfusionResidualRisk";
|
|
707
707
|
attribute :>> driverKind = "risk";
|
|
708
708
|
attribute :>> probabilityEstimate = ProbabilityKind::remote;
|
|
709
709
|
attribute :>> severityEstimate = SeverityKind::catastrophic;
|
|
710
710
|
attribute :>> riskLevel = CriticalityKind::medium;
|
|
711
|
-
attribute :>> acceptability = RiskAcceptabilityKind::
|
|
712
|
-
attribute :>> residualProbability = ProbabilityKind::remote;
|
|
713
|
-
attribute :>> residualSeverity = SeverityKind::catastrophic;
|
|
714
|
-
attribute :>> residualAcceptability = RiskAcceptabilityKind::acceptable;
|
|
711
|
+
attribute :>> acceptability = RiskAcceptabilityKind::acceptable;
|
|
715
712
|
attribute :>> benefitRiskRequired = false;
|
|
716
713
|
attribute :>> sourceReference = "illustrative — no source";
|
|
717
714
|
}
|
|
718
715
|
|
|
719
716
|
// ── Cross-cutting platform controls ─────────────────────────────
|
|
720
|
-
part watchdogControl :
|
|
717
|
+
part watchdogControl : RiskControlMeasure {
|
|
721
718
|
attribute :>> id = "RC-007";
|
|
722
719
|
attribute :>> name = "HardwareWatchdogSafeState";
|
|
723
720
|
attribute :>> controlKind = RiskControlKind::protectiveMeasure;
|
|
@@ -725,7 +722,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_risk {
|
|
|
725
722
|
attribute :>> verificationStatus = "planned";
|
|
726
723
|
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.2 Alarms (watchdog alarm) and §2.3 Pump Checks (watchdog interrupt tests); CITE-008: GPCA Safety Requirements (2009), POST (watchdog test)";
|
|
727
724
|
}
|
|
728
|
-
part flowCrossCheckControl :
|
|
725
|
+
part flowCrossCheckControl : RiskControlMeasure {
|
|
729
726
|
attribute :>> id = "RC-008";
|
|
730
727
|
attribute :>> name = "IndependentFlowCrossCheck";
|
|
731
728
|
attribute :>> controlKind = RiskControlKind::monitoring;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
package memo_examples_gpca_pump_model_catalog_gpca_system {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
|
-
private import
|
|
4
|
+
private import memo_architecture_functional_functions::*;
|
|
5
|
+
private import memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems::*;
|
|
6
|
+
private import memo_architecture_operational_scenarios::*;
|
|
5
7
|
private import memo_core_enumerations::*;
|
|
6
8
|
|
|
7
9
|
part gpcaMission : Mission {
|
|
@@ -14,110 +16,73 @@ package memo_examples_gpca_pump_model_catalog_gpca_system {
|
|
|
14
16
|
attribute :>> operationalContext = "Acute-care hospital ward, fixed (non-ambulatory) location (UC-001).";
|
|
15
17
|
}
|
|
16
18
|
|
|
17
|
-
// ── System capabilities ─────────────────────────────────────
|
|
18
|
-
part scBasalDelivery : SystemCapability {
|
|
19
|
-
attribute :>> id = "SC-001";
|
|
20
|
-
attribute :>> name = "BasalRateDelivery";
|
|
21
|
-
attribute :>> capabilityKind = "therapy";
|
|
22
|
-
attribute :>> primaryFunction = "FUNC-005: ManageInfusion";
|
|
23
|
-
attribute :>> safetyRelevant = true;
|
|
24
|
-
}
|
|
25
|
-
part scPatientBolus : SystemCapability {
|
|
26
|
-
attribute :>> id = "SC-002";
|
|
27
|
-
attribute :>> name = "PatientBolusDelivery";
|
|
28
|
-
attribute :>> capabilityKind = "therapy";
|
|
29
|
-
attribute :>> primaryFunction = "FUNC-006: EnforceDoseLimits";
|
|
30
|
-
attribute :>> safetyRelevant = true;
|
|
31
|
-
}
|
|
32
|
-
part scAlarmAnnunciation : SystemCapability {
|
|
33
|
-
attribute :>> id = "SC-003";
|
|
34
|
-
attribute :>> name = "AlarmDetectionAndAnnunciation";
|
|
35
|
-
attribute :>> capabilityKind = "safety";
|
|
36
|
-
attribute :>> primaryFunction = "FUNC-003: MonitorExceptionalConditions";
|
|
37
|
-
attribute :>> safetyRelevant = true;
|
|
38
|
-
}
|
|
39
|
-
part scPrescriptionMgmt : SystemCapability {
|
|
40
|
-
attribute :>> id = "SC-004";
|
|
41
|
-
attribute :>> name = "PrescriptionProgrammingAndChecking";
|
|
42
|
-
attribute :>> capabilityKind = "configuration";
|
|
43
|
-
attribute :>> primaryFunction = "FUNC-002: ValidatePrescription";
|
|
44
|
-
attribute :>> safetyRelevant = true;
|
|
45
|
-
}
|
|
46
|
-
part scEventLogging : SystemCapability {
|
|
47
|
-
attribute :>> id = "SC-005";
|
|
48
|
-
attribute :>> name = "TherapyEventLogging";
|
|
49
|
-
attribute :>> capabilityKind = "record-keeping";
|
|
50
|
-
attribute :>> primaryFunction = "FUNC-008: LogTherapyEvents";
|
|
51
|
-
attribute :>> safetyRelevant = false;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
19
|
// ── Functional chains ───────────────────────────────────────
|
|
55
|
-
part fcPatientBolus :
|
|
20
|
+
part fcPatientBolus : FunctionalFlow {
|
|
56
21
|
attribute :>> id = "FC-001";
|
|
57
22
|
attribute :>> name = "PatientBolusChain";
|
|
58
|
-
attribute :>>
|
|
59
|
-
|
|
60
|
-
|
|
23
|
+
attribute :>> flowCategory = FunctionalFlowKind::nominal;
|
|
24
|
+
ref :>> startFunction = fnAcquireSensors;
|
|
25
|
+
ref :>> endFunction = fnCommandPump;
|
|
61
26
|
attribute :>> endToEndLatencyBudgetMs = "100";
|
|
62
27
|
attribute :>> safetyRelevant = true;
|
|
63
28
|
attribute :>> securityRelevant = false;
|
|
64
29
|
attribute :>> description = "Bolus button press through lockout/max-dose check to pump actuation and logging.";
|
|
65
30
|
}
|
|
66
|
-
part fcsBolusSense :
|
|
31
|
+
part fcsBolusSense : FunctionalFlowStep {
|
|
67
32
|
attribute :>> id = "FCS-001"; attribute :>> name = "SenseBolusRequest";
|
|
68
|
-
attribute :>> stepOrder = "1";
|
|
33
|
+
attribute :>> stepOrder = "1"; ref :>> function = fnAcquireSensors; ref :>> exchangedItem = ddBolusRequest;
|
|
69
34
|
}
|
|
70
|
-
part fcsBolusValidate :
|
|
35
|
+
part fcsBolusValidate : FunctionalFlowStep {
|
|
71
36
|
attribute :>> id = "FCS-002"; attribute :>> name = "CheckLockoutAndMaxDose";
|
|
72
|
-
attribute :>> stepOrder = "2";
|
|
37
|
+
attribute :>> stepOrder = "2"; ref :>> function = fnEnforceLimits; ref :>> exchangedItem = ddPrescription;
|
|
73
38
|
}
|
|
74
|
-
part fcsBolusCommand :
|
|
39
|
+
part fcsBolusCommand : FunctionalFlowStep {
|
|
75
40
|
attribute :>> id = "FCS-003"; attribute :>> name = "CommandBolusFlow";
|
|
76
|
-
attribute :>> stepOrder = "3";
|
|
41
|
+
attribute :>> stepOrder = "3"; ref :>> function = fnManageInfusion; ref :>> exchangedItem = cdFlowCommand;
|
|
77
42
|
}
|
|
78
|
-
part fcsBolusActuate :
|
|
43
|
+
part fcsBolusActuate : FunctionalFlowStep {
|
|
79
44
|
attribute :>> id = "FCS-004"; attribute :>> name = "ActuatePumpMotor";
|
|
80
|
-
attribute :>> stepOrder = "4";
|
|
45
|
+
attribute :>> stepOrder = "4"; ref :>> function = fnCommandPump; ref :>> exchangedItem = cdFlowCommand;
|
|
81
46
|
}
|
|
82
|
-
part fcsBolusLog :
|
|
47
|
+
part fcsBolusLog : FunctionalFlowStep {
|
|
83
48
|
attribute :>> id = "FCS-005"; attribute :>> name = "LogBolusOutcome";
|
|
84
|
-
attribute :>> stepOrder = "5";
|
|
49
|
+
attribute :>> stepOrder = "5"; ref :>> function = fnLogEvents; ref :>> exchangedItem = ddEventRecord;
|
|
85
50
|
}
|
|
86
51
|
|
|
87
|
-
part fcAlarmStop :
|
|
52
|
+
part fcAlarmStop : FunctionalFlow {
|
|
88
53
|
attribute :>> id = "FC-002";
|
|
89
54
|
attribute :>> name = "AlarmDetectionToSafeStateChain";
|
|
90
|
-
attribute :>>
|
|
91
|
-
|
|
92
|
-
|
|
55
|
+
attribute :>> flowCategory = FunctionalFlowKind::alarm;
|
|
56
|
+
ref :>> startFunction = fnAcquireSensors;
|
|
57
|
+
ref :>> endFunction = fnAnnunciate;
|
|
93
58
|
attribute :>> endToEndLatencyBudgetMs = "20";
|
|
94
59
|
attribute :>> safetyRelevant = true;
|
|
95
60
|
attribute :>> securityRelevant = false;
|
|
96
61
|
attribute :>> description = "Sensor condition through alarm evaluation to same-step transition to PAUSED (KVO flow, REQ 43) and annunciation.";
|
|
97
62
|
}
|
|
98
|
-
part fcsAlarmSense :
|
|
63
|
+
part fcsAlarmSense : FunctionalFlowStep {
|
|
99
64
|
attribute :>> id = "FCS-006"; attribute :>> name = "SenseAlarmCondition";
|
|
100
|
-
attribute :>> stepOrder = "1";
|
|
65
|
+
attribute :>> stepOrder = "1"; ref :>> function = fnAcquireSensors; ref :>> exchangedItem = ddSensorVector;
|
|
101
66
|
}
|
|
102
|
-
part fcsAlarmEvaluate :
|
|
67
|
+
part fcsAlarmEvaluate : FunctionalFlowStep {
|
|
103
68
|
attribute :>> id = "FCS-007"; attribute :>> name = "EvaluateAlarmCondition";
|
|
104
|
-
attribute :>> stepOrder = "2";
|
|
69
|
+
attribute :>> stepOrder = "2"; ref :>> function = fnMonitorAlarm; ref :>> exchangedItem = ddSensorVector;
|
|
105
70
|
}
|
|
106
|
-
part fcsAlarmStopInfusion :
|
|
71
|
+
part fcsAlarmStopInfusion : FunctionalFlowStep {
|
|
107
72
|
attribute :>> id = "FCS-008"; attribute :>> name = "LimitFlowToKvoSameStep";
|
|
108
|
-
attribute :>> stepOrder = "3";
|
|
73
|
+
attribute :>> stepOrder = "3"; ref :>> function = fnManageInfusion; ref :>> exchangedItem = cdAlarmSignal;
|
|
109
74
|
}
|
|
110
|
-
part fcsAlarmAnnunciate :
|
|
75
|
+
part fcsAlarmAnnunciate : FunctionalFlowStep {
|
|
111
76
|
attribute :>> id = "FCS-009"; attribute :>> name = "AnnunciateAudibleVisual";
|
|
112
|
-
attribute :>> stepOrder = "4";
|
|
77
|
+
attribute :>> stepOrder = "4"; ref :>> function = fnAnnunciate; ref :>> exchangedItem = cdAlarmSignal;
|
|
113
78
|
}
|
|
114
79
|
|
|
115
|
-
part fcStartup :
|
|
80
|
+
part fcStartup : FunctionalFlow {
|
|
116
81
|
attribute :>> id = "FC-003";
|
|
117
82
|
attribute :>> name = "PowerOnSelfTestChain";
|
|
118
|
-
attribute :>>
|
|
119
|
-
|
|
120
|
-
|
|
83
|
+
attribute :>> flowCategory = FunctionalFlowKind::startup;
|
|
84
|
+
ref :>> startFunction = fnManagePower;
|
|
85
|
+
ref :>> endFunction = fnPresentStatus;
|
|
121
86
|
attribute :>> endToEndLatencyBudgetMs = "5000";
|
|
122
87
|
attribute :>> safetyRelevant = true;
|
|
123
88
|
attribute :>> securityRelevant = false;
|
|
@@ -125,20 +90,22 @@ package memo_examples_gpca_pump_model_catalog_gpca_system {
|
|
|
125
90
|
}
|
|
126
91
|
|
|
127
92
|
// ── System scenarios ────────────────────────────────────────
|
|
128
|
-
part ssBolusDuringBasal :
|
|
93
|
+
part ssBolusDuringBasal : FunctionalScenario {
|
|
129
94
|
attribute :>> id = "SS-001";
|
|
130
95
|
attribute :>> name = "PatientBolusDuringBasal";
|
|
131
|
-
attribute :>>
|
|
96
|
+
attribute :>> variantKind = ScenarioVariantKind::nominal;
|
|
97
|
+
attribute :>> operationalCondition = OperationalConditionKind::normal;
|
|
132
98
|
attribute :>> sequenceDiagramRef = "VIEW-BHV-002";
|
|
133
|
-
attribute :>>
|
|
134
|
-
attribute :>>
|
|
99
|
+
attribute :>> preCondition = "BASAL mode active; no REQ 25 ignore condition holds";
|
|
100
|
+
attribute :>> postCondition = "PATIENT_BOLUS mode entered, bolus delivered, return to BASAL";
|
|
135
101
|
}
|
|
136
|
-
part ssAlarmPause :
|
|
102
|
+
part ssAlarmPause : FunctionalScenario {
|
|
137
103
|
attribute :>> id = "SS-002";
|
|
138
104
|
attribute :>> name = "InhibitingNotificationPausesInfusion";
|
|
139
|
-
attribute :>>
|
|
105
|
+
attribute :>> variantKind = ScenarioVariantKind::exception;
|
|
106
|
+
attribute :>> operationalCondition = OperationalConditionKind::degraded;
|
|
140
107
|
attribute :>> sequenceDiagramRef = "VIEW-BHV-002";
|
|
141
|
-
attribute :>>
|
|
142
|
-
attribute :>>
|
|
108
|
+
attribute :>> preCondition = "any ACTIVE therapy mode; infusion-inhibiting notification detected (REQ 59)";
|
|
109
|
+
attribute :>> postCondition = "PAUSED mode entered in same execution step at FlowRate_kvo_hd keep-vein-open flow; notification annunciated per REQ 59";
|
|
143
110
|
}
|
|
144
111
|
}
|