@memoarchitect/ontology 0.4.5 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -4
- package/examples/connected-patient-monitor/README.md +7 -0
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +70 -0
- package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +3 -0
- package/examples/connected-patient-monitor/model/viewpoints/connected_patient_monitor_overview.sysml +6 -0
- package/examples/embedded-infusion-pump/README.md +7 -0
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +66 -0
- package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +3 -0
- package/examples/embedded-infusion-pump/model/viewpoints/embedded_infusion_pump_overview.sysml +6 -0
- package/examples/extensions/README.md +16 -0
- package/examples/extensions/clinical/memo.package.yaml +9 -0
- package/examples/extensions/clinical/src/clinical_extension.sysml +3 -0
- package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +14 -0
- package/examples/extensions/clinical/src/procedures/memo_clinical_procedures.sysml +16 -0
- package/examples/extensions/template/memo.package.yaml +9 -0
- package/examples/extensions/template/src/extension.sysml +15 -0
- package/examples/functional-logical-physical/README.md +7 -0
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +50 -0
- package/examples/functional-logical-physical/model/functional_logical_physical.sysml +3 -0
- package/examples/functional-logical-physical/model/viewpoints/functional_logical_physical_overview.sysml +6 -0
- package/examples/gpca-pump/README.md +26 -0
- package/examples/gpca-pump/dhf/documents/DOC-RMP-001.md +1 -1
- package/examples/gpca-pump/memo.config.yaml +2 -2
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +1 -1
- package/examples/gpca-pump/methodology/gpca_scope.sysml +2 -2
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +10 -10
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +17 -6
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +11 -11
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +35 -22
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +25 -6
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +6 -6
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +29 -15
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +293 -169
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +139 -21
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +210 -105
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +66 -69
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +43 -76
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +73 -70
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +27 -27
- package/examples/gpca-pump/model/views/context_system_context_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_architecture_description_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_cyber_assessment_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_hazard_analysis_view.sysml +1 -1
- package/examples/gpca-pump/model/views/document_rmf_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_sdd_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_threat_model_view.sysml +1 -1
- package/examples/gpca-pump/model/views/document_usability_view.sysml +1 -1
- package/examples/gpca-pump/model/views/document_vv_view.sysml +1 -1
- package/examples/gpca-pump/model/views/functional_function_allocation_view.sysml +1 -1
- package/examples/gpca-pump/model/views/functional_function_browser_view.sysml +1 -1
- package/examples/gpca-pump/model/views/logical_device_interconnect_view.sysml +1 -1
- package/examples/gpca-pump/model/views/logical_mode_state_view.sysml +1 -1
- package/examples/gpca-pump/model/views/logical_system_decomposition_view.sysml +1 -1
- package/examples/gpca-pump/model/views/operational_scenario_sequence_view.sysml +1 -1
- package/examples/gpca-pump/model/views/operational_use_case_view.sysml +6 -6
- package/examples/gpca-pump/model/views/physical_physical_bom_view.sysml +1 -1
- package/examples/gpca-pump/model/views/requirements_requirements_trace_view.sysml +1 -1
- package/examples/gpca-pump/model/views/risk_risk_chain_view.sysml +2 -2
- package/examples/gpca-pump/model/views/software_software_architecture_view.sysml +1 -1
- package/examples/gpca-pump/model/views/verification_verification_coverage_view.sysml +1 -1
- package/examples/ivd-laboratory-system/README.md +7 -0
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +58 -0
- package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +3 -0
- package/examples/ivd-laboratory-system/model/viewpoints/ivd_laboratory_system_overview.sysml +6 -0
- package/examples/manual-surgical-instrument/README.md +7 -0
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +41 -0
- package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +3 -0
- package/examples/manual-surgical-instrument/model/viewpoints/manual_surgical_instrument_overview.sysml +6 -0
- package/examples/multidimensional-layers/README.md +7 -0
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +51 -0
- package/examples/multidimensional-layers/model/multidimensional_layers.sysml +4 -0
- package/examples/multidimensional-layers/model/viewpoints/multidimensional_layers_overview.sysml +13 -0
- package/examples/reusable-instrument/README.md +7 -0
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +71 -0
- package/examples/reusable-instrument/model/reusable_instrument.sysml +4 -0
- package/examples/reusable-instrument/model/viewpoints/reusable_instrument_overview.sysml +13 -0
- package/examples/software-only-medical-device/README.md +7 -0
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +62 -0
- package/examples/software-only-medical-device/model/software_only_medical_device.sysml +4 -0
- package/examples/software-only-medical-device/model/viewpoints/software_only_medical_device_overview.sysml +13 -0
- package/examples/surgical-closure-workflow/README.md +8 -0
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +151 -0
- package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +4 -0
- package/examples/surgical-closure-workflow/model/viewpoints/surgical_closure_workflow_overview.sysml +13 -0
- package/examples/surgical-robot/README.md +7 -0
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +58 -0
- package/examples/surgical-robot/model/surgical_robot.sysml +4 -0
- package/examples/surgical-robot/model/viewpoints/surgical_robot_overview.sysml +13 -0
- package/examples/sysml-diagram-samples/README.md +32 -0
- package/examples/sysml-diagram-samples/memo.package.yaml +5 -0
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/action_flow_view.sysml +22 -4
- package/examples/sysml-diagram-samples/model/samples/context_view.sysml +55 -0
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/functional_flow_view.sysml +17 -6
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/interconnection_view.sysml +4 -3
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/operational_behaviour_view.sysml +32 -42
- package/examples/sysml-diagram-samples/model/samples/requirements_view.sysml +63 -0
- package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +109 -0
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/tree_view.sysml +3 -3
- package/examples/sysml-diagram-samples/model/samples/use_case_view.sysml +81 -0
- package/examples/temperature-alarm/README.md +7 -0
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +140 -0
- package/examples/temperature-alarm/model/temperature_alarm.sysml +4 -0
- package/examples/temperature-alarm/model/viewpoints/temperature_alarm_overview.sysml +13 -0
- package/memo.manifest.yaml +4 -1
- package/methodologies/default/memo.package.yaml +1 -1
- package/methodologies/gpca/memo.package.yaml +4 -4
- package/ontology/memo.package.yaml +1 -1
- package/ontology/memo.rendering.yaml +37 -0
- package/package.json +17 -7
- package/profile/memo.package.yaml +1 -1
- package/profile/templates/connected-device/starter.sysml +3 -3
- package/profile/templates/infusion-pump/starter.sysml +3 -3
- package/profile/templates/monitoring-device/starter.sysml +3 -3
- package/profile/templates/samd/starter.sysml +3 -3
- package/src/architecture/decisions/memo_decisions.sysml +1 -1
- package/src/architecture/{behavior → functional/behavior}/memo_behavior.sysml +12 -11
- package/src/architecture/{constraints → functional/constraints}/memo_constraints.sysml +2 -2
- package/src/architecture/functional/functions/memo_functions.sysml +81 -0
- package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +46 -0
- package/src/architecture/implementation/hardware/electrical/memo_hardware_electrical.sysml +36 -0
- package/src/architecture/implementation/hardware/fluidic/memo_hardware_fluidic.sysml +14 -0
- package/src/architecture/implementation/hardware/mechanical/memo_hardware_mechanical.sysml +14 -0
- package/src/architecture/implementation/hardware/optical/memo_hardware_optical.sysml +11 -0
- package/src/architecture/implementation/hardware/sensing/memo_hardware_sensing.sysml +17 -0
- package/src/architecture/implementation/hardware/structure/memo_hardware_structure.sysml +12 -0
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +70 -0
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +80 -0
- package/src/architecture/implementation/ui/memo_ui.sysml +159 -0
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +102 -0
- package/src/architecture/logical/structure/memo_logical_structure.sysml +150 -0
- package/src/architecture/operational/activities/memo_activities.sysml +86 -0
- package/src/architecture/operational/context/actors/memo_actors.sysml +38 -0
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +64 -0
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +53 -0
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +116 -0
- package/src/architecture/operational/structure/memo_operational.sysml +26 -0
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +67 -0
- package/src/architecture/operational/workflows/memo_workflows.sysml +126 -0
- package/src/architecture/realization/deployment/memo_deployment.sysml +90 -0
- package/src/architecture/{physical → realization/physical}/memo_physical_architecture.sysml +12 -1
- package/src/artifacts/definitions/memo_artifact_definitions.sysml +1 -1
- package/src/{architecture → assurance}/cybersecurity/memo_cybersecurity.sysml +14 -10
- package/src/assurance/human_factors/memo_human_factors.sysml +50 -0
- package/src/{architecture → assurance}/requirements/memo_requirements.sysml +45 -21
- package/src/assurance/requirements/needs/memo_needs.sysml +43 -0
- package/src/{architecture → assurance/safety_risk}/analysis/memo_fmea.sysml +13 -13
- package/src/{architecture/risk → assurance/safety_risk}/memo_arch_risk.sysml +2 -2
- package/src/{architecture/risk → assurance/safety_risk}/memo_risk.sysml +25 -16
- package/src/assurance/verification_validation/memo_assurance.sysml +49 -0
- package/src/compliance/artifacts/memo_artifacts.sysml +1 -1
- package/src/compliance/change/memo_change.sysml +2 -2
- package/src/compliance/dhf-templates/21cfr820/design-input.md +1 -1
- package/src/compliance/dhf-templates/21cfr820/design-validation.md +1 -1
- package/src/compliance/dhf-templates/21cfr820/user-needs.md +2 -2
- package/src/compliance/dhf-templates/iec-62366/urra.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/fmea.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/har.md +4 -4
- package/src/compliance/dhf-templates/iso-14971/risk-matrix.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/rmp.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/rmr.md +1 -1
- package/src/compliance/iso14971/risk_management_file.sysml +1 -1
- package/src/compliance/postmarket/memo_postmarket.sysml +2 -2
- package/src/core/common/memo_common.sysml +123 -14
- package/src/core/consistency_rules/consistency_rules.sysml +2 -2
- package/src/core/dimensions/dimensions.sysml +45 -24
- package/src/core/enumerations/memo_enumerations.sysml +11 -16
- package/src/core/methodology_scope/methodology_scope.sysml +10 -28
- package/src/core/relationships/memo_relationships.sysml +178 -146
- package/src/core/stdlib/{collections.sysml → collections/collections.sysml} +1 -1
- package/src/core/stdlib/{functions.sysml → functions/functions.sysml} +1 -1
- package/src/core/stdlib/{scalars.sysml → scalars/scalars.sysml} +1 -1
- package/src/core/stdlib/{time.sysml → time/time.sysml} +1 -1
- package/src/core/terminology/terminology.sysml +35 -0
- package/src/memo_namespaces.sysml +247 -302
- package/src/methodology/{memo_core.sysml → core/memo_core.sysml} +19 -13
- package/src/methodology/{memo_gates.sysml → gates/memo_gates.sysml} +1 -1
- package/src/methodology/{memo_patterns.sysml → patterns/memo_patterns.sysml} +1 -1
- package/src/methodology/{memo_profiles.sysml → profiles/memo_profiles.sysml} +27 -35
- package/src/methodology/{memo_workflow.sysml → workflow/memo_workflow.sysml} +1 -1
- package/src/rules/closure/closure_rules.sysml +11 -11
- package/src/rules/coverage/coverage_rules.sysml +8 -8
- package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
- package/src/rules/lifecycle/lifecycle_rules.sysml +1 -1
- package/src/rules/ontology/ontology_invariants.sysml +133 -0
- package/src/rules/quantitative/quantitative_rules.sysml +2 -2
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +189 -0
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +0 -1
- package/src/viewpoints/context/context_viewpoint.sysml +1 -2
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +1 -2
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +8 -8
- package/src/viewpoints/functional/{function_allocation_view.sysml → function_allocation_view/function_allocation_view.sysml} +1 -1
- package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
- package/src/viewpoints/functional/{system_functional_tree_view.sysml → system_functional_tree_view/system_functional_tree_view.sysml} +1 -1
- package/src/viewpoints/logical/logical_viewpoint.sysml +0 -1
- package/src/viewpoints/operational/operational_viewpoint.sysml +1 -2
- package/src/viewpoints/operational/{use_case_view.sysml → use_case_view/use_case_view.sysml} +1 -1
- package/src/viewpoints/physical/physical_viewpoint.sysml +0 -1
- package/src/viewpoints/requirements/{requirements_traceability_view.sysml → requirements_traceability_view/requirements_traceability_view.sysml} +1 -1
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
- package/src/viewpoints/risk/{risk_chain_view.sysml → risk_chain_view/risk_chain_view.sysml} +2 -2
- package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
- package/src/viewpoints/software/{software_architecture_view.sysml → software_architecture_view/software_architecture_view.sysml} +1 -1
- package/src/viewpoints/software/software_viewpoint.sysml +1 -2
- package/src/viewpoints/usability/usability_viewpoint.sysml +0 -1
- package/src/viewpoints/verification/verification_viewpoint.sysml +0 -1
- package/template/memo.package.yaml +1 -1
- package/template/src/catalog/starter.sysml +3 -3
- package/examples/gpca-pump/model/samples/README.md +0 -24
- package/examples/gpca-pump/model/samples/action_flow_view.viewlayout +0 -9
- package/examples/gpca-pump/model/samples/interconnection_view.viewlayout +0 -99
- package/src/architecture/assurance/memo_assurance.sysml +0 -29
- package/src/architecture/context/memo_context.sysml +0 -58
- package/src/architecture/functions/memo_functions.sysml +0 -30
- package/src/architecture/hardware_structure/memo_hardware_structure.sysml +0 -15
- package/src/architecture/interfaces/memo_interfaces.sysml +0 -103
- package/src/architecture/logical_structure/memo_logical_structure.sysml +0 -10
- package/src/architecture/operational/memo_operational.sysml +0 -51
- package/src/architecture/software_structure/memo_software_structure.sysml +0 -44
- package/src/architecture/system/memo_system_analysis.sysml +0 -54
- package/src/artifacts/clinical_safety_report.sysml +0 -12
- package/src/artifacts/cybersecurity_assessment_report.sysml +0 -12
- package/src/artifacts/design_change_log.sysml +0 -12
- package/src/artifacts/design_history_file_index.sysml +0 -12
- package/src/artifacts/design_input_plan.sysml +0 -12
- package/src/artifacts/design_output_plan.sysml +0 -12
- package/src/artifacts/evidence_record.sysml +0 -12
- package/src/artifacts/failure_mode_effects_analysis.sysml +0 -12
- package/src/artifacts/hazard_analysis_report.sysml +0 -12
- package/src/artifacts/labeling_specification.sysml +0 -12
- package/src/artifacts/requirements_specification.sysml +0 -12
- package/src/artifacts/requirements_traceability_matrix.sysml +0 -12
- package/src/artifacts/risk_management_plan.sysml +0 -12
- package/src/artifacts/software_design_description.sysml +0 -12
- package/src/artifacts/software_development_plan.sysml +0 -12
- package/src/artifacts/soup_list.sysml +0 -12
- package/src/artifacts/system_architecture_description.sysml +0 -12
- package/src/artifacts/test_protocol.sysml +0 -12
- package/src/artifacts/test_report.sysml +0 -12
- package/src/artifacts/threat_model_report.sysml +0 -12
- package/src/artifacts/usability_engineering_report.sysml +0 -12
- package/src/medical_device_library.sysml +0 -100
- /package/src/methodology/{memo_archetypes.sysml → archetypes/memo_archetypes.sysml} +0 -0
- /package/src/methodology/{memo_rules.sysml → rules/memo_rules.sysml} +0 -0
- /package/src/methodology/{memo_viewpoints.sysml → viewpoints/memo_viewpoints.sysml} +0 -0
- /package/src/viewpoints/clinical/{clinical_evidence_view.sysml → clinical_evidence_view/clinical_evidence_view.sysml} +0 -0
- /package/src/viewpoints/context/{system_context_view.sysml → system_context_view/system_context_view.sysml} +0 -0
- /package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view.sysml → cybersecurity_assessment_view/cybersecurity_assessment_view.sysml} +0 -0
- /package/src/viewpoints/cybersecurity/{threat_model_view.sysml → threat_model_view/threat_model_view.sysml} +0 -0
- /package/src/viewpoints/logical/{logical_architecture_view.sysml → logical_architecture_view/logical_architecture_view.sysml} +0 -0
- /package/src/viewpoints/physical/{network_topology_view.sysml → network_topology_view/network_topology_view.sysml} +0 -0
- /package/src/viewpoints/physical/{physical_bom_view.sysml → physical_bom_view/physical_bom_view.sysml} +0 -0
- /package/src/viewpoints/usability/{usability_engineering_view.sysml → usability_engineering_view/usability_engineering_view.sysml} +0 -0
- /package/src/viewpoints/verification/{verification_coverage_view.sysml → verification_coverage_view/verification_coverage_view.sysml} +0 -0
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
package memo_examples_gpca_pump_model_catalog_gpca_operational {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
|
-
private import
|
|
4
|
+
private import memo_architecture_operational_structure::*;
|
|
5
|
+
private import memo_architecture_operational_activities::*;
|
|
6
|
+
private import memo_architecture_operational_scenarios::*;
|
|
7
|
+
private import memo_architecture_operational_use_cases::*;
|
|
8
|
+
private import memo_architecture_operational_workflows::*;
|
|
5
9
|
private import memo_core_enumerations::*;
|
|
10
|
+
private import memo_examples_gpca_pump_model_catalog_gpca_context::*;
|
|
6
11
|
|
|
7
12
|
// ── Operational entities beyond the human actors ────────────
|
|
8
13
|
part entityPharmacy : OperationalEntity {
|
|
@@ -70,7 +75,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
|
|
|
70
75
|
}
|
|
71
76
|
|
|
72
77
|
// ── Operational activities (therapy lifecycle) ──────────────
|
|
73
|
-
|
|
78
|
+
action oaPrescribe : OperationalActivity {
|
|
74
79
|
attribute :>> id = "OA-001";
|
|
75
80
|
attribute :>> name = "PrescribeTherapy";
|
|
76
81
|
attribute :>> trigger = "patient requires titrated analgesia";
|
|
@@ -78,7 +83,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
|
|
|
78
83
|
attribute :>> postCondition = "prescription with basal rate, bolus volume, lockout, and max dose limits exists";
|
|
79
84
|
attribute :>> criticality = CriticalityKind::high;
|
|
80
85
|
}
|
|
81
|
-
|
|
86
|
+
action oaLoadReservoir : OperationalActivity {
|
|
82
87
|
attribute :>> id = "OA-002";
|
|
83
88
|
attribute :>> name = "LoadDrugReservoir";
|
|
84
89
|
attribute :>> trigger = "prescription issued or reservoir empty";
|
|
@@ -86,7 +91,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
|
|
|
86
91
|
attribute :>> postCondition = "reservoir mounted, door closed and latched";
|
|
87
92
|
attribute :>> criticality = CriticalityKind::high;
|
|
88
93
|
}
|
|
89
|
-
|
|
94
|
+
action oaProgram : OperationalActivity {
|
|
90
95
|
attribute :>> id = "OA-003";
|
|
91
96
|
attribute :>> name = "ProgramPrescription";
|
|
92
97
|
attribute :>> trigger = "reservoir loaded";
|
|
@@ -94,7 +99,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
|
|
|
94
99
|
attribute :>> postCondition = "prescription entered, checked against pharmacy-database safe values (I 9-I 11), and confirmed by second review";
|
|
95
100
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
96
101
|
}
|
|
97
|
-
|
|
102
|
+
action oaStartTherapy : OperationalActivity {
|
|
98
103
|
attribute :>> id = "OA-004";
|
|
99
104
|
attribute :>> name = "StartInfusion";
|
|
100
105
|
attribute :>> trigger = "prescription confirmed";
|
|
@@ -102,7 +107,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
|
|
|
102
107
|
attribute :>> postCondition = "basal infusion running";
|
|
103
108
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
104
109
|
}
|
|
105
|
-
|
|
110
|
+
action oaRequestBolus : OperationalActivity {
|
|
106
111
|
attribute :>> id = "OA-005";
|
|
107
112
|
attribute :>> name = "RequestPatientBolus";
|
|
108
113
|
attribute :>> trigger = "patient presses bolus request button";
|
|
@@ -110,7 +115,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
|
|
|
110
115
|
attribute :>> postCondition = "bolus delivered, or request ignored when lockout or max-dose limits apply";
|
|
111
116
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
112
117
|
}
|
|
113
|
-
|
|
118
|
+
action oaRespondAlarm : OperationalActivity {
|
|
114
119
|
attribute :>> id = "OA-006";
|
|
115
120
|
attribute :>> name = "RespondToAlarm";
|
|
116
121
|
attribute :>> trigger = "audible or visual alarm annunciated";
|
|
@@ -118,7 +123,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
|
|
|
118
123
|
attribute :>> postCondition = "cause resolved and therapy resumed, or therapy stopped";
|
|
119
124
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
120
125
|
}
|
|
121
|
-
|
|
126
|
+
action oaReviewLog : OperationalActivity {
|
|
122
127
|
attribute :>> id = "OA-007";
|
|
123
128
|
attribute :>> name = "ReviewEventLog";
|
|
124
129
|
attribute :>> trigger = "shift change, incident review, or dose audit";
|
|
@@ -126,7 +131,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
|
|
|
126
131
|
attribute :>> postCondition = "delivered doses and alarm history reviewed";
|
|
127
132
|
attribute :>> criticality = CriticalityKind::medium;
|
|
128
133
|
}
|
|
129
|
-
|
|
134
|
+
action oaMaintain : OperationalActivity {
|
|
130
135
|
attribute :>> id = "OA-008";
|
|
131
136
|
attribute :>> name = "MaintainDevice";
|
|
132
137
|
attribute :>> trigger = "scheduled maintenance or fault";
|
|
@@ -135,6 +140,83 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
|
|
|
135
140
|
attribute :>> criticality = CriticalityKind::medium;
|
|
136
141
|
}
|
|
137
142
|
|
|
143
|
+
// ── Scenario-driven operational model ──────────────────────
|
|
144
|
+
// The use case is the patient and clinician goal. It is supported by
|
|
145
|
+
// several workflows, each of which owns multiple selected scenarios.
|
|
146
|
+
use case ucDeliverPcaTherapy : UseCase {
|
|
147
|
+
attribute :>> useCaseKind = UseCaseKind::clinical;
|
|
148
|
+
attribute :>> id = "UC-001";
|
|
149
|
+
attribute :>> name = "DeliverPatientControlledAnalgesia";
|
|
150
|
+
attribute :>> goalStatement = "Deliver prescribed analgesia safely while allowing patient-controlled bolus requests within configured limits.";
|
|
151
|
+
attribute :>> trigger = "A clinician starts prescribed patient-controlled analgesia therapy.";
|
|
152
|
+
attribute :>> successOutcome = "The patient receives prescribed analgesia without exceeding dose, lockout, or safety limits.";
|
|
153
|
+
ref :>> primaryUser = actorNurse;
|
|
154
|
+
ref :>> supportingActors = (actorPatient, actorPrescriber, actorPharmacist);
|
|
155
|
+
ref :>> useContext = hospitalWardContext;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
action wfPrepareAndStartTherapy : OperationalWorkflow {
|
|
159
|
+
attribute :>> name = "PrepareAndStartTherapy";
|
|
160
|
+
attribute :>> workflowState = WorkflowStateKind::toBe;
|
|
161
|
+
attribute :>> entryCondition = "A valid prescription and prepared reservoir are available.";
|
|
162
|
+
attribute :>> completionCondition = "Therapy is started with confirmed prescription limits.";
|
|
163
|
+
}
|
|
164
|
+
action wfManageActiveTherapy : OperationalWorkflow {
|
|
165
|
+
attribute :>> name = "ManageActiveTherapy";
|
|
166
|
+
attribute :>> workflowState = WorkflowStateKind::toBe;
|
|
167
|
+
attribute :>> entryCondition = "Basal therapy is active.";
|
|
168
|
+
attribute :>> completionCondition = "A bolus is handled or active therapy continues safely.";
|
|
169
|
+
}
|
|
170
|
+
action wfRespondToTherapyAlarm : OperationalWorkflow {
|
|
171
|
+
attribute :>> name = "RespondToTherapyAlarm";
|
|
172
|
+
attribute :>> workflowState = WorkflowStateKind::toBe;
|
|
173
|
+
attribute :>> entryCondition = "A therapy alarm or degraded condition is detected.";
|
|
174
|
+
attribute :>> completionCondition = "The pump is safe and the clinician has resolved or escalated the condition.";
|
|
175
|
+
}
|
|
176
|
+
action wsProgram : WorkflowStep { ref :>> performedActivity = oaProgram; }
|
|
177
|
+
action wsStart : WorkflowStep { ref :>> performedActivity = oaStartTherapy; }
|
|
178
|
+
action wsRequestBolus : WorkflowStep { ref :>> performedActivity = oaRequestBolus; }
|
|
179
|
+
action wsRespondAlarm : WorkflowStep { ref :>> performedActivity = oaRespondAlarm; }
|
|
180
|
+
connection : Supports { attribute :>> supportKind = SupportKind::useCase; connect supporter ::> wfPrepareAndStartTherapy to supported ::> ucDeliverPcaTherapy; }
|
|
181
|
+
connection : Supports { attribute :>> supportKind = SupportKind::useCase; connect supporter ::> wfManageActiveTherapy to supported ::> ucDeliverPcaTherapy; }
|
|
182
|
+
connection : Supports { attribute :>> supportKind = SupportKind::useCase; connect supporter ::> wfRespondToTherapyAlarm to supported ::> ucDeliverPcaTherapy; }
|
|
183
|
+
connection : Composes connect parent ::> wfPrepareAndStartTherapy to child ::> wsProgram;
|
|
184
|
+
connection : Composes connect parent ::> wfPrepareAndStartTherapy to child ::> wsStart;
|
|
185
|
+
connection : Composes connect parent ::> wfManageActiveTherapy to child ::> wsRequestBolus;
|
|
186
|
+
connection : Composes connect parent ::> wfRespondToTherapyAlarm to child ::> wsRespondAlarm;
|
|
187
|
+
|
|
188
|
+
// ── Scenario-owned operational activities and action flows ──
|
|
189
|
+
action oaCompleteNominalTherapy : OperationalActivity {
|
|
190
|
+
attribute :>> name = "CompleteNominalTherapy";
|
|
191
|
+
action deliverWithinLimits; action recordTherapyEvent;
|
|
192
|
+
first start then deliverWithinLimits; first deliverWithinLimits then recordTherapyEvent; first recordTherapyEvent then done;
|
|
193
|
+
}
|
|
194
|
+
action oaRejectBolusDuringLockout : OperationalActivity {
|
|
195
|
+
attribute :>> name = "RejectBolusDuringLockout";
|
|
196
|
+
action checkLockout; action rejectAndLog;
|
|
197
|
+
first start then checkLockout; first checkLockout then rejectAndLog; first rejectAndLog then done;
|
|
198
|
+
}
|
|
199
|
+
action oaRespondToOcclusion : OperationalActivity {
|
|
200
|
+
attribute :>> name = "RespondToOcclusion";
|
|
201
|
+
action pauseInfusion; action annunciateOcclusion; action resolveAndResume;
|
|
202
|
+
first start then pauseInfusion; first pauseInfusion then annunciateOcclusion; first annunciateOcclusion then resolveAndResume; first resolveAndResume then done;
|
|
203
|
+
}
|
|
204
|
+
action oaRespondToAirInLine : OperationalActivity {
|
|
205
|
+
attribute :>> name = "RespondToAirInLine";
|
|
206
|
+
action stopOrKvo; action annunciateAir; action reprimeAndRestart;
|
|
207
|
+
first start then stopOrKvo; first stopOrKvo then annunciateAir; first annunciateAir then reprimeAndRestart; first reprimeAndRestart then done;
|
|
208
|
+
}
|
|
209
|
+
action oaReplaceEmptyReservoir : OperationalActivity {
|
|
210
|
+
attribute :>> name = "ReplaceEmptyReservoir";
|
|
211
|
+
action stopAndAnnunciate; action replaceReservoir; action resumeTherapy;
|
|
212
|
+
first start then stopAndAnnunciate; first stopAndAnnunciate then replaceReservoir; first replaceReservoir then resumeTherapy; first resumeTherapy then done;
|
|
213
|
+
}
|
|
214
|
+
action oaRecoverAfterPowerLoss : OperationalActivity {
|
|
215
|
+
attribute :>> name = "RecoverAfterPowerLoss";
|
|
216
|
+
action switchToBattery; action restorePrescription; action confirmRestart;
|
|
217
|
+
first start then switchToBattery; first switchToBattery then restorePrescription; first restorePrescription then confirmRestart; first confirmRestart then done;
|
|
218
|
+
}
|
|
219
|
+
|
|
138
220
|
// ── Operational capabilities ────────────────────────────────
|
|
139
221
|
part ocTitratedAnalgesia : OperationalCapability {
|
|
140
222
|
attribute :>> id = "OC-001";
|
|
@@ -155,55 +237,91 @@ package memo_examples_gpca_pump_model_catalog_gpca_operational {
|
|
|
155
237
|
part osNominalTherapy : OperationalScenario {
|
|
156
238
|
attribute :>> id = "OS-001";
|
|
157
239
|
attribute :>> name = "NominalTherapySession";
|
|
158
|
-
attribute :>>
|
|
240
|
+
attribute :>> variantKind = ScenarioVariantKind::nominal;
|
|
241
|
+
attribute :>> operationalCondition = OperationalConditionKind::normal;
|
|
159
242
|
attribute :>> preCondition = "prescription issued, reservoir loaded";
|
|
160
243
|
attribute :>> postCondition = "therapy completed and stopped by clinician";
|
|
161
|
-
attribute :>>
|
|
244
|
+
attribute :>> pathSummary = "Prescribe > load reservoir > program and confirm > start basal > patient boluses within limits > stop therapy > review log.";
|
|
162
245
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.2 Main GPCA System Functions";
|
|
246
|
+
ref :>> parentWorkflow = wfManageActiveTherapy;
|
|
247
|
+
ref :>> parentUseCase = ucDeliverPcaTherapy;
|
|
248
|
+
ref :>> activities = oaCompleteNominalTherapy;
|
|
163
249
|
}
|
|
164
250
|
part osLockoutBolus : OperationalScenario {
|
|
165
251
|
attribute :>> id = "OS-002";
|
|
166
252
|
attribute :>> name = "BolusRequestDuringLockout";
|
|
167
|
-
attribute :>>
|
|
253
|
+
attribute :>> variantKind = ScenarioVariantKind::alternate;
|
|
254
|
+
attribute :>> operationalCondition = OperationalConditionKind::foreseeableMisuse;
|
|
168
255
|
attribute :>> preCondition = "basal infusion active; lockout interval running";
|
|
169
256
|
attribute :>> postCondition = "request ignored, logged; basal continues unchanged";
|
|
170
|
-
attribute :>>
|
|
257
|
+
attribute :>> pathSummary = "Patient presses bolus button during lockout > infusion manager rejects request > event logged > no additional drug delivered.";
|
|
171
258
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.9 PATIENT BOLUS mode (lockout requirements)";
|
|
259
|
+
ref :>> parentWorkflow = wfManageActiveTherapy;
|
|
260
|
+
ref :>> parentUseCase = ucDeliverPcaTherapy;
|
|
261
|
+
ref :>> activities = oaRejectBolusDuringLockout;
|
|
172
262
|
}
|
|
173
263
|
part osOcclusionAlarm : OperationalScenario {
|
|
174
264
|
attribute :>> id = "OS-003";
|
|
175
265
|
attribute :>> name = "OcclusionDetectedDuringInfusion";
|
|
176
|
-
attribute :>>
|
|
266
|
+
attribute :>> variantKind = ScenarioVariantKind::exception;
|
|
267
|
+
attribute :>> operationalCondition = OperationalConditionKind::degraded;
|
|
177
268
|
attribute :>> preCondition = "therapy active; downstream line becomes blocked";
|
|
178
269
|
attribute :>> postCondition = "infusion paused, alarm annunciated, clinician clears occlusion and resumes";
|
|
179
|
-
attribute :>>
|
|
270
|
+
attribute :>> pathSummary = "Occlusion sensor exceeds pressure threshold > alarm raised same step > infusion paused > audible and visual annunciation > clinician resolves and resumes.";
|
|
180
271
|
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.2 Alarms and Alerts (occlusion)";
|
|
272
|
+
ref :>> parentWorkflow = wfRespondToTherapyAlarm;
|
|
273
|
+
ref :>> parentUseCase = ucDeliverPcaTherapy;
|
|
274
|
+
ref :>> activities = oaRespondToOcclusion;
|
|
181
275
|
}
|
|
182
276
|
part osAirInLine : OperationalScenario {
|
|
183
277
|
attribute :>> id = "OS-004";
|
|
184
278
|
attribute :>> name = "AirInLineDetected";
|
|
185
|
-
attribute :>>
|
|
279
|
+
attribute :>> variantKind = ScenarioVariantKind::exception;
|
|
280
|
+
attribute :>> operationalCondition = OperationalConditionKind::degraded;
|
|
186
281
|
attribute :>> preCondition = "therapy active; air bubble enters tubing";
|
|
187
282
|
attribute :>> postCondition = "infusion stopped before air reaches patient; alarm annunciated";
|
|
188
|
-
attribute :>>
|
|
283
|
+
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.";
|
|
189
284
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 Notification Requirements (REQ 59: Air embolism)";
|
|
285
|
+
ref :>> parentWorkflow = wfRespondToTherapyAlarm;
|
|
286
|
+
ref :>> parentUseCase = ucDeliverPcaTherapy;
|
|
287
|
+
ref :>> activities = oaRespondToAirInLine;
|
|
190
288
|
}
|
|
191
289
|
part osEmptyReservoir : OperationalScenario {
|
|
192
290
|
attribute :>> id = "OS-005";
|
|
193
291
|
attribute :>> name = "ReservoirEmptyDuringTherapy";
|
|
194
|
-
attribute :>>
|
|
292
|
+
attribute :>> variantKind = ScenarioVariantKind::exception;
|
|
293
|
+
attribute :>> operationalCondition = OperationalConditionKind::degraded;
|
|
195
294
|
attribute :>> preCondition = "therapy active; reservoir volume reaches empty threshold";
|
|
196
295
|
attribute :>> postCondition = "infusion stopped, alarm raised, reservoir replaced";
|
|
197
|
-
attribute :>>
|
|
296
|
+
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.";
|
|
198
297
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 Notification Requirements (REQ 59: Empty Reservoir)";
|
|
298
|
+
ref :>> parentWorkflow = wfRespondToTherapyAlarm;
|
|
299
|
+
ref :>> parentUseCase = ucDeliverPcaTherapy;
|
|
300
|
+
ref :>> activities = oaReplaceEmptyReservoir;
|
|
199
301
|
}
|
|
200
302
|
part osPowerLoss : OperationalScenario {
|
|
201
303
|
attribute :>> id = "OS-006";
|
|
202
304
|
attribute :>> name = "MainsPowerLossAndRecovery";
|
|
203
|
-
attribute :>>
|
|
305
|
+
attribute :>> variantKind = ScenarioVariantKind::recovery;
|
|
306
|
+
attribute :>> operationalCondition = OperationalConditionKind::degraded;
|
|
204
307
|
attribute :>> preCondition = "therapy active on mains power";
|
|
205
308
|
attribute :>> postCondition = "therapy continues on battery; prescription preserved across full power loss";
|
|
206
|
-
attribute :>>
|
|
309
|
+
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.";
|
|
207
310
|
attribute :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.3 Electrical Hazards (battery failure)";
|
|
311
|
+
ref :>> parentWorkflow = wfRespondToTherapyAlarm;
|
|
312
|
+
ref :>> parentUseCase = ucDeliverPcaTherapy;
|
|
313
|
+
ref :>> activities = oaRecoverAfterPowerLoss;
|
|
208
314
|
}
|
|
315
|
+
connection : Realizes connect realizing ::> osNominalTherapy to realized ::> ucDeliverPcaTherapy;
|
|
316
|
+
connection : Realizes connect realizing ::> osLockoutBolus to realized ::> ucDeliverPcaTherapy;
|
|
317
|
+
connection : Realizes connect realizing ::> osOcclusionAlarm to realized ::> ucDeliverPcaTherapy;
|
|
318
|
+
connection : Realizes connect realizing ::> osAirInLine to realized ::> ucDeliverPcaTherapy;
|
|
319
|
+
connection : Realizes connect realizing ::> osEmptyReservoir to realized ::> ucDeliverPcaTherapy;
|
|
320
|
+
connection : Realizes connect realizing ::> osPowerLoss to realized ::> ucDeliverPcaTherapy;
|
|
321
|
+
connection : Composes connect parent ::> osNominalTherapy to child ::> oaCompleteNominalTherapy;
|
|
322
|
+
connection : Composes connect parent ::> osLockoutBolus to child ::> oaRejectBolusDuringLockout;
|
|
323
|
+
connection : Composes connect parent ::> osOcclusionAlarm to child ::> oaRespondToOcclusion;
|
|
324
|
+
connection : Composes connect parent ::> osAirInLine to child ::> oaRespondToAirInLine;
|
|
325
|
+
connection : Composes connect parent ::> osEmptyReservoir to child ::> oaReplaceEmptyReservoir;
|
|
326
|
+
connection : Composes connect parent ::> osPowerLoss to child ::> oaRecoverAfterPowerLoss;
|
|
209
327
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
package memo_examples_gpca_pump_model_catalog_gpca_physical {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
|
-
private import
|
|
4
|
+
private import memo_architecture_realization_physical::*;
|
|
5
5
|
private import memo_core_enumerations::*;
|
|
6
6
|
|
|
7
7
|
part mainController : ProcessingNode {
|