@memoarchitect/ontology 0.4.6 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -6
- package/examples/connected-patient-monitor/README.md +7 -0
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +70 -0
- package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +3 -0
- package/examples/connected-patient-monitor/model/viewpoints/connected_patient_monitor_overview.sysml +6 -0
- package/examples/embedded-infusion-pump/README.md +7 -0
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +66 -0
- package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +3 -0
- package/examples/embedded-infusion-pump/model/viewpoints/embedded_infusion_pump_overview.sysml +6 -0
- package/examples/extensions/README.md +16 -0
- package/examples/extensions/clinical/memo.package.yaml +9 -0
- package/examples/extensions/clinical/src/clinical_extension.sysml +3 -0
- package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +14 -0
- package/examples/extensions/clinical/src/procedures/memo_clinical_procedures.sysml +16 -0
- package/examples/extensions/template/memo.package.yaml +9 -0
- package/examples/extensions/template/src/extension.sysml +15 -0
- package/examples/functional-logical-physical/README.md +7 -0
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +50 -0
- package/examples/functional-logical-physical/model/functional_logical_physical.sysml +3 -0
- package/examples/functional-logical-physical/model/viewpoints/functional_logical_physical_overview.sysml +6 -0
- package/examples/gpca-pump/README.md +26 -0
- package/examples/gpca-pump/dhf/documents/DOC-RMP-001.md +1 -1
- package/examples/gpca-pump/memo.config.yaml +2 -2
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +1 -1
- package/examples/gpca-pump/methodology/gpca_scope.sysml +2 -2
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +10 -10
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +17 -6
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +11 -11
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +35 -22
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +25 -6
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +6 -6
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +29 -15
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +293 -169
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +145 -27
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +210 -105
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +66 -69
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +43 -76
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +73 -70
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +27 -27
- package/examples/gpca-pump/model/views/context_system_context_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_architecture_description_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_cyber_assessment_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_hazard_analysis_view.sysml +1 -1
- package/examples/gpca-pump/model/views/document_rmf_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_sdd_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_threat_model_view.sysml +1 -1
- package/examples/gpca-pump/model/views/document_usability_view.sysml +1 -1
- package/examples/gpca-pump/model/views/document_vv_view.sysml +1 -1
- package/examples/gpca-pump/model/views/functional_function_allocation_view.sysml +1 -1
- package/examples/gpca-pump/model/views/functional_function_browser_view.sysml +1 -1
- package/examples/gpca-pump/model/views/logical_device_interconnect_view.sysml +1 -1
- package/examples/gpca-pump/model/views/logical_mode_state_view.sysml +1 -1
- package/examples/gpca-pump/model/views/logical_system_decomposition_view.sysml +1 -1
- package/examples/gpca-pump/model/views/operational_scenario_sequence_view.sysml +1 -1
- package/examples/gpca-pump/model/views/operational_use_case_view.sysml +6 -6
- package/examples/gpca-pump/model/views/physical_physical_bom_view.sysml +1 -1
- package/examples/gpca-pump/model/views/requirements_requirements_trace_view.sysml +1 -1
- package/examples/gpca-pump/model/views/risk_risk_chain_view.sysml +2 -2
- package/examples/gpca-pump/model/views/software_software_architecture_view.sysml +1 -1
- package/examples/gpca-pump/model/views/verification_verification_coverage_view.sysml +1 -1
- package/examples/ivd-laboratory-system/README.md +7 -0
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +58 -0
- package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +3 -0
- package/examples/ivd-laboratory-system/model/viewpoints/ivd_laboratory_system_overview.sysml +6 -0
- package/examples/manual-surgical-instrument/README.md +7 -0
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +41 -0
- package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +3 -0
- package/examples/manual-surgical-instrument/model/viewpoints/manual_surgical_instrument_overview.sysml +6 -0
- package/examples/multidimensional-layers/README.md +7 -0
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +51 -0
- package/examples/multidimensional-layers/model/multidimensional_layers.sysml +4 -0
- package/examples/multidimensional-layers/model/viewpoints/multidimensional_layers_overview.sysml +13 -0
- package/examples/reusable-instrument/README.md +7 -0
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +71 -0
- package/examples/reusable-instrument/model/reusable_instrument.sysml +4 -0
- package/examples/reusable-instrument/model/viewpoints/reusable_instrument_overview.sysml +13 -0
- package/examples/software-only-medical-device/README.md +7 -0
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +62 -0
- package/examples/software-only-medical-device/model/software_only_medical_device.sysml +4 -0
- package/examples/software-only-medical-device/model/viewpoints/software_only_medical_device_overview.sysml +13 -0
- package/examples/surgical-closure-workflow/README.md +8 -0
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +151 -0
- package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +4 -0
- package/examples/surgical-closure-workflow/model/viewpoints/surgical_closure_workflow_overview.sysml +13 -0
- package/examples/surgical-robot/README.md +7 -0
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +58 -0
- package/examples/surgical-robot/model/surgical_robot.sysml +4 -0
- package/examples/surgical-robot/model/viewpoints/surgical_robot_overview.sysml +13 -0
- package/examples/sysml-diagram-samples/README.md +32 -0
- package/examples/sysml-diagram-samples/memo.package.yaml +5 -0
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/action_flow_view.sysml +22 -4
- package/examples/sysml-diagram-samples/model/samples/context_view.sysml +55 -0
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/functional_flow_view.sysml +17 -6
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/interconnection_view.sysml +4 -3
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/operational_behaviour_view.sysml +32 -42
- package/examples/sysml-diagram-samples/model/samples/requirements_view.sysml +63 -0
- package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +109 -0
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/tree_view.sysml +3 -3
- package/examples/sysml-diagram-samples/model/samples/use_case_view.sysml +81 -0
- package/examples/temperature-alarm/README.md +7 -0
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +140 -0
- package/examples/temperature-alarm/model/temperature_alarm.sysml +4 -0
- package/examples/temperature-alarm/model/viewpoints/temperature_alarm_overview.sysml +13 -0
- package/memo.manifest.yaml +12 -4
- package/methodologies/default/memo.package.yaml +1 -1
- package/methodologies/gpca/memo.package.yaml +4 -4
- package/ontology/memo.package.yaml +1 -1
- package/ontology/memo.rendering.yaml +37 -0
- package/package.json +19 -11
- package/profile/memo.package.yaml +3 -3
- package/src/architecture/decisions/memo_decisions.sysml +1 -1
- package/src/architecture/{behavior → functional/behavior}/memo_behavior.sysml +12 -11
- package/src/architecture/{constraints → functional/constraints}/memo_constraints.sysml +2 -2
- package/src/architecture/functional/functions/memo_functions.sysml +81 -0
- package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +46 -0
- package/src/architecture/implementation/hardware/electrical/memo_hardware_electrical.sysml +36 -0
- package/src/architecture/implementation/hardware/fluidic/memo_hardware_fluidic.sysml +14 -0
- package/src/architecture/implementation/hardware/mechanical/memo_hardware_mechanical.sysml +14 -0
- package/src/architecture/implementation/hardware/optical/memo_hardware_optical.sysml +11 -0
- package/src/architecture/implementation/hardware/sensing/memo_hardware_sensing.sysml +17 -0
- package/src/architecture/implementation/hardware/structure/memo_hardware_structure.sysml +12 -0
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +70 -0
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +80 -0
- package/src/architecture/implementation/ui/memo_ui.sysml +159 -0
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +102 -0
- package/src/architecture/logical/structure/memo_logical_structure.sysml +150 -0
- package/src/architecture/operational/activities/memo_activities.sysml +86 -0
- package/src/architecture/operational/context/actors/memo_actors.sysml +38 -0
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +64 -0
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +53 -0
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +116 -0
- package/src/architecture/operational/structure/memo_operational.sysml +31 -0
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +67 -0
- package/src/architecture/operational/workflows/memo_workflows.sysml +126 -0
- package/src/architecture/realization/deployment/memo_deployment.sysml +90 -0
- package/src/architecture/{physical → realization/physical}/memo_physical_architecture.sysml +12 -1
- package/src/artifacts/definitions/memo_artifact_definitions.sysml +1 -1
- package/src/{architecture → assurance}/cybersecurity/memo_cybersecurity.sysml +14 -10
- package/src/assurance/human_factors/memo_human_factors.sysml +50 -0
- package/src/{architecture → assurance}/requirements/memo_requirements.sysml +45 -21
- package/src/assurance/requirements/needs/memo_needs.sysml +43 -0
- package/src/{architecture → assurance/safety_risk}/analysis/memo_fmea.sysml +13 -13
- package/src/{architecture/risk → assurance/safety_risk}/memo_arch_risk.sysml +2 -2
- package/src/{architecture/risk → assurance/safety_risk}/memo_risk.sysml +25 -16
- package/src/assurance/verification_validation/memo_assurance.sysml +49 -0
- package/src/compliance/artifacts/memo_artifacts.sysml +1 -1
- package/src/compliance/change/memo_change.sysml +2 -2
- package/src/compliance/dhf-templates/21cfr820/design-input.md +1 -1
- package/src/compliance/dhf-templates/21cfr820/design-validation.md +1 -1
- package/src/compliance/dhf-templates/21cfr820/user-needs.md +2 -2
- package/src/compliance/dhf-templates/iec-62366/urra.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/fmea.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/har.md +4 -4
- package/src/compliance/dhf-templates/iso-14971/risk-matrix.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/rmp.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/rmr.md +1 -1
- package/src/compliance/iso14971/risk_management_file.sysml +1 -1
- package/src/compliance/postmarket/memo_postmarket.sysml +2 -2
- package/src/core/common/memo_common.sysml +123 -14
- package/src/core/consistency_rules/consistency_rules.sysml +2 -2
- package/src/core/dimensions/dimensions.sysml +45 -24
- package/src/core/enumerations/memo_enumerations.sysml +11 -16
- package/src/core/methodology_scope/methodology_scope.sysml +10 -28
- package/src/core/relationships/memo_relationships.sysml +178 -146
- package/src/core/stdlib/{collections.sysml → collections/collections.sysml} +1 -1
- package/src/core/stdlib/{functions.sysml → functions/functions.sysml} +1 -1
- package/src/core/stdlib/{scalars.sysml → scalars/scalars.sysml} +1 -1
- package/src/core/stdlib/{time.sysml → time/time.sysml} +1 -1
- package/src/core/terminology/terminology.sysml +35 -0
- package/src/memo_namespaces.sysml +247 -302
- package/src/methodology/{memo_core.sysml → core/memo_core.sysml} +19 -13
- package/src/methodology/{memo_gates.sysml → gates/memo_gates.sysml} +1 -1
- package/src/methodology/{memo_patterns.sysml → patterns/memo_patterns.sysml} +1 -1
- package/src/methodology/{memo_profiles.sysml → profiles/memo_profiles.sysml} +27 -35
- package/src/methodology/{memo_workflow.sysml → workflow/memo_workflow.sysml} +1 -1
- package/src/rules/closure/closure_rules.sysml +11 -11
- package/src/rules/coverage/coverage_rules.sysml +8 -8
- package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
- package/src/rules/lifecycle/lifecycle_rules.sysml +1 -1
- package/src/rules/ontology/ontology_invariants.sysml +133 -0
- package/src/rules/quantitative/quantitative_rules.sysml +2 -2
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +189 -0
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +0 -1
- package/src/viewpoints/context/context_viewpoint.sysml +1 -2
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +1 -2
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +8 -8
- package/src/viewpoints/functional/{function_allocation_view.sysml → function_allocation_view/function_allocation_view.sysml} +1 -1
- package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
- package/src/viewpoints/functional/{system_functional_tree_view.sysml → system_functional_tree_view/system_functional_tree_view.sysml} +1 -1
- package/src/viewpoints/logical/logical_viewpoint.sysml +0 -1
- package/src/viewpoints/operational/operational_viewpoint.sysml +1 -2
- package/src/viewpoints/operational/{use_case_view.sysml → use_case_view/use_case_view.sysml} +1 -1
- package/src/viewpoints/physical/physical_viewpoint.sysml +0 -1
- package/src/viewpoints/requirements/{requirements_traceability_view.sysml → requirements_traceability_view/requirements_traceability_view.sysml} +1 -1
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
- package/src/viewpoints/risk/{risk_chain_view.sysml → risk_chain_view/risk_chain_view.sysml} +2 -2
- package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
- package/src/viewpoints/software/{software_architecture_view.sysml → software_architecture_view/software_architecture_view.sysml} +1 -1
- package/src/viewpoints/software/software_viewpoint.sysml +1 -2
- package/src/viewpoints/usability/usability_viewpoint.sysml +0 -1
- package/src/viewpoints/verification/verification_viewpoint.sysml +0 -1
- package/templates/connected-device/memo.package.yaml +5 -0
- package/templates/connected-device/src/architecture/system.sysml +5 -0
- package/templates/connected-device/src/artifacts/artifacts.sysml +5 -0
- package/templates/connected-device/src/assurance/requirements.sysml +7 -0
- package/templates/default/memo.package.yaml +5 -0
- package/templates/default/src/architecture/system.sysml +7 -0
- package/templates/default/src/artifacts/artifacts.sysml +5 -0
- package/templates/default/src/assurance/requirements.sysml +8 -0
- package/templates/infusion-pump/memo.package.yaml +5 -0
- package/templates/infusion-pump/src/architecture/system.sysml +5 -0
- package/templates/infusion-pump/src/artifacts/artifacts.sysml +5 -0
- package/templates/infusion-pump/src/assurance/requirements.sysml +7 -0
- package/templates/monitoring-device/memo.package.yaml +5 -0
- package/templates/monitoring-device/src/architecture/system.sysml +5 -0
- package/templates/monitoring-device/src/artifacts/artifacts.sysml +5 -0
- package/templates/monitoring-device/src/assurance/requirements.sysml +7 -0
- package/templates/samd/memo.package.yaml +5 -0
- package/templates/samd/src/architecture/system.sysml +5 -0
- package/templates/samd/src/artifacts/artifacts.sysml +5 -0
- package/templates/samd/src/assurance/requirements.sysml +7 -0
- package/examples/gpca-pump/model/samples/README.md +0 -24
- package/examples/gpca-pump/model/samples/action_flow_view.viewlayout +0 -9
- package/examples/gpca-pump/model/samples/interconnection_view.viewlayout +0 -99
- package/profile/archetypes.yaml +0 -36
- package/profile/templates/connected-device/starter.sysml +0 -8
- package/profile/templates/infusion-pump/starter.sysml +0 -8
- package/profile/templates/monitoring-device/starter.sysml +0 -8
- package/profile/templates/samd/starter.sysml +0 -8
- package/src/architecture/assurance/memo_assurance.sysml +0 -29
- package/src/architecture/context/memo_context.sysml +0 -58
- package/src/architecture/functions/memo_functions.sysml +0 -30
- package/src/architecture/hardware_structure/memo_hardware_structure.sysml +0 -15
- package/src/architecture/interfaces/memo_interfaces.sysml +0 -103
- package/src/architecture/logical_structure/memo_logical_structure.sysml +0 -10
- package/src/architecture/operational/memo_operational.sysml +0 -51
- package/src/architecture/software_structure/memo_software_structure.sysml +0 -44
- package/src/architecture/system/memo_system_analysis.sysml +0 -54
- package/src/artifacts/clinical_safety_report.sysml +0 -12
- package/src/artifacts/cybersecurity_assessment_report.sysml +0 -12
- package/src/artifacts/design_change_log.sysml +0 -12
- package/src/artifacts/design_history_file_index.sysml +0 -12
- package/src/artifacts/design_input_plan.sysml +0 -12
- package/src/artifacts/design_output_plan.sysml +0 -12
- package/src/artifacts/evidence_record.sysml +0 -12
- package/src/artifacts/failure_mode_effects_analysis.sysml +0 -12
- package/src/artifacts/hazard_analysis_report.sysml +0 -12
- package/src/artifacts/labeling_specification.sysml +0 -12
- package/src/artifacts/requirements_specification.sysml +0 -12
- package/src/artifacts/requirements_traceability_matrix.sysml +0 -12
- package/src/artifacts/risk_management_plan.sysml +0 -12
- package/src/artifacts/software_design_description.sysml +0 -12
- package/src/artifacts/software_development_plan.sysml +0 -12
- package/src/artifacts/soup_list.sysml +0 -12
- package/src/artifacts/system_architecture_description.sysml +0 -12
- package/src/artifacts/test_protocol.sysml +0 -12
- package/src/artifacts/test_report.sysml +0 -12
- package/src/artifacts/threat_model_report.sysml +0 -12
- package/src/artifacts/usability_engineering_report.sysml +0 -12
- package/src/medical_device_library.sysml +0 -100
- package/template/memo.package.yaml +0 -5
- package/template/src/catalog/starter.sysml +0 -12
- package/template/src/documents/.gitkeep +0 -1
- package/template/src/views/.gitkeep +0 -1
- /package/src/methodology/{memo_archetypes.sysml → archetypes/memo_archetypes.sysml} +0 -0
- /package/src/methodology/{memo_rules.sysml → rules/memo_rules.sysml} +0 -0
- /package/src/methodology/{memo_viewpoints.sysml → viewpoints/memo_viewpoints.sysml} +0 -0
- /package/src/viewpoints/clinical/{clinical_evidence_view.sysml → clinical_evidence_view/clinical_evidence_view.sysml} +0 -0
- /package/src/viewpoints/context/{system_context_view.sysml → system_context_view/system_context_view.sysml} +0 -0
- /package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view.sysml → cybersecurity_assessment_view/cybersecurity_assessment_view.sysml} +0 -0
- /package/src/viewpoints/cybersecurity/{threat_model_view.sysml → threat_model_view/threat_model_view.sysml} +0 -0
- /package/src/viewpoints/logical/{logical_architecture_view.sysml → logical_architecture_view/logical_architecture_view.sysml} +0 -0
- /package/src/viewpoints/physical/{network_topology_view.sysml → network_topology_view/network_topology_view.sysml} +0 -0
- /package/src/viewpoints/physical/{physical_bom_view.sysml → physical_bom_view/physical_bom_view.sysml} +0 -0
- /package/src/viewpoints/usability/{usability_engineering_view.sysml → usability_engineering_view/usability_engineering_view.sysml} +0 -0
- /package/src/viewpoints/verification/{verification_coverage_view.sysml → verification_coverage_view/verification_coverage_view.sysml} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
|
-
private import
|
|
4
|
+
private import memo_architecture_functional_behavior::*;
|
|
5
5
|
private import memo_core_enumerations::*;
|
|
6
6
|
|
|
7
7
|
// ═════════════════════════════════════════════════════════════
|
|
@@ -14,7 +14,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
|
|
|
14
14
|
// external trigger. Mode-tree containment edges (Composes)
|
|
15
15
|
// live in gpca_trace.sysml.
|
|
16
16
|
// ═════════════════════════════════════════════════════════════
|
|
17
|
-
|
|
17
|
+
state topLevelModeMachine : StateMachine {
|
|
18
18
|
attribute :>> id = "BM-001";
|
|
19
19
|
attribute :>> name = "TopLevelModeMachine";
|
|
20
20
|
attribute :>> machineKind = "hierarchical state machine";
|
|
@@ -23,7 +23,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
// ── Mode states (Fig 4.1) ───────────────────────────────────
|
|
26
|
-
|
|
26
|
+
state modeOFF : ModeState {
|
|
27
27
|
attribute :>> id = "MODE-000";
|
|
28
28
|
attribute :>> name = "OFF";
|
|
29
29
|
attribute :>> modeKind = "top (default)";
|
|
@@ -32,7 +32,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
|
|
|
32
32
|
attribute :>> exitCondition = "System_start_prog commanded (REQ 4)";
|
|
33
33
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.2";
|
|
34
34
|
}
|
|
35
|
-
|
|
35
|
+
state modeON : ModeState {
|
|
36
36
|
attribute :>> id = "MODE-001";
|
|
37
37
|
attribute :>> name = "ON";
|
|
38
38
|
attribute :>> modeKind = "operational parent";
|
|
@@ -41,7 +41,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
|
|
|
41
41
|
attribute :>> exitCondition = "System_stop_prog: stop infusion, cancel all notifications (REQ 5)";
|
|
42
42
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3";
|
|
43
43
|
}
|
|
44
|
-
|
|
44
|
+
state modeIDLE : ModeState {
|
|
45
45
|
attribute :>> id = "MODE-002";
|
|
46
46
|
attribute :>> name = "ON.IDLE";
|
|
47
47
|
attribute :>> modeKind = "idle";
|
|
@@ -50,7 +50,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
|
|
|
50
50
|
attribute :>> exitCondition = "confirmed second Infusion_initiate_prog (REQ 12/13)";
|
|
51
51
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.4";
|
|
52
52
|
}
|
|
53
|
-
|
|
53
|
+
state modeTHERAPY : ModeState {
|
|
54
54
|
attribute :>> id = "MODE-003";
|
|
55
55
|
attribute :>> name = "ON.THERAPY";
|
|
56
56
|
attribute :>> modeKind = "therapy parent";
|
|
@@ -59,7 +59,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
|
|
|
59
59
|
attribute :>> exitCondition = "infusion complete to IDLE (REQ 28); manual stop from PAUSED (REQ 47); system stop (REQ 5)";
|
|
60
60
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5";
|
|
61
61
|
}
|
|
62
|
-
|
|
62
|
+
state modePAUSED : ModeState {
|
|
63
63
|
attribute :>> id = "MODE-004";
|
|
64
64
|
attribute :>> name = "ON.THERAPY.PAUSED";
|
|
65
65
|
attribute :>> modeKind = "paused (KVO delivery)";
|
|
@@ -68,7 +68,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
|
|
|
68
68
|
attribute :>> exitCondition = "Infusion_initiate_prog with Inhibited_Infusion_macro = FALSE (REQ 46); Infusion_inhibit_prog to IDLE (REQ 47)";
|
|
69
69
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.10 (REQ 43-47)";
|
|
70
70
|
}
|
|
71
|
-
|
|
71
|
+
state modeACTIVE : ModeState {
|
|
72
72
|
attribute :>> id = "MODE-005";
|
|
73
73
|
attribute :>> name = "ON.THERAPY.ACTIVE";
|
|
74
74
|
attribute :>> modeKind = "active parent";
|
|
@@ -77,7 +77,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
|
|
|
77
77
|
attribute :>> exitCondition = "infusion complete (REQ 28); PAUSED via REQ 29/30/37-39";
|
|
78
78
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6";
|
|
79
79
|
}
|
|
80
|
-
|
|
80
|
+
state modeBASAL : ModeState {
|
|
81
81
|
attribute :>> id = "MODE-006";
|
|
82
82
|
attribute :>> name = "ON.THERAPY.ACTIVE.BASAL";
|
|
83
83
|
attribute :>> modeKind = "active-basal";
|
|
@@ -86,7 +86,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
|
|
|
86
86
|
attribute :>> exitCondition = "scheduled square bolus (REQ 31); patient bolus granted (REQ 32); Inhibited_Infusion_macro (REQ 37)";
|
|
87
87
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.7";
|
|
88
88
|
}
|
|
89
|
-
|
|
89
|
+
state modeSQUARE : ModeState {
|
|
90
90
|
attribute :>> id = "MODE-007";
|
|
91
91
|
attribute :>> name = "ON.THERAPY.ACTIVE.SQUARE_BOLUS";
|
|
92
92
|
attribute :>> modeKind = "active-square-bolus (auto-scheduled)";
|
|
@@ -95,7 +95,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
|
|
|
95
95
|
attribute :>> exitCondition = "scheduled end or Inhibited_Bolus_macro (REQ 34); patient bolus granted (REQ 33); inhibits (REQ 39)";
|
|
96
96
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.8";
|
|
97
97
|
}
|
|
98
|
-
|
|
98
|
+
state modePBOLUS : ModeState {
|
|
99
99
|
attribute :>> id = "MODE-008";
|
|
100
100
|
attribute :>> name = "ON.THERAPY.ACTIVE.PATIENT_BOLUS";
|
|
101
101
|
attribute :>> modeKind = "active-patient-bolus";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
|
-
private import
|
|
4
|
+
private import memo_architecture_functional_functions::*;
|
|
5
5
|
private import memo_core_enumerations::*;
|
|
6
6
|
|
|
7
7
|
// ── Logical functions ───────────────────────────────────────
|
|
8
|
-
part fnAcquireSensors :
|
|
8
|
+
part fnAcquireSensors : SystemFunction {
|
|
9
9
|
attribute :>> id = "FUNC-001";
|
|
10
10
|
attribute :>> name = "AcquireSensorData";
|
|
11
11
|
attribute :>> functionCategory = "sensing";
|
|
@@ -14,7 +14,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
14
14
|
attribute :>> concernKind = ConcernKind::safety;
|
|
15
15
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
16
16
|
}
|
|
17
|
-
part fnValidatePrescription :
|
|
17
|
+
part fnValidatePrescription : SystemFunction {
|
|
18
18
|
attribute :>> id = "FUNC-002";
|
|
19
19
|
attribute :>> name = "ValidatePrescription";
|
|
20
20
|
attribute :>> functionCategory = "configuration";
|
|
@@ -23,7 +23,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
23
23
|
attribute :>> concernKind = ConcernKind::safety;
|
|
24
24
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
25
25
|
}
|
|
26
|
-
part fnMonitorAlarm :
|
|
26
|
+
part fnMonitorAlarm : SystemFunction {
|
|
27
27
|
attribute :>> id = "FUNC-003";
|
|
28
28
|
attribute :>> name = "MonitorExceptionalConditions";
|
|
29
29
|
attribute :>> functionCategory = "alarm";
|
|
@@ -32,7 +32,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
32
32
|
attribute :>> concernKind = ConcernKind::safety;
|
|
33
33
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
34
34
|
}
|
|
35
|
-
part fnAnnunciate :
|
|
35
|
+
part fnAnnunciate : SystemFunction {
|
|
36
36
|
attribute :>> id = "FUNC-004";
|
|
37
37
|
attribute :>> name = "AnnunciateAlarms";
|
|
38
38
|
attribute :>> functionCategory = "alarm";
|
|
@@ -41,7 +41,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
41
41
|
attribute :>> concernKind = ConcernKind::safety;
|
|
42
42
|
attribute :>> criticality = CriticalityKind::high;
|
|
43
43
|
}
|
|
44
|
-
part fnManageInfusion :
|
|
44
|
+
part fnManageInfusion : SystemFunction {
|
|
45
45
|
attribute :>> id = "FUNC-005";
|
|
46
46
|
attribute :>> name = "ManageInfusion";
|
|
47
47
|
attribute :>> functionCategory = "infusion";
|
|
@@ -50,7 +50,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
50
50
|
attribute :>> concernKind = ConcernKind::safety;
|
|
51
51
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
52
52
|
}
|
|
53
|
-
part fnEnforceLimits :
|
|
53
|
+
part fnEnforceLimits : SystemFunction {
|
|
54
54
|
attribute :>> id = "FUNC-006";
|
|
55
55
|
attribute :>> name = "EnforceDoseLimits";
|
|
56
56
|
attribute :>> functionCategory = "infusion";
|
|
@@ -59,7 +59,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
59
59
|
attribute :>> concernKind = ConcernKind::safety;
|
|
60
60
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
61
61
|
}
|
|
62
|
-
part fnCommandPump :
|
|
62
|
+
part fnCommandPump : SystemFunction {
|
|
63
63
|
attribute :>> id = "FUNC-007";
|
|
64
64
|
attribute :>> name = "CommandPumpMotor";
|
|
65
65
|
attribute :>> functionCategory = "actuation";
|
|
@@ -68,7 +68,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
68
68
|
attribute :>> concernKind = ConcernKind::safety;
|
|
69
69
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
70
70
|
}
|
|
71
|
-
part fnLogEvents :
|
|
71
|
+
part fnLogEvents : SystemFunction {
|
|
72
72
|
attribute :>> id = "FUNC-008";
|
|
73
73
|
attribute :>> name = "LogTherapyEvents";
|
|
74
74
|
attribute :>> functionCategory = "logging";
|
|
@@ -77,7 +77,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
77
77
|
attribute :>> concernKind = ConcernKind::regulatory;
|
|
78
78
|
attribute :>> criticality = CriticalityKind::medium;
|
|
79
79
|
}
|
|
80
|
-
part fnManagePower :
|
|
80
|
+
part fnManagePower : SystemFunction {
|
|
81
81
|
attribute :>> id = "FUNC-009";
|
|
82
82
|
attribute :>> name = "ManagePower";
|
|
83
83
|
attribute :>> functionCategory = "platform";
|
|
@@ -86,7 +86,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
86
86
|
attribute :>> concernKind = ConcernKind::reliability;
|
|
87
87
|
attribute :>> criticality = CriticalityKind::high;
|
|
88
88
|
}
|
|
89
|
-
part fnPresentStatus :
|
|
89
|
+
part fnPresentStatus : SystemFunction {
|
|
90
90
|
attribute :>> id = "FUNC-010";
|
|
91
91
|
attribute :>> name = "PresentStatus";
|
|
92
92
|
attribute :>> functionCategory = "user-interface";
|
|
@@ -95,7 +95,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
95
95
|
attribute :>> concernKind = ConcernKind::usability;
|
|
96
96
|
attribute :>> criticality = CriticalityKind::high;
|
|
97
97
|
}
|
|
98
|
-
part fnSelfTest :
|
|
98
|
+
part fnSelfTest : SystemFunction {
|
|
99
99
|
attribute :>> id = "FUNC-011";
|
|
100
100
|
attribute :>> name = "ExecuteSelfTest";
|
|
101
101
|
attribute :>> functionCategory = "platform";
|
|
@@ -106,7 +106,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
// ── Logical flows ───────────────────────────────────────────
|
|
109
|
-
part lfSensorAcquisition :
|
|
109
|
+
part lfSensorAcquisition : FunctionalExchange {
|
|
110
110
|
attribute :>> id = "LF-001";
|
|
111
111
|
attribute :>> name = "SensorAcquisitionFlow";
|
|
112
112
|
attribute :>> flowKind = FlowKind::measurement;
|
|
@@ -114,8 +114,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
114
114
|
attribute :>> latencyBudgetMs = 20.0;
|
|
115
115
|
attribute :>> staleAfterMs = 40.0;
|
|
116
116
|
attribute :>> integrityLevel = "class C data path";
|
|
117
|
+
ref :>> sourceFunction = fnAcquireSensors;
|
|
118
|
+
ref :>> targetFunction = fnMonitorAlarm;
|
|
117
119
|
}
|
|
118
|
-
part lfFlowCommand :
|
|
120
|
+
part lfFlowCommand : FunctionalExchange {
|
|
119
121
|
attribute :>> id = "LF-002";
|
|
120
122
|
attribute :>> name = "FlowCommandFlow";
|
|
121
123
|
attribute :>> flowKind = FlowKind::command;
|
|
@@ -123,8 +125,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
123
125
|
attribute :>> latencyBudgetMs = 20.0;
|
|
124
126
|
attribute :>> staleAfterMs = 20.0;
|
|
125
127
|
attribute :>> integrityLevel = "class C command path";
|
|
128
|
+
ref :>> sourceFunction = fnManageInfusion;
|
|
129
|
+
ref :>> targetFunction = fnCommandPump;
|
|
126
130
|
}
|
|
127
|
-
part lfAlarmSignal :
|
|
131
|
+
part lfAlarmSignal : FunctionalExchange {
|
|
128
132
|
attribute :>> id = "LF-003";
|
|
129
133
|
attribute :>> name = "AlarmSignalFlow";
|
|
130
134
|
attribute :>> flowKind = FlowKind::alarm;
|
|
@@ -132,8 +136,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
132
136
|
attribute :>> latencyBudgetMs = 20.0;
|
|
133
137
|
attribute :>> staleAfterMs = 20.0;
|
|
134
138
|
attribute :>> integrityLevel = "class C alarm path; same-step delivery to infusion manager";
|
|
139
|
+
ref :>> sourceFunction = fnMonitorAlarm;
|
|
140
|
+
ref :>> targetFunction = fnAnnunciate;
|
|
135
141
|
}
|
|
136
|
-
part lfPrescriptionEntry :
|
|
142
|
+
part lfPrescriptionEntry : FunctionalExchange {
|
|
137
143
|
attribute :>> id = "LF-004";
|
|
138
144
|
attribute :>> name = "PrescriptionEntryFlow";
|
|
139
145
|
attribute :>> flowKind = FlowKind::configuration;
|
|
@@ -141,10 +147,12 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
141
147
|
attribute :>> latencyBudgetMs = 500.0;
|
|
142
148
|
attribute :>> staleAfterMs = 0.0;
|
|
143
149
|
attribute :>> integrityLevel = "confirmed double-entry path";
|
|
150
|
+
ref :>> targetFunction = fnValidatePrescription;
|
|
144
151
|
}
|
|
145
152
|
|
|
146
153
|
// ── Exchange item definitions ───────────────────────────────
|
|
147
|
-
|
|
154
|
+
item ddPrescription : InterfaceItem {
|
|
155
|
+
attribute :>> itemKind = InterfaceItemKind::data;
|
|
148
156
|
attribute :>> id = "DD-001";
|
|
149
157
|
attribute :>> name = "PrescriptionRecord";
|
|
150
158
|
attribute :>> semantics = "patient id, drug name, concentration, VTBI total, duration total, basal flow rate, square bolus rate/duration/interval, patient bolus rate/duration/lockout period, max boluses per hour (DD-005..DD-017)";
|
|
@@ -158,7 +166,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
158
166
|
attribute :>> availabilityClass = "must survive power loss";
|
|
159
167
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
|
|
160
168
|
}
|
|
161
|
-
|
|
169
|
+
item ddBolusRequest : InterfaceItem {
|
|
170
|
+
attribute :>> itemKind = InterfaceItemKind::data;
|
|
162
171
|
attribute :>> id = "DD-002";
|
|
163
172
|
attribute :>> name = "BolusRequestSignal";
|
|
164
173
|
attribute :>> semantics = "debounced patient pendant press event";
|
|
@@ -168,7 +177,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
168
177
|
attribute :>> confidentialityClass = "none";
|
|
169
178
|
attribute :>> availabilityClass = "sampled every step";
|
|
170
179
|
}
|
|
171
|
-
|
|
180
|
+
item ddSensorVector : InterfaceItem {
|
|
181
|
+
attribute :>> itemKind = InterfaceItemKind::data;
|
|
172
182
|
attribute :>> id = "DD-003";
|
|
173
183
|
attribute :>> name = "SensorStatusVector";
|
|
174
184
|
attribute :>> semantics = "air-in-line, occlusion pressure, reservoir volume, door state, flow measurement, battery level, CPU/memory status";
|
|
@@ -178,7 +188,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
178
188
|
attribute :>> confidentialityClass = "none";
|
|
179
189
|
attribute :>> availabilityClass = "stale after two missed steps";
|
|
180
190
|
}
|
|
181
|
-
|
|
191
|
+
item ddEventRecord : InterfaceItem {
|
|
192
|
+
attribute :>> itemKind = InterfaceItemKind::data;
|
|
182
193
|
attribute :>> id = "DD-004";
|
|
183
194
|
attribute :>> name = "TherapyEventRecord";
|
|
184
195
|
attribute :>> semantics = "timestamped dose, alarm, mode, and configuration events";
|
|
@@ -188,14 +199,16 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
188
199
|
attribute :>> confidentialityClass = "patient-identifiable";
|
|
189
200
|
attribute :>> availabilityClass = "retained 90 days";
|
|
190
201
|
}
|
|
191
|
-
|
|
202
|
+
item cdFlowCommand : InterfaceItem {
|
|
203
|
+
attribute :>> itemKind = InterfaceItemKind::command;
|
|
192
204
|
attribute :>> id = "CD-001";
|
|
193
205
|
attribute :>> name = "FlowCommand";
|
|
194
206
|
attribute :>> controlType = "commanded flow rate with enable interlock";
|
|
195
207
|
attribute :>> timeoutMs = 40.0;
|
|
196
208
|
attribute :>> retryPolicy = "no retry; missing command forces zero flow";
|
|
197
209
|
}
|
|
198
|
-
|
|
210
|
+
item cdAlarmSignal : InterfaceItem {
|
|
211
|
+
attribute :>> itemKind = InterfaceItemKind::command;
|
|
199
212
|
attribute :>> id = "CD-002";
|
|
200
213
|
attribute :>> name = "AlarmSignal";
|
|
201
214
|
attribute :>> controlType = "priority-coded alarm assertion (level 1 stops infusion, level 2 warns)";
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
package memo_examples_gpca_pump_model_catalog_gpca_context {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
|
-
private import
|
|
4
|
+
private import memo_architecture_operational_context_actors::*;
|
|
5
|
+
private import memo_architecture_operational_context_use_context::*;
|
|
6
|
+
private import memo_assurance_requirements::*;
|
|
7
|
+
private import memo_assurance_human_factors::*;
|
|
5
8
|
private import memo_core_enumerations::*;
|
|
6
9
|
|
|
7
10
|
// ── Intended use (ISO 14971 §5.2, IEC 62366-1) ──────────────
|
|
@@ -18,6 +21,17 @@ package memo_examples_gpca_pump_model_catalog_gpca_context {
|
|
|
18
21
|
attribute :>> regulatoryClassification = "FDA Class II infusion pump (21 CFR 880.5725); IEC 62304 software safety class C.";
|
|
19
22
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.1-2.3 (GPCA overview, system functions, user characteristics)";
|
|
20
23
|
}
|
|
24
|
+
part bolusByProxyMisuse : ReasonablyForeseeableMisuse {
|
|
25
|
+
attribute :>> id = "RFM-001";
|
|
26
|
+
attribute :>> name = "BolusRequestBySomeoneOtherThanPatient";
|
|
27
|
+
attribute :>> title = "Bolus by proxy";
|
|
28
|
+
attribute :>> shortDescription = "A caregiver or visitor presses the patient bolus control.";
|
|
29
|
+
attribute :>> longDescription = "A person other than the patient activates the bolus request control, bypassing the intended patient self-limiting behavior.";
|
|
30
|
+
attribute :>> misuseContext = "Patient-controlled analgesia in a supervised hospital setting.";
|
|
31
|
+
attribute :>> foreseeableBasis = "Known PCA use pattern represented in the GPCA hazard analysis.";
|
|
32
|
+
attribute :>> affectedUseContext = "UC-001";
|
|
33
|
+
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.8; CITE-005: Open PCA ISO 14971 risk analysis, bolus-by-proxy event";
|
|
34
|
+
}
|
|
21
35
|
|
|
22
36
|
// ── Use contexts ────────────────────────────────────────────
|
|
23
37
|
part hospitalWardContext : UseContext {
|
|
@@ -33,35 +47,40 @@ package memo_examples_gpca_pump_model_catalog_gpca_context {
|
|
|
33
47
|
// system is used in a fixed location and is not ambulatory.
|
|
34
48
|
|
|
35
49
|
// ── Actors ──────────────────────────────────────────────────
|
|
36
|
-
part actorPatient :
|
|
50
|
+
part actorPatient : User {
|
|
51
|
+
attribute :>> actorKind = ActorKind::patient;
|
|
37
52
|
attribute :>> id = "ACT-001";
|
|
38
53
|
attribute :>> name = "Patient";
|
|
39
54
|
attribute :>> actorKind = ActorKind::patient;
|
|
40
55
|
attribute :>> trainingLevel = "instructed by clinician on bolus request button only";
|
|
41
56
|
attribute :>> description = "Receives the infusion and requests bolus doses via the patient pendant.";
|
|
42
57
|
}
|
|
43
|
-
part actorNurse :
|
|
58
|
+
part actorNurse : User {
|
|
59
|
+
attribute :>> actorKind = ActorKind::clinician;
|
|
44
60
|
attribute :>> id = "ACT-002";
|
|
45
61
|
attribute :>> name = "ClinicianNurse";
|
|
46
62
|
attribute :>> actorKind = ActorKind::clinician;
|
|
47
63
|
attribute :>> trainingLevel = "trained clinical user; programs prescriptions and responds to alarms";
|
|
48
64
|
attribute :>> description = "Loads the drug reservoir, programs and confirms the prescription, starts/stops therapy, and responds to alarms.";
|
|
49
65
|
}
|
|
50
|
-
part actorPrescriber :
|
|
66
|
+
part actorPrescriber : User {
|
|
67
|
+
attribute :>> actorKind = ActorKind::clinician;
|
|
51
68
|
attribute :>> id = "ACT-003";
|
|
52
69
|
attribute :>> name = "PrescribingPhysician";
|
|
53
70
|
attribute :>> actorKind = ActorKind::clinician;
|
|
54
71
|
attribute :>> trainingLevel = "licensed prescriber";
|
|
55
72
|
attribute :>> description = "Prescribes drug, concentration, basal rate, bolus volume, lockout interval, and maximum dose limits.";
|
|
56
73
|
}
|
|
57
|
-
part actorPharmacist :
|
|
74
|
+
part actorPharmacist : User {
|
|
75
|
+
attribute :>> actorKind = ActorKind::clinician;
|
|
58
76
|
attribute :>> id = "ACT-004";
|
|
59
77
|
attribute :>> name = "Pharmacist";
|
|
60
78
|
attribute :>> actorKind = ActorKind::clinician;
|
|
61
79
|
attribute :>> trainingLevel = "licensed pharmacist";
|
|
62
80
|
attribute :>> description = "Prepares the drug reservoir and verifies drug and concentration against the prescription.";
|
|
63
81
|
}
|
|
64
|
-
part actorTechnician :
|
|
82
|
+
part actorTechnician : User {
|
|
83
|
+
attribute :>> actorKind = ActorKind::technician;
|
|
65
84
|
attribute :>> id = "ACT-005";
|
|
66
85
|
attribute :>> name = "BiomedicalTechnician";
|
|
67
86
|
attribute :>> actorKind = ActorKind::technician;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
package memo_examples_gpca_pump_model_catalog_gpca_cybersecurity {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
|
-
private import
|
|
5
|
-
private import
|
|
6
|
-
private import
|
|
7
|
-
private import
|
|
4
|
+
private import memo_assurance_cybersecurity::*;
|
|
5
|
+
private import memo_assurance_requirements::*;
|
|
6
|
+
private import memo_assurance_safety_risk::*;
|
|
7
|
+
private import memo_assurance_verification_validation::*;
|
|
8
8
|
private import memo_core_enumerations::*;
|
|
9
9
|
private import memo_core_relationships::*;
|
|
10
10
|
private import memo_examples_gpca_pump_model_catalog_gpca_architecture::*;
|
|
@@ -140,7 +140,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_cybersecurity {
|
|
|
140
140
|
attribute :>> safetyClass = SafetyClassKind::C;
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
-
|
|
143
|
+
verification vcAuthenticatedServiceAccess : VerificationCase {
|
|
144
144
|
attribute :>> id = "CVER-001";
|
|
145
145
|
attribute :>> name = "VerifyAuthenticatedServiceAccess";
|
|
146
146
|
attribute :>> methodKind = VerificationMethodKind::test;
|
|
@@ -156,7 +156,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_cybersecurity {
|
|
|
156
156
|
|
|
157
157
|
connection : RealizedByScenario connect realizedThreat ::> unauthorizedConfigChangeThreat to scenario ::> tamperedConfigurationScenario;
|
|
158
158
|
|
|
159
|
-
connection :
|
|
159
|
+
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::vulnerability; connect control ::> strongServiceAuthentication to mitigatedElement ::> weakServiceAuthentication; }
|
|
160
160
|
|
|
161
161
|
connection : DerivesCyberRequirement connect sourceThreatOrRisk ::> unauthorizedConfigChangeThreat to targetRequirement ::> reqAuthenticatedServiceAccess;
|
|
162
162
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
|
-
private import
|
|
4
|
+
private import memo_architecture_functional_behavior::*;
|
|
5
5
|
private import memo_core_enumerations::*;
|
|
6
6
|
|
|
7
7
|
// ═════════════════════════════════════════════════════════════
|
|
@@ -38,7 +38,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
// ── Assumptions (GPCA_SW.aadl) ──────────────────────────────
|
|
41
|
-
part assumeVtbiHighPositive :
|
|
41
|
+
part assumeVtbiHighPositive : BehaviorProperty {
|
|
42
|
+
attribute :>> propertyKind = BehaviorPropertyKind::assumption;
|
|
42
43
|
attribute :>> id = "AP-002";
|
|
43
44
|
attribute :>> name = "VtbiHighPositive";
|
|
44
45
|
attribute :>> propertyKind = BehaviorPropertyKind::assumption;
|
|
@@ -46,7 +47,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
|
|
|
46
47
|
attribute :>> formalExpression = "assume DB_IN.VTBI_High > 0";
|
|
47
48
|
attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
|
|
48
49
|
}
|
|
49
|
-
part assumeEmptyReservoirPositive :
|
|
50
|
+
part assumeEmptyReservoirPositive : BehaviorProperty {
|
|
51
|
+
attribute :>> propertyKind = BehaviorPropertyKind::assumption;
|
|
50
52
|
attribute :>> id = "AP-003";
|
|
51
53
|
attribute :>> name = "EmptyReservoirConstPositive";
|
|
52
54
|
attribute :>> propertyKind = BehaviorPropertyKind::assumption;
|
|
@@ -54,7 +56,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
|
|
|
54
56
|
attribute :>> formalExpression = "assume CONST_IN.Empty_Reservoir > 0";
|
|
55
57
|
attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
|
|
56
58
|
}
|
|
57
|
-
part assumeValidPrescriptionSaved :
|
|
59
|
+
part assumeValidPrescriptionSaved : BehaviorProperty {
|
|
60
|
+
attribute :>> propertyKind = BehaviorPropertyKind::assumption;
|
|
58
61
|
attribute :>> id = "AP-001";
|
|
59
62
|
attribute :>> name = "ValidPrescriptionSavedBeforeTherapy";
|
|
60
63
|
attribute :>> propertyKind = BehaviorPropertyKind::assumption;
|
|
@@ -64,7 +67,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
|
|
|
64
67
|
}
|
|
65
68
|
|
|
66
69
|
// ── Guarantees (GPCA_SW.aadl AGREE annex, 1:1) ──────────────
|
|
67
|
-
part guaranteeExclusiveMode :
|
|
70
|
+
part guaranteeExclusiveMode : BehaviorProperty {
|
|
71
|
+
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
68
72
|
attribute :>> id = "GP-001";
|
|
69
73
|
attribute :>> name = "ModeRange";
|
|
70
74
|
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
@@ -72,7 +76,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
|
|
|
72
76
|
attribute :>> formalExpression = "guarantee mode_range: GPCA_SW_OUT.Current_System_Mode in {0, 1, 2, 3, 4, 6, 7, 8} (source enumeration omits 5)";
|
|
73
77
|
attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 1)";
|
|
74
78
|
}
|
|
75
|
-
part guaranteeOffMode :
|
|
79
|
+
part guaranteeOffMode : BehaviorProperty {
|
|
80
|
+
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
76
81
|
attribute :>> id = "GP-004";
|
|
77
82
|
attribute :>> name = "NotStartImpliesModeZero";
|
|
78
83
|
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
@@ -80,7 +85,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
|
|
|
80
85
|
attribute :>> formalExpression = "guarantee not(OP_CMD_IN.System_Start) => GPCA_SW_OUT.Current_System_Mode = 0";
|
|
81
86
|
attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
|
|
82
87
|
}
|
|
83
|
-
part guaranteeInitialStart :
|
|
88
|
+
part guaranteeInitialStart : BehaviorProperty {
|
|
89
|
+
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
84
90
|
attribute :>> id = "GP-005";
|
|
85
91
|
attribute :>> name = "InitialSystemStartImpliesModeOne";
|
|
86
92
|
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
@@ -88,7 +94,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
|
|
|
88
94
|
attribute :>> formalExpression = "guarantee sys_initial and OP_CMD_IN.System_Start => GPCA_SW_OUT.Current_System_Mode = 1";
|
|
89
95
|
attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 4 allocation: TLM System_Start -> System_On; IM System_On -> mode 1)";
|
|
90
96
|
}
|
|
91
|
-
part guaranteeOffToOn :
|
|
97
|
+
part guaranteeOffToOn : BehaviorProperty {
|
|
98
|
+
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
92
99
|
attribute :>> id = "GP-006";
|
|
93
100
|
attribute :>> name = "OffToOnImpliesModeOne";
|
|
94
101
|
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
@@ -96,7 +103,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
|
|
|
96
103
|
attribute :>> formalExpression = "guarantee not(sys_initial) and pre(GPCA_SW_OUT.Current_System_Mode) = 0 and OP_CMD_IN.System_Start => GPCA_SW_OUT.Current_System_Mode = 1";
|
|
97
104
|
attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 4)";
|
|
98
105
|
}
|
|
99
|
-
part guaranteeEmptyReservoirNoFlow :
|
|
106
|
+
part guaranteeEmptyReservoirNoFlow : BehaviorProperty {
|
|
107
|
+
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
100
108
|
attribute :>> id = "GP-007";
|
|
101
109
|
attribute :>> name = "EmptyReservoirImpliesNoFlow";
|
|
102
110
|
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
@@ -104,7 +112,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
|
|
|
104
112
|
attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and pre(Current_System_Mode) > 1 and GPCA_SW_OUT.Reservoir_Volume < CONST_IN.Empty_Reservoir) => GPCA_SW_OUT.Commanded_Flow_Rate = 0";
|
|
105
113
|
attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 59 'Empty Reservoir')";
|
|
106
114
|
}
|
|
107
|
-
part guaranteeVtbiKvo :
|
|
115
|
+
part guaranteeVtbiKvo : BehaviorProperty {
|
|
116
|
+
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
108
117
|
attribute :>> id = "GP-008";
|
|
109
118
|
attribute :>> name = "OverVtbiImpliesFlowAtMostKvo";
|
|
110
119
|
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
@@ -112,7 +121,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
|
|
|
112
121
|
attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and pre(Current_System_Mode) > 1 and GPCA_SW_OUT.Volume_Infused > DB_IN.VTBI_High) => GPCA_SW_OUT.Commanded_Flow_Rate <= GPCA_SW_OUT.Flow_Rate_KVO";
|
|
113
122
|
attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (over-infusion => keep-vein-open, not zero)";
|
|
114
123
|
}
|
|
115
|
-
part guaranteeAirInLineKvo :
|
|
124
|
+
part guaranteeAirInLineKvo : BehaviorProperty {
|
|
125
|
+
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
116
126
|
attribute :>> id = "GP-009";
|
|
117
127
|
attribute :>> name = "AirInLineImpliesFlowAtMostKvo";
|
|
118
128
|
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
@@ -120,7 +130,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
|
|
|
120
130
|
attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and SENSOR_IN.Air_In_Line) => GPCA_SW_OUT.Commanded_Flow_Rate <= GPCA_SW_OUT.Flow_Rate_KVO";
|
|
121
131
|
attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex (REQ 21 'Air embolism')";
|
|
122
132
|
}
|
|
123
|
-
part guaranteeOcclusionKvo :
|
|
133
|
+
part guaranteeOcclusionKvo : BehaviorProperty {
|
|
134
|
+
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
124
135
|
attribute :>> id = "GP-010";
|
|
125
136
|
attribute :>> name = "OcclusionImpliesFlowAtMostKvo";
|
|
126
137
|
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
@@ -128,7 +139,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
|
|
|
128
139
|
attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and SENSOR_IN.Occlusion) => GPCA_SW_OUT.Commanded_Flow_Rate <= GPCA_SW_OUT.Flow_Rate_KVO";
|
|
129
140
|
attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
|
|
130
141
|
}
|
|
131
|
-
part guaranteeDoorOpenKvo :
|
|
142
|
+
part guaranteeDoorOpenKvo : BehaviorProperty {
|
|
143
|
+
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
132
144
|
attribute :>> id = "GP-011";
|
|
133
145
|
attribute :>> name = "DoorOpenImpliesFlowAtMostKvo";
|
|
134
146
|
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
@@ -136,7 +148,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
|
|
|
136
148
|
attribute :>> formalExpression = "guarantee (OP_CMD_IN.System_Start and SENSOR_IN.Door_Open) => GPCA_SW_OUT.Commanded_Flow_Rate <= GPCA_SW_OUT.Flow_Rate_KVO";
|
|
137
149
|
attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl AGREE annex";
|
|
138
150
|
}
|
|
139
|
-
part guaranteeAlarmStopsSameStep :
|
|
151
|
+
part guaranteeAlarmStopsSameStep : BehaviorProperty {
|
|
152
|
+
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
140
153
|
attribute :>> id = "GP-003";
|
|
141
154
|
attribute :>> name = "SameStepAlarmKvoGuarantee";
|
|
142
155
|
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
@@ -144,7 +157,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_formal_behavior {
|
|
|
144
157
|
attribute :>> formalExpression = "guarantee an infusion-inhibiting notification in a step implies Commanded_Flow_Rate <= Flow_Rate_KVO in the same step (ALARM_OUT -> IM.ALARM_IN is an immediate connection)";
|
|
145
158
|
attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, GPCA_SW.aadl (ALARM_to_IM immediate) with the flow <= KVO guarantees above";
|
|
146
159
|
}
|
|
147
|
-
part guaranteeLockoutPreventsBolus :
|
|
160
|
+
part guaranteeLockoutPreventsBolus : BehaviorProperty {
|
|
161
|
+
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|
|
148
162
|
attribute :>> id = "GP-002";
|
|
149
163
|
attribute :>> name = "LockoutGuarantee";
|
|
150
164
|
attribute :>> propertyKind = BehaviorPropertyKind::guarantee;
|