@memoarchitect/ontology 0.8.24 → 0.11.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 +1 -1
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +9 -7
- package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -1
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +9 -7
- package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +8 -6
- package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
- package/examples/gpca-pump/memo.identity.yaml +2185 -0
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +29 -24
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +14 -13
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +121 -125
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +390 -388
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +15 -14
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -8
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
- package/examples/gpca-pump/model/catalog/project.sysml +3 -1
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +6 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +6 -4
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +5 -3
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +9 -7
- package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -1
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +6 -4
- package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -4
- package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
- package/examples/nested-architecture-dsm/memo.identity.yaml +181 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +20 -18
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
- package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +34 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +11 -6
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +16 -14
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
- package/examples/nested-architecture-dsm/model/catalog/project.sysml +4 -1
- package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +17 -16
- package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
- package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +10 -8
- package/examples/surgical-closure-workflow/model/catalog/project.sysml +3 -1
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +54 -51
- package/examples/surgical-robot/model/catalog/project.sysml +3 -1
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
- package/examples/sysml-diagram-samples/model/catalog/project.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +10 -8
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +7 -5
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +2 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +11 -9
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +2 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +11 -7
- package/examples/temperature-alarm/memo.identity.yaml +64 -0
- package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +27 -22
- package/examples/ui-screen-regions/memo.identity.yaml +205 -0
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +14 -12
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +26 -24
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
- package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
- package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +5 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +5 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +5 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +3 -1
- package/extensions/aadl/memo.package.yaml +1 -1
- package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
- package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
- package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
- package/extensions/cloud/memo.package.yaml +1 -1
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
- package/extensions/container/memo.package.yaml +1 -1
- package/extensions/container/src/methodology/container_methodology.sysml +3 -1
- package/extensions/messaging/memo.package.yaml +1 -1
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
- package/extensions/ros/memo.package.yaml +1 -1
- package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
- package/extensions/template/src/extension.sysml +3 -1
- package/methodologies/default/memo.package.yaml +1 -1
- package/methodologies/gpca/memo.package.yaml +1 -1
- package/ontology/memo.package.yaml +1 -1
- package/package.json +2 -2
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/functional/behavior/memo_behavior.sysml +1 -1
- package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
- package/src/architecture/implementation/ui/memo_ui.sysml +0 -23
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +3 -1
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +3 -11
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +1 -12
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -11
- package/src/architecture/operational/workflows/memo_workflows.sysml +0 -20
- package/src/architecture/realization/deployment/memo_deployment.sysml +16 -9
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
- package/src/artifacts/standards/cfr_21_820.sysml +80 -89
- package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
- package/src/artifacts/standards/iec_60601_1.sysml +108 -121
- package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
- package/src/artifacts/standards/iec_60812.sysml +21 -22
- package/src/artifacts/standards/iec_62304.sysml +150 -169
- package/src/artifacts/standards/iec_62366_1.sysml +80 -89
- package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
- package/src/artifacts/standards/iso_13485.sysml +80 -89
- package/src/artifacts/standards/iso_14971.sysml +66 -73
- package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
- package/src/artifacts/templates/dhf/iec-60601/hrs.md +6 -6
- package/src/artifacts/templates/dhf/iec-62304/srs.md +10 -10
- package/src/artifacts/templates/dhf/system/syrs.md +6 -6
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +0 -1
- package/src/assurance/human_factors/memo_human_factors.sysml +0 -1
- package/src/assurance/requirements/memo_requirements.sysml +20 -16
- package/src/assurance/requirements/needs/memo_needs.sysml +33 -5
- package/src/assurance/safety_risk/memo_risk.sysml +20 -0
- package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
- package/src/core/common/memo_common.sysml +50 -50
- package/src/core/enumerations/memo_enumerations.sysml +1 -1
- package/src/core/relationships/memo_relationships.sysml +22 -49
- package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
- package/src/methodology/core/memo_core.sysml +0 -10
- package/src/methodology/profiles/memo_profiles.sysml +18 -16
- package/src/rules/closure/closure_rules.sysml +58 -22
- package/src/rules/crosslayer/cross_layer_rules.sysml +5 -3
- package/src/rules/ontology/ontology_invariants.sysml +119 -35
- package/src/rules/quantitative/quantitative_rules.sysml +4 -2
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +29 -28
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -2
- package/src/viewpoints/context/context_viewpoint.sysml +5 -3
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +5 -3
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -2
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +6 -16
- package/src/viewpoints/functional/functional_viewpoint.sysml +4 -2
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +5 -3
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +5 -3
- package/src/viewpoints/logical/logical_viewpoint.sysml +4 -2
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +5 -3
- package/src/viewpoints/operational/operational_viewpoint.sysml +4 -2
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +5 -3
- package/src/viewpoints/physical/physical_viewpoint.sysml +4 -2
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +5 -3
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +5 -3
- package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +4 -2
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +5 -3
- package/src/viewpoints/risk/risk_viewpoint.sysml +4 -2
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +5 -3
- package/src/viewpoints/software/software_viewpoint.sysml +4 -2
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +5 -3
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +4 -2
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
- package/src/viewpoints/usability/usability_viewpoint.sysml +4 -2
- package/src/viewpoints/verification/verification_viewpoint.sysml +4 -2
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +5 -3
- package/templates/connected-device/model/catalog/project.sysml +3 -1
- package/templates/default/model/catalog/project.sysml +3 -1
- package/templates/infusion-pump/model/catalog/project.sysml +3 -1
- package/templates/monitoring-device/model/catalog/project.sysml +3 -1
- package/templates/samd/model/catalog/project.sysml +3 -1
|
@@ -6,6 +6,8 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
6
6
|
private import memo_assurance_requirements_needs::*;
|
|
7
7
|
private import memo_core_enumerations::*;
|
|
8
8
|
|
|
9
|
+
private import memo_core_common::*;
|
|
10
|
+
private import memo_core_common::MemoIdentity;
|
|
9
11
|
// ═════════════════════════════════════════════════════════════
|
|
10
12
|
// GPCA requirements layer.
|
|
11
13
|
//
|
|
@@ -26,205 +28,205 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
26
28
|
// ── Stakeholder needs ───────────────────────────────────────
|
|
27
29
|
requirement needSafeTherapy : Need {
|
|
28
30
|
attribute :>> needKind = NeedKind::'stakeholder';
|
|
29
|
-
|
|
31
|
+
@MemoIdentity { :>> providedId = "NEED-001"; } attribute :>> name = "SafePatientControlledTherapy";
|
|
30
32
|
attribute :>> statement = "The device shall support safe patient controlled analgesic infusion therapy.";
|
|
31
33
|
attribute :>> priority = "high";
|
|
32
34
|
}
|
|
33
35
|
requirement needEffectiveAnalgesia : Need {
|
|
34
36
|
attribute :>> needKind = NeedKind::'stakeholder';
|
|
35
|
-
|
|
37
|
+
@MemoIdentity { :>> providedId = "NEED-002"; } attribute :>> name = "EffectivePainManagement";
|
|
36
38
|
attribute :>> statement = "The device shall deliver the prescribed basal and bolus doses accurately so the patient receives effective analgesia.";
|
|
37
39
|
attribute :>> priority = "high";
|
|
38
40
|
}
|
|
39
41
|
requirement needTimelyAlarms : Need {
|
|
40
42
|
attribute :>> needKind = NeedKind::'stakeholder';
|
|
41
|
-
|
|
43
|
+
@MemoIdentity { :>> providedId = "NEED-003"; } attribute :>> name = "TimelyAlarmNotification";
|
|
42
44
|
attribute :>> statement = "Clinicians shall be notified promptly and unambiguously of any condition that interrupts or endangers therapy.";
|
|
43
45
|
attribute :>> priority = "high";
|
|
44
46
|
}
|
|
45
47
|
requirement needAuditableRecord : Need {
|
|
46
48
|
attribute :>> needKind = NeedKind::'stakeholder';
|
|
47
|
-
|
|
49
|
+
@MemoIdentity { :>> providedId = "NEED-004"; } attribute :>> name = "AuditableTherapyRecord";
|
|
48
50
|
attribute :>> statement = "All delivered doses, alarms, and prescription changes shall be reviewable after the fact.";
|
|
49
51
|
attribute :>> priority = "medium";
|
|
50
52
|
}
|
|
51
53
|
|
|
52
54
|
// ── System constants (CriSys App. A.4; I 8; Ch.5) ───────────
|
|
53
55
|
part constMaxRateofFlowChange : SystemConstant {
|
|
54
|
-
|
|
56
|
+
@MemoIdentity { :>> providedId = "CONST-01"; } attribute :>> name = "Max_Rateof_Flow_Change";
|
|
55
57
|
attribute :>> symbol = "Max_Rateof_Flow_Change_const";
|
|
56
58
|
attribute :>> description = "Maximum rate of change of flow of drug in the hose.";
|
|
57
59
|
attribute :>> unit = "ml/sec2"; attribute :>> valueType = "Numeric";
|
|
58
60
|
attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
|
|
59
|
-
|
|
61
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
|
|
60
62
|
}
|
|
61
63
|
part constMaxModeChangeDuration : SystemConstant {
|
|
62
|
-
|
|
64
|
+
@MemoIdentity { :>> providedId = "CONST-02"; } attribute :>> name = "Max_Mode_Change_Duration";
|
|
63
65
|
attribute :>> symbol = "Max_Mode_Change_Duration_const";
|
|
64
66
|
attribute :>> description = "Maximum time to be taken for mode transition.";
|
|
65
67
|
attribute :>> unit = "sec"; attribute :>> valueType = "Time";
|
|
66
68
|
attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
|
|
67
|
-
|
|
69
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
|
|
68
70
|
}
|
|
69
71
|
part constConfigWarningDuration : SystemConstant {
|
|
70
|
-
|
|
72
|
+
@MemoIdentity { :>> providedId = "CONST-03"; } attribute :>> name = "Config_Warning_Duration";
|
|
71
73
|
attribute :>> symbol = "Config_Warning_Duration_const";
|
|
72
74
|
attribute :>> description = "Recommended duration of prescription values configuration.";
|
|
73
75
|
attribute :>> unit = "sec"; attribute :>> valueType = "Time";
|
|
74
76
|
attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
|
|
75
|
-
|
|
77
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
|
|
76
78
|
}
|
|
77
79
|
part constMaxConfigDuration : SystemConstant {
|
|
78
|
-
|
|
80
|
+
@MemoIdentity { :>> providedId = "CONST-04"; } attribute :>> name = "Max_Config_Duration";
|
|
79
81
|
attribute :>> symbol = "Max_Config_Duration_const";
|
|
80
82
|
attribute :>> description = "Maximum time allowed for configuration.";
|
|
81
83
|
attribute :>> unit = "sec"; attribute :>> valueType = "Time";
|
|
82
84
|
attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
|
|
83
|
-
|
|
85
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
|
|
84
86
|
}
|
|
85
87
|
part constMaxIdleDuration : SystemConstant {
|
|
86
|
-
|
|
88
|
+
@MemoIdentity { :>> providedId = "CONST-05"; } attribute :>> name = "Max_IDLE_Duration";
|
|
87
89
|
attribute :>> symbol = "Max_IDLE_Duration_const";
|
|
88
90
|
attribute :>> description = "Maximum duration the system is allowed to be in IDLE mode continuously.";
|
|
89
91
|
attribute :>> unit = "sec"; attribute :>> valueType = "Time";
|
|
90
92
|
attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
|
|
91
|
-
|
|
93
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
|
|
92
94
|
}
|
|
93
95
|
part constMaxDurationUnderInfusion : SystemConstant {
|
|
94
|
-
|
|
96
|
+
@MemoIdentity { :>> providedId = "CONST-06"; } attribute :>> name = "Max_Duration_UnderInfusion";
|
|
95
97
|
attribute :>> symbol = "Max_Duration_UnderInfusion_const";
|
|
96
98
|
attribute :>> description = "Maximum cumulative duration the system can infuse below the respective mode's flow rate minus Tolerance_Min_const in any delta time interval.";
|
|
97
99
|
attribute :>> unit = "sec"; attribute :>> valueType = "Time";
|
|
98
100
|
attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
|
|
99
|
-
|
|
101
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
|
|
100
102
|
}
|
|
101
103
|
part constMaxDurationOverInfusion : SystemConstant {
|
|
102
|
-
|
|
104
|
+
@MemoIdentity { :>> providedId = "CONST-07"; } attribute :>> name = "Max_Duration_OverInfusion";
|
|
103
105
|
attribute :>> symbol = "Max_Duration_OverInfusion_const";
|
|
104
106
|
attribute :>> description = "Maximum cumulative duration the system can infuse above the respective mode's flow rate plus Tolerance_Min_const in any delta time interval.";
|
|
105
107
|
attribute :>> unit = "sec"; attribute :>> valueType = "Time";
|
|
106
108
|
attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
|
|
107
|
-
|
|
109
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
|
|
108
110
|
}
|
|
109
111
|
part constLowReservoir : SystemConstant {
|
|
110
|
-
|
|
112
|
+
@MemoIdentity { :>> providedId = "CONST-08"; } attribute :>> name = "Low_Reservoir";
|
|
111
113
|
attribute :>> symbol = "Low_Reservoir_const";
|
|
112
114
|
attribute :>> description = "Volume in the drug reservoir that needs notification for Low Reservoir.";
|
|
113
115
|
attribute :>> unit = "ml"; attribute :>> valueType = "Numeric";
|
|
114
116
|
attribute :>> constantValue = ""; attribute :>> valueCondition = "should be greater than Empty_Reservoir_const";
|
|
115
|
-
|
|
117
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
|
|
116
118
|
}
|
|
117
119
|
part constEmptyReservoir : SystemConstant {
|
|
118
|
-
|
|
120
|
+
@MemoIdentity { :>> providedId = "CONST-09"; } attribute :>> name = "Empty_Reservoir";
|
|
119
121
|
attribute :>> symbol = "Empty_Reservoir_const";
|
|
120
122
|
attribute :>> description = "Volume in the drug reservoir that needs notification for Empty Reservoir.";
|
|
121
123
|
attribute :>> unit = "ml"; attribute :>> valueType = "Numeric";
|
|
122
124
|
attribute :>> constantValue = ""; attribute :>> valueCondition = "should be greater than FlowRate_kvo_hd (as written in the source)";
|
|
123
|
-
|
|
125
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
|
|
124
126
|
}
|
|
125
127
|
part constSingleAirBubbleVolume : SystemConstant {
|
|
126
|
-
|
|
128
|
+
@MemoIdentity { :>> providedId = "CONST-10"; } attribute :>> name = "Single_AirBubble_Volume";
|
|
127
129
|
attribute :>> symbol = "Single_AirBubble_Volume_const";
|
|
128
130
|
attribute :>> description = "Maximum volume of a single air bubble that is safe to be infused.";
|
|
129
131
|
attribute :>> unit = "ml"; attribute :>> valueType = "Numeric";
|
|
130
132
|
attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
|
|
131
|
-
|
|
133
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
|
|
132
134
|
}
|
|
133
135
|
part constCumulativeAirBubbleVolume : SystemConstant {
|
|
134
|
-
|
|
136
|
+
@MemoIdentity { :>> providedId = "CONST-11"; } attribute :>> name = "Cumulative_AirBubble_Volume";
|
|
135
137
|
attribute :>> symbol = "Cumulative_AirBubble_Volume_const";
|
|
136
138
|
attribute :>> description = "Maximum volume of air bubbles cumulatively in a delta time interval that is safe to be infused.";
|
|
137
139
|
attribute :>> unit = "ml"; attribute :>> valueType = "Numeric";
|
|
138
140
|
attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
|
|
139
|
-
|
|
141
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
|
|
140
142
|
}
|
|
141
143
|
part constRevDeliveryContinuousDuration : SystemConstant {
|
|
142
|
-
|
|
144
|
+
@MemoIdentity { :>> providedId = "CONST-12"; } attribute :>> name = "Rev_Delivery_Continuous_Duration";
|
|
143
145
|
attribute :>> symbol = "Rev_Delivery_Continuous_Duration_const";
|
|
144
146
|
attribute :>> description = "Maximum duration the system is acceptable to be in reverse delivery continuously.";
|
|
145
147
|
attribute :>> unit = "minutes"; attribute :>> valueType = "Time";
|
|
146
148
|
attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
|
|
147
|
-
|
|
149
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
|
|
148
150
|
}
|
|
149
151
|
part constRevDeliveryCumulativeDuration : SystemConstant {
|
|
150
|
-
|
|
152
|
+
@MemoIdentity { :>> providedId = "CONST-13"; } attribute :>> name = "Rev_Delivery_Cumulative_Duration";
|
|
151
153
|
attribute :>> symbol = "Rev_Delivery_Cumulative_Duration_const";
|
|
152
154
|
attribute :>> description = "Maximum duration the system is acceptable to be in reverse delivery cumulatively in a delta time interval.";
|
|
153
155
|
attribute :>> unit = "minutes"; attribute :>> valueType = "Time";
|
|
154
156
|
attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
|
|
155
|
-
|
|
157
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
|
|
156
158
|
}
|
|
157
159
|
part constMaxPausedDuration : SystemConstant {
|
|
158
|
-
|
|
160
|
+
@MemoIdentity { :>> providedId = "CONST-14"; } attribute :>> name = "Max_PAUSED_Duration";
|
|
159
161
|
attribute :>> symbol = "Max_PAUSED_Duration_const";
|
|
160
162
|
attribute :>> description = "Maximum duration the system is allowed to be in PAUSED mode continuously.";
|
|
161
163
|
attribute :>> unit = "sec"; attribute :>> valueType = "Time";
|
|
162
164
|
attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
|
|
163
|
-
|
|
165
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
|
|
164
166
|
}
|
|
165
167
|
part constToleranceMax : SystemConstant {
|
|
166
|
-
|
|
168
|
+
@MemoIdentity { :>> providedId = "CONST-15"; } attribute :>> name = "Tolerance_Max";
|
|
167
169
|
attribute :>> symbol = "Tolerance_Max_const";
|
|
168
170
|
attribute :>> description = "Maximum acceptable variation in flow rate in any mode, specified as a percentage of the respective mode's flow rate.";
|
|
169
171
|
attribute :>> unit = "%"; attribute :>> valueType = "Positive Integer";
|
|
170
172
|
attribute :>> constantValue = "20 %"; attribute :>> valueCondition = "";
|
|
171
|
-
|
|
173
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
|
|
172
174
|
}
|
|
173
175
|
part constToleranceMin : SystemConstant {
|
|
174
|
-
|
|
176
|
+
@MemoIdentity { :>> providedId = "CONST-16"; } attribute :>> name = "Tolerance_Min";
|
|
175
177
|
attribute :>> symbol = "Tolerance_Min_const";
|
|
176
178
|
attribute :>> description = "Tolerance in flow rate variation that is acceptable for a certain duration of time (Max_Duration_OverInfusion_const, Max_Duration_UnderInfusion_const); computed like Tolerance_Max_const.";
|
|
177
179
|
attribute :>> unit = "%"; attribute :>> valueType = "Positive Integer";
|
|
178
180
|
attribute :>> constantValue = "5 %"; attribute :>> valueCondition = "";
|
|
179
|
-
|
|
181
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
|
|
180
182
|
}
|
|
181
183
|
part constAudioLevel : SystemConstant {
|
|
182
|
-
|
|
184
|
+
@MemoIdentity { :>> providedId = "CONST-17"; } attribute :>> name = "Audio_level";
|
|
183
185
|
attribute :>> symbol = "Audio_level_const";
|
|
184
186
|
attribute :>> description = "Acceptable level of sound for audio notification. Interface spec I 8 states 50 db for 2 seconds per notification; the App. A.4 value cell is inconsistent in the source (lists '5 %').";
|
|
185
187
|
attribute :>> unit = "decibels"; attribute :>> valueType = "Positive Integer";
|
|
186
188
|
attribute :>> constantValue = "50 db for 2 seconds per notification"; attribute :>> valueCondition = "";
|
|
187
|
-
|
|
189
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.4 (I 8) and App. A.4"; }
|
|
188
190
|
}
|
|
189
191
|
part constAudioEnableDuration : SystemConstant {
|
|
190
|
-
|
|
192
|
+
@MemoIdentity { :>> providedId = "CONST-18"; } attribute :>> name = "Audio_Enable_Duration";
|
|
191
193
|
attribute :>> symbol = "Audio_Enable_Duration_const";
|
|
192
194
|
attribute :>> description = "Audio notification temporary silencing duration.";
|
|
193
195
|
attribute :>> unit = "minutes"; attribute :>> valueType = "Positive Integer";
|
|
194
196
|
attribute :>> constantValue = "30"; attribute :>> valueCondition = "";
|
|
195
|
-
|
|
197
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
|
|
196
198
|
}
|
|
197
199
|
part constLogInterval : SystemConstant {
|
|
198
|
-
|
|
200
|
+
@MemoIdentity { :>> providedId = "CONST-19"; } attribute :>> name = "Log_Interval";
|
|
199
201
|
attribute :>> symbol = "Log_Interval_const";
|
|
200
202
|
attribute :>> description = "Interval at which operational information should be recorded.";
|
|
201
203
|
attribute :>> unit = "minutes"; attribute :>> valueType = "Positive Integer";
|
|
202
204
|
attribute :>> constantValue = "5"; attribute :>> valueCondition = "";
|
|
203
|
-
|
|
205
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
|
|
204
206
|
}
|
|
205
207
|
part constErrorLogRetention : SystemConstant {
|
|
206
|
-
|
|
208
|
+
@MemoIdentity { :>> providedId = "CONST-20"; } attribute :>> name = "Error_Log_Retention";
|
|
207
209
|
attribute :>> symbol = "Error_Log_Retention";
|
|
208
210
|
attribute :>> description = "Duration for which the most recent error log data shall persist (REQ 85).";
|
|
209
211
|
attribute :>> unit = "days"; attribute :>> valueType = "Time";
|
|
210
212
|
attribute :>> constantValue = "30"; attribute :>> valueCondition = "";
|
|
211
|
-
|
|
213
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §5.1 (REQ 85)"; }
|
|
212
214
|
}
|
|
213
215
|
part constOperationalLogRetention : SystemConstant {
|
|
214
|
-
|
|
216
|
+
@MemoIdentity { :>> providedId = "CONST-21"; } attribute :>> name = "Operational_Log_Retention";
|
|
215
217
|
attribute :>> symbol = "Operational_Log_Retention";
|
|
216
218
|
attribute :>> description = "Duration for which the most recent operational log data shall persist (REQ 85).";
|
|
217
219
|
attribute :>> unit = "days"; attribute :>> valueType = "Time";
|
|
218
220
|
attribute :>> constantValue = "15"; attribute :>> valueCondition = "";
|
|
219
|
-
|
|
221
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §5.1 (REQ 85)"; }
|
|
220
222
|
}
|
|
221
223
|
part constPrescriptionPersistDuration : SystemConstant {
|
|
222
|
-
|
|
224
|
+
@MemoIdentity { :>> providedId = "CONST-22"; } attribute :>> name = "Prescription_Persist_Duration";
|
|
223
225
|
attribute :>> symbol = "Prescription_Persist_Duration";
|
|
224
226
|
attribute :>> description = "Duration for which the last saved prescription data shall persist (REQ 86).";
|
|
225
227
|
attribute :>> unit = "days"; attribute :>> valueType = "Time";
|
|
226
228
|
attribute :>> constantValue = "15"; attribute :>> valueCondition = "";
|
|
227
|
-
|
|
229
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §5.1 (REQ 86)"; }
|
|
228
230
|
}
|
|
229
231
|
|
|
230
232
|
// ── REQ 59 notification action table (20 notifications) ─────
|
|
@@ -234,1141 +236,1141 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
234
236
|
// restriction: Inhibit All Infusion > Inhibit Square Bolus >
|
|
235
237
|
// Inhibit Patient Bolus.
|
|
236
238
|
part notifLowReservoir : NotificationSpec {
|
|
237
|
-
|
|
239
|
+
@MemoIdentity { :>> providedId = "NOTIF-01"; } attribute :>> name = "Low_Reservoir";
|
|
238
240
|
attribute :>> priority = NotificationPriorityKind::high;
|
|
239
241
|
attribute :>> visualNotification = true; attribute :>> audioNotification = false;
|
|
240
242
|
attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = true;
|
|
241
243
|
attribute :>> inhibitPatientBolus = true; attribute :>> stopBolus = true;
|
|
242
|
-
|
|
244
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
243
245
|
}
|
|
244
246
|
part notifEmptyReservoir : NotificationSpec {
|
|
245
|
-
|
|
247
|
+
@MemoIdentity { :>> providedId = "NOTIF-02"; } attribute :>> name = "Empty_Reservoir";
|
|
246
248
|
attribute :>> priority = NotificationPriorityKind::high;
|
|
247
249
|
attribute :>> visualNotification = true; attribute :>> audioNotification = true;
|
|
248
250
|
attribute :>> inhibitInfusion = true; attribute :>> inhibitSquareBolus = true;
|
|
249
251
|
attribute :>> inhibitPatientBolus = true; attribute :>> stopBolus = true;
|
|
250
|
-
|
|
252
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
251
253
|
}
|
|
252
254
|
part notifAirEmbolism : NotificationSpec {
|
|
253
|
-
|
|
255
|
+
@MemoIdentity { :>> providedId = "NOTIF-03"; } attribute :>> name = "Air_embolism";
|
|
254
256
|
attribute :>> priority = NotificationPriorityKind::high;
|
|
255
257
|
attribute :>> visualNotification = true; attribute :>> audioNotification = true;
|
|
256
258
|
attribute :>> inhibitInfusion = true; attribute :>> inhibitSquareBolus = true;
|
|
257
259
|
attribute :>> inhibitPatientBolus = true; attribute :>> stopBolus = true;
|
|
258
|
-
|
|
260
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
259
261
|
}
|
|
260
262
|
part notifReverseDelivery : NotificationSpec {
|
|
261
|
-
|
|
263
|
+
@MemoIdentity { :>> providedId = "NOTIF-04"; } attribute :>> name = "Reverse_Delivery";
|
|
262
264
|
attribute :>> priority = NotificationPriorityKind::high;
|
|
263
265
|
attribute :>> visualNotification = true; attribute :>> audioNotification = true;
|
|
264
266
|
attribute :>> inhibitInfusion = true; attribute :>> inhibitSquareBolus = true;
|
|
265
267
|
attribute :>> inhibitPatientBolus = true; attribute :>> stopBolus = true;
|
|
266
|
-
|
|
268
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
267
269
|
}
|
|
268
270
|
part notifOverInfusionFlowRate : NotificationSpec {
|
|
269
|
-
|
|
271
|
+
@MemoIdentity { :>> providedId = "NOTIF-05"; } attribute :>> name = "Over_Infusion_FlowRate";
|
|
270
272
|
attribute :>> priority = NotificationPriorityKind::high;
|
|
271
273
|
attribute :>> visualNotification = true; attribute :>> audioNotification = true;
|
|
272
274
|
attribute :>> inhibitInfusion = true; attribute :>> inhibitSquareBolus = true;
|
|
273
275
|
attribute :>> inhibitPatientBolus = true; attribute :>> stopBolus = true;
|
|
274
|
-
|
|
276
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
275
277
|
}
|
|
276
278
|
part notifOverInfusionVtbi : NotificationSpec {
|
|
277
|
-
|
|
279
|
+
@MemoIdentity { :>> providedId = "NOTIF-06"; } attribute :>> name = "Over_Infusion_VTBI";
|
|
278
280
|
attribute :>> priority = NotificationPriorityKind::high;
|
|
279
281
|
attribute :>> visualNotification = true; attribute :>> audioNotification = true;
|
|
280
282
|
attribute :>> inhibitInfusion = true; attribute :>> inhibitSquareBolus = true;
|
|
281
283
|
attribute :>> inhibitPatientBolus = true; attribute :>> stopBolus = true;
|
|
282
|
-
|
|
284
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
283
285
|
}
|
|
284
286
|
part notifBolusExceeded : NotificationSpec {
|
|
285
|
-
|
|
287
|
+
@MemoIdentity { :>> providedId = "NOTIF-07"; } attribute :>> name = "Bolus_Exceeded";
|
|
286
288
|
attribute :>> priority = NotificationPriorityKind::medium;
|
|
287
289
|
attribute :>> visualNotification = true; attribute :>> audioNotification = true;
|
|
288
290
|
attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
|
|
289
291
|
attribute :>> inhibitPatientBolus = true; attribute :>> stopBolus = false;
|
|
290
|
-
|
|
292
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
291
293
|
}
|
|
292
294
|
part notifInfusionInhibited : NotificationSpec {
|
|
293
|
-
|
|
295
|
+
@MemoIdentity { :>> providedId = "NOTIF-08"; } attribute :>> name = "Infusion_Inhibited";
|
|
294
296
|
attribute :>> priority = NotificationPriorityKind::medium;
|
|
295
297
|
attribute :>> visualNotification = true; attribute :>> audioNotification = true;
|
|
296
298
|
attribute :>> inhibitInfusion = true; attribute :>> inhibitSquareBolus = false;
|
|
297
299
|
attribute :>> inhibitPatientBolus = false; attribute :>> stopBolus = true;
|
|
298
|
-
|
|
300
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
299
301
|
}
|
|
300
302
|
part notifInfusionManuallyInhibited : NotificationSpec {
|
|
301
|
-
|
|
303
|
+
@MemoIdentity { :>> providedId = "NOTIF-09"; } attribute :>> name = "Infusion_Manually_Inhibited";
|
|
302
304
|
attribute :>> priority = NotificationPriorityKind::medium;
|
|
303
305
|
attribute :>> visualNotification = true; attribute :>> audioNotification = true;
|
|
304
306
|
attribute :>> inhibitInfusion = true; attribute :>> inhibitSquareBolus = false;
|
|
305
307
|
attribute :>> inhibitPatientBolus = false; attribute :>> stopBolus = true;
|
|
306
|
-
|
|
308
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
307
309
|
}
|
|
308
310
|
part notifInfusionStoppedManually : NotificationSpec {
|
|
309
|
-
|
|
311
|
+
@MemoIdentity { :>> providedId = "NOTIF-10"; } attribute :>> name = "Infusion_Stopped_Manually";
|
|
310
312
|
attribute :>> priority = NotificationPriorityKind::medium;
|
|
311
313
|
attribute :>> visualNotification = true; attribute :>> audioNotification = true;
|
|
312
314
|
attribute :>> inhibitInfusion = true; attribute :>> inhibitSquareBolus = false;
|
|
313
315
|
attribute :>> inhibitPatientBolus = false; attribute :>> stopBolus = true;
|
|
314
|
-
|
|
316
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
315
317
|
}
|
|
316
318
|
part notifUnderInfusionFlowRate : NotificationSpec {
|
|
317
|
-
|
|
319
|
+
@MemoIdentity { :>> providedId = "NOTIF-11"; } attribute :>> name = "Under_Infusion_FlowRate";
|
|
318
320
|
attribute :>> priority = NotificationPriorityKind::medium;
|
|
319
321
|
attribute :>> visualNotification = true; attribute :>> audioNotification = false;
|
|
320
322
|
attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
|
|
321
323
|
attribute :>> inhibitPatientBolus = false; attribute :>> stopBolus = false;
|
|
322
|
-
|
|
324
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
323
325
|
}
|
|
324
326
|
part notifUnderInfusionVtbi : NotificationSpec {
|
|
325
|
-
|
|
327
|
+
@MemoIdentity { :>> providedId = "NOTIF-12"; } attribute :>> name = "Under_Infusion_VTBI";
|
|
326
328
|
attribute :>> priority = NotificationPriorityKind::medium;
|
|
327
329
|
attribute :>> visualNotification = true; attribute :>> audioNotification = false;
|
|
328
330
|
attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
|
|
329
331
|
attribute :>> inhibitPatientBolus = false; attribute :>> stopBolus = false;
|
|
330
|
-
|
|
332
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
331
333
|
}
|
|
332
334
|
part notifInfusionComplete : NotificationSpec {
|
|
333
|
-
|
|
335
|
+
@MemoIdentity { :>> providedId = "NOTIF-13"; } attribute :>> name = "Infusion_Complete";
|
|
334
336
|
attribute :>> priority = NotificationPriorityKind::low;
|
|
335
337
|
attribute :>> visualNotification = true; attribute :>> audioNotification = true;
|
|
336
338
|
attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
|
|
337
339
|
attribute :>> inhibitPatientBolus = false; attribute :>> stopBolus = false;
|
|
338
|
-
|
|
340
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
339
341
|
}
|
|
340
342
|
part notifFrequentBolusRequests : NotificationSpec {
|
|
341
|
-
|
|
343
|
+
@MemoIdentity { :>> providedId = "NOTIF-14"; } attribute :>> name = "Frequent_Bolus_Requests";
|
|
342
344
|
attribute :>> priority = NotificationPriorityKind::low;
|
|
343
345
|
attribute :>> visualNotification = true; attribute :>> audioNotification = false;
|
|
344
346
|
attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
|
|
345
347
|
attribute :>> inhibitPatientBolus = false; attribute :>> stopBolus = false;
|
|
346
|
-
|
|
348
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
347
349
|
}
|
|
348
350
|
part notifIdleTime : NotificationSpec {
|
|
349
|
-
|
|
351
|
+
@MemoIdentity { :>> providedId = "NOTIF-15"; } attribute :>> name = "IDLE_Time";
|
|
350
352
|
attribute :>> priority = NotificationPriorityKind::low;
|
|
351
353
|
attribute :>> visualNotification = true; attribute :>> audioNotification = true;
|
|
352
354
|
attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
|
|
353
355
|
attribute :>> inhibitPatientBolus = false; attribute :>> stopBolus = false;
|
|
354
|
-
|
|
356
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
355
357
|
}
|
|
356
358
|
part notifPausedTime : NotificationSpec {
|
|
357
|
-
|
|
359
|
+
@MemoIdentity { :>> providedId = "NOTIF-16"; } attribute :>> name = "PAUSED_Time";
|
|
358
360
|
attribute :>> priority = NotificationPriorityKind::low;
|
|
359
361
|
attribute :>> visualNotification = true; attribute :>> audioNotification = true;
|
|
360
362
|
attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
|
|
361
363
|
attribute :>> inhibitPatientBolus = false; attribute :>> stopBolus = false;
|
|
362
|
-
|
|
364
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
363
365
|
}
|
|
364
366
|
part notifConfigTime : NotificationSpec {
|
|
365
|
-
|
|
367
|
+
@MemoIdentity { :>> providedId = "NOTIF-17"; } attribute :>> name = "Config_Time";
|
|
366
368
|
attribute :>> priority = NotificationPriorityKind::low;
|
|
367
369
|
attribute :>> visualNotification = true; attribute :>> audioNotification = true;
|
|
368
370
|
attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
|
|
369
371
|
attribute :>> inhibitPatientBolus = false; attribute :>> stopBolus = false;
|
|
370
|
-
|
|
372
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
371
373
|
}
|
|
372
374
|
part notifValidationFailed : NotificationSpec {
|
|
373
|
-
|
|
375
|
+
@MemoIdentity { :>> providedId = "NOTIF-18"; } attribute :>> name = "Validation_Failed";
|
|
374
376
|
attribute :>> priority = NotificationPriorityKind::low;
|
|
375
377
|
attribute :>> visualNotification = true; attribute :>> audioNotification = true;
|
|
376
378
|
attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
|
|
377
379
|
attribute :>> inhibitPatientBolus = false; attribute :>> stopBolus = false;
|
|
378
|
-
|
|
380
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
379
381
|
}
|
|
380
382
|
part notifDrugSafeValueNotPresent : NotificationSpec {
|
|
381
|
-
|
|
383
|
+
@MemoIdentity { :>> providedId = "NOTIF-19"; } attribute :>> name = "Drug_safe_value_not_present";
|
|
382
384
|
attribute :>> description = "Raised with the missing field names appended.";
|
|
383
385
|
attribute :>> priority = NotificationPriorityKind::low;
|
|
384
386
|
attribute :>> visualNotification = true; attribute :>> audioNotification = false;
|
|
385
387
|
attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
|
|
386
388
|
attribute :>> inhibitPatientBolus = false; attribute :>> stopBolus = false;
|
|
387
|
-
|
|
389
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
388
390
|
}
|
|
389
391
|
part notifDrugDatabaseNotReachable : NotificationSpec {
|
|
390
|
-
|
|
392
|
+
@MemoIdentity { :>> providedId = "NOTIF-20"; } attribute :>> name = "Drug_database_not_reachable";
|
|
391
393
|
attribute :>> priority = NotificationPriorityKind::low;
|
|
392
394
|
attribute :>> visualNotification = true; attribute :>> audioNotification = true;
|
|
393
395
|
attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
|
|
394
396
|
attribute :>> inhibitPatientBolus = false; attribute :>> stopBolus = false;
|
|
395
|
-
|
|
397
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
|
|
396
398
|
}
|
|
397
399
|
|
|
398
400
|
// ═════ CriSys system requirements — §4.1.1 GPCA System ══════
|
|
399
401
|
requirement reqCs01 : Requirement {
|
|
400
|
-
attribute :>>
|
|
401
|
-
|
|
402
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
403
|
+
@MemoIdentity { :>> providedId = "REQ-CS-01"; } attribute :>> name = "SingleActiveMode";
|
|
402
404
|
attribute :>> statement = "The system shall always be in only one of the following modes: OFF (default mode), IDLE, PAUSED, BASAL, SQUARE BOLUS or PATIENT BOLUS.";
|
|
403
405
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
404
406
|
attribute :>> concernKind = ConcernKind::safety;
|
|
405
407
|
attribute :>> status = ElementStatusKind::approved;
|
|
406
408
|
attribute :>> acceptanceCriteria = "Mode output is always exactly one valid exclusive value.";
|
|
407
409
|
attribute :>> subjectDescription = "GPCA system";
|
|
408
|
-
|
|
410
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.1.1 (REQ 1)"; }
|
|
409
411
|
}
|
|
410
412
|
requirement reqCs02 : Requirement {
|
|
411
|
-
attribute :>>
|
|
412
|
-
|
|
413
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
414
|
+
@MemoIdentity { :>> providedId = "REQ-CS-02"; } attribute :>> name = "ModeChangeDurationWithoutFlowChange";
|
|
413
415
|
attribute :>> statement = "If there are mode transitions without change in flow rates between the two modes, the system shall transition within Max_Mode_Change_Duration_const.";
|
|
414
416
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
415
417
|
attribute :>> concernKind = ConcernKind::performance;
|
|
416
418
|
attribute :>> status = ElementStatusKind::approved;
|
|
417
419
|
attribute :>> acceptanceCriteria = "transition time <= Max_Mode_Change_Duration_const";
|
|
418
420
|
attribute :>> subjectDescription = "GPCA system";
|
|
419
|
-
|
|
421
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.1.1 (REQ 2)"; }
|
|
420
422
|
}
|
|
421
423
|
requirement reqCs03 : Requirement {
|
|
422
|
-
attribute :>>
|
|
423
|
-
|
|
424
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
425
|
+
@MemoIdentity { :>> providedId = "REQ-CS-03"; } attribute :>> name = "ModeChangeFlowRamp";
|
|
424
426
|
attribute :>> statement = "If there are mode transitions with change in flow rates between the two modes, the system shall change from the current mode flow rate to the new mode flow rate at a rate not more than Max_Rateof_Flow_Change_const or within Max_Mode_Change_Duration_const, whichever achieves the new desired flow rate the quickest.";
|
|
425
427
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
426
428
|
attribute :>> concernKind = ConcernKind::performance;
|
|
427
429
|
attribute :>> status = ElementStatusKind::approved;
|
|
428
430
|
attribute :>> acceptanceCriteria = "flow ramp rate <= Max_Rateof_Flow_Change_const OR transition time <= Max_Mode_Change_Duration_const (quickest wins)";
|
|
429
431
|
attribute :>> subjectDescription = "GPCA system";
|
|
430
|
-
|
|
432
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.1.1 (REQ 3)"; }
|
|
431
433
|
}
|
|
432
434
|
requirement reqCs04 : Requirement {
|
|
433
|
-
attribute :>>
|
|
434
|
-
|
|
435
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
436
|
+
@MemoIdentity { :>> providedId = "REQ-CS-04"; } attribute :>> name = "OffToIdleOnSystemStart";
|
|
435
437
|
attribute :>> statement = "The system shall transition from OFF mode to ON > IDLE mode when System_start_prog is commanded. At this transition, the variables in App. A.4 shall be set to their default values.";
|
|
436
438
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
437
439
|
attribute :>> concernKind = ConcernKind::safety;
|
|
438
440
|
attribute :>> status = ElementStatusKind::approved;
|
|
439
441
|
attribute :>> acceptanceCriteria = "System_start_prog in OFF => mode = ON > IDLE and A.4 variables at defaults";
|
|
440
442
|
attribute :>> subjectDescription = "GPCA system (OFF -> ON transition)";
|
|
441
|
-
|
|
443
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.1.2 (REQ 4)"; }
|
|
442
444
|
}
|
|
443
445
|
requirement reqCs05 : Requirement {
|
|
444
|
-
attribute :>>
|
|
445
|
-
|
|
446
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
447
|
+
@MemoIdentity { :>> providedId = "REQ-CS-05"; } attribute :>> name = "OnToOffOnSystemStop";
|
|
446
448
|
attribute :>> statement = "While in ON mode, when System_stop_prog is commanded, the system shall stop infusion, cancel all notifications and transition to OFF mode.";
|
|
447
449
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
448
450
|
attribute :>> concernKind = ConcernKind::safety;
|
|
449
451
|
attribute :>> status = ElementStatusKind::approved;
|
|
450
452
|
attribute :>> acceptanceCriteria = "System_stop_prog in ON => infusion stopped, active notifications cancelled, mode = OFF";
|
|
451
453
|
attribute :>> subjectDescription = "GPCA system (ON -> OFF transition)";
|
|
452
|
-
|
|
454
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.1.2 (REQ 5)"; }
|
|
453
455
|
}
|
|
454
456
|
|
|
455
457
|
// ── §4.1.2 OFF mode ─────────────────────────────────────────
|
|
456
458
|
requirement reqCs06 : Requirement {
|
|
457
|
-
attribute :>>
|
|
458
|
-
|
|
459
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
460
|
+
@MemoIdentity { :>> providedId = "REQ-CS-06"; } attribute :>> name = "OffModeNoDelivery";
|
|
459
461
|
attribute :>> statement = "While in OFF mode, the system shall not deliver any drug.";
|
|
460
462
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
461
463
|
attribute :>> concernKind = ConcernKind::safety;
|
|
462
464
|
attribute :>> status = ElementStatusKind::approved;
|
|
463
465
|
attribute :>> acceptanceCriteria = "FlowRate_output = 0";
|
|
464
466
|
attribute :>> subjectDescription = "OFF mode";
|
|
465
|
-
|
|
467
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.2.1 (REQ 6)"; }
|
|
466
468
|
}
|
|
467
469
|
|
|
468
470
|
// ── §4.1.3 ON mode ──────────────────────────────────────────
|
|
469
471
|
requirement reqCs07 : Requirement {
|
|
470
|
-
attribute :>>
|
|
471
|
-
|
|
472
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
473
|
+
@MemoIdentity { :>> providedId = "REQ-CS-07"; } attribute :>> name = "InfusionRequiresSavedPrescription";
|
|
472
474
|
attribute :>> statement = "While in ON mode, the system shall allow initiation of infusion only when a saved prescription is available.";
|
|
473
475
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
474
476
|
attribute :>> concernKind = ConcernKind::safety;
|
|
475
477
|
attribute :>> status = ElementStatusKind::approved;
|
|
476
478
|
attribute :>> acceptanceCriteria = "Infusion initiation is rejected when no saved prescription exists.";
|
|
477
479
|
attribute :>> subjectDescription = "ON mode";
|
|
478
|
-
|
|
480
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3.1 (REQ 7)"; }
|
|
479
481
|
}
|
|
480
482
|
requirement reqCs08 : Requirement {
|
|
481
|
-
attribute :>>
|
|
482
|
-
|
|
483
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
484
|
+
@MemoIdentity { :>> providedId = "REQ-CS-08"; } attribute :>> name = "AllowDataConfigurationInOn";
|
|
483
485
|
attribute :>> statement = "While in ON mode, the system shall allow configuring (DataConfig_prog) new or saved prescription data and reservoir initial volume, as described in the Data Configuration Requirements (§4.2).";
|
|
484
486
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
485
487
|
attribute :>> concernKind = ConcernKind::usability;
|
|
486
488
|
attribute :>> status = ElementStatusKind::approved;
|
|
487
489
|
attribute :>> acceptanceCriteria = "DataConfig_prog is accepted in ON mode and enters the §4.2 configuration flow.";
|
|
488
490
|
attribute :>> subjectDescription = "ON mode";
|
|
489
|
-
|
|
491
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3.1 (REQ 8)"; }
|
|
490
492
|
}
|
|
491
493
|
requirement reqCs09 : Requirement {
|
|
492
|
-
attribute :>>
|
|
493
|
-
|
|
494
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
495
|
+
@MemoIdentity { :>> providedId = "REQ-CS-09"; } attribute :>> name = "PrescriptionDisplayAndConfirm";
|
|
494
496
|
attribute :>> statement = "While in ON mode, if Infusion_initiate_prog, the system shall display the saved prescription values and allow the clinician to confirm the prescription with another Infusion_initiate_prog.";
|
|
495
497
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
496
498
|
attribute :>> concernKind = ConcernKind::usability;
|
|
497
499
|
attribute :>> status = ElementStatusKind::approved;
|
|
498
500
|
attribute :>> acceptanceCriteria = "First Infusion_initiate_prog displays saved values; therapy starts only after a second Infusion_initiate_prog.";
|
|
499
501
|
attribute :>> subjectDescription = "ON mode";
|
|
500
|
-
|
|
502
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3.1 (REQ 9)"; }
|
|
501
503
|
}
|
|
502
504
|
requirement reqCs10 : Requirement {
|
|
503
|
-
attribute :>>
|
|
504
|
-
|
|
505
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
506
|
+
@MemoIdentity { :>> providedId = "REQ-CS-10"; } attribute :>> name = "AllowNotificationsInOn";
|
|
505
507
|
attribute :>> statement = "While in ON mode, the system shall allow visual and audio notification as described in §4.3.";
|
|
506
508
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
507
509
|
attribute :>> concernKind = ConcernKind::safety;
|
|
508
510
|
attribute :>> status = ElementStatusKind::approved;
|
|
509
511
|
attribute :>> acceptanceCriteria = "Notification behaviors of §4.3 are available whenever the system is in ON mode.";
|
|
510
512
|
attribute :>> subjectDescription = "ON mode";
|
|
511
|
-
|
|
513
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3.1 (REQ 10)"; }
|
|
512
514
|
}
|
|
513
515
|
requirement reqCs11 : Requirement {
|
|
514
|
-
attribute :>>
|
|
515
|
-
|
|
516
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
517
|
+
@MemoIdentity { :>> providedId = "REQ-CS-11"; } attribute :>> name = "AllowLoggingInOn";
|
|
516
518
|
attribute :>> statement = "While in ON mode, the system shall allow logging as described in §4.4.";
|
|
517
519
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
518
520
|
attribute :>> concernKind = ConcernKind::regulatory;
|
|
519
521
|
attribute :>> status = ElementStatusKind::approved;
|
|
520
522
|
attribute :>> acceptanceCriteria = "Log behaviors of §4.4 are available whenever the system is in ON mode.";
|
|
521
523
|
attribute :>> subjectDescription = "ON mode";
|
|
522
|
-
|
|
524
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3.1 (REQ 11)"; }
|
|
523
525
|
}
|
|
524
526
|
requirement reqCs12 : Requirement {
|
|
525
|
-
attribute :>>
|
|
526
|
-
|
|
527
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
528
|
+
@MemoIdentity { :>> providedId = "REQ-CS-12"; } attribute :>> name = "ConfirmedInitiateStartsBasal";
|
|
527
529
|
attribute :>> statement = "While in ON mode, when the second Infusion_initiate_prog is commanded as per REQ 9 and Inhibited_Infusion_macro = FALSE, the system shall reset Actual_Infusion_Duration_macro = 0 and Actual_Volume_Infused_macro = 0 and shall transition to ON > THERAPY > ACTIVE > BASAL mode.";
|
|
528
530
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
529
531
|
attribute :>> concernKind = ConcernKind::safety;
|
|
530
532
|
attribute :>> status = ElementStatusKind::approved;
|
|
531
533
|
attribute :>> acceptanceCriteria = "Actual_Infusion_Duration_macro = 0 AND Actual_Volume_Infused_macro = 0 AND mode = ON > THERAPY > ACTIVE > BASAL";
|
|
532
534
|
attribute :>> subjectDescription = "ON mode transitions";
|
|
533
|
-
|
|
535
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3.2 (REQ 12)"; }
|
|
534
536
|
}
|
|
535
537
|
requirement reqCs13 : Requirement {
|
|
536
|
-
attribute :>>
|
|
537
|
-
|
|
538
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
539
|
+
@MemoIdentity { :>> providedId = "REQ-CS-13"; } attribute :>> name = "ConfirmedInitiateWhileInhibitedPauses";
|
|
538
540
|
attribute :>> statement = "While in ON mode, when the second Infusion_initiate_prog is commanded as per REQ 9 and Inhibited_Infusion_macro = TRUE, the system shall reset Actual_Infusion_Duration_macro = 0 and Actual_Volume_Infused_macro = 0, shall transition to ON > THERAPY > PAUSED mode and perform actions as described in REQ 59 for 'Infusion Inhibited'.";
|
|
539
541
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
540
542
|
attribute :>> concernKind = ConcernKind::safety;
|
|
541
543
|
attribute :>> status = ElementStatusKind::approved;
|
|
542
544
|
attribute :>> acceptanceCriteria = "Inhibited_Infusion_macro = TRUE => mode = ON > THERAPY > PAUSED and 'Infusion Inhibited' actions taken";
|
|
543
545
|
attribute :>> subjectDescription = "ON mode transitions";
|
|
544
|
-
|
|
546
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3.2 (REQ 13)"; }
|
|
545
547
|
}
|
|
546
548
|
|
|
547
549
|
// ── §4.1.4 ON > IDLE mode ───────────────────────────────────
|
|
548
550
|
requirement reqCs14 : Requirement {
|
|
549
|
-
attribute :>>
|
|
550
|
-
|
|
551
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
552
|
+
@MemoIdentity { :>> providedId = "REQ-CS-14"; } attribute :>> name = "IdleModeNoDelivery";
|
|
551
553
|
attribute :>> statement = "While in IDLE mode, the system shall not deliver any drug.";
|
|
552
554
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
553
555
|
attribute :>> concernKind = ConcernKind::safety;
|
|
554
556
|
attribute :>> status = ElementStatusKind::approved;
|
|
555
557
|
attribute :>> acceptanceCriteria = "FlowRate_output = 0";
|
|
556
558
|
attribute :>> subjectDescription = "ON > IDLE mode";
|
|
557
|
-
|
|
559
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.4.1 (REQ 14)"; }
|
|
558
560
|
}
|
|
559
561
|
requirement reqCs15 : Requirement {
|
|
560
|
-
attribute :>>
|
|
561
|
-
|
|
562
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
563
|
+
@MemoIdentity { :>> providedId = "REQ-CS-15"; } attribute :>> name = "IdleTimeNotification";
|
|
562
564
|
attribute :>> statement = "While in IDLE mode for more than Max_IDLE_Duration_const, the system shall take actions as defined in REQ 59 for 'IDLE Time'.";
|
|
563
565
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
564
566
|
attribute :>> concernKind = ConcernKind::safety;
|
|
565
567
|
attribute :>> status = ElementStatusKind::approved;
|
|
566
568
|
attribute :>> acceptanceCriteria = "time in IDLE > Max_IDLE_Duration_const => 'IDLE Time' actions taken";
|
|
567
569
|
attribute :>> subjectDescription = "ON > IDLE mode";
|
|
568
|
-
|
|
570
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.4.1 (REQ 15)"; }
|
|
569
571
|
}
|
|
570
572
|
|
|
571
573
|
// ── §4.1.5 ON > THERAPY mode ────────────────────────────────
|
|
572
574
|
requirement reqCs16 : Requirement {
|
|
573
|
-
attribute :>>
|
|
574
|
-
|
|
575
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
576
|
+
@MemoIdentity { :>> providedId = "REQ-CS-16"; } attribute :>> name = "TherapyDeliveryWithinTolerance";
|
|
575
577
|
attribute :>> statement = "While in THERAPY mode, the system shall deliver the drug as per the respective sub-mode's programmed flow rate, FlowRate_Mode_macro, within a tolerance of Tolerance_Max_const.";
|
|
576
578
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
577
579
|
attribute :>> concernKind = ConcernKind::safety;
|
|
578
580
|
attribute :>> status = ElementStatusKind::approved;
|
|
579
581
|
attribute :>> acceptanceCriteria = "FlowRate_output < FlowRate_Mode_macro + Tolerance_Max_const";
|
|
580
582
|
attribute :>> subjectDescription = "ON > THERAPY mode";
|
|
581
|
-
|
|
583
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.1 (REQ 16)"; }
|
|
582
584
|
}
|
|
583
585
|
requirement reqCs17 : Requirement {
|
|
584
|
-
attribute :>>
|
|
585
|
-
|
|
586
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
587
|
+
@MemoIdentity { :>> providedId = "REQ-CS-17"; } attribute :>> name = "UnderInfusionFlowRateNotification";
|
|
586
588
|
attribute :>> statement = "While in THERAPY mode, the system shall take actions as defined in REQ 59 for 'Under Infusion FlowRate' if the output flow rate falls below the mode flow rate beyond the tolerance windows.";
|
|
587
589
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
588
590
|
attribute :>> concernKind = ConcernKind::safety;
|
|
589
591
|
attribute :>> status = ElementStatusKind::approved;
|
|
590
592
|
attribute :>> acceptanceCriteria = "FlowRate_output < FlowRate_Mode_macro - Tolerance_Min_const for more than Max_Duration_UnderInfusion_const OR FlowRate_output < FlowRate_Mode_macro - Tolerance_Max_const OR FlowRate_output < FlowRate_lo_hd";
|
|
591
593
|
attribute :>> subjectDescription = "ON > THERAPY mode";
|
|
592
|
-
|
|
594
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.1 (REQ 17)"; }
|
|
593
595
|
}
|
|
594
596
|
requirement reqCs18 : Requirement {
|
|
595
|
-
attribute :>>
|
|
596
|
-
|
|
597
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
598
|
+
@MemoIdentity { :>> providedId = "REQ-CS-18"; } attribute :>> name = "LowReservoirNotification";
|
|
597
599
|
attribute :>> statement = "While in THERAPY mode, when the current volume of drug in the reservoir is less than Low_Reservoir_const, the system shall perform the actions defined in REQ 59 for 'Low Reservoir'.";
|
|
598
600
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
599
601
|
attribute :>> concernKind = ConcernKind::safety;
|
|
600
602
|
attribute :>> status = ElementStatusKind::approved;
|
|
601
603
|
attribute :>> acceptanceCriteria = "reservoir volume < Low_Reservoir_const => 'Low Reservoir' actions taken";
|
|
602
604
|
attribute :>> subjectDescription = "ON > THERAPY mode";
|
|
603
|
-
|
|
605
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.1 (REQ 18)"; }
|
|
604
606
|
}
|
|
605
607
|
requirement reqCs19 : Requirement {
|
|
606
|
-
attribute :>>
|
|
607
|
-
|
|
608
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
609
|
+
@MemoIdentity { :>> providedId = "REQ-CS-19"; } attribute :>> name = "OverInfusionFlowRatePause";
|
|
608
610
|
attribute :>> statement = "While in THERAPY mode, the system shall transition to PAUSED mode and perform the actions described in REQ 59 for 'Over Infusion FlowRate' if the output flow rate exceeds the mode flow rate beyond the tolerance windows.";
|
|
609
611
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
610
612
|
attribute :>> concernKind = ConcernKind::safety;
|
|
611
613
|
attribute :>> status = ElementStatusKind::approved;
|
|
612
614
|
attribute :>> acceptanceCriteria = "FlowRate_output > FlowRate_Mode_macro + Tolerance_Min_const for more than Max_Duration_OverInfusion_const OR FlowRate_output > FlowRate_Mode_macro + Tolerance_Max_const OR FlowRate_output > FlowRate_hi_hd";
|
|
613
615
|
attribute :>> subjectDescription = "ON > THERAPY mode transitions";
|
|
614
|
-
|
|
616
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 19)"; }
|
|
615
617
|
}
|
|
616
618
|
requirement reqCs20 : Requirement {
|
|
617
|
-
attribute :>>
|
|
618
|
-
|
|
619
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
620
|
+
@MemoIdentity { :>> providedId = "REQ-CS-20"; } attribute :>> name = "OverInfusionVtbiPause";
|
|
619
621
|
attribute :>> statement = "While in THERAPY mode, the system shall transition to PAUSED mode and take the actions described in REQ 59 for 'Over Infusion VTBI' if the actual volume infused exceeds the drug-database maximum VTBI.";
|
|
620
622
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
621
623
|
attribute :>> concernKind = ConcernKind::safety;
|
|
622
624
|
attribute :>> status = ElementStatusKind::approved;
|
|
623
625
|
attribute :>> acceptanceCriteria = "Actual_Volume_Infused_macro > VTBI_hi_hd";
|
|
624
626
|
attribute :>> subjectDescription = "ON > THERAPY mode transitions";
|
|
625
|
-
|
|
627
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 20)"; }
|
|
626
628
|
}
|
|
627
629
|
requirement reqCs21 : Requirement {
|
|
628
|
-
attribute :>>
|
|
629
|
-
|
|
630
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
631
|
+
@MemoIdentity { :>> providedId = "REQ-CS-21"; } attribute :>> name = "AirEmbolismPause";
|
|
630
632
|
attribute :>> statement = "While in THERAPY mode, the system shall transition to PAUSED mode and perform the actions defined in REQ 59 for 'Air embolism' if an air bubble of a volume larger than Single_AirBubble_Volume_const flows through the hose, or the sum of volume of all air bubbles flowing through the hose exceeds Cumulative_AirBubble_Volume_const for the same time interval defined for Cumulative_AirBubble_Volume_const.";
|
|
631
633
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
632
634
|
attribute :>> concernKind = ConcernKind::safety;
|
|
633
635
|
attribute :>> status = ElementStatusKind::approved;
|
|
634
636
|
attribute :>> acceptanceCriteria = "single bubble volume > Single_AirBubble_Volume_const OR cumulative bubble volume > Cumulative_AirBubble_Volume_const";
|
|
635
637
|
attribute :>> subjectDescription = "ON > THERAPY mode transitions";
|
|
636
|
-
|
|
638
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 21)"; }
|
|
637
639
|
}
|
|
638
640
|
requirement reqCs22 : Requirement {
|
|
639
|
-
attribute :>>
|
|
640
|
-
|
|
641
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
642
|
+
@MemoIdentity { :>> providedId = "REQ-CS-22"; } attribute :>> name = "ReverseDeliveryPause";
|
|
641
643
|
attribute :>> statement = "While in THERAPY mode, the system shall transition to PAUSED mode and perform actions defined in REQ 59 for 'Reverse Delivery' if there is continuous reverse delivery for more than Rev_Delivery_Continuous_Duration_const, or the cumulative time of all reverse delivery episodes exceeds Rev_Delivery_Cumulative_Duration_const.";
|
|
642
644
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
643
645
|
attribute :>> concernKind = ConcernKind::safety;
|
|
644
646
|
attribute :>> status = ElementStatusKind::approved;
|
|
645
647
|
attribute :>> acceptanceCriteria = "continuous reverse delivery > Rev_Delivery_Continuous_Duration_const OR cumulative reverse delivery > Rev_Delivery_Cumulative_Duration_const";
|
|
646
648
|
attribute :>> subjectDescription = "ON > THERAPY mode transitions";
|
|
647
|
-
|
|
649
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 22)"; }
|
|
648
650
|
}
|
|
649
651
|
requirement reqCs23 : Requirement {
|
|
650
|
-
attribute :>>
|
|
651
|
-
|
|
652
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
653
|
+
@MemoIdentity { :>> providedId = "REQ-CS-23"; } attribute :>> name = "EmptyReservoirPause";
|
|
652
654
|
attribute :>> statement = "While in THERAPY mode and if the volume of drug in the reservoir is less than Empty_Reservoir_const, the system shall transition to PAUSED mode and perform actions as listed in REQ 59 for 'Empty Reservoir'.";
|
|
653
655
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
654
656
|
attribute :>> concernKind = ConcernKind::safety;
|
|
655
657
|
attribute :>> status = ElementStatusKind::approved;
|
|
656
658
|
attribute :>> acceptanceCriteria = "reservoir volume < Empty_Reservoir_const => mode = PAUSED and 'Empty Reservoir' actions taken";
|
|
657
659
|
attribute :>> subjectDescription = "ON > THERAPY mode transitions";
|
|
658
|
-
|
|
660
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 23)"; }
|
|
659
661
|
}
|
|
660
662
|
|
|
661
663
|
// ── §4.1.6 ON > THERAPY > ACTIVE mode ───────────────────────
|
|
662
664
|
requirement reqCs24 : Requirement {
|
|
663
|
-
attribute :>>
|
|
664
|
-
|
|
665
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
666
|
+
@MemoIdentity { :>> providedId = "REQ-CS-24"; } attribute :>> name = "SquareBolusAutoSchedule";
|
|
665
667
|
attribute :>> statement = "While in ACTIVE mode, the system shall schedule to start a SQUARE BOLUS every Interval_sbolus_prog and end after Duration_sbolus_prog during the Duration_total_prog.";
|
|
666
668
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
667
669
|
attribute :>> concernKind = ConcernKind::safety;
|
|
668
670
|
attribute :>> status = ElementStatusKind::approved;
|
|
669
671
|
attribute :>> acceptanceCriteria = "Square boluses are auto-scheduled by the system every Interval_sbolus_prog for Duration_sbolus_prog; no external trigger is required.";
|
|
670
672
|
attribute :>> subjectDescription = "ON > THERAPY > ACTIVE mode";
|
|
671
|
-
|
|
673
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.1 (REQ 24)"; }
|
|
672
674
|
}
|
|
673
675
|
requirement reqCs25 : Requirement {
|
|
674
|
-
attribute :>>
|
|
675
|
-
|
|
676
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
677
|
+
@MemoIdentity { :>> providedId = "REQ-CS-25"; } attribute :>> name = "IgnorePatientBolusRequestConditions";
|
|
676
678
|
attribute :>> statement = "While in ACTIVE mode, when BolusRequest_prog, the system shall ignore the patient bolus request (BolusRequest_prog = FALSE) if: (1) Inhibited_Infusion_macro = TRUE, OR (2) Inhibited_PatientBolus_macro = TRUE, OR (3) the interval between the most recent PATIENT BOLUS mode end time and the current BolusRequest_prog time violates LockOutPeriod_pbolus_prog, OR (4) the total number of delivered patient boluses for the current prescription violates the programmed maximum number of patient boluses, OR (5) the system is currently in PATIENT BOLUS mode.";
|
|
677
679
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
678
680
|
attribute :>> concernKind = ConcernKind::safety;
|
|
679
681
|
attribute :>> status = ElementStatusKind::approved;
|
|
680
682
|
attribute :>> acceptanceCriteria = "Source formal conditions: (3) (BolusRequest_prog time - most recent PATIENT BOLUS end time) > LockOutPeriod_pbolus_prog; (4) sum of occurrences of all PATIENT BOLUS modes > NumberMax_pbolus_prog (source prose and formal expressions are inconsistent; transcribed as written).";
|
|
681
683
|
attribute :>> subjectDescription = "ON > THERAPY > ACTIVE mode";
|
|
682
|
-
|
|
684
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.1 (REQ 25)"; }
|
|
683
685
|
}
|
|
684
686
|
requirement reqCs26 : Requirement {
|
|
685
|
-
attribute :>>
|
|
686
|
-
|
|
687
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
688
|
+
@MemoIdentity { :>> providedId = "REQ-CS-26"; } attribute :>> name = "FrequentBolusRequestsNotification";
|
|
687
689
|
attribute :>> statement = "While in ACTIVE mode, the system shall perform the actions described in REQ 59 for 'Frequent Bolus Requests' if the condition described in REQ 25.3 or REQ 25.5 occurs.";
|
|
688
690
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
689
691
|
attribute :>> concernKind = ConcernKind::safety;
|
|
690
692
|
attribute :>> status = ElementStatusKind::approved;
|
|
691
693
|
attribute :>> acceptanceCriteria = "REQ 25 condition 3 or 5 => 'Frequent Bolus Requests' actions taken";
|
|
692
694
|
attribute :>> subjectDescription = "ON > THERAPY > ACTIVE mode";
|
|
693
|
-
|
|
695
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.1 (REQ 26)"; }
|
|
694
696
|
}
|
|
695
697
|
requirement reqCs27 : Requirement {
|
|
696
|
-
attribute :>>
|
|
697
|
-
|
|
698
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
699
|
+
@MemoIdentity { :>> providedId = "REQ-CS-27"; } attribute :>> name = "BolusExceededNotification";
|
|
698
700
|
attribute :>> statement = "While in ACTIVE mode, the system shall perform the actions described in REQ 59 for 'Bolus Exceeded' if the condition described in REQ 25.4 occurs.";
|
|
699
701
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
700
702
|
attribute :>> concernKind = ConcernKind::safety;
|
|
701
703
|
attribute :>> status = ElementStatusKind::approved;
|
|
702
704
|
attribute :>> acceptanceCriteria = "REQ 25 condition 4 => 'Bolus Exceeded' actions taken";
|
|
703
705
|
attribute :>> subjectDescription = "ON > THERAPY > ACTIVE mode";
|
|
704
|
-
|
|
706
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.1 (REQ 27)"; }
|
|
705
707
|
}
|
|
706
708
|
requirement reqCs28 : Requirement {
|
|
707
|
-
attribute :>>
|
|
708
|
-
|
|
709
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
710
|
+
@MemoIdentity { :>> providedId = "REQ-CS-28"; } attribute :>> name = "InfusionCompleteToIdle";
|
|
709
711
|
attribute :>> statement = "While in ACTIVE mode, the system shall transition to IDLE and perform actions described in REQ 59 for 'Infusion Complete' if the actual duration of infusion is greater than or equal to the programmed prescription total duration, or the total volume infused is greater than or equal to the programmed prescription maximum VTBI.";
|
|
710
712
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
711
713
|
attribute :>> concernKind = ConcernKind::safety;
|
|
712
714
|
attribute :>> status = ElementStatusKind::approved;
|
|
713
715
|
attribute :>> acceptanceCriteria = "Actual_Infusion_Duration_macro >= Duration_total_prog OR Actual_Volume_Infused_macro >= VTBI_total_prog";
|
|
714
716
|
attribute :>> subjectDescription = "ON > THERAPY > ACTIVE mode transitions";
|
|
715
|
-
|
|
717
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 28)"; }
|
|
716
718
|
}
|
|
717
719
|
requirement reqCs29 : Requirement {
|
|
718
|
-
attribute :>>
|
|
719
|
-
|
|
720
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
721
|
+
@MemoIdentity { :>> providedId = "REQ-CS-29"; } attribute :>> name = "ManualInhibitToPaused";
|
|
720
722
|
attribute :>> statement = "While in ACTIVE mode, when Infusion_inhibit_prog, the system shall transition to PAUSED mode and perform actions described in REQ 59 for 'Infusion Manually Inhibited'.";
|
|
721
723
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
722
724
|
attribute :>> concernKind = ConcernKind::safety;
|
|
723
725
|
attribute :>> status = ElementStatusKind::approved;
|
|
724
726
|
attribute :>> acceptanceCriteria = "Infusion_inhibit_prog => mode = PAUSED and 'Infusion Manually Inhibited' actions taken";
|
|
725
727
|
attribute :>> subjectDescription = "ON > THERAPY > ACTIVE mode transitions";
|
|
726
|
-
|
|
728
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 29)"; }
|
|
727
729
|
}
|
|
728
730
|
requirement reqCs30 : Requirement {
|
|
729
|
-
attribute :>>
|
|
730
|
-
|
|
731
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
732
|
+
@MemoIdentity { :>> providedId = "REQ-CS-30"; } attribute :>> name = "AllInhibitedToPaused";
|
|
731
733
|
attribute :>> statement = "While in ACTIVE mode, when Inhibited_Infusion_macro = TRUE, Inhibited_Bolus_macro = TRUE and Inhibited_PatientBolus_macro = TRUE, the system shall transition to PAUSED mode.";
|
|
732
734
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
733
735
|
attribute :>> concernKind = ConcernKind::safety;
|
|
734
736
|
attribute :>> status = ElementStatusKind::approved;
|
|
735
737
|
attribute :>> acceptanceCriteria = "Inhibited_Infusion_macro AND Inhibited_Bolus_macro AND Inhibited_PatientBolus_macro => mode = PAUSED";
|
|
736
738
|
attribute :>> subjectDescription = "ON > THERAPY > ACTIVE mode transitions";
|
|
737
|
-
|
|
739
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 30)"; }
|
|
738
740
|
}
|
|
739
741
|
requirement reqCs31 : Requirement {
|
|
740
|
-
attribute :>>
|
|
741
|
-
|
|
742
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
743
|
+
@MemoIdentity { :>> providedId = "REQ-CS-31"; } attribute :>> name = "BasalToSquareBolus";
|
|
742
744
|
attribute :>> statement = "While in BASAL mode, when SQUARE BOLUS is initiated as described in REQ 24, the system shall transition to SQUARE BOLUS mode if (1) Inhibited_Bolus_macro = FALSE, AND (2) Inhibited_Infusion_macro = FALSE, AND (3) either there is no BolusRequest_prog, or there is a BolusRequest_prog and at least one of the conditions listed in REQ 25 is true.";
|
|
743
745
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
744
746
|
attribute :>> concernKind = ConcernKind::safety;
|
|
745
747
|
attribute :>> status = ElementStatusKind::approved;
|
|
746
748
|
attribute :>> acceptanceCriteria = "NOT Inhibited_Bolus_macro AND NOT Inhibited_Infusion_macro AND (no BolusRequest_prog OR a REQ 25 ignore condition holds)";
|
|
747
749
|
attribute :>> subjectDescription = "ON > THERAPY > ACTIVE mode transitions";
|
|
748
|
-
|
|
750
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 31)"; }
|
|
749
751
|
}
|
|
750
752
|
requirement reqCs32 : Requirement {
|
|
751
|
-
attribute :>>
|
|
752
|
-
|
|
753
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
754
|
+
@MemoIdentity { :>> providedId = "REQ-CS-32"; } attribute :>> name = "BasalToPatientBolus";
|
|
753
755
|
attribute :>> statement = "While in BASAL mode, the system shall transition to PATIENT BOLUS mode when BolusRequest_prog and none of the conditions listed in REQ 25 are true.";
|
|
754
756
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
755
757
|
attribute :>> concernKind = ConcernKind::safety;
|
|
756
758
|
attribute :>> status = ElementStatusKind::approved;
|
|
757
759
|
attribute :>> acceptanceCriteria = "BolusRequest_prog AND no REQ 25 ignore condition holds => mode = PATIENT BOLUS";
|
|
758
760
|
attribute :>> subjectDescription = "ON > THERAPY > ACTIVE mode transitions";
|
|
759
|
-
|
|
761
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 32)"; }
|
|
760
762
|
}
|
|
761
763
|
requirement reqCs33 : Requirement {
|
|
762
|
-
attribute :>>
|
|
763
|
-
|
|
764
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
765
|
+
@MemoIdentity { :>> providedId = "REQ-CS-33"; } attribute :>> name = "SquareBolusToPatientBolus";
|
|
764
766
|
attribute :>> statement = "While in SQUARE BOLUS mode, the system shall transition to PATIENT BOLUS mode if BolusRequest_prog and none of the conditions listed in REQ 25 are true.";
|
|
765
767
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
766
768
|
attribute :>> concernKind = ConcernKind::safety;
|
|
767
769
|
attribute :>> status = ElementStatusKind::approved;
|
|
768
770
|
attribute :>> acceptanceCriteria = "BolusRequest_prog AND no REQ 25 ignore condition holds => mode = PATIENT BOLUS";
|
|
769
771
|
attribute :>> subjectDescription = "ON > THERAPY > ACTIVE mode transitions";
|
|
770
|
-
|
|
772
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 33)"; }
|
|
771
773
|
}
|
|
772
774
|
requirement reqCs34 : Requirement {
|
|
773
|
-
attribute :>>
|
|
774
|
-
|
|
775
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
776
|
+
@MemoIdentity { :>> providedId = "REQ-CS-34"; } attribute :>> name = "SquareBolusToBasal";
|
|
775
777
|
attribute :>> statement = "While in SQUARE BOLUS mode, if Inhibited_Bolus_macro = TRUE or the SQUARE BOLUS is scheduled to end (as described in REQ 24), the system shall transition to BASAL mode if (1) Inhibited_Infusion_macro = FALSE, AND (2) there is no BolusRequest_prog, or BolusRequest_prog and at least one of the conditions listed in REQ 25 is true.";
|
|
776
778
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
777
779
|
attribute :>> concernKind = ConcernKind::safety;
|
|
778
780
|
attribute :>> status = ElementStatusKind::approved;
|
|
779
781
|
attribute :>> acceptanceCriteria = "(Inhibited_Bolus_macro OR scheduled end) AND NOT Inhibited_Infusion_macro AND (no BolusRequest_prog OR a REQ 25 ignore condition holds) => mode = BASAL";
|
|
780
782
|
attribute :>> subjectDescription = "ON > THERAPY > ACTIVE mode transitions";
|
|
781
|
-
|
|
783
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 34)"; }
|
|
782
784
|
}
|
|
783
785
|
requirement reqCs35 : Requirement {
|
|
784
|
-
attribute :>>
|
|
785
|
-
|
|
786
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
787
|
+
@MemoIdentity { :>> providedId = "REQ-CS-35"; } attribute :>> name = "PatientBolusToBasal";
|
|
786
788
|
attribute :>> statement = "While in PATIENT BOLUS mode, when Inhibited_PatientBolus_macro = TRUE or the total duration in the current PATIENT BOLUS mode is greater than or equal to Duration_pbolus_prog, the system shall stop the PATIENT BOLUS delivery and transition to BASAL mode if (1) Inhibited_Infusion_macro = FALSE, AND (2) no SQUARE BOLUS is scheduled to be in progress at the time of transition, OR (3) a SQUARE BOLUS is scheduled to be in progress at the time of transition and Inhibited_Bolus_macro = TRUE.";
|
|
787
789
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
788
790
|
attribute :>> concernKind = ConcernKind::safety;
|
|
789
791
|
attribute :>> status = ElementStatusKind::approved;
|
|
790
792
|
attribute :>> acceptanceCriteria = "(Inhibited_PatientBolus_macro OR patient-bolus duration >= Duration_pbolus_prog) AND NOT Inhibited_Infusion_macro AND (no square bolus scheduled OR (square bolus scheduled AND Inhibited_Bolus_macro)) => mode = BASAL";
|
|
791
793
|
attribute :>> subjectDescription = "ON > THERAPY > ACTIVE mode transitions";
|
|
792
|
-
|
|
794
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 35)"; }
|
|
793
795
|
}
|
|
794
796
|
requirement reqCs36 : Requirement {
|
|
795
|
-
attribute :>>
|
|
796
|
-
|
|
797
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
798
|
+
@MemoIdentity { :>> providedId = "REQ-CS-36"; } attribute :>> name = "PatientBolusToSquareBolus";
|
|
797
799
|
attribute :>> statement = "While in PATIENT BOLUS mode, when Inhibited_PatientBolus_macro = TRUE or the total duration in the current PATIENT BOLUS mode is greater than or equal to Duration_pbolus_prog, the system shall stop the PATIENT BOLUS delivery and transition to SQUARE BOLUS mode if (1) Inhibited_Infusion_macro = FALSE, AND (2) a SQUARE BOLUS is scheduled to be in progress at the time of transition, AND (3) Inhibited_Bolus_macro = FALSE.";
|
|
798
800
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
799
801
|
attribute :>> concernKind = ConcernKind::safety;
|
|
800
802
|
attribute :>> status = ElementStatusKind::approved;
|
|
801
803
|
attribute :>> acceptanceCriteria = "(Inhibited_PatientBolus_macro OR patient-bolus duration >= Duration_pbolus_prog) AND NOT Inhibited_Infusion_macro AND square bolus scheduled AND NOT Inhibited_Bolus_macro => mode = SQUARE BOLUS";
|
|
802
804
|
attribute :>> subjectDescription = "ON > THERAPY > ACTIVE mode transitions";
|
|
803
|
-
|
|
805
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 36)"; }
|
|
804
806
|
}
|
|
805
807
|
requirement reqCs37 : Requirement {
|
|
806
|
-
attribute :>>
|
|
807
|
-
|
|
808
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
809
|
+
@MemoIdentity { :>> providedId = "REQ-CS-37"; } attribute :>> name = "BasalToPauseOnInhibit";
|
|
808
810
|
attribute :>> statement = "While in BASAL mode, if Inhibited_Infusion_macro = TRUE, the system shall transition to PAUSE mode.";
|
|
809
811
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
810
812
|
attribute :>> concernKind = ConcernKind::safety;
|
|
811
813
|
attribute :>> status = ElementStatusKind::approved;
|
|
812
814
|
attribute :>> acceptanceCriteria = "Inhibited_Infusion_macro => mode = PAUSED";
|
|
813
815
|
attribute :>> subjectDescription = "ON > THERAPY > ACTIVE mode transitions";
|
|
814
|
-
|
|
816
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 37)"; }
|
|
815
817
|
}
|
|
816
818
|
requirement reqCs38 : Requirement {
|
|
817
|
-
attribute :>>
|
|
818
|
-
|
|
819
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
820
|
+
@MemoIdentity { :>> providedId = "REQ-CS-38"; } attribute :>> name = "PatientBolusToPauseOnInhibit";
|
|
819
821
|
attribute :>> statement = "While in PATIENT BOLUS mode, the system shall transition to PAUSE mode if Inhibited_PatientBolus_macro = TRUE and Inhibited_Infusion_macro = TRUE.";
|
|
820
822
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
821
823
|
attribute :>> concernKind = ConcernKind::safety;
|
|
822
824
|
attribute :>> status = ElementStatusKind::approved;
|
|
823
825
|
attribute :>> acceptanceCriteria = "Inhibited_PatientBolus_macro AND Inhibited_Infusion_macro => mode = PAUSED";
|
|
824
826
|
attribute :>> subjectDescription = "ON > THERAPY > ACTIVE mode transitions";
|
|
825
|
-
|
|
827
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 38)"; }
|
|
826
828
|
}
|
|
827
829
|
requirement reqCs39 : Requirement {
|
|
828
|
-
attribute :>>
|
|
829
|
-
|
|
830
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
831
|
+
@MemoIdentity { :>> providedId = "REQ-CS-39"; } attribute :>> name = "SquareBolusToPauseOnInhibit";
|
|
830
832
|
attribute :>> statement = "While in SQUARE BOLUS mode, the system shall transition to PAUSE mode if Inhibited_Bolus_macro = TRUE and Inhibited_Infusion_macro = TRUE.";
|
|
831
833
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
832
834
|
attribute :>> concernKind = ConcernKind::safety;
|
|
833
835
|
attribute :>> status = ElementStatusKind::approved;
|
|
834
836
|
attribute :>> acceptanceCriteria = "Inhibited_Bolus_macro AND Inhibited_Infusion_macro => mode = PAUSED";
|
|
835
837
|
attribute :>> subjectDescription = "ON > THERAPY > ACTIVE mode transitions";
|
|
836
|
-
|
|
838
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 39)"; }
|
|
837
839
|
}
|
|
838
840
|
|
|
839
841
|
// ── §4.1.7–4.1.9 BASAL / SQUARE BOLUS / PATIENT BOLUS ───────
|
|
840
842
|
requirement reqCs40 : Requirement {
|
|
841
|
-
attribute :>>
|
|
842
|
-
|
|
843
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
844
|
+
@MemoIdentity { :>> providedId = "REQ-CS-40"; } attribute :>> name = "BasalDeliveryRate";
|
|
843
845
|
attribute :>> statement = "While in BASAL mode, the system shall deliver the drug at a flow rate FlowRate_basal_prog with a variation up to Tolerance_Max_const.";
|
|
844
846
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
845
847
|
attribute :>> concernKind = ConcernKind::safety;
|
|
846
848
|
attribute :>> status = ElementStatusKind::approved;
|
|
847
849
|
attribute :>> acceptanceCriteria = "FlowRate_output within Tolerance_Max_const of FlowRate_basal_prog";
|
|
848
850
|
attribute :>> subjectDescription = "ON > THERAPY > ACTIVE > BASAL mode";
|
|
849
|
-
|
|
851
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.7.1 (REQ 40)"; }
|
|
850
852
|
}
|
|
851
853
|
requirement reqCs41 : Requirement {
|
|
852
|
-
attribute :>>
|
|
853
|
-
|
|
854
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
855
|
+
@MemoIdentity { :>> providedId = "REQ-CS-41"; } attribute :>> name = "SquareBolusDeliveryRate";
|
|
854
856
|
attribute :>> statement = "While in SQUARE BOLUS mode, the system shall deliver the drug at a flow rate FlowRate_sbolus_prog with a variation up to Tolerance_Max_const.";
|
|
855
857
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
856
858
|
attribute :>> concernKind = ConcernKind::safety;
|
|
857
859
|
attribute :>> status = ElementStatusKind::approved;
|
|
858
860
|
attribute :>> acceptanceCriteria = "FlowRate_output within Tolerance_Max_const of FlowRate_sbolus_prog";
|
|
859
861
|
attribute :>> subjectDescription = "ON > THERAPY > ACTIVE > SQUARE BOLUS mode";
|
|
860
|
-
|
|
862
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.8.1 (REQ 41)"; }
|
|
861
863
|
}
|
|
862
864
|
requirement reqCs42 : Requirement {
|
|
863
|
-
attribute :>>
|
|
864
|
-
|
|
865
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
866
|
+
@MemoIdentity { :>> providedId = "REQ-CS-42"; } attribute :>> name = "PatientBolusDeliveryRate";
|
|
865
867
|
attribute :>> statement = "While in PATIENT BOLUS mode, the system shall deliver the drug at a flow rate FlowRate_pbolus_prog with a variation up to Tolerance_Max_const.";
|
|
866
868
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
867
869
|
attribute :>> concernKind = ConcernKind::safety;
|
|
868
870
|
attribute :>> status = ElementStatusKind::approved;
|
|
869
871
|
attribute :>> acceptanceCriteria = "FlowRate_output within Tolerance_Max_const of FlowRate_pbolus_prog";
|
|
870
872
|
attribute :>> subjectDescription = "ON > THERAPY > ACTIVE > PATIENT BOLUS mode";
|
|
871
|
-
|
|
873
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.9.1 (REQ 42)"; }
|
|
872
874
|
}
|
|
873
875
|
|
|
874
876
|
// ── §4.1.10 ON > THERAPY > PAUSED mode ──────────────────────
|
|
875
877
|
requirement reqCs43 : Requirement {
|
|
876
|
-
attribute :>>
|
|
877
|
-
|
|
878
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
879
|
+
@MemoIdentity { :>> providedId = "REQ-CS-43"; } attribute :>> name = "PausedKvoDelivery";
|
|
878
880
|
attribute :>> statement = "While in PAUSED mode, the system shall allow drug infusion at a flow rate FlowRate_kvo_hd with a variation up to Tolerance_Max_const, to keep the vein open when infusion is paused.";
|
|
879
881
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
880
882
|
attribute :>> concernKind = ConcernKind::safety;
|
|
881
883
|
attribute :>> status = ElementStatusKind::approved;
|
|
882
884
|
attribute :>> acceptanceCriteria = "FlowRate_Mode_macro = FlowRate_kvo_hd; FlowRate_output within Tolerance_Max_const of FlowRate_kvo_hd (KVO flow, not zero)";
|
|
883
885
|
attribute :>> subjectDescription = "ON > THERAPY > PAUSED mode";
|
|
884
|
-
|
|
886
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.10.1 (REQ 43)"; }
|
|
885
887
|
}
|
|
886
888
|
requirement reqCs44 : Requirement {
|
|
887
|
-
attribute :>>
|
|
888
|
-
|
|
889
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
890
|
+
@MemoIdentity { :>> providedId = "REQ-CS-44"; } attribute :>> name = "PausedTimeNotification";
|
|
889
891
|
attribute :>> statement = "While in PAUSED mode for more than Max_PAUSED_Duration_const, the system shall perform actions as described in REQ 59 for 'PAUSED Time'.";
|
|
890
892
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
891
893
|
attribute :>> concernKind = ConcernKind::safety;
|
|
892
894
|
attribute :>> status = ElementStatusKind::approved;
|
|
893
895
|
attribute :>> acceptanceCriteria = "time in PAUSED > Max_PAUSED_Duration_const => 'PAUSED Time' actions taken";
|
|
894
896
|
attribute :>> subjectDescription = "ON > THERAPY > PAUSED mode";
|
|
895
|
-
|
|
897
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.10.1 (REQ 44)"; }
|
|
896
898
|
}
|
|
897
899
|
requirement reqCs45 : Requirement {
|
|
898
|
-
attribute :>>
|
|
899
|
-
|
|
900
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
901
|
+
@MemoIdentity { :>> providedId = "REQ-CS-45"; } attribute :>> name = "PausedInitiateWhileInhibitedNoTransition";
|
|
900
902
|
attribute :>> statement = "While in PAUSED mode, when Infusion_initiate_prog and Inhibited_Infusion_macro = TRUE, the system shall not perform any transition.";
|
|
901
903
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
902
904
|
attribute :>> concernKind = ConcernKind::safety;
|
|
903
905
|
attribute :>> status = ElementStatusKind::approved;
|
|
904
906
|
attribute :>> acceptanceCriteria = "Infusion_initiate_prog AND Inhibited_Infusion_macro => mode unchanged";
|
|
905
907
|
attribute :>> subjectDescription = "ON > THERAPY > PAUSED mode";
|
|
906
|
-
|
|
908
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.10.1 (REQ 45)"; }
|
|
907
909
|
}
|
|
908
910
|
requirement reqCs46 : Requirement {
|
|
909
|
-
attribute :>>
|
|
910
|
-
|
|
911
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
912
|
+
@MemoIdentity { :>> providedId = "REQ-CS-46"; } attribute :>> name = "PausedResumeToBasal";
|
|
911
913
|
attribute :>> statement = "While in PAUSED mode, when Infusion_initiate_prog and Inhibited_Infusion_macro = FALSE, the system shall transition to ON > THERAPY > ACTIVE > BASAL mode.";
|
|
912
914
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
913
915
|
attribute :>> concernKind = ConcernKind::safety;
|
|
914
916
|
attribute :>> status = ElementStatusKind::approved;
|
|
915
917
|
attribute :>> acceptanceCriteria = "Infusion_initiate_prog AND NOT Inhibited_Infusion_macro => mode = ON > THERAPY > ACTIVE > BASAL";
|
|
916
918
|
attribute :>> subjectDescription = "ON > THERAPY > PAUSED mode transitions";
|
|
917
|
-
|
|
919
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.10.2 (REQ 46)"; }
|
|
918
920
|
}
|
|
919
921
|
requirement reqCs47 : Requirement {
|
|
920
|
-
attribute :>>
|
|
921
|
-
|
|
922
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
923
|
+
@MemoIdentity { :>> providedId = "REQ-CS-47"; } attribute :>> name = "PausedInhibitToIdle";
|
|
922
924
|
attribute :>> statement = "While in PAUSED mode, when Infusion_inhibit_prog, the system shall transition to ON > IDLE mode and perform actions as described in REQ 59 for 'Infusion Stopped Manually'.";
|
|
923
925
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
924
926
|
attribute :>> concernKind = ConcernKind::safety;
|
|
925
927
|
attribute :>> status = ElementStatusKind::approved;
|
|
926
928
|
attribute :>> acceptanceCriteria = "Infusion_inhibit_prog => mode = ON > IDLE and 'Infusion Stopped Manually' actions taken";
|
|
927
929
|
attribute :>> subjectDescription = "ON > THERAPY > PAUSED mode transitions";
|
|
928
|
-
|
|
930
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.10.2 (REQ 47)"; }
|
|
929
931
|
}
|
|
930
932
|
|
|
931
933
|
// ═════ §4.2 Data Configuration Requirements ═════════════════
|
|
932
934
|
requirement reqCs48 : Requirement {
|
|
933
|
-
attribute :>>
|
|
934
|
-
|
|
935
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
936
|
+
@MemoIdentity { :>> providedId = "REQ-CS-48"; } attribute :>> name = "DisplaySavedPrescriptionOnConfig";
|
|
935
937
|
attribute :>> statement = "When in ON mode, if DataConfig_prog as described in REQ 8, the system shall display the saved prescription and reservoir initial volume values or their default values (if there are no saved prescription and reservoir initial volume values) in the order listed in §3.1.1 and §3.1.3.";
|
|
936
938
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
937
939
|
attribute :>> concernKind = ConcernKind::usability;
|
|
938
940
|
attribute :>> status = ElementStatusKind::approved;
|
|
939
941
|
attribute :>> acceptanceCriteria = "Displayed values equal saved values (or defaults) in the interface-specified order.";
|
|
940
942
|
attribute :>> subjectDescription = "Data configuration";
|
|
941
|
-
|
|
943
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 48)"; }
|
|
942
944
|
}
|
|
943
945
|
requirement reqCs49 : Requirement {
|
|
944
|
-
attribute :>>
|
|
945
|
-
|
|
946
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
947
|
+
@MemoIdentity { :>> providedId = "REQ-CS-49"; } attribute :>> name = "EditValuesOneAtATime";
|
|
946
948
|
attribute :>> statement = "When the prescription and reservoir initial volume data are displayed as described in REQ 48, the system shall allow editing the values one at a time in the order they are displayed.";
|
|
947
949
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
948
950
|
attribute :>> concernKind = ConcernKind::usability;
|
|
949
951
|
attribute :>> status = ElementStatusKind::approved;
|
|
950
952
|
attribute :>> acceptanceCriteria = "Exactly one value is editable at a time, in display order.";
|
|
951
953
|
attribute :>> subjectDescription = "Data configuration";
|
|
952
|
-
|
|
954
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 49)"; }
|
|
953
955
|
}
|
|
954
956
|
requirement reqCs50 : Requirement {
|
|
955
|
-
attribute :>>
|
|
956
|
-
|
|
957
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
958
|
+
@MemoIdentity { :>> providedId = "REQ-CS-50"; } attribute :>> name = "AllowInitiateWithNewValues";
|
|
957
959
|
attribute :>> statement = "When the values are modified as described in REQ 49, the system shall allow infusion initiation with the new set of values (Infusion_initiate_prog).";
|
|
958
960
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
959
961
|
attribute :>> concernKind = ConcernKind::usability;
|
|
960
962
|
attribute :>> status = ElementStatusKind::approved;
|
|
961
963
|
attribute :>> acceptanceCriteria = "Infusion_initiate_prog is accepted with the modified value set.";
|
|
962
964
|
attribute :>> subjectDescription = "Data configuration";
|
|
963
|
-
|
|
965
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 50)"; }
|
|
964
966
|
}
|
|
965
967
|
requirement reqCs51 : Requirement {
|
|
966
|
-
attribute :>>
|
|
967
|
-
|
|
968
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
969
|
+
@MemoIdentity { :>> providedId = "REQ-CS-51"; } attribute :>> name = "ValidateValuesOnInitiate";
|
|
968
970
|
attribute :>> statement = "When Infusion_initiate_prog as described in REQ 50, the system shall validate if all the values are consistent with the conditions specified in their respective Type Condition fields in §3.1.1 and §3.1.3.";
|
|
969
971
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
970
972
|
attribute :>> concernKind = ConcernKind::safety;
|
|
971
973
|
attribute :>> status = ElementStatusKind::approved;
|
|
972
974
|
attribute :>> acceptanceCriteria = "Every entered value satisfies its Type Condition constraints before saving.";
|
|
973
975
|
attribute :>> subjectDescription = "Data configuration";
|
|
974
|
-
|
|
976
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 51)"; }
|
|
975
977
|
}
|
|
976
978
|
requirement reqCs52 : Requirement {
|
|
977
|
-
attribute :>>
|
|
978
|
-
|
|
979
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
980
|
+
@MemoIdentity { :>> providedId = "REQ-CS-52"; } attribute :>> name = "DrugDatabaseNotReachable";
|
|
979
981
|
attribute :>> statement = "When the system is validating data as described in REQ 51, if the system is unable to access the drug database safe values, the system shall not save the values and perform actions as described in REQ 59 for 'Drug database not reachable'.";
|
|
980
982
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
981
983
|
attribute :>> concernKind = ConcernKind::safety;
|
|
982
984
|
attribute :>> status = ElementStatusKind::approved;
|
|
983
985
|
attribute :>> acceptanceCriteria = "Database unreachable => values not saved and 'Drug database not reachable' actions taken";
|
|
984
986
|
attribute :>> subjectDescription = "Data configuration";
|
|
985
|
-
|
|
987
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 52)"; }
|
|
986
988
|
}
|
|
987
989
|
requirement reqCs53 : Requirement {
|
|
988
|
-
attribute :>>
|
|
989
|
-
|
|
990
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
991
|
+
@MemoIdentity { :>> providedId = "REQ-CS-53"; } attribute :>> name = "DrugSafeValueNotPresent";
|
|
990
992
|
attribute :>> statement = "When the system is validating data as described in REQ 51, if any of the drug database safe values listed in §3.5 is not present, the system shall not perform the validation with respect to that missing field, perform actions as described in REQ 59 for 'Drug safe value not present' and continue validation.";
|
|
991
993
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
992
994
|
attribute :>> concernKind = ConcernKind::safety;
|
|
993
995
|
attribute :>> status = ElementStatusKind::approved;
|
|
994
996
|
attribute :>> acceptanceCriteria = "Missing safe value => that field's validation skipped, 'Drug safe value not present' actions taken, validation continues";
|
|
995
997
|
attribute :>> subjectDescription = "Data configuration";
|
|
996
|
-
|
|
998
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 53)"; }
|
|
997
999
|
}
|
|
998
1000
|
requirement reqCs54 : Requirement {
|
|
999
|
-
attribute :>>
|
|
1000
|
-
|
|
1001
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1002
|
+
@MemoIdentity { :>> providedId = "REQ-CS-54"; } attribute :>> name = "SaveValidatedPrescription";
|
|
1001
1003
|
attribute :>> statement = "If there are no notifications from REQ 51 and REQ 52, the system shall save the prescription values, clear all the notifications previously generated by REQ 51, REQ 52 and REQ 53 if any, and allow initiate infusion with the new values as described in REQ 9.";
|
|
1002
1004
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1003
1005
|
attribute :>> concernKind = ConcernKind::safety;
|
|
1004
1006
|
attribute :>> status = ElementStatusKind::approved;
|
|
1005
1007
|
attribute :>> acceptanceCriteria = "Validation clean => values saved, prior validation notifications cleared, initiation enabled per REQ 9.";
|
|
1006
1008
|
attribute :>> subjectDescription = "Data configuration";
|
|
1007
|
-
|
|
1009
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 54)"; }
|
|
1008
1010
|
}
|
|
1009
1011
|
requirement reqCs55 : Requirement {
|
|
1010
|
-
attribute :>>
|
|
1011
|
-
|
|
1012
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1013
|
+
@MemoIdentity { :>> providedId = "REQ-CS-55"; } attribute :>> name = "RejectInvalidPrescription";
|
|
1012
1014
|
attribute :>> statement = "If REQ 51 or REQ 52 had generated a notification, the system shall not save the prescription values, allow the clinician to edit the values of the fields as described in REQ 49 and then repeat steps from REQ 50 until all validations are passed as described in REQ 54.";
|
|
1013
1015
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1014
1016
|
attribute :>> concernKind = ConcernKind::safety;
|
|
1015
1017
|
attribute :>> status = ElementStatusKind::approved;
|
|
1016
1018
|
attribute :>> acceptanceCriteria = "Validation notification present => values not saved; edit-and-revalidate loop until clean.";
|
|
1017
1019
|
attribute :>> subjectDescription = "Data configuration";
|
|
1018
|
-
|
|
1020
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 55)"; }
|
|
1019
1021
|
}
|
|
1020
1022
|
requirement reqCs56 : Requirement {
|
|
1021
|
-
attribute :>>
|
|
1022
|
-
|
|
1023
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1024
|
+
@MemoIdentity { :>> providedId = "REQ-CS-56"; } attribute :>> name = "RemainInModeDuringConfig";
|
|
1023
1025
|
attribute :>> statement = "While data configuration is in progress, the system shall remain in its current mode with the currently active prescription values, until infusion is initiated with the new prescription values as described in REQ 54.";
|
|
1024
1026
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1025
1027
|
attribute :>> concernKind = ConcernKind::safety;
|
|
1026
1028
|
attribute :>> status = ElementStatusKind::approved;
|
|
1027
1029
|
attribute :>> acceptanceCriteria = "Mode and active prescription are unchanged during configuration.";
|
|
1028
1030
|
attribute :>> subjectDescription = "Data configuration";
|
|
1029
|
-
|
|
1031
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 56)"; }
|
|
1030
1032
|
}
|
|
1031
1033
|
requirement reqCs57 : Requirement {
|
|
1032
|
-
attribute :>>
|
|
1033
|
-
|
|
1034
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1035
|
+
@MemoIdentity { :>> providedId = "REQ-CS-57"; } attribute :>> name = "ConfigWarningNotification";
|
|
1034
1036
|
attribute :>> statement = "When the clinician has attempted to configure the data for more than Config_Warning_Duration_const continuously, the system shall perform actions as described in REQ 59 for 'Config Time'.";
|
|
1035
1037
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1036
1038
|
attribute :>> concernKind = ConcernKind::usability;
|
|
1037
1039
|
attribute :>> status = ElementStatusKind::approved;
|
|
1038
1040
|
attribute :>> acceptanceCriteria = "continuous configuration time > Config_Warning_Duration_const => 'Config Time' actions taken";
|
|
1039
1041
|
attribute :>> subjectDescription = "Data configuration";
|
|
1040
|
-
|
|
1042
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 57)"; }
|
|
1041
1043
|
}
|
|
1042
1044
|
requirement reqCs58 : Requirement {
|
|
1043
|
-
attribute :>>
|
|
1044
|
-
|
|
1045
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1046
|
+
@MemoIdentity { :>> providedId = "REQ-CS-58"; } attribute :>> name = "MaxConfigDurationClears";
|
|
1045
1047
|
attribute :>> statement = "When the clinician has attempted to configure the data for more than Max_Config_Duration_const continuously, the system shall clear all unsaved prescription values and shall perform actions as described in REQ 59 for 'Unsaved Configuration Cleared'.";
|
|
1046
1048
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1047
1049
|
attribute :>> concernKind = ConcernKind::usability;
|
|
1048
1050
|
attribute :>> status = ElementStatusKind::approved;
|
|
1049
1051
|
attribute :>> acceptanceCriteria = "continuous configuration time > Max_Config_Duration_const => unsaved values cleared ('Unsaved Configuration Cleared' is referenced by the source but absent from the REQ 59 table — a documented source inconsistency).";
|
|
1050
1052
|
attribute :>> subjectDescription = "Data configuration";
|
|
1051
|
-
|
|
1053
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 58)"; }
|
|
1052
1054
|
}
|
|
1053
1055
|
|
|
1054
1056
|
// ═════ §4.3 Notification Requirements ═══════════════════════
|
|
1055
1057
|
requirement reqCs59 : Requirement {
|
|
1056
|
-
attribute :>>
|
|
1057
|
-
|
|
1058
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1059
|
+
@MemoIdentity { :>> providedId = "REQ-CS-59"; } attribute :>> name = "NotificationActionTable";
|
|
1058
1060
|
attribute :>> statement = "The system shall perform all the actions listed in the notification action table for the respective notification. The table defines, for each of the 20 notifications, its priority (High/Med/Low) and the actions Visual, Audio, Inhibit Infusion, Inhibit Square Bolus, Inhibit Patient Bolus, and Stop Bolus. Notification requirements have higher precedence over all other requirements in the system.";
|
|
1059
1061
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1060
1062
|
attribute :>> concernKind = ConcernKind::safety;
|
|
1061
1063
|
attribute :>> status = ElementStatusKind::approved;
|
|
1062
1064
|
attribute :>> acceptanceCriteria = "For every raised notification, the actions equal the NOTIF-01..NOTIF-20 table row: Inhibit Infusion => Inhibited_Infusion_macro = TRUE; Inhibit Square Bolus => Inhibited_Bolus_macro = TRUE; Inhibit Patient Bolus => Inhibited_PatientBolus_macro = TRUE; Stop Bolus => stop all boluses in progress.";
|
|
1063
1065
|
attribute :>> subjectDescription = "Notification handling (see NOTIF-01..NOTIF-20)";
|
|
1064
|
-
|
|
1066
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 (REQ 59)"; }
|
|
1065
1067
|
}
|
|
1066
1068
|
requirement reqCs60 : Requirement {
|
|
1067
|
-
attribute :>>
|
|
1068
|
-
|
|
1069
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1070
|
+
@MemoIdentity { :>> providedId = "REQ-CS-60"; } attribute :>> name = "HighestPriorityActionsFirst";
|
|
1069
1071
|
attribute :>> statement = "When more than one notification having different priorities occurs at the same time, the system shall take actions listed for the highest priority notification.";
|
|
1070
1072
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1071
1073
|
attribute :>> concernKind = ConcernKind::safety;
|
|
1072
1074
|
attribute :>> status = ElementStatusKind::approved;
|
|
1073
1075
|
attribute :>> acceptanceCriteria = "Simultaneous notifications with different priorities => actions of the highest priority notification are taken.";
|
|
1074
1076
|
attribute :>> subjectDescription = "Notification precedence";
|
|
1075
|
-
|
|
1077
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 (REQ 60)"; }
|
|
1076
1078
|
}
|
|
1077
1079
|
requirement reqCs61 : Requirement {
|
|
1078
|
-
attribute :>>
|
|
1079
|
-
|
|
1080
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1081
|
+
@MemoIdentity { :>> providedId = "REQ-CS-61"; } attribute :>> name = "MostRestrictiveSamePriority";
|
|
1080
1082
|
attribute :>> statement = "When more than one notification having same priorities and different set of actions occurs at the same time, the system shall take actions listed for the most restrictive notification.";
|
|
1081
1083
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1082
1084
|
attribute :>> concernKind = ConcernKind::safety;
|
|
1083
1085
|
attribute :>> status = ElementStatusKind::approved;
|
|
1084
1086
|
attribute :>> acceptanceCriteria = "Order of restriction: Inhibit All Infusion > Inhibit Square Bolus > Inhibit Patient Bolus.";
|
|
1085
1087
|
attribute :>> subjectDescription = "Notification precedence";
|
|
1086
|
-
|
|
1088
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 (REQ 61)"; }
|
|
1087
1089
|
}
|
|
1088
1090
|
requirement reqCs62 : Requirement {
|
|
1089
|
-
attribute :>>
|
|
1090
|
-
|
|
1091
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1092
|
+
@MemoIdentity { :>> providedId = "REQ-CS-62"; } attribute :>> name = "MostRestrictiveTieBreak";
|
|
1091
1093
|
attribute :>> statement = "When more than one notification having same priorities and same set of actions occurs at the same time, the system will take actions for the notification that has the most restrictive actions as listed in REQ 59.";
|
|
1092
1094
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1093
1095
|
attribute :>> concernKind = ConcernKind::safety;
|
|
1094
1096
|
attribute :>> status = ElementStatusKind::approved;
|
|
1095
1097
|
attribute :>> acceptanceCriteria = "Tie on priority and actions => REQ 59 restriction ordering breaks the tie.";
|
|
1096
1098
|
attribute :>> subjectDescription = "Notification precedence";
|
|
1097
|
-
|
|
1099
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 (REQ 62)"; }
|
|
1098
1100
|
}
|
|
1099
1101
|
requirement reqCs63 : Requirement {
|
|
1100
|
-
attribute :>>
|
|
1101
|
-
|
|
1102
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1103
|
+
@MemoIdentity { :>> providedId = "REQ-CS-63"; } attribute :>> name = "EscalateToMoreRestrictive";
|
|
1102
1104
|
attribute :>> statement = "While a low priority or less restrictive notification is in effect and a higher priority or more restrictive same-priority notification occurs, the system shall take actions for the high priority or more restrictive notification as listed in REQ 59.";
|
|
1103
1105
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1104
1106
|
attribute :>> concernKind = ConcernKind::safety;
|
|
1105
1107
|
attribute :>> status = ElementStatusKind::approved;
|
|
1106
1108
|
attribute :>> acceptanceCriteria = "In-effect notification is superseded by a higher-priority or more restrictive notification.";
|
|
1107
1109
|
attribute :>> subjectDescription = "Notification precedence";
|
|
1108
|
-
|
|
1110
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 (REQ 63)"; }
|
|
1109
1111
|
}
|
|
1110
1112
|
requirement reqCs64 : Requirement {
|
|
1111
|
-
attribute :>>
|
|
1112
|
-
|
|
1113
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1114
|
+
@MemoIdentity { :>> providedId = "REQ-CS-64"; } attribute :>> name = "LowPriorityListedOnly";
|
|
1113
1115
|
attribute :>> statement = "While a high priority notification is in effect and a low priority notification occurs, the system shall only add the notification to the active notification list and shall not take any other actions for the low priority notification.";
|
|
1114
1116
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1115
1117
|
attribute :>> concernKind = ConcernKind::safety;
|
|
1116
1118
|
attribute :>> status = ElementStatusKind::approved;
|
|
1117
1119
|
attribute :>> acceptanceCriteria = "Lower-priority notification is listed but its actions are not taken while a higher-priority notification is in effect.";
|
|
1118
1120
|
attribute :>> subjectDescription = "Notification precedence";
|
|
1119
|
-
|
|
1121
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 (REQ 64)"; }
|
|
1120
1122
|
}
|
|
1121
1123
|
requirement reqCs65 : Requirement {
|
|
1122
|
-
attribute :>>
|
|
1123
|
-
|
|
1124
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1125
|
+
@MemoIdentity { :>> providedId = "REQ-CS-65"; } attribute :>> name = "CancelNotificationsOneAtATime";
|
|
1124
1126
|
attribute :>> statement = "The system shall allow the clinician to cancel the active notifications, starting from the first in the list, one at a time (Notification_cancel_prog).";
|
|
1125
1127
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1126
1128
|
attribute :>> concernKind = ConcernKind::usability;
|
|
1127
1129
|
attribute :>> status = ElementStatusKind::approved;
|
|
1128
1130
|
attribute :>> acceptanceCriteria = "Cancellation proceeds one notification at a time from the head of the list.";
|
|
1129
1131
|
attribute :>> subjectDescription = "Notification cancellation";
|
|
1130
|
-
|
|
1132
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 (REQ 65)"; }
|
|
1131
1133
|
}
|
|
1132
1134
|
requirement reqCs66 : Requirement {
|
|
1133
|
-
attribute :>>
|
|
1134
|
-
|
|
1135
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1136
|
+
@MemoIdentity { :>> providedId = "REQ-CS-66"; } attribute :>> name = "CancelClearsRestrictions";
|
|
1135
1137
|
attribute :>> statement = "When Notification_cancel_prog for a notification, the system shall cancel and clear the restrictions for that notification: Inhibited_Infusion_macro = FALSE, Inhibited_Bolus_macro = FALSE, Inhibited_PatientBolus_macro = FALSE, and cancel and clear the corresponding audio notification.";
|
|
1136
1138
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1137
1139
|
attribute :>> concernKind = ConcernKind::safety;
|
|
1138
1140
|
attribute :>> status = ElementStatusKind::approved;
|
|
1139
1141
|
attribute :>> acceptanceCriteria = "After cancel: Inhibited_Infusion_macro = FALSE AND Inhibited_Bolus_macro = FALSE AND Inhibited_PatientBolus_macro = FALSE AND audio cleared for that notification.";
|
|
1140
1142
|
attribute :>> subjectDescription = "Notification cancellation";
|
|
1141
|
-
|
|
1143
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 (REQ 66)"; }
|
|
1142
1144
|
}
|
|
1143
1145
|
requirement reqCs67 : Requirement {
|
|
1144
|
-
attribute :>>
|
|
1145
|
-
|
|
1146
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1147
|
+
@MemoIdentity { :>> providedId = "REQ-CS-67"; } attribute :>> name = "NextNotificationAfterCancel";
|
|
1146
1148
|
attribute :>> statement = "When Notification_cancel_prog for a notification, the system takes actions for the next active notification in order of priority and descending order of occurrence.";
|
|
1147
1149
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1148
1150
|
attribute :>> concernKind = ConcernKind::safety;
|
|
1149
1151
|
attribute :>> status = ElementStatusKind::approved;
|
|
1150
1152
|
attribute :>> acceptanceCriteria = "After cancel, the next active notification (by priority, then recency) becomes the notification in effect.";
|
|
1151
1153
|
attribute :>> subjectDescription = "Notification cancellation";
|
|
1152
|
-
|
|
1154
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 (REQ 67)"; }
|
|
1153
1155
|
}
|
|
1154
1156
|
|
|
1155
1157
|
// ── §4.3.1 Visual notification ──────────────────────────────
|
|
1156
1158
|
requirement reqCs68 : Requirement {
|
|
1157
|
-
attribute :>>
|
|
1158
|
-
|
|
1159
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1160
|
+
@MemoIdentity { :>> providedId = "REQ-CS-68"; } attribute :>> name = "DisplayActiveNotificationsOrdered";
|
|
1159
1161
|
attribute :>> statement = "The system shall display all active notifications in order of priority and descending order of occurrence (Notification_Visual_output).";
|
|
1160
1162
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1161
1163
|
attribute :>> concernKind = ConcernKind::usability;
|
|
1162
1164
|
attribute :>> status = ElementStatusKind::approved;
|
|
1163
1165
|
attribute :>> acceptanceCriteria = "Notification_Visual_output lists active notifications ordered by priority, then most recent first.";
|
|
1164
1166
|
attribute :>> subjectDescription = "Visual notification";
|
|
1165
|
-
|
|
1167
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3.1 (REQ 68)"; }
|
|
1166
1168
|
}
|
|
1167
1169
|
requirement reqCs69 : Requirement {
|
|
1168
|
-
attribute :>>
|
|
1169
|
-
|
|
1170
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1171
|
+
@MemoIdentity { :>> providedId = "REQ-CS-69"; } attribute :>> name = "DisplayNotificationNameAndTime";
|
|
1170
1172
|
attribute :>> statement = "The system shall display the name of all the active notifications and the time of the occurrence.";
|
|
1171
1173
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1172
1174
|
attribute :>> concernKind = ConcernKind::usability;
|
|
1173
1175
|
attribute :>> status = ElementStatusKind::approved;
|
|
1174
1176
|
attribute :>> acceptanceCriteria = "Every active notification is shown with name and occurrence time.";
|
|
1175
1177
|
attribute :>> subjectDescription = "Visual notification";
|
|
1176
|
-
|
|
1178
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3.1 (REQ 69)"; }
|
|
1177
1179
|
}
|
|
1178
1180
|
requirement reqCs70 : Requirement {
|
|
1179
|
-
attribute :>>
|
|
1180
|
-
|
|
1181
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1182
|
+
@MemoIdentity { :>> providedId = "REQ-CS-70"; } attribute :>> name = "DisplaySimultaneousNotifications";
|
|
1181
1183
|
attribute :>> statement = "When more than one notification occurs at the same time, the system shall display all the notifications as per REQ 68.";
|
|
1182
1184
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1183
1185
|
attribute :>> concernKind = ConcernKind::usability;
|
|
1184
1186
|
attribute :>> status = ElementStatusKind::approved;
|
|
1185
1187
|
attribute :>> acceptanceCriteria = "Simultaneous notifications are all displayed in REQ 68 order.";
|
|
1186
1188
|
attribute :>> subjectDescription = "Visual notification";
|
|
1187
|
-
|
|
1189
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3.1 (REQ 70)"; }
|
|
1188
1190
|
}
|
|
1189
1191
|
requirement reqCs71 : Requirement {
|
|
1190
|
-
attribute :>>
|
|
1191
|
-
|
|
1192
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1193
|
+
@MemoIdentity { :>> providedId = "REQ-CS-71"; } attribute :>> name = "RemoveCancelledNotificationFromList";
|
|
1192
1194
|
attribute :>> statement = "When Notification_cancel_prog for a notification, the system shall remove the notification from the list and shall display the list of remaining notifications.";
|
|
1193
1195
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1194
1196
|
attribute :>> concernKind = ConcernKind::usability;
|
|
1195
1197
|
attribute :>> status = ElementStatusKind::approved;
|
|
1196
1198
|
attribute :>> acceptanceCriteria = "Cancelled notification disappears from the displayed list; remaining list stays displayed.";
|
|
1197
1199
|
attribute :>> subjectDescription = "Visual notification";
|
|
1198
|
-
|
|
1200
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3.1 (REQ 71)"; }
|
|
1199
1201
|
}
|
|
1200
1202
|
|
|
1201
1203
|
// ── §4.3.2 Audio notification ───────────────────────────────
|
|
1202
1204
|
requirement reqCs72 : Requirement {
|
|
1203
|
-
attribute :>>
|
|
1204
|
-
|
|
1205
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1206
|
+
@MemoIdentity { :>> providedId = "REQ-CS-72"; } attribute :>> name = "AudibleSoundPerNotification";
|
|
1205
1207
|
attribute :>> statement = "When each notification occurs that requires an audio alarm as listed in REQ 59, the system shall produce a single audible sound of Audio_level_const, unless the audio is disabled or silenced.";
|
|
1206
1208
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1207
1209
|
attribute :>> concernKind = ConcernKind::safety;
|
|
1208
1210
|
attribute :>> status = ElementStatusKind::approved;
|
|
1209
1211
|
attribute :>> acceptanceCriteria = "Audio-flagged notification => one audible sound at Audio_level_const (50 db for 2 seconds per I 8) unless Disable_audio_prog is set.";
|
|
1210
1212
|
attribute :>> subjectDescription = "Audio notification";
|
|
1211
|
-
|
|
1213
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3.2 (REQ 72)"; }
|
|
1212
1214
|
}
|
|
1213
1215
|
requirement reqCs73 : Requirement {
|
|
1214
|
-
attribute :>>
|
|
1215
|
-
|
|
1216
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1217
|
+
@MemoIdentity { :>> providedId = "REQ-CS-73"; } attribute :>> name = "AudioDisableSilenceEnable";
|
|
1216
1218
|
attribute :>> statement = "The system shall allow the clinician to disable audible alarm, silence the alarm temporarily and enable a disabled or silenced alarm.";
|
|
1217
1219
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1218
1220
|
attribute :>> concernKind = ConcernKind::usability;
|
|
1219
1221
|
attribute :>> status = ElementStatusKind::approved;
|
|
1220
1222
|
attribute :>> acceptanceCriteria = "Notification_Audio_output = FALSE if Disable_audio_prog = 'PERM' (disabled) or 'TEMP' (silenced); Notification_Audio_output = TRUE if Disable_audio_prog = FALSE.";
|
|
1221
1223
|
attribute :>> subjectDescription = "Audio notification";
|
|
1222
|
-
|
|
1224
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3.2 (REQ 73)"; }
|
|
1223
1225
|
}
|
|
1224
1226
|
requirement reqCs74 : Requirement {
|
|
1225
|
-
attribute :>>
|
|
1226
|
-
|
|
1227
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1228
|
+
@MemoIdentity { :>> providedId = "REQ-CS-74"; } attribute :>> name = "NoAudioWhileDisabled";
|
|
1227
1229
|
attribute :>> statement = "If Disable_audio_prog = 'PERM' or 'TEMP', the system shall not produce audible alarm until it is enabled (Disable_audio_prog = FALSE).";
|
|
1228
1230
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1229
1231
|
attribute :>> concernKind = ConcernKind::usability;
|
|
1230
1232
|
attribute :>> status = ElementStatusKind::approved;
|
|
1231
1233
|
attribute :>> acceptanceCriteria = "No audible alarm while Disable_audio_prog is 'PERM' or 'TEMP'.";
|
|
1232
1234
|
attribute :>> subjectDescription = "Audio notification";
|
|
1233
|
-
|
|
1235
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3.2 (REQ 74)"; }
|
|
1234
1236
|
}
|
|
1235
1237
|
requirement reqCs75 : Requirement {
|
|
1236
|
-
attribute :>>
|
|
1237
|
-
|
|
1238
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1239
|
+
@MemoIdentity { :>> providedId = "REQ-CS-75"; } attribute :>> name = "TempSilenceAutoReenable";
|
|
1238
1240
|
attribute :>> statement = "If Disable_audio_prog = 'TEMP', the system shall automatically enable it (Disable_audio_prog = FALSE) after Audio_Enable_Duration_const minutes.";
|
|
1239
1241
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1240
1242
|
attribute :>> concernKind = ConcernKind::safety;
|
|
1241
1243
|
attribute :>> status = ElementStatusKind::approved;
|
|
1242
1244
|
attribute :>> acceptanceCriteria = "Temporary silence expires after Audio_Enable_Duration_const (30) minutes.";
|
|
1243
1245
|
attribute :>> subjectDescription = "Audio notification";
|
|
1244
|
-
|
|
1246
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3.2 (REQ 75)"; }
|
|
1245
1247
|
}
|
|
1246
1248
|
requirement reqCs76 : Requirement {
|
|
1247
|
-
attribute :>>
|
|
1248
|
-
|
|
1249
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1250
|
+
@MemoIdentity { :>> providedId = "REQ-CS-76"; } attribute :>> name = "ReannunciateLongActiveNotifications";
|
|
1249
1251
|
attribute :>> statement = "For every notification with audio alarm that is active for more than Audio_Enable_Duration_const minutes, the system shall produce audible sound as described in REQ 72.";
|
|
1250
1252
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1251
1253
|
attribute :>> concernKind = ConcernKind::safety;
|
|
1252
1254
|
attribute :>> status = ElementStatusKind::approved;
|
|
1253
1255
|
attribute :>> acceptanceCriteria = "Audio-flagged notification active > Audio_Enable_Duration_const minutes => REQ 72 sound re-produced.";
|
|
1254
1256
|
attribute :>> subjectDescription = "Audio notification";
|
|
1255
|
-
|
|
1257
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3.2 (REQ 76)"; }
|
|
1256
1258
|
}
|
|
1257
1259
|
|
|
1258
1260
|
// ═════ §4.4 Log Requirements ════════════════════════════════
|
|
1259
1261
|
requirement reqCs77 : Requirement {
|
|
1260
|
-
attribute :>>
|
|
1261
|
-
|
|
1262
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1263
|
+
@MemoIdentity { :>> providedId = "REQ-CS-77"; } attribute :>> name = "LogWhileOn";
|
|
1262
1264
|
attribute :>> statement = "The system shall log all the operational and error data when the system is in ON mode.";
|
|
1263
1265
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1264
1266
|
attribute :>> concernKind = ConcernKind::regulatory;
|
|
1265
1267
|
attribute :>> status = ElementStatusKind::approved;
|
|
1266
1268
|
attribute :>> acceptanceCriteria = "Operational log and error log are recorded whenever the system is in ON mode.";
|
|
1267
1269
|
attribute :>> subjectDescription = "Logging";
|
|
1268
|
-
|
|
1270
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.4 (REQ 77)"; }
|
|
1269
1271
|
}
|
|
1270
1272
|
requirement reqCs78 : Requirement {
|
|
1271
|
-
attribute :>>
|
|
1272
|
-
|
|
1273
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1274
|
+
@MemoIdentity { :>> providedId = "REQ-CS-78"; } attribute :>> name = "OperationalLogContent";
|
|
1273
1275
|
attribute :>> statement = "While in ON mode, every Log_Interval_const minutes or when a mode transition occurs, the system shall record the following information in an 'Operational log': (1) date in dd/MM/yy format, (2) time in HH:MM:SS GMT, (3) Patient ID, (4) prescription information, (5) current mode of the system, (6) current flow rate of the system.";
|
|
1274
1276
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1275
1277
|
attribute :>> concernKind = ConcernKind::regulatory;
|
|
1276
1278
|
attribute :>> status = ElementStatusKind::approved;
|
|
1277
1279
|
attribute :>> acceptanceCriteria = "Operational log entries appear every Log_Interval_const (5) minutes and on every mode transition, with all six fields.";
|
|
1278
1280
|
attribute :>> subjectDescription = "Logging";
|
|
1279
|
-
|
|
1281
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.4 (REQ 78)"; }
|
|
1280
1282
|
}
|
|
1281
1283
|
requirement reqCs79 : Requirement {
|
|
1282
|
-
attribute :>>
|
|
1283
|
-
|
|
1284
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1285
|
+
@MemoIdentity { :>> providedId = "REQ-CS-79"; } attribute :>> name = "InfusionCompleteLogContent";
|
|
1284
1286
|
attribute :>> statement = "When infusion is completed as per REQ 28, the system shall record the following information in addition to the information listed in REQ 78 in the 'Operational log': (1) total volume infused for that prescription, (2) total duration of infusion for that prescription (total duration in ACTIVE mode).";
|
|
1285
1287
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1286
1288
|
attribute :>> concernKind = ConcernKind::regulatory;
|
|
1287
1289
|
attribute :>> status = ElementStatusKind::approved;
|
|
1288
1290
|
attribute :>> acceptanceCriteria = "Infusion-complete log entry includes total volume infused and total ACTIVE-mode duration.";
|
|
1289
1291
|
attribute :>> subjectDescription = "Logging";
|
|
1290
|
-
|
|
1292
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.4 (REQ 79)"; }
|
|
1291
1293
|
}
|
|
1292
1294
|
requirement reqCs80 : Requirement {
|
|
1293
|
-
attribute :>>
|
|
1294
|
-
|
|
1295
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1296
|
+
@MemoIdentity { :>> providedId = "REQ-CS-80"; } attribute :>> name = "ErrorLogContent";
|
|
1295
1297
|
attribute :>> statement = "When any notification condition listed in REQ 59 occurs, the system shall record the following information in an error log: (1) date in dd/MM/yy format, (2) time in HH:MM:SS GMT, (3) notification description, (4) current mode of the system, (5) remaining drug volume.";
|
|
1296
1298
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1297
1299
|
attribute :>> concernKind = ConcernKind::regulatory;
|
|
1298
1300
|
attribute :>> status = ElementStatusKind::approved;
|
|
1299
1301
|
attribute :>> acceptanceCriteria = "Every REQ 59 notification produces an error log entry with all five fields.";
|
|
1300
1302
|
attribute :>> subjectDescription = "Logging";
|
|
1301
|
-
|
|
1303
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.4 (REQ 80)"; }
|
|
1302
1304
|
}
|
|
1303
1305
|
requirement reqCs81 : Requirement {
|
|
1304
|
-
attribute :>>
|
|
1305
|
-
|
|
1306
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1307
|
+
@MemoIdentity { :>> providedId = "REQ-CS-81"; } attribute :>> name = "NotificationCancelLogContent";
|
|
1306
1308
|
attribute :>> statement = "When a notification is cancelled as described in REQ 66, the system shall record the following information in the 'Operational log': (1) date in dd/MM/yy format, (2) time in HH:MM:SS GMT, (3) description of the notification cancelled.";
|
|
1307
1309
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1308
1310
|
attribute :>> concernKind = ConcernKind::regulatory;
|
|
1309
1311
|
attribute :>> status = ElementStatusKind::approved;
|
|
1310
1312
|
attribute :>> acceptanceCriteria = "Every notification cancellation produces an operational log entry with all three fields.";
|
|
1311
1313
|
attribute :>> subjectDescription = "Logging";
|
|
1312
|
-
|
|
1314
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.4 (REQ 81)"; }
|
|
1313
1315
|
}
|
|
1314
1316
|
|
|
1315
1317
|
// ═════ §4.5 Security Requirements ═══════════════════════════
|
|
1316
1318
|
requirement reqCs82 : Requirement {
|
|
1317
|
-
attribute :>>
|
|
1318
|
-
|
|
1319
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1320
|
+
@MemoIdentity { :>> providedId = "REQ-CS-82"; } attribute :>> name = "AuthorizedCliniciansOnly";
|
|
1319
1321
|
attribute :>> statement = "The system shall allow only authorized clinicians to configure the system.";
|
|
1320
1322
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1321
1323
|
attribute :>> concernKind = ConcernKind::cybersecurity;
|
|
1322
1324
|
attribute :>> status = ElementStatusKind::approved;
|
|
1323
1325
|
attribute :>> acceptanceCriteria = "Configuration is rejected for unauthorized users.";
|
|
1324
1326
|
attribute :>> subjectDescription = "System configuration access";
|
|
1325
|
-
|
|
1327
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.5 (REQ 82)"; }
|
|
1326
1328
|
}
|
|
1327
1329
|
|
|
1328
1330
|
// ═════ Ch.5 Non-Behavioral Requirements ═════════════════════
|
|
1329
1331
|
requirement reqCs83 : Requirement {
|
|
1330
|
-
attribute :>>
|
|
1331
|
-
|
|
1332
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1333
|
+
@MemoIdentity { :>> providedId = "REQ-CS-83"; } attribute :>> name = "DropResistance";
|
|
1332
1334
|
attribute :>> statement = "The system shall be unbreakable if it is dropped on a laminate floor from y m of height with no additional force than gravity.";
|
|
1333
1335
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1334
1336
|
attribute :>> concernKind = ConcernKind::reliability;
|
|
1335
1337
|
attribute :>> status = ElementStatusKind::approved;
|
|
1336
1338
|
attribute :>> acceptanceCriteria = "Drop from height y m (value left open by the source) onto laminate floor causes no breakage.";
|
|
1337
1339
|
attribute :>> subjectDescription = "GPCA enclosure";
|
|
1338
|
-
|
|
1340
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §5.1 (REQ 83)"; }
|
|
1339
1341
|
}
|
|
1340
1342
|
requirement reqCs84 : Requirement {
|
|
1341
|
-
attribute :>>
|
|
1342
|
-
|
|
1343
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1344
|
+
@MemoIdentity { :>> providedId = "REQ-CS-84"; } attribute :>> name = "WaterResistance";
|
|
1343
1345
|
attribute :>> statement = "The system shall be waterproof to non-acidic liquid of less than x ml on any side of the pump for a maximum of 2 hours.";
|
|
1344
1346
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1345
1347
|
attribute :>> concernKind = ConcernKind::reliability;
|
|
1346
1348
|
attribute :>> status = ElementStatusKind::approved;
|
|
1347
1349
|
attribute :>> acceptanceCriteria = "Exposure to < x ml (value left open by the source) non-acidic liquid for up to 2 hours causes no ingress failure.";
|
|
1348
1350
|
attribute :>> subjectDescription = "GPCA enclosure";
|
|
1349
|
-
|
|
1351
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §5.1 (REQ 84)"; }
|
|
1350
1352
|
}
|
|
1351
1353
|
requirement reqCs85 : Requirement {
|
|
1352
|
-
attribute :>>
|
|
1353
|
-
|
|
1354
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1355
|
+
@MemoIdentity { :>> providedId = "REQ-CS-85"; } attribute :>> name = "LogRetention";
|
|
1354
1356
|
attribute :>> statement = "The system shall persist the most recent 30 days of error log data and 15 days of operational log data.";
|
|
1355
1357
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1356
1358
|
attribute :>> concernKind = ConcernKind::regulatory;
|
|
1357
1359
|
attribute :>> status = ElementStatusKind::approved;
|
|
1358
1360
|
attribute :>> acceptanceCriteria = "error log retention >= Error_Log_Retention (30 days); operational log retention >= Operational_Log_Retention (15 days)";
|
|
1359
1361
|
attribute :>> subjectDescription = "Logging";
|
|
1360
|
-
|
|
1362
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §5.1 (REQ 85)"; }
|
|
1361
1363
|
}
|
|
1362
1364
|
requirement reqCs86 : Requirement {
|
|
1363
|
-
attribute :>>
|
|
1364
|
-
|
|
1365
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1366
|
+
@MemoIdentity { :>> providedId = "REQ-CS-86"; } attribute :>> name = "PrescriptionRetention";
|
|
1365
1367
|
attribute :>> statement = "The system shall persist the last saved prescription data for 15 days.";
|
|
1366
1368
|
attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
|
|
1367
1369
|
attribute :>> concernKind = ConcernKind::regulatory;
|
|
1368
1370
|
attribute :>> status = ElementStatusKind::approved;
|
|
1369
1371
|
attribute :>> acceptanceCriteria = "saved prescription retention >= Prescription_Persist_Duration (15 days)";
|
|
1370
1372
|
attribute :>> subjectDescription = "Prescription storage";
|
|
1371
|
-
|
|
1373
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §5.1 (REQ 86)"; }
|
|
1372
1374
|
}
|
|
1373
1375
|
|
|
1374
1376
|
// ═════ MEMO extension requirements (REQ-X) ══════════════════
|
|
@@ -1377,8 +1379,8 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1377
1379
|
// and hardware requirements. sourceKind = extension segregates
|
|
1378
1380
|
// them from the REQ-CS family.
|
|
1379
1381
|
requirement reqDrugLibraryLimits : Requirement {
|
|
1380
|
-
attribute :>>
|
|
1381
|
-
|
|
1382
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1383
|
+
@MemoIdentity { :>> providedId = "REQ-X-01"; } attribute :>> name = "PrescriptionWithinDrugLibraryLimits";
|
|
1382
1384
|
attribute :>> statement = "When a prescription parameter is entered, the system shall reject values outside drug-library hard limits and shall require explicit confirmation for values outside soft limits.";
|
|
1383
1385
|
attribute :>> sourceKind = RequirementSourceKind::extension;
|
|
1384
1386
|
attribute :>> concernKind = ConcernKind::safety;
|
|
@@ -1388,7 +1390,7 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1388
1390
|
attribute :>> actorDescription = "clinician";
|
|
1389
1391
|
attribute :>> assumptionSummary = "drug library installed and current";
|
|
1390
1392
|
attribute :>> guaranteeSummary = "no out-of-range prescription can be activated";
|
|
1391
|
-
|
|
1393
|
+
@MemoIdentity { :>> sourceReference = "MEMO extension — hard/soft limit discipline beyond CriSys §4.2 validation (REQ-CS-51..55)"; }
|
|
1392
1394
|
attribute :>> notation = RequirementNotationKind::ears;
|
|
1393
1395
|
attribute :>> earsPattern = EarsPatternKind::eventDriven;
|
|
1394
1396
|
attribute :>> obligation = ObligationKind::shall;
|
|
@@ -1396,8 +1398,8 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1396
1398
|
attribute :>> systemResponse = "reject hard-limit violations and require confirmation of soft-limit violations";
|
|
1397
1399
|
}
|
|
1398
1400
|
requirement reqPost : Requirement {
|
|
1399
|
-
attribute :>>
|
|
1400
|
-
|
|
1401
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1402
|
+
@MemoIdentity { :>> providedId = "REQ-X-02"; } attribute :>> name = "PowerOnSelfTest";
|
|
1401
1403
|
attribute :>> statement = "On power-up, the system shall complete a self test of CPU, memory, watchdog, and safety sensors before permitting therapy, and shall remain locked out of therapy if any check fails.";
|
|
1402
1404
|
attribute :>> sourceKind = RequirementSourceKind::extension;
|
|
1403
1405
|
attribute :>> concernKind = ConcernKind::safety;
|
|
@@ -1407,7 +1409,7 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1407
1409
|
attribute :>> actorDescription = "clinician";
|
|
1408
1410
|
attribute :>> assumptionSummary = "hardware supports built-in test";
|
|
1409
1411
|
attribute :>> guaranteeSummary = "no therapy on a device that failed self test";
|
|
1410
|
-
|
|
1412
|
+
@MemoIdentity { :>> sourceReference = "MEMO extension — POST is not specified by the CriSys source"; }
|
|
1411
1413
|
attribute :>> notation = RequirementNotationKind::ears;
|
|
1412
1414
|
attribute :>> earsPattern = EarsPatternKind::eventDriven;
|
|
1413
1415
|
attribute :>> obligation = ObligationKind::shall;
|
|
@@ -1415,8 +1417,8 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1415
1417
|
attribute :>> systemResponse = "complete POST before permitting therapy";
|
|
1416
1418
|
}
|
|
1417
1419
|
requirement reqPowerLossRetention : Requirement {
|
|
1418
|
-
attribute :>>
|
|
1419
|
-
|
|
1420
|
+
attribute :>> requirementType = RequirementTypeKind::system;
|
|
1421
|
+
@MemoIdentity { :>> providedId = "REQ-X-03"; } attribute :>> name = "PrescriptionRetainedAcrossPowerLoss";
|
|
1420
1422
|
attribute :>> statement = "If all power is lost, the system shall retain the confirmed prescription and event log, and on power restoration shall resume therapy only after clinician confirmation.";
|
|
1421
1423
|
attribute :>> sourceKind = RequirementSourceKind::extension;
|
|
1422
1424
|
attribute :>> concernKind = ConcernKind::safety;
|
|
@@ -1426,7 +1428,7 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1426
1428
|
attribute :>> actorDescription = "clinician";
|
|
1427
1429
|
attribute :>> assumptionSummary = "non-volatile storage available";
|
|
1428
1430
|
attribute :>> guaranteeSummary = "no silent loss or silent resumption of therapy";
|
|
1429
|
-
|
|
1431
|
+
@MemoIdentity { :>> sourceReference = "MEMO extension — power-loss behavior is not specified by the CriSys source"; }
|
|
1430
1432
|
attribute :>> notation = RequirementNotationKind::ears;
|
|
1431
1433
|
attribute :>> earsPattern = EarsPatternKind::unwantedBehavior;
|
|
1432
1434
|
attribute :>> obligation = ObligationKind::shall;
|
|
@@ -1434,8 +1436,8 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1434
1436
|
attribute :>> systemResponse = "retain prescription and log; resume only after confirmation";
|
|
1435
1437
|
}
|
|
1436
1438
|
requirement reqOcclusion : Requirement {
|
|
1437
|
-
attribute :>>
|
|
1438
|
-
|
|
1439
|
+
attribute :>> requirementType = RequirementTypeKind::software;
|
|
1440
|
+
@MemoIdentity { :>> providedId = "REQ-X-04"; } attribute :>> name = "OcclusionDetectionAndAlarm";
|
|
1439
1441
|
attribute :>> statement = "When downstream line pressure exceeds the occlusion threshold, the system shall pause infusion and raise a High-priority notification.";
|
|
1440
1442
|
attribute :>> sourceKind = RequirementSourceKind::extension;
|
|
1441
1443
|
attribute :>> concernKind = ConcernKind::safety;
|
|
@@ -1446,11 +1448,11 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1446
1448
|
attribute :>> actorDescription = "patient";
|
|
1447
1449
|
attribute :>> assumptionSummary = "pressure sensor calibrated";
|
|
1448
1450
|
attribute :>> guaranteeSummary = "no sustained pumping against a blocked line";
|
|
1449
|
-
|
|
1451
|
+
@MemoIdentity { :>> sourceReference = "MEMO extension — occlusion sensing is not specified by the CriSys source (under-infusion flow rate, REQ-CS-17, is the source-level effect)"; }
|
|
1450
1452
|
}
|
|
1451
1453
|
requirement reqDoorOpen : Requirement {
|
|
1452
|
-
attribute :>>
|
|
1453
|
-
|
|
1454
|
+
attribute :>> requirementType = RequirementTypeKind::software;
|
|
1455
|
+
@MemoIdentity { :>> providedId = "REQ-X-05"; } attribute :>> name = "DoorOpenPreventsDelivery";
|
|
1454
1456
|
attribute :>> statement = "While the reservoir door is open or unlatched, the system shall not deliver drug and shall raise a Medium-priority notification if therapy was active.";
|
|
1455
1457
|
attribute :>> sourceKind = RequirementSourceKind::extension;
|
|
1456
1458
|
attribute :>> concernKind = ConcernKind::safety;
|
|
@@ -1461,7 +1463,7 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1461
1463
|
attribute :>> actorDescription = "clinician";
|
|
1462
1464
|
attribute :>> assumptionSummary = "door sensor operational";
|
|
1463
1465
|
attribute :>> guaranteeSummary = "no delivery with an unsecured fluid path";
|
|
1464
|
-
|
|
1466
|
+
@MemoIdentity { :>> sourceReference = "MEMO extension — door interlock is not specified by the CriSys source"; }
|
|
1465
1467
|
attribute :>> notation = RequirementNotationKind::ears;
|
|
1466
1468
|
attribute :>> earsPattern = EarsPatternKind::stateDriven;
|
|
1467
1469
|
attribute :>> obligation = ObligationKind::shall;
|
|
@@ -1469,8 +1471,8 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1469
1471
|
attribute :>> systemResponse = "inhibit delivery and notify if therapy was active";
|
|
1470
1472
|
}
|
|
1471
1473
|
requirement reqMaxHourlyDose : Requirement {
|
|
1472
|
-
attribute :>>
|
|
1473
|
-
|
|
1474
|
+
attribute :>> requirementType = RequirementTypeKind::software;
|
|
1475
|
+
@MemoIdentity { :>> providedId = "REQ-X-06"; } attribute :>> name = "MaximumHourlyDoseEnforcement";
|
|
1474
1476
|
attribute :>> statement = "The system shall not deliver more than the prescribed maximum drug volume in any sliding one-hour window, counting basal, patient bolus, and square bolus contributions.";
|
|
1475
1477
|
attribute :>> sourceKind = RequirementSourceKind::extension;
|
|
1476
1478
|
attribute :>> concernKind = ConcernKind::safety;
|
|
@@ -1481,11 +1483,11 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1481
1483
|
attribute :>> actorDescription = "patient";
|
|
1482
1484
|
attribute :>> assumptionSummary = "delivered volume measurable per step";
|
|
1483
1485
|
attribute :>> guaranteeSummary = "hourly dose ceiling never exceeded";
|
|
1484
|
-
|
|
1486
|
+
@MemoIdentity { :>> sourceReference = "MEMO extension — sliding-window hourly limit is not specified by the CriSys source"; }
|
|
1485
1487
|
}
|
|
1486
1488
|
requirement reqEventLogging : Requirement {
|
|
1487
|
-
attribute :>>
|
|
1488
|
-
|
|
1489
|
+
attribute :>> requirementType = RequirementTypeKind::software;
|
|
1490
|
+
@MemoIdentity { :>> providedId = "REQ-X-07"; } attribute :>> name = "TamperEvidentTherapyLog";
|
|
1489
1491
|
attribute :>> statement = "The system shall record therapy events in a timestamped, tamper-evident event log such that any modification of recorded entries is detectable.";
|
|
1490
1492
|
attribute :>> sourceKind = RequirementSourceKind::extension;
|
|
1491
1493
|
attribute :>> concernKind = ConcernKind::regulatory;
|
|
@@ -1496,11 +1498,11 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1496
1498
|
attribute :>> actorDescription = "clinician and auditor";
|
|
1497
1499
|
attribute :>> assumptionSummary = "real-time clock available";
|
|
1498
1500
|
attribute :>> guaranteeSummary = "log tampering cannot go unnoticed";
|
|
1499
|
-
|
|
1501
|
+
@MemoIdentity { :>> sourceReference = "MEMO extension — tamper evidence is not specified by the CriSys source (log content: REQ-CS-77..81)"; }
|
|
1500
1502
|
}
|
|
1501
1503
|
requirement reqWatchdogSafeState : Requirement {
|
|
1502
|
-
attribute :>>
|
|
1503
|
-
|
|
1504
|
+
attribute :>> requirementType = RequirementTypeKind::software;
|
|
1505
|
+
@MemoIdentity { :>> providedId = "REQ-X-08"; } attribute :>> name = "WatchdogForcesSafeState";
|
|
1504
1506
|
attribute :>> statement = "If the software fails to service the hardware watchdog within its timeout, the system shall force pump output to zero flow and raise a continuous audible alarm.";
|
|
1505
1507
|
attribute :>> sourceKind = RequirementSourceKind::extension;
|
|
1506
1508
|
attribute :>> concernKind = ConcernKind::safety;
|
|
@@ -1511,7 +1513,7 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1511
1513
|
attribute :>> actorDescription = "clinician";
|
|
1512
1514
|
attribute :>> assumptionSummary = "watchdog electrically independent of CPU";
|
|
1513
1515
|
attribute :>> guaranteeSummary = "runaway software cannot keep pumping";
|
|
1514
|
-
|
|
1516
|
+
@MemoIdentity { :>> sourceReference = "MEMO extension — watchdog behavior is not specified by the CriSys source"; }
|
|
1515
1517
|
attribute :>> notation = RequirementNotationKind::ears;
|
|
1516
1518
|
attribute :>> earsPattern = EarsPatternKind::unwantedBehavior;
|
|
1517
1519
|
attribute :>> obligation = ObligationKind::shall;
|
|
@@ -1519,8 +1521,8 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1519
1521
|
attribute :>> systemResponse = "force zero flow and continuous alarm";
|
|
1520
1522
|
}
|
|
1521
1523
|
requirement reqStuckButton : Requirement {
|
|
1522
|
-
attribute :>>
|
|
1523
|
-
|
|
1524
|
+
attribute :>> requirementType = RequirementTypeKind::software;
|
|
1525
|
+
@MemoIdentity { :>> providedId = "REQ-X-09"; } attribute :>> name = "StuckBolusButtonDetection";
|
|
1524
1526
|
attribute :>> statement = "If the patient bolus button remains asserted for more than 60 seconds, the system shall treat the input as failed, ignore it, and raise a Medium-priority notification.";
|
|
1525
1527
|
attribute :>> sourceKind = RequirementSourceKind::extension;
|
|
1526
1528
|
attribute :>> concernKind = ConcernKind::safety;
|
|
@@ -1531,11 +1533,11 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1531
1533
|
attribute :>> actorDescription = "patient";
|
|
1532
1534
|
attribute :>> assumptionSummary = "button sampled every step";
|
|
1533
1535
|
attribute :>> guaranteeSummary = "a shorted pendant cannot request repeated boluses";
|
|
1534
|
-
|
|
1536
|
+
@MemoIdentity { :>> sourceReference = "MEMO extension — stuck-input detection is not specified by the CriSys source"; }
|
|
1535
1537
|
}
|
|
1536
1538
|
requirement reqFlowCrossCheck : Requirement {
|
|
1537
|
-
attribute :>>
|
|
1538
|
-
|
|
1539
|
+
attribute :>> requirementType = RequirementTypeKind::software;
|
|
1540
|
+
@MemoIdentity { :>> providedId = "REQ-X-10"; } attribute :>> name = "CommandedVsMeasuredFlowCrossCheck";
|
|
1539
1541
|
attribute :>> statement = "The system shall compare measured delivered flow against commanded flow using an independent flow sensor, and shall raise a High-priority notification and pause infusion when the deviation exceeds Tolerance_Min_const for more than Max_Duration_OverInfusion_const.";
|
|
1540
1542
|
attribute :>> sourceKind = RequirementSourceKind::extension;
|
|
1541
1543
|
attribute :>> concernKind = ConcernKind::safety;
|
|
@@ -1546,11 +1548,11 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1546
1548
|
attribute :>> actorDescription = "patient";
|
|
1547
1549
|
attribute :>> assumptionSummary = "independent flow sensor available";
|
|
1548
1550
|
attribute :>> guaranteeSummary = "over- and under-infusion detected independently of motor control";
|
|
1549
|
-
|
|
1551
|
+
@MemoIdentity { :>> sourceReference = "MEMO extension — independent cross-check channel beyond CriSys REQ-CS-17/19 tolerance monitoring; thresholds reuse App. A.4 constants"; }
|
|
1550
1552
|
}
|
|
1551
1553
|
requirement reqPumpAccuracy : Requirement {
|
|
1552
|
-
attribute :>>
|
|
1553
|
-
|
|
1554
|
+
attribute :>> requirementType = RequirementTypeKind::hardware;
|
|
1555
|
+
@MemoIdentity { :>> providedId = "REQ-X-11"; } attribute :>> name = "DeliveryAccuracy";
|
|
1554
1556
|
attribute :>> statement = "The pump mechanism shall deliver programmed volumes with an accuracy of plus or minus Tolerance_Min_const (5 percent) over the full rate range, so that the system-level flow tolerances of REQ-CS-16 are achievable.";
|
|
1555
1557
|
attribute :>> sourceKind = RequirementSourceKind::extension;
|
|
1556
1558
|
attribute :>> concernKind = ConcernKind::performance;
|
|
@@ -1560,12 +1562,12 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1560
1562
|
attribute :>> actorDescription = "patient";
|
|
1561
1563
|
attribute :>> assumptionSummary = "approved administration set used";
|
|
1562
1564
|
attribute :>> guaranteeSummary = "dose accuracy within labeling";
|
|
1563
|
-
|
|
1565
|
+
@MemoIdentity { :>> sourceReference = "MEMO extension — mechanism-level accuracy budget derived from App. A.4 Tolerance_Min_const"; }
|
|
1564
1566
|
attribute :>> electricalSafetyRelevant = false;
|
|
1565
1567
|
}
|
|
1566
1568
|
requirement reqAlarmLoudness : Requirement {
|
|
1567
|
-
attribute :>>
|
|
1568
|
-
|
|
1569
|
+
attribute :>> requirementType = RequirementTypeKind::hardware;
|
|
1570
|
+
@MemoIdentity { :>> providedId = "REQ-X-12"; } attribute :>> name = "AlarmSoundPressureLevel";
|
|
1569
1571
|
attribute :>> statement = "The audible annunciator shall produce notification tones at the sound level defined by Audio_level_const (50 db for 2 seconds per interface spec I 8), distinguishable by priority.";
|
|
1570
1572
|
attribute :>> sourceKind = RequirementSourceKind::extension;
|
|
1571
1573
|
attribute :>> concernKind = ConcernKind::usability;
|
|
@@ -1575,12 +1577,12 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1575
1577
|
attribute :>> actorDescription = "clinician";
|
|
1576
1578
|
attribute :>> assumptionSummary = "ward ambient noise per IEC 60601-1-8 baseline";
|
|
1577
1579
|
attribute :>> guaranteeSummary = "alarms audible at the ward station";
|
|
1578
|
-
|
|
1580
|
+
@MemoIdentity { :>> sourceReference = "MEMO extension — hardware annunciator budget realizing CriSys I 8 / Audio_level_const"; }
|
|
1579
1581
|
attribute :>> electricalSafetyRelevant = false;
|
|
1580
1582
|
}
|
|
1581
1583
|
requirement reqBatteryBackup : Requirement {
|
|
1582
|
-
attribute :>>
|
|
1583
|
-
|
|
1584
|
+
attribute :>> requirementType = RequirementTypeKind::hardware;
|
|
1585
|
+
@MemoIdentity { :>> providedId = "REQ-X-13"; } attribute :>> name = "BatteryBackupDuration";
|
|
1584
1586
|
attribute :>> statement = "The battery shall sustain nominal therapy and alarm annunciation for at least 4 hours after loss of mains power.";
|
|
1585
1587
|
attribute :>> sourceKind = RequirementSourceKind::extension;
|
|
1586
1588
|
attribute :>> concernKind = ConcernKind::reliability;
|
|
@@ -1590,12 +1592,12 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1590
1592
|
attribute :>> actorDescription = "clinician";
|
|
1591
1593
|
attribute :>> assumptionSummary = "battery within service life";
|
|
1592
1594
|
attribute :>> guaranteeSummary = "transport and outage continuity";
|
|
1593
|
-
|
|
1595
|
+
@MemoIdentity { :>> sourceReference = "MEMO extension — power backup is not specified by the CriSys source"; }
|
|
1594
1596
|
attribute :>> electricalSafetyRelevant = true;
|
|
1595
1597
|
}
|
|
1596
1598
|
requirement reqFreeFlowPrevention : Requirement {
|
|
1597
|
-
attribute :>>
|
|
1598
|
-
|
|
1599
|
+
attribute :>> requirementType = RequirementTypeKind::hardware;
|
|
1600
|
+
@MemoIdentity { :>> providedId = "REQ-X-14"; } attribute :>> name = "MechanicalFreeFlowPrevention";
|
|
1599
1601
|
attribute :>> statement = "The fluid path shall include a mechanical anti-free-flow valve that blocks gravity flow whenever the administration set is disengaged from the pumping mechanism.";
|
|
1600
1602
|
attribute :>> sourceKind = RequirementSourceKind::extension;
|
|
1601
1603
|
attribute :>> concernKind = ConcernKind::safety;
|
|
@@ -1605,7 +1607,7 @@ package memo_examples_gpca_pump_gpca_requirements {
|
|
|
1605
1607
|
attribute :>> actorDescription = "patient";
|
|
1606
1608
|
attribute :>> assumptionSummary = "approved administration set used";
|
|
1607
1609
|
attribute :>> guaranteeSummary = "free-flow overdose mechanically impossible";
|
|
1608
|
-
|
|
1610
|
+
@MemoIdentity { :>> sourceReference = "MEMO extension — mechanical free-flow protection is not specified by the CriSys source"; }
|
|
1609
1611
|
attribute :>> electricalSafetyRelevant = false;
|
|
1610
1612
|
}
|
|
1611
1613
|
}
|