@memoarchitect/ontology 0.8.24 → 0.10.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +2179 -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 +22 -20
- 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 +290 -288
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +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/model/catalog/architecture/functional/functions.sysml +20 -18
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +6 -4
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +9 -7
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
- package/examples/nested-architecture-dsm/model/catalog/project.sysml +3 -1
- package/examples/reusable-instrument/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 +51 -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 +8 -6
- 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/model/catalog/architecture/functional/functions.sysml +14 -12
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +14 -12
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
- package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
- package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +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/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/src/methodology/cloud_methodology.sysml +3 -1
- package/extensions/container/src/methodology/container_methodology.sysml +3 -1
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
- package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
- package/extensions/template/src/extension.sysml +3 -1
- package/package.json +2 -2
- 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 +0 -10
- 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/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 +22 -20
- package/src/rules/crosslayer/cross_layer_rules.sysml +4 -2
- package/src/rules/ontology/ontology_invariants.sysml +106 -33
- 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
|
@@ -12,23 +12,25 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
12
12
|
private import memo_examples_gpca_pump_gpca_system::*;
|
|
13
13
|
private import memo_core_relationships::*;
|
|
14
14
|
|
|
15
|
+
private import memo_core_common::*;
|
|
16
|
+
private import memo_core_common::MemoIdentity;
|
|
15
17
|
// ── Operational entities beyond the human actors ────────────
|
|
16
18
|
part entityPharmacy : OperationalEntity {
|
|
17
|
-
|
|
19
|
+
@MemoIdentity { :>> providedId = "OE-001"; }
|
|
18
20
|
attribute :>> name = "HospitalPharmacy";
|
|
19
21
|
attribute :>> entityKind = OperationalEntityKind::externalSystem;
|
|
20
22
|
attribute :>> operationalDomain = "medication management";
|
|
21
23
|
attribute :>> responsibility = "Prepares labeled drug reservoirs and maintains the hospital pharmacy database of drug safe values.";
|
|
22
24
|
}
|
|
23
25
|
part entityPowerInfrastructure : OperationalEntity {
|
|
24
|
-
|
|
26
|
+
@MemoIdentity { :>> providedId = "OE-002"; }
|
|
25
27
|
attribute :>> name = "WardPowerInfrastructure";
|
|
26
28
|
attribute :>> entityKind = OperationalEntityKind::environmentalEntity;
|
|
27
29
|
attribute :>> operationalDomain = "facility power";
|
|
28
30
|
attribute :>> responsibility = "Provides mains power; outages are a foreseeable operational condition.";
|
|
29
31
|
}
|
|
30
32
|
part entityGpcaPump : OperationalEntity {
|
|
31
|
-
|
|
33
|
+
@MemoIdentity { :>> providedId = "OE-003"; }
|
|
32
34
|
attribute :>> name = "GPCA_Pump";
|
|
33
35
|
attribute :>> entityKind = OperationalEntityKind::device;
|
|
34
36
|
attribute :>> operationalDomain = "patient-controlled analgesia therapy";
|
|
@@ -37,49 +39,49 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
37
39
|
|
|
38
40
|
// ── External entities per CriSys Fig 2.1 ────────────────────
|
|
39
41
|
part entityPharmacyDb : OperationalEntity {
|
|
40
|
-
|
|
42
|
+
@MemoIdentity { :>> providedId = "OE-004"; }
|
|
41
43
|
attribute :>> name = "HospitalPharmacyDatabase";
|
|
42
44
|
attribute :>> entityKind = OperationalEntityKind::externalSystem;
|
|
43
45
|
attribute :>> operationalDomain = "medication safety data";
|
|
44
46
|
attribute :>> responsibility = "Repository of drug information from manufacturers; stores the safe value ranges for all drugs usable for infusion, retrieved by the GPCA for the programmed drug.";
|
|
45
|
-
|
|
47
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.1 and §3.5"; }
|
|
46
48
|
}
|
|
47
49
|
part entityDrugReservoir : OperationalEntity {
|
|
48
|
-
|
|
50
|
+
@MemoIdentity { :>> providedId = "OE-005"; }
|
|
49
51
|
attribute :>> name = "DrugReservoir";
|
|
50
52
|
attribute :>> entityKind = OperationalEntityKind::device;
|
|
51
53
|
attribute :>> operationalDomain = "drug storage";
|
|
52
54
|
attribute :>> responsibility = "Apparatus storing the liquid analgesic drug to be infused; filled according to the prescription and connected to the GPCA by the clinician.";
|
|
53
|
-
|
|
55
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.1"; }
|
|
54
56
|
}
|
|
55
57
|
part entityNeedle : OperationalEntity {
|
|
56
|
-
|
|
58
|
+
@MemoIdentity { :>> providedId = "OE-006"; }
|
|
57
59
|
attribute :>> name = "InfusionNeedle";
|
|
58
60
|
attribute :>> entityKind = OperationalEntityKind::device;
|
|
59
61
|
attribute :>> operationalDomain = "drug delivery path";
|
|
60
62
|
attribute :>> responsibility = "Intravenous needle inserted into the patient by the clinician and connected to the GPCA standard CCC connection point (I 5) to infuse the drug.";
|
|
61
|
-
|
|
63
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.1 and §3.3 (I 5)"; }
|
|
62
64
|
}
|
|
63
65
|
part entityPrescription : OperationalEntity {
|
|
64
|
-
|
|
66
|
+
@MemoIdentity { :>> providedId = "OE-007"; }
|
|
65
67
|
attribute :>> name = "Prescription";
|
|
66
68
|
attribute :>> entityKind = OperationalEntityKind::informationArtifact;
|
|
67
69
|
attribute :>> operationalDomain = "plan of care";
|
|
68
70
|
attribute :>> responsibility = "Instructions governing the plan of care for an individual patient: the drug to be infused and all administration details; provided by a certified medical practitioner.";
|
|
69
|
-
|
|
71
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.1"; }
|
|
70
72
|
}
|
|
71
73
|
part entityHospital : OperationalEntity {
|
|
72
|
-
|
|
74
|
+
@MemoIdentity { :>> providedId = "OE-008"; }
|
|
73
75
|
attribute :>> name = "Hospital";
|
|
74
76
|
attribute :>> entityKind = OperationalEntityKind::environmentalEntity;
|
|
75
77
|
attribute :>> operationalDomain = "care environment boundary";
|
|
76
78
|
attribute :>> responsibility = "Environment boundary: fixed (non-ambulatory) usage location with authorized clinicians and the pharmacy database holding drug safe values.";
|
|
77
|
-
|
|
79
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.4"; }
|
|
78
80
|
}
|
|
79
81
|
|
|
80
82
|
// ── Operational activities (therapy lifecycle) ──────────────
|
|
81
83
|
action oaPrescribe : OperativeAction {
|
|
82
|
-
|
|
84
|
+
@MemoIdentity { :>> providedId = "OA-001"; }
|
|
83
85
|
attribute :>> name = "PrescribeTherapy";
|
|
84
86
|
attribute :>> trigger = "patient requires titrated analgesia";
|
|
85
87
|
attribute :>> preCondition = "patient assessed; drug has safe-value records in the hospital pharmacy database";
|
|
@@ -87,7 +89,7 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
87
89
|
attribute :>> criticality = CriticalityKind::high;
|
|
88
90
|
}
|
|
89
91
|
action oaLoadReservoir : OperativeAction {
|
|
90
|
-
|
|
92
|
+
@MemoIdentity { :>> providedId = "OA-002"; }
|
|
91
93
|
attribute :>> name = "LoadDrugReservoir";
|
|
92
94
|
attribute :>> trigger = "prescription issued or reservoir empty";
|
|
93
95
|
attribute :>> preCondition = "labeled reservoir prepared by pharmacy";
|
|
@@ -95,7 +97,7 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
95
97
|
attribute :>> criticality = CriticalityKind::high;
|
|
96
98
|
}
|
|
97
99
|
action oaProgram : OperativeAction {
|
|
98
|
-
|
|
100
|
+
@MemoIdentity { :>> providedId = "OA-003"; }
|
|
99
101
|
attribute :>> name = "ProgramPrescription";
|
|
100
102
|
attribute :>> trigger = "reservoir loaded";
|
|
101
103
|
attribute :>> preCondition = "pump in IDLE; clinician authenticated by key or code";
|
|
@@ -103,7 +105,7 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
103
105
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
104
106
|
}
|
|
105
107
|
action oaStartTherapy : OperativeAction {
|
|
106
|
-
|
|
108
|
+
@MemoIdentity { :>> providedId = "OA-004"; }
|
|
107
109
|
attribute :>> name = "StartInfusion";
|
|
108
110
|
attribute :>> trigger = "prescription confirmed";
|
|
109
111
|
attribute :>> preCondition = "confirmed prescription saved; no active alarm";
|
|
@@ -111,7 +113,7 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
111
113
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
112
114
|
}
|
|
113
115
|
action oaRequestBolus : OperativeAction {
|
|
114
|
-
|
|
116
|
+
@MemoIdentity { :>> providedId = "OA-005"; }
|
|
115
117
|
attribute :>> name = "RequestPatientBolus";
|
|
116
118
|
attribute :>> trigger = "patient presses bolus request button";
|
|
117
119
|
attribute :>> preCondition = "therapy active";
|
|
@@ -119,7 +121,7 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
119
121
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
120
122
|
}
|
|
121
123
|
action oaRespondAlarm : OperativeAction {
|
|
122
|
-
|
|
124
|
+
@MemoIdentity { :>> providedId = "OA-006"; }
|
|
123
125
|
attribute :>> name = "RespondToAlarm";
|
|
124
126
|
attribute :>> trigger = "audible or visual alarm annunciated";
|
|
125
127
|
attribute :>> preCondition = "alarm condition raised by the pump";
|
|
@@ -127,7 +129,7 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
127
129
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
128
130
|
}
|
|
129
131
|
action oaReviewLog : OperativeAction {
|
|
130
|
-
|
|
132
|
+
@MemoIdentity { :>> providedId = "OA-007"; }
|
|
131
133
|
attribute :>> name = "ReviewEventLog";
|
|
132
134
|
attribute :>> trigger = "shift change, incident review, or dose audit";
|
|
133
135
|
attribute :>> preCondition = "event log populated during therapy";
|
|
@@ -135,7 +137,7 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
135
137
|
attribute :>> criticality = CriticalityKind::medium;
|
|
136
138
|
}
|
|
137
139
|
action oaMaintain : OperativeAction {
|
|
138
|
-
|
|
140
|
+
@MemoIdentity { :>> providedId = "OA-008"; }
|
|
139
141
|
attribute :>> name = "MaintainDevice";
|
|
140
142
|
attribute :>> trigger = "scheduled maintenance or fault";
|
|
141
143
|
attribute :>> preCondition = "pump out of clinical use; technician authenticated";
|
|
@@ -148,7 +150,7 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
148
150
|
// several workflows, each of which owns multiple selected scenarios.
|
|
149
151
|
use case ucDeliverPcaTherapy : UseCase {
|
|
150
152
|
attribute :>> useCaseKind = UseCaseKind::clinical;
|
|
151
|
-
|
|
153
|
+
@MemoIdentity { :>> providedId = "UC-001"; }
|
|
152
154
|
attribute :>> name = "DeliverPatientControlledAnalgesia";
|
|
153
155
|
attribute :>> goalStatement = "Deliver prescribed analgesia safely while allowing patient-controlled bolus requests within configured limits.";
|
|
154
156
|
attribute :>> trigger = "A clinician starts prescribed patient-controlled analgesia therapy.";
|
|
@@ -185,6 +187,35 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
185
187
|
#refinement dependency fcsBolusCommand to oaRequestBolus;
|
|
186
188
|
#refinement dependency fcsBolusActuate to oaRequestBolus;
|
|
187
189
|
#refinement dependency fcsBolusLog to oaRequestBolus;
|
|
190
|
+
action osNominalTherapy : OperativeScenario {
|
|
191
|
+
@MemoIdentity { :>> providedId = "OS-001"; }
|
|
192
|
+
attribute :>> name = "NominalTherapySession";
|
|
193
|
+
attribute :>> preCondition = "prescription issued, reservoir loaded";
|
|
194
|
+
attribute :>> postCondition = "therapy completed and stopped by clinician";
|
|
195
|
+
attribute :>> pathSummary = "Prescribe > load reservoir > program and confirm > start basal > patient boluses within limits > stop therapy > review log.";
|
|
196
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.2 Main GPCA System Functions"; }
|
|
197
|
+
|
|
198
|
+
action oaCompleteNominalTherapy : OperativeAction {
|
|
199
|
+
attribute :>> name = "CompleteNominalTherapy";
|
|
200
|
+
action deliverWithinLimits; action recordTherapyEvent;
|
|
201
|
+
first start then deliverWithinLimits; first deliverWithinLimits then recordTherapyEvent; first recordTherapyEvent then done;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
action osLockoutBolus : OperativeScenario {
|
|
205
|
+
attribute :>> scenarioKind = ScenarioKind::alternate;
|
|
206
|
+
@MemoIdentity { :>> providedId = "OS-002"; }
|
|
207
|
+
attribute :>> name = "BolusRequestDuringLockout";
|
|
208
|
+
attribute :>> preCondition = "basal infusion active; lockout interval running";
|
|
209
|
+
attribute :>> postCondition = "request ignored, logged; basal continues unchanged";
|
|
210
|
+
attribute :>> pathSummary = "Patient presses bolus button during lockout > infusion manager rejects request > event logged > no additional drug delivered.";
|
|
211
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.9 PATIENT BOLUS mode (lockout requirements)"; }
|
|
212
|
+
|
|
213
|
+
action oaRejectBolusDuringLockout : OperativeAction {
|
|
214
|
+
attribute :>> name = "RejectBolusDuringLockout";
|
|
215
|
+
action checkLockout; action rejectAndLog;
|
|
216
|
+
first start then checkLockout; first checkLockout then rejectAndLog; first rejectAndLog then done;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
188
219
|
}
|
|
189
220
|
action wfRespondToTherapyAlarm : OperationalWorkflow {
|
|
190
221
|
attribute :>> name = "RespondToTherapyAlarm";
|
|
@@ -196,19 +227,79 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
196
227
|
#refinement dependency fcsAlarmEvaluate to oaRespondAlarm;
|
|
197
228
|
#refinement dependency fcsAlarmStopInfusion to oaRespondAlarm;
|
|
198
229
|
#refinement dependency fcsAlarmAnnunciate to oaRespondAlarm;
|
|
230
|
+
action osOcclusionAlarm : OperativeScenario {
|
|
231
|
+
attribute :>> scenarioKind = ScenarioKind::alternate;
|
|
232
|
+
@MemoIdentity { :>> providedId = "OS-003"; }
|
|
233
|
+
attribute :>> name = "OcclusionDetectedDuringInfusion";
|
|
234
|
+
attribute :>> preCondition = "therapy active; downstream line becomes blocked";
|
|
235
|
+
attribute :>> postCondition = "infusion paused, alarm annunciated, clinician clears occlusion and resumes";
|
|
236
|
+
attribute :>> pathSummary = "Occlusion sensor exceeds pressure threshold > alarm raised same step > infusion paused > audible and visual annunciation > clinician resolves and resumes.";
|
|
237
|
+
@MemoIdentity { :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.2 Alarms and Alerts (occlusion)"; }
|
|
238
|
+
|
|
239
|
+
action oaRespondToOcclusion : OperativeAction {
|
|
240
|
+
attribute :>> name = "RespondToOcclusion";
|
|
241
|
+
action pauseInfusion; action annunciateOcclusion; action resolveAndResume;
|
|
242
|
+
first start then pauseInfusion; first pauseInfusion then annunciateOcclusion; first annunciateOcclusion then resolveAndResume; first resolveAndResume then done;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
action osAirInLine : OperativeScenario {
|
|
246
|
+
attribute :>> scenarioKind = ScenarioKind::alternate;
|
|
247
|
+
@MemoIdentity { :>> providedId = "OS-004"; }
|
|
248
|
+
attribute :>> name = "AirInLineDetected";
|
|
249
|
+
attribute :>> preCondition = "therapy active; air bubble enters tubing";
|
|
250
|
+
attribute :>> postCondition = "infusion stopped before air reaches patient; alarm annunciated";
|
|
251
|
+
attribute :>> pathSummary = "Air-in-line sensor detects bubble above threshold > transition to PAUSED (KVO flow) > High-priority Air embolism notification > clinician re-primes line and restarts.";
|
|
252
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 Notification Requirements (REQ 59: Air embolism)"; }
|
|
253
|
+
|
|
254
|
+
action oaRespondToAirInLine : OperativeAction {
|
|
255
|
+
attribute :>> name = "RespondToAirInLine";
|
|
256
|
+
action stopOrKvo; action annunciateAir; action reprimeAndRestart;
|
|
257
|
+
first start then stopOrKvo; first stopOrKvo then annunciateAir; first annunciateAir then reprimeAndRestart; first reprimeAndRestart then done;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
action osEmptyReservoir : OperativeScenario {
|
|
261
|
+
attribute :>> scenarioKind = ScenarioKind::alternate;
|
|
262
|
+
@MemoIdentity { :>> providedId = "OS-005"; }
|
|
263
|
+
attribute :>> name = "ReservoirEmptyDuringTherapy";
|
|
264
|
+
attribute :>> preCondition = "therapy active; reservoir volume reaches empty threshold";
|
|
265
|
+
attribute :>> postCondition = "infusion stopped, alarm raised, reservoir replaced";
|
|
266
|
+
attribute :>> pathSummary = "Reservoir-empty condition detected > transition to PAUSED (KVO flow) > High-priority Empty Reservoir notification > clinician loads new reservoir > therapy resumed with saved prescription.";
|
|
267
|
+
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 Notification Requirements (REQ 59: Empty Reservoir)"; }
|
|
268
|
+
|
|
269
|
+
action oaReplaceEmptyReservoir : OperativeAction {
|
|
270
|
+
attribute :>> name = "ReplaceEmptyReservoir";
|
|
271
|
+
action stopAndAnnunciate; action replaceReservoir; action resumeTherapy;
|
|
272
|
+
first start then stopAndAnnunciate; first stopAndAnnunciate then replaceReservoir; first replaceReservoir then resumeTherapy; first resumeTherapy then done;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
action osPowerLoss : OperativeScenario {
|
|
276
|
+
attribute :>> scenarioKind = ScenarioKind::alternate;
|
|
277
|
+
@MemoIdentity { :>> providedId = "OS-006"; }
|
|
278
|
+
attribute :>> name = "MainsPowerLossAndRecovery";
|
|
279
|
+
attribute :>> preCondition = "therapy active on mains power";
|
|
280
|
+
attribute :>> postCondition = "therapy continues on battery; prescription preserved across full power loss";
|
|
281
|
+
attribute :>> pathSummary = "Mains lost > battery takes over with notification > if battery depletes, pump stops safely > on power restore, saved prescription recovered and therapy resumed only after clinician confirmation.";
|
|
282
|
+
@MemoIdentity { :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.3 Electrical Hazards (battery failure)"; }
|
|
283
|
+
|
|
284
|
+
action oaRecoverAfterPowerLoss : OperativeAction {
|
|
285
|
+
attribute :>> name = "RecoverAfterPowerLoss";
|
|
286
|
+
action switchToBattery; action restorePrescription; action confirmRestart;
|
|
287
|
+
first start then switchToBattery; first switchToBattery then restorePrescription; first restorePrescription then confirmRestart; first confirmRestart then done;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
199
290
|
}
|
|
200
291
|
|
|
201
292
|
|
|
202
293
|
// ── Operational capabilities ────────────────────────────────
|
|
203
294
|
part ocTitratedAnalgesia : OperationalCapability {
|
|
204
|
-
|
|
295
|
+
@MemoIdentity { :>> providedId = "OC-001"; }
|
|
205
296
|
attribute :>> name = "DeliverTitratedAnalgesia";
|
|
206
297
|
attribute :>> capabilityLevel = "primary";
|
|
207
298
|
attribute :>> preCondition = "confirmed prescription and loaded reservoir";
|
|
208
299
|
attribute :>> postCondition = "drug delivered within prescribed limits at all times";
|
|
209
300
|
}
|
|
210
301
|
part ocFailSafeTherapy : OperationalCapability {
|
|
211
|
-
|
|
302
|
+
@MemoIdentity { :>> providedId = "OC-002"; }
|
|
212
303
|
attribute :>> name = "FailSafeTherapyManagement";
|
|
213
304
|
attribute :>> capabilityLevel = "safety";
|
|
214
305
|
attribute :>> preCondition = "any single failure or foreseeable misuse";
|
|
@@ -216,101 +307,12 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
216
307
|
}
|
|
217
308
|
|
|
218
309
|
// ── Operational scenarios ───────────────────────────────────
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.2 Main GPCA System Functions";
|
|
226
|
-
|
|
227
|
-
action oaCompleteNominalTherapy : OperativeAction {
|
|
228
|
-
attribute :>> name = "CompleteNominalTherapy";
|
|
229
|
-
action deliverWithinLimits; action recordTherapyEvent;
|
|
230
|
-
first start then deliverWithinLimits; first deliverWithinLimits then recordTherapyEvent; first recordTherapyEvent then done;
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
action osLockoutBolus : OperativeScenario {
|
|
234
|
-
attribute :>> scenarioKind = ScenarioKind::alternate;
|
|
235
|
-
attribute :>> id = "OS-002";
|
|
236
|
-
attribute :>> name = "BolusRequestDuringLockout";
|
|
237
|
-
attribute :>> preCondition = "basal infusion active; lockout interval running";
|
|
238
|
-
attribute :>> postCondition = "request ignored, logged; basal continues unchanged";
|
|
239
|
-
attribute :>> pathSummary = "Patient presses bolus button during lockout > infusion manager rejects request > event logged > no additional drug delivered.";
|
|
240
|
-
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.9 PATIENT BOLUS mode (lockout requirements)";
|
|
241
|
-
|
|
242
|
-
action oaRejectBolusDuringLockout : OperativeAction {
|
|
243
|
-
attribute :>> name = "RejectBolusDuringLockout";
|
|
244
|
-
action checkLockout; action rejectAndLog;
|
|
245
|
-
first start then checkLockout; first checkLockout then rejectAndLog; first rejectAndLog then done;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
action osOcclusionAlarm : OperativeScenario {
|
|
249
|
-
attribute :>> scenarioKind = ScenarioKind::alternate;
|
|
250
|
-
attribute :>> id = "OS-003";
|
|
251
|
-
attribute :>> name = "OcclusionDetectedDuringInfusion";
|
|
252
|
-
attribute :>> preCondition = "therapy active; downstream line becomes blocked";
|
|
253
|
-
attribute :>> postCondition = "infusion paused, alarm annunciated, clinician clears occlusion and resumes";
|
|
254
|
-
attribute :>> pathSummary = "Occlusion sensor exceeds pressure threshold > alarm raised same step > infusion paused > audible and visual annunciation > clinician resolves and resumes.";
|
|
255
|
-
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.2 Alarms and Alerts (occlusion)";
|
|
256
|
-
|
|
257
|
-
action oaRespondToOcclusion : OperativeAction {
|
|
258
|
-
attribute :>> name = "RespondToOcclusion";
|
|
259
|
-
action pauseInfusion; action annunciateOcclusion; action resolveAndResume;
|
|
260
|
-
first start then pauseInfusion; first pauseInfusion then annunciateOcclusion; first annunciateOcclusion then resolveAndResume; first resolveAndResume then done;
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
action osAirInLine : OperativeScenario {
|
|
264
|
-
attribute :>> scenarioKind = ScenarioKind::alternate;
|
|
265
|
-
attribute :>> id = "OS-004";
|
|
266
|
-
attribute :>> name = "AirInLineDetected";
|
|
267
|
-
attribute :>> preCondition = "therapy active; air bubble enters tubing";
|
|
268
|
-
attribute :>> postCondition = "infusion stopped before air reaches patient; alarm annunciated";
|
|
269
|
-
attribute :>> pathSummary = "Air-in-line sensor detects bubble above threshold > transition to PAUSED (KVO flow) > High-priority Air embolism notification > clinician re-primes line and restarts.";
|
|
270
|
-
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 Notification Requirements (REQ 59: Air embolism)";
|
|
271
|
-
|
|
272
|
-
action oaRespondToAirInLine : OperativeAction {
|
|
273
|
-
attribute :>> name = "RespondToAirInLine";
|
|
274
|
-
action stopOrKvo; action annunciateAir; action reprimeAndRestart;
|
|
275
|
-
first start then stopOrKvo; first stopOrKvo then annunciateAir; first annunciateAir then reprimeAndRestart; first reprimeAndRestart then done;
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
action osEmptyReservoir : OperativeScenario {
|
|
279
|
-
attribute :>> scenarioKind = ScenarioKind::alternate;
|
|
280
|
-
attribute :>> id = "OS-005";
|
|
281
|
-
attribute :>> name = "ReservoirEmptyDuringTherapy";
|
|
282
|
-
attribute :>> preCondition = "therapy active; reservoir volume reaches empty threshold";
|
|
283
|
-
attribute :>> postCondition = "infusion stopped, alarm raised, reservoir replaced";
|
|
284
|
-
attribute :>> pathSummary = "Reservoir-empty condition detected > transition to PAUSED (KVO flow) > High-priority Empty Reservoir notification > clinician loads new reservoir > therapy resumed with saved prescription.";
|
|
285
|
-
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 Notification Requirements (REQ 59: Empty Reservoir)";
|
|
286
|
-
|
|
287
|
-
action oaReplaceEmptyReservoir : OperativeAction {
|
|
288
|
-
attribute :>> name = "ReplaceEmptyReservoir";
|
|
289
|
-
action stopAndAnnunciate; action replaceReservoir; action resumeTherapy;
|
|
290
|
-
first start then stopAndAnnunciate; first stopAndAnnunciate then replaceReservoir; first replaceReservoir then resumeTherapy; first resumeTherapy then done;
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
action osPowerLoss : OperativeScenario {
|
|
294
|
-
attribute :>> scenarioKind = ScenarioKind::alternate;
|
|
295
|
-
attribute :>> id = "OS-006";
|
|
296
|
-
attribute :>> name = "MainsPowerLossAndRecovery";
|
|
297
|
-
attribute :>> preCondition = "therapy active on mains power";
|
|
298
|
-
attribute :>> postCondition = "therapy continues on battery; prescription preserved across full power loss";
|
|
299
|
-
attribute :>> pathSummary = "Mains lost > battery takes over with notification > if battery depletes, pump stops safely > on power restore, saved prescription recovered and therapy resumed only after clinician confirmation.";
|
|
300
|
-
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.3 Electrical Hazards (battery failure)";
|
|
301
|
-
|
|
302
|
-
action oaRecoverAfterPowerLoss : OperativeAction {
|
|
303
|
-
attribute :>> name = "RecoverAfterPowerLoss";
|
|
304
|
-
action switchToBattery; action restorePrescription; action confirmRestart;
|
|
305
|
-
first start then switchToBattery; first switchToBattery then restorePrescription; first restorePrescription then confirmRestart; first confirmRestart then done;
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
#refinement dependency osNominalTherapy to ucDeliverPcaTherapy;
|
|
309
|
-
#refinement dependency osLockoutBolus to ucDeliverPcaTherapy;
|
|
310
|
-
#refinement dependency osOcclusionAlarm to ucDeliverPcaTherapy;
|
|
311
|
-
#refinement dependency osAirInLine to ucDeliverPcaTherapy;
|
|
312
|
-
#refinement dependency osEmptyReservoir to ucDeliverPcaTherapy;
|
|
313
|
-
#refinement dependency osPowerLoss to ucDeliverPcaTherapy;
|
|
310
|
+
#refinement dependency wfManageActiveTherapy::osNominalTherapy to ucDeliverPcaTherapy;
|
|
311
|
+
#refinement dependency wfManageActiveTherapy::osLockoutBolus to ucDeliverPcaTherapy;
|
|
312
|
+
#refinement dependency wfRespondToTherapyAlarm::osOcclusionAlarm to ucDeliverPcaTherapy;
|
|
313
|
+
#refinement dependency wfRespondToTherapyAlarm::osAirInLine to ucDeliverPcaTherapy;
|
|
314
|
+
#refinement dependency wfRespondToTherapyAlarm::osEmptyReservoir to ucDeliverPcaTherapy;
|
|
315
|
+
#refinement dependency wfRespondToTherapyAlarm::osPowerLoss to ucDeliverPcaTherapy;
|
|
314
316
|
|
|
315
317
|
// ── Operational trace relations ─────────────────────────────
|
|
316
318
|
connection : RealizesUseCase connect realizingWorkflow ::> wfPrepareAndStartTherapy to realizedUseCase ::> ucDeliverPcaTherapy;
|
|
@@ -322,11 +324,5 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
322
324
|
connection : RequiresCapability connect requiringIntendedUse ::> gpcaIntendedUse to requiredCapability ::> ocFailSafeTherapy;
|
|
323
325
|
|
|
324
326
|
|
|
325
|
-
connection : HasScenario connect owningWorkflow ::> wfManageActiveTherapy to pathScenario ::> osNominalTherapy;
|
|
326
|
-
connection : HasScenario connect owningWorkflow ::> wfManageActiveTherapy to pathScenario ::> osLockoutBolus;
|
|
327
|
-
connection : HasScenario connect owningWorkflow ::> wfRespondToTherapyAlarm to pathScenario ::> osOcclusionAlarm;
|
|
328
|
-
connection : HasScenario connect owningWorkflow ::> wfRespondToTherapyAlarm to pathScenario ::> osAirInLine;
|
|
329
|
-
connection : HasScenario connect owningWorkflow ::> wfRespondToTherapyAlarm to pathScenario ::> osEmptyReservoir;
|
|
330
|
-
connection : HasScenario connect owningWorkflow ::> wfRespondToTherapyAlarm to pathScenario ::> osPowerLoss;
|
|
331
327
|
|
|
332
328
|
}
|
|
@@ -4,8 +4,10 @@ package memo_examples_gpca_pump_gpca_physical {
|
|
|
4
4
|
private import memo_architecture_realization_physical::*;
|
|
5
5
|
private import memo_core_enumerations::*;
|
|
6
6
|
|
|
7
|
+
private import memo_core_common::*;
|
|
8
|
+
private import memo_core_common::MemoIdentity;
|
|
7
9
|
part mainController : ProcessingNode {
|
|
8
|
-
|
|
10
|
+
@MemoIdentity { :>> providedId = "PN-001"; }
|
|
9
11
|
attribute :>> name = "MainControllerMCU";
|
|
10
12
|
attribute :>> nodeKind = ProcessingNodeKind::microcontroller;
|
|
11
13
|
attribute :>> processorArchitecture = "ARM Cortex-M4, lockstep-capable";
|
|
@@ -16,31 +18,31 @@ package memo_examples_gpca_pump_gpca_physical {
|
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
in port portSensorHarness : PhysicalPort {
|
|
19
|
-
|
|
21
|
+
@MemoIdentity { :>> providedId = "PP-001"; }
|
|
20
22
|
attribute :>> name = "SensorHarnessConnector";
|
|
21
23
|
attribute :>> portKind = InterfaceKind::digitalSignal;
|
|
22
24
|
attribute :>> connectorType = "keyed 12-pin locking header";
|
|
23
25
|
}
|
|
24
26
|
out port portMotorDrive : PhysicalPort {
|
|
25
|
-
|
|
27
|
+
@MemoIdentity { :>> providedId = "PP-002"; }
|
|
26
28
|
attribute :>> name = "MotorDriveConnector";
|
|
27
29
|
attribute :>> portKind = InterfaceKind::digitalSignal;
|
|
28
30
|
attribute :>> connectorType = "keyed 6-pin locking header with enable interlock";
|
|
29
31
|
}
|
|
30
32
|
in port portPatientPendant : PhysicalPort {
|
|
31
|
-
|
|
33
|
+
@MemoIdentity { :>> providedId = "PP-003"; }
|
|
32
34
|
attribute :>> name = "PatientPendantJack";
|
|
33
35
|
attribute :>> portKind = InterfaceKind::digitalSignal;
|
|
34
36
|
attribute :>> connectorType = "latching 3.5 mm pendant jack";
|
|
35
37
|
}
|
|
36
38
|
inout port portServiceAccess : PhysicalPort {
|
|
37
|
-
|
|
39
|
+
@MemoIdentity { :>> providedId = "PP-004"; }
|
|
38
40
|
attribute :>> name = "ServiceMaintenancePort";
|
|
39
41
|
attribute :>> portKind = InterfaceKind::api;
|
|
40
42
|
attribute :>> connectorType = "covered UART/USB service connector";
|
|
41
43
|
}
|
|
42
44
|
in port portMainsInlet : PhysicalPort {
|
|
43
|
-
|
|
45
|
+
@MemoIdentity { :>> providedId = "PP-005"; }
|
|
44
46
|
attribute :>> name = "MainsPowerInlet";
|
|
45
47
|
attribute :>> portKind = InterfaceKind::power;
|
|
46
48
|
attribute :>> connectorType = "IEC 60320 C8 inlet";
|