@memoarchitect/ontology 0.13.2 → 0.15.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 -3
- package/examples/connected-patient-monitor/memo.identity.yaml +34 -0
- package/examples/connected-patient-monitor/memo.package.yaml +3 -1
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +17 -12
- package/examples/connected-patient-monitor/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/embedded-infusion-pump/memo.package.yaml +3 -1
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +6 -6
- package/examples/embedded-infusion-pump/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/functional-logical-physical/memo.identity.yaml +28 -0
- package/examples/functional-logical-physical/memo.package.yaml +3 -1
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
- package/examples/functional-logical-physical/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/gpca-pump/analysis/Samples/01-model-overview.ipynb +40 -139
- package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +38 -290
- package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +47 -217
- package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +50 -191
- package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +42 -181
- package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +40 -164
- package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +51 -172
- package/examples/gpca-pump/analysis/Samples/README.md +15 -9
- package/examples/gpca-pump/analysis/memo_model.py +243 -0
- package/examples/gpca-pump/memo.identity.yaml +521 -26
- package/examples/gpca-pump/memo.package.yaml +3 -1
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +56 -47
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +51 -78
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +359 -357
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +9 -9
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +56 -69
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +44 -59
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +23 -35
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +33 -40
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +62 -63
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +362 -483
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +45 -70
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -12
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +173 -169
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +139 -225
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +43 -47
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +68 -65
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +147 -116
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +65 -90
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +7 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
- package/examples/gpca-pump/model/{catalog → methodology}/project.sysml +8 -6
- package/examples/ivd-laboratory-system/memo.package.yaml +3 -1
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +12 -9
- package/examples/ivd-laboratory-system/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/manual-surgical-instrument/memo.package.yaml +3 -1
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +2 -6
- package/examples/manual-surgical-instrument/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/multidimensional-layers/memo.package.yaml +3 -1
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +2 -4
- package/examples/multidimensional-layers/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/nested-architecture-dsm/memo.identity.yaml +93 -0
- package/examples/nested-architecture-dsm/memo.package.yaml +3 -1
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +30 -30
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +28 -28
- package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +2 -4
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +4 -4
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +7 -7
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +8 -8
- package/examples/nested-architecture-dsm/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/reusable-instrument/memo.package.yaml +3 -1
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -7
- package/examples/reusable-instrument/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/robot-cell-family/README.md +34 -0
- package/examples/robot-cell-family/memo.identity.yaml +142 -0
- package/examples/robot-cell-family/memo.package.yaml +7 -0
- package/examples/robot-cell-family/model/methodology/project.sysml +30 -0
- package/examples/robot-cell-family/model/shared/shared.sysml +53 -0
- package/examples/robot-cell-family/model/sos/chains.sysml +36 -0
- package/examples/robot-cell-family/model/sos/icds.sysml +29 -0
- package/examples/robot-cell-family/model/sos/sos.sysml +31 -0
- package/examples/robot-cell-family/model/sos/use_cases.sysml +25 -0
- package/examples/robot-cell-family/model/systems/manipulation/manipulation_system.sysml +35 -0
- package/examples/robot-cell-family/model/systems/navigation/navigation_system.sysml +46 -0
- package/examples/robot-cell-family/model/systems/perception/perception_system.sysml +37 -0
- package/examples/robot-platform/memo.package.yaml +3 -0
- package/examples/robot-platform/model/platform.sysml +15 -0
- package/examples/ros-mobile-robot/README.md +5 -4
- package/examples/ros-mobile-robot/memo.identity.yaml +94 -0
- package/examples/ros-mobile-robot/memo.package.yaml +3 -1
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +26 -29
- package/examples/ros-mobile-robot/model/{catalog → methodology}/project.sysml +8 -14
- package/examples/software-only-medical-device/memo.package.yaml +3 -1
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +9 -10
- package/examples/software-only-medical-device/model/{catalog → methodology}/project.sysml +8 -9
- package/examples/surgical-closure-workflow/memo.package.yaml +3 -1
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +23 -26
- package/examples/surgical-closure-workflow/model/{catalog → methodology}/project.sysml +7 -5
- package/examples/surgical-robot/memo.package.yaml +3 -1
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +14 -12
- package/examples/surgical-robot/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/sysml-diagram-samples/README.md +1 -0
- package/examples/sysml-diagram-samples/memo.identity.yaml +459 -0
- package/examples/sysml-diagram-samples/memo.package.yaml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +10 -20
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +5 -5
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/browser_view.sysml +10 -13
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +11 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/diagram_samples.sysml +63 -8
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/drill_down_view.sysml +88 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +25 -25
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/grid_view.sysml +6 -6
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +15 -17
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +21 -21
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/package_view.sysml +7 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +5 -5
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/sequence_view.sysml +14 -14
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +16 -17
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +9 -9
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +7 -14
- package/examples/sysml-diagram-samples/model/{catalog → methodology}/project.sysml +5 -5
- package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +1 -1
- package/examples/temperature-alarm/memo.identity.yaml +6 -0
- package/examples/temperature-alarm/memo.package.yaml +3 -1
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +43 -21
- package/examples/temperature-alarm/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/ui-screen-regions/memo.identity.yaml +33 -0
- package/examples/ui-screen-regions/memo.package.yaml +3 -1
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +12 -12
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +18 -18
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +6 -6
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +3 -3
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +1 -1
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +1 -1
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +10 -10
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +1 -1
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +12 -12
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +15 -15
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +6 -6
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
- package/examples/ui-screen-regions/model/{catalog → methodology}/project.sysml +4 -5
- package/extensions/README.md +65 -16
- package/extensions/aadl/memo.package.yaml +1 -1
- package/extensions/aadl/src/aadl_extension.sysml +5 -2
- package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +29 -50
- package/extensions/clinical/memo.package.yaml +1 -1
- package/extensions/clinical/src/clinical_extension.sysml +2 -0
- package/extensions/cloud/memo.package.yaml +1 -1
- package/extensions/container/memo.package.yaml +1 -1
- package/extensions/messaging/memo.package.yaml +1 -1
- package/extensions/messaging/src/messaging_extension.sysml +2 -2
- package/extensions/ros/memo.package.yaml +1 -1
- package/extensions/ros/src/ros_extension.sysml +25 -24
- package/extensions/template/memo.package.yaml +1 -1
- package/extensions/template/model/extension.sysml +25 -0
- package/memo.manifest.yaml +1 -7
- package/methodologies/default/memo.package.yaml +1 -1
- package/methodologies/gpca/memo.package.yaml +1 -1
- package/ontology/memo.package.yaml +1 -1
- package/package.json +6 -4
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/decisions/memo_decisions.sysml +9 -2
- package/src/architecture/functional/behavior/memo_behavior.sysml +27 -7
- package/src/architecture/functional/functions/memo_functions.sysml +45 -31
- package/src/architecture/functional/memo_architecture_functional.sysml +14 -0
- package/src/architecture/implementation/memo_architecture_implementation.sysml +21 -0
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +7 -0
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +58 -17
- package/src/architecture/implementation/ui/memo_ui.sysml +1 -1
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +67 -58
- package/src/architecture/logical/memo_architecture_logical.sysml +13 -0
- package/src/architecture/logical/structure/memo_logical_structure.sysml +27 -8
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +4 -1
- package/src/architecture/operational/memo_architecture_operational.sysml +19 -0
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +9 -8
- package/src/architecture/operational/structure/memo_operational.sysml +5 -2
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +16 -8
- package/src/architecture/realization/deployment/memo_deployment.sysml +30 -10
- package/src/architecture/realization/memo_architecture_realization.sysml +13 -0
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +61 -0
- package/src/architecture/variability/memo_variability.sysml +87 -0
- package/src/artifacts/configuration_management/memo_configuration_management.sysml +95 -3
- package/src/artifacts/core/memo_controlled_artifacts.sysml +4 -2
- package/src/artifacts/standards/cfr_21_820.sysml +12 -24
- package/src/artifacts/standards/fda_cybersecurity_2023.sysml +13 -20
- package/src/artifacts/standards/iec_60601_1.sysml +16 -32
- package/src/artifacts/standards/iec_60601_1_2.sysml +5 -10
- package/src/artifacts/standards/iec_60812.sysml +4 -8
- package/src/artifacts/standards/iec_62304.sysml +607 -47
- package/src/artifacts/standards/iec_62366_1.sysml +12 -24
- package/src/artifacts/standards/iec_81001_5_1.sysml +8 -16
- package/src/artifacts/standards/iso_13485.sysml +12 -24
- package/src/artifacts/standards/iso_14971.sysml +118 -20
- package/src/artifacts/standards/iso_iec_ieee_42010.sysml +3 -6
- package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +14 -4
- package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +1 -2
- package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/sad.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/sbom.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/sdp.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/soup.md +3 -5
- package/src/artifacts/templates/dhf/system/sad.md +1 -1
- package/src/artifacts/templates/dhf/system/standards-checklist.md +2 -2
- package/src/artifacts/templates/dhf/system/standards-traceability.md +1 -1
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +339 -13
- package/src/assurance/human_factors/memo_human_factors.sysml +6 -2
- package/src/assurance/safety_risk/analysis/memo_fmea.sysml +7 -3
- package/src/assurance/safety_risk/memo_risk.sysml +39 -1
- package/src/core/common/memo_common.sysml +51 -68
- package/src/core/enumerations/memo_enumerations.sysml +93 -9
- package/src/core/relationships/memo_relationships.sysml +17 -11
- package/src/core/relationships/memo_workspace_membership.sysml +284 -0
- package/src/core/semantics/semantics.sysml +58 -0
- package/src/core/terminology/terminology.sysml +7 -0
- package/src/memo_namespaces.sysml +6 -0
- package/src/methodology/archetypes/memo_archetypes.sysml +8 -16
- package/src/methodology/core/memo_core.sysml +85 -29
- package/src/methodology/profiles/memo_profiles.sysml +217 -61
- package/src/methodology/workflow/memo_workflow.sysml +28 -0
- package/src/rules/closure/closure_rules.sysml +250 -4
- package/src/rules/crosslayer/cross_layer_rules.sysml +11 -0
- package/src/rules/ontology/ontology_invariants.sysml +288 -48
- package/src/rules/quantitative/quantitative_rules.sysml +4 -0
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +28 -28
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
- package/src/viewpoints/context/context_viewpoint.sysml +2 -3
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +3 -5
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -3
- package/src/viewpoints/definitions/memo_view_layout.sysml +150 -0
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +0 -4
- package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -4
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -4
- package/src/viewpoints/logical/logical_viewpoint.sysml +2 -3
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +2 -4
- package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +3 -5
- package/src/viewpoints/physical/physical_viewpoint.sysml +2 -3
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +2 -4
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +2 -4
- package/src/viewpoints/rendering/memo_rendering.sysml +50 -98
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +2 -3
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +2 -4
- package/src/viewpoints/risk/risk_viewpoint.sysml +2 -3
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +2 -4
- package/src/viewpoints/software/software_viewpoint.sysml +2 -3
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +3 -5
- package/src/viewpoints/stakeholders_concerns/memo_stakeholders_concerns.sysml +11 -29
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +1 -1
- package/src/viewpoints/usability/usability_viewpoint.sysml +2 -3
- package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -4
- package/stage1/syside-67f92dc96ba75cd05b5c8d13.ids.gz +0 -0
- package/stage1/syside-67f92dc96ba75cd05b5c8d13.json.gz +0 -0
- package/templates/default/memo.package.yaml +6 -1
- package/templates/default/model/catalog/architecture/system.sysml +7 -3
- package/templates/default/model/{catalog → methodology}/project.sysml +3 -4
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +0 -47
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +0 -94
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +0 -13
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +0 -8
- package/extensions/aadl/src/methodology/aadl_methodology.sysml +0 -19
- package/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -24
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +0 -19
- package/extensions/container/src/methodology/container_methodology.sysml +0 -19
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +0 -19
- package/extensions/ros/src/methodology/ros_methodology.sysml +0 -27
- package/extensions/template/src/extension.sysml +0 -39
- package/templates/connected-device/memo.package.yaml +0 -13
- package/templates/connected-device/model/catalog/architecture/system.sysml +0 -5
- package/templates/connected-device/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/connected-device/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/connected-device/model/catalog/project.sysml +0 -30
- package/templates/connected-device/package.json +0 -8
- package/templates/connected-device/syside.toml +0 -13
- package/templates/infusion-pump/memo.package.yaml +0 -13
- package/templates/infusion-pump/model/catalog/architecture/system.sysml +0 -5
- package/templates/infusion-pump/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/infusion-pump/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/infusion-pump/model/catalog/project.sysml +0 -30
- package/templates/infusion-pump/package.json +0 -8
- package/templates/infusion-pump/syside.toml +0 -13
- package/templates/monitoring-device/memo.package.yaml +0 -13
- package/templates/monitoring-device/model/catalog/architecture/system.sysml +0 -5
- package/templates/monitoring-device/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/monitoring-device/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/monitoring-device/model/catalog/project.sysml +0 -30
- package/templates/monitoring-device/package.json +0 -8
- package/templates/monitoring-device/syside.toml +0 -13
- package/templates/samd/memo.package.yaml +0 -13
- package/templates/samd/model/catalog/architecture/system.sysml +0 -5
- package/templates/samd/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/samd/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/samd/model/catalog/project.sysml +0 -30
- package/templates/samd/package.json +0 -8
- package/templates/samd/syside.toml +0 -13
|
@@ -14,24 +14,22 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
14
14
|
|
|
15
15
|
private import memo_core_common::*;
|
|
16
16
|
private import memo_core_common::MemoIdentity;
|
|
17
|
+
private import memo_architecture_logical_interfaces::InterfaceItem;
|
|
17
18
|
// ── Operational entities beyond the human actors ────────────
|
|
18
19
|
part entityPharmacy : OperationalEntity {
|
|
19
|
-
@MemoIdentity { :>> providedId = "OE-001"; }
|
|
20
|
-
attribute :>> name = "HospitalPharmacy";
|
|
20
|
+
@MemoIdentity { :>> providedId = "OE-001"; :>> label = "HospitalPharmacy"; }
|
|
21
21
|
attribute :>> entityKind = OperationalEntityKind::externalSystem;
|
|
22
22
|
attribute :>> operationalDomain = "medication management";
|
|
23
23
|
attribute :>> responsibility = "Prepares labeled drug reservoirs and maintains the hospital pharmacy database of drug safe values.";
|
|
24
24
|
}
|
|
25
25
|
part entityPowerInfrastructure : OperationalEntity {
|
|
26
|
-
@MemoIdentity { :>> providedId = "OE-002"; }
|
|
27
|
-
attribute :>> name = "WardPowerInfrastructure";
|
|
26
|
+
@MemoIdentity { :>> providedId = "OE-002"; :>> label = "WardPowerInfrastructure"; }
|
|
28
27
|
attribute :>> entityKind = OperationalEntityKind::environmentalEntity;
|
|
29
28
|
attribute :>> operationalDomain = "facility power";
|
|
30
29
|
attribute :>> responsibility = "Provides mains power; outages are a foreseeable operational condition.";
|
|
31
30
|
}
|
|
32
31
|
part entityGpcaPump : OperationalEntity {
|
|
33
|
-
@MemoIdentity { :>> providedId = "OE-003"; }
|
|
34
|
-
attribute :>> name = "GPCA_Pump";
|
|
32
|
+
@MemoIdentity { :>> providedId = "OE-003"; :>> label = "GPCA_Pump"; }
|
|
35
33
|
attribute :>> entityKind = OperationalEntityKind::device;
|
|
36
34
|
attribute :>> operationalDomain = "patient-controlled analgesia therapy";
|
|
37
35
|
attribute :>> responsibility = "System of interest: delivers programmed basal and bolus analgesia subject to prescription limits.";
|
|
@@ -39,40 +37,35 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
39
37
|
|
|
40
38
|
// ── External entities per CriSys Fig 2.1 ────────────────────
|
|
41
39
|
part entityPharmacyDb : OperationalEntity {
|
|
42
|
-
@MemoIdentity { :>> providedId = "OE-004"; }
|
|
43
|
-
attribute :>> name = "HospitalPharmacyDatabase";
|
|
40
|
+
@MemoIdentity { :>> providedId = "OE-004"; :>> label = "HospitalPharmacyDatabase"; }
|
|
44
41
|
attribute :>> entityKind = OperationalEntityKind::externalSystem;
|
|
45
42
|
attribute :>> operationalDomain = "medication safety data";
|
|
46
43
|
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.";
|
|
47
44
|
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.1 and §3.5"; }
|
|
48
45
|
}
|
|
49
46
|
part entityDrugReservoir : OperationalEntity {
|
|
50
|
-
@MemoIdentity { :>> providedId = "OE-005"; }
|
|
51
|
-
attribute :>> name = "DrugReservoir";
|
|
47
|
+
@MemoIdentity { :>> providedId = "OE-005"; :>> label = "DrugReservoir"; }
|
|
52
48
|
attribute :>> entityKind = OperationalEntityKind::device;
|
|
53
49
|
attribute :>> operationalDomain = "drug storage";
|
|
54
50
|
attribute :>> responsibility = "Apparatus storing the liquid analgesic drug to be infused; filled according to the prescription and connected to the GPCA by the clinician.";
|
|
55
51
|
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.1"; }
|
|
56
52
|
}
|
|
57
53
|
part entityNeedle : OperationalEntity {
|
|
58
|
-
@MemoIdentity { :>> providedId = "OE-006"; }
|
|
59
|
-
attribute :>> name = "InfusionNeedle";
|
|
54
|
+
@MemoIdentity { :>> providedId = "OE-006"; :>> label = "InfusionNeedle"; }
|
|
60
55
|
attribute :>> entityKind = OperationalEntityKind::device;
|
|
61
56
|
attribute :>> operationalDomain = "drug delivery path";
|
|
62
57
|
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.";
|
|
63
58
|
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.1 and §3.3 (I 5)"; }
|
|
64
59
|
}
|
|
65
60
|
part entityPrescription : OperationalEntity {
|
|
66
|
-
@MemoIdentity { :>> providedId = "OE-007"; }
|
|
67
|
-
attribute :>> name = "Prescription";
|
|
61
|
+
@MemoIdentity { :>> providedId = "OE-007"; :>> label = "Prescription"; }
|
|
68
62
|
attribute :>> entityKind = OperationalEntityKind::informationArtifact;
|
|
69
63
|
attribute :>> operationalDomain = "plan of care";
|
|
70
64
|
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.";
|
|
71
65
|
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.1"; }
|
|
72
66
|
}
|
|
73
67
|
part entityHospital : OperationalEntity {
|
|
74
|
-
@MemoIdentity { :>> providedId = "OE-008"; }
|
|
75
|
-
attribute :>> name = "Hospital";
|
|
68
|
+
@MemoIdentity { :>> providedId = "OE-008"; :>> label = "Hospital"; }
|
|
76
69
|
attribute :>> entityKind = OperationalEntityKind::environmentalEntity;
|
|
77
70
|
attribute :>> operationalDomain = "care environment boundary";
|
|
78
71
|
attribute :>> responsibility = "Environment boundary: fixed (non-ambulatory) usage location with authorized clinicians and the pharmacy database holding drug safe values.";
|
|
@@ -81,64 +74,57 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
81
74
|
|
|
82
75
|
// ── Operational activities (therapy lifecycle) ──────────────
|
|
83
76
|
action oaPrescribe : OperativeAction {
|
|
84
|
-
@MemoIdentity { :>> providedId = "OA-001"; }
|
|
85
|
-
attribute :>> name = "PrescribeTherapy";
|
|
77
|
+
@MemoIdentity { :>> providedId = "OA-001"; :>> label = "PrescribeTherapy"; }
|
|
86
78
|
attribute :>> trigger = "patient requires titrated analgesia";
|
|
87
79
|
attribute :>> preCondition = "patient assessed; drug has safe-value records in the hospital pharmacy database";
|
|
88
80
|
attribute :>> postCondition = "prescription with basal rate, bolus volume, lockout, and max dose limits exists";
|
|
89
81
|
attribute :>> criticality = CriticalityKind::high;
|
|
90
82
|
}
|
|
91
83
|
action oaLoadReservoir : OperativeAction {
|
|
92
|
-
@MemoIdentity { :>> providedId = "OA-002"; }
|
|
93
|
-
attribute :>> name = "LoadDrugReservoir";
|
|
84
|
+
@MemoIdentity { :>> providedId = "OA-002"; :>> label = "LoadDrugReservoir"; }
|
|
94
85
|
attribute :>> trigger = "prescription issued or reservoir empty";
|
|
95
86
|
attribute :>> preCondition = "labeled reservoir prepared by pharmacy";
|
|
96
87
|
attribute :>> postCondition = "reservoir mounted, door closed and latched";
|
|
97
88
|
attribute :>> criticality = CriticalityKind::high;
|
|
98
89
|
}
|
|
99
90
|
action oaProgram : OperativeAction {
|
|
100
|
-
@MemoIdentity { :>> providedId = "OA-003"; }
|
|
101
|
-
|
|
91
|
+
@MemoIdentity { :>> providedId = "OA-003"; :>> label = "ProgramPrescription"; }
|
|
92
|
+
out prescriptionOut : InterfaceItem;
|
|
102
93
|
attribute :>> trigger = "reservoir loaded";
|
|
103
94
|
attribute :>> preCondition = "pump in IDLE; clinician authenticated by key or code";
|
|
104
95
|
attribute :>> postCondition = "prescription entered, checked against pharmacy-database safe values (I 9-I 11), and confirmed by second review";
|
|
105
96
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
106
97
|
}
|
|
107
98
|
action oaStartTherapy : OperativeAction {
|
|
108
|
-
@MemoIdentity { :>> providedId = "OA-004"; }
|
|
109
|
-
attribute :>> name = "StartInfusion";
|
|
99
|
+
@MemoIdentity { :>> providedId = "OA-004"; :>> label = "StartInfusion"; }
|
|
110
100
|
attribute :>> trigger = "prescription confirmed";
|
|
111
101
|
attribute :>> preCondition = "confirmed prescription saved; no active alarm";
|
|
112
102
|
attribute :>> postCondition = "basal infusion running";
|
|
113
103
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
114
104
|
}
|
|
115
105
|
action oaRequestBolus : OperativeAction {
|
|
116
|
-
@MemoIdentity { :>> providedId = "OA-005"; }
|
|
117
|
-
attribute :>> name = "RequestPatientBolus";
|
|
106
|
+
@MemoIdentity { :>> providedId = "OA-005"; :>> label = "RequestPatientBolus"; }
|
|
118
107
|
attribute :>> trigger = "patient presses bolus request button";
|
|
119
108
|
attribute :>> preCondition = "therapy active";
|
|
120
109
|
attribute :>> postCondition = "bolus delivered, or request ignored when lockout or max-dose limits apply";
|
|
121
110
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
122
111
|
}
|
|
123
112
|
action oaRespondAlarm : OperativeAction {
|
|
124
|
-
@MemoIdentity { :>> providedId = "OA-006"; }
|
|
125
|
-
attribute :>> name = "RespondToAlarm";
|
|
113
|
+
@MemoIdentity { :>> providedId = "OA-006"; :>> label = "RespondToAlarm"; }
|
|
126
114
|
attribute :>> trigger = "audible or visual alarm annunciated";
|
|
127
115
|
attribute :>> preCondition = "alarm condition raised by the pump";
|
|
128
116
|
attribute :>> postCondition = "cause resolved and therapy resumed, or therapy stopped";
|
|
129
117
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
130
118
|
}
|
|
131
119
|
action oaReviewLog : OperativeAction {
|
|
132
|
-
@MemoIdentity { :>> providedId = "OA-007"; }
|
|
133
|
-
attribute :>> name = "ReviewEventLog";
|
|
120
|
+
@MemoIdentity { :>> providedId = "OA-007"; :>> label = "ReviewEventLog"; }
|
|
134
121
|
attribute :>> trigger = "shift change, incident review, or dose audit";
|
|
135
122
|
attribute :>> preCondition = "event log populated during therapy";
|
|
136
123
|
attribute :>> postCondition = "delivered doses and alarm history reviewed";
|
|
137
124
|
attribute :>> criticality = CriticalityKind::medium;
|
|
138
125
|
}
|
|
139
126
|
action oaMaintain : OperativeAction {
|
|
140
|
-
@MemoIdentity { :>> providedId = "OA-008"; }
|
|
141
|
-
attribute :>> name = "MaintainDevice";
|
|
127
|
+
@MemoIdentity { :>> providedId = "OA-008"; :>> label = "MaintainDevice"; }
|
|
142
128
|
attribute :>> trigger = "scheduled maintenance or fault";
|
|
143
129
|
attribute :>> preCondition = "pump out of clinical use; technician authenticated";
|
|
144
130
|
attribute :>> postCondition = "battery, calibration, and pharmacy-database connection verified";
|
|
@@ -150,13 +136,10 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
150
136
|
// several workflows, each of which owns multiple selected scenarios.
|
|
151
137
|
use case ucDeliverPcaTherapy : UseCase {
|
|
152
138
|
attribute :>> useCaseKind = UseCaseKind::clinical;
|
|
153
|
-
@MemoIdentity { :>> providedId = "UC-001"; }
|
|
154
|
-
attribute :>> name = "DeliverPatientControlledAnalgesia";
|
|
139
|
+
@MemoIdentity { :>> providedId = "UC-001"; :>> label = "DeliverPatientControlledAnalgesia"; }
|
|
155
140
|
attribute :>> goalStatement = "Deliver prescribed analgesia safely while allowing patient-controlled bolus requests within configured limits.";
|
|
156
141
|
attribute :>> trigger = "A clinician starts prescribed patient-controlled analgesia therapy.";
|
|
157
142
|
attribute :>> successOutcome = "The patient receives prescribed analgesia without exceeding dose, lockout, or safety limits.";
|
|
158
|
-
ref :>> primaryUser = actorNurse;
|
|
159
|
-
ref :>> supportingActors = (actorPatient, actorPrescriber, actorPharmacist);
|
|
160
143
|
ref :>> useContext = hospitalWardContext;
|
|
161
144
|
subject supportingSystem;
|
|
162
145
|
actor nurseInitiator = actorNurse;
|
|
@@ -166,14 +149,14 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
166
149
|
}
|
|
167
150
|
|
|
168
151
|
action wfPrepareAndStartTherapy : OperationalWorkflow {
|
|
169
|
-
|
|
152
|
+
@MemoIdentity { :>> label = "PrepareAndStartTherapy"; }
|
|
170
153
|
attribute :>> workflowState = WorkflowStateKind::toBe;
|
|
171
154
|
attribute :>> entryCondition = "A valid prescription and prepared reservoir are available.";
|
|
172
155
|
attribute :>> completionCondition = "Therapy is started with confirmed prescription limits.";
|
|
173
156
|
|
|
174
157
|
}
|
|
175
158
|
action wfManageActiveTherapy : OperationalWorkflow {
|
|
176
|
-
|
|
159
|
+
@MemoIdentity { :>> label = "ManageActiveTherapy"; }
|
|
177
160
|
attribute :>> workflowState = WorkflowStateKind::toBe;
|
|
178
161
|
attribute :>> entryCondition = "Basal therapy is active.";
|
|
179
162
|
attribute :>> completionCondition = "A bolus is handled or active therapy continues safely.";
|
|
@@ -182,107 +165,101 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
182
165
|
// `to` end does not accept a qualified path — so this is written
|
|
183
166
|
// inside wsRequestBolus's own owning scope rather than at package
|
|
184
167
|
// level.
|
|
185
|
-
#refinement dependency fcsBolusSense to oaRequestBolus;
|
|
186
|
-
#refinement dependency fcsBolusValidate to oaRequestBolus;
|
|
187
|
-
#refinement dependency fcsBolusCommand to oaRequestBolus;
|
|
188
|
-
#refinement dependency fcsBolusActuate to oaRequestBolus;
|
|
189
|
-
#refinement dependency fcsBolusLog to oaRequestBolus;
|
|
168
|
+
#refinement dependency fcPatientBolus::fcsBolusSense to oaRequestBolus;
|
|
169
|
+
#refinement dependency fcPatientBolus::fcsBolusValidate to oaRequestBolus;
|
|
170
|
+
#refinement dependency fcPatientBolus::fcsBolusCommand to oaRequestBolus;
|
|
171
|
+
#refinement dependency fcPatientBolus::fcsBolusActuate to oaRequestBolus;
|
|
172
|
+
#refinement dependency fcPatientBolus::fcsBolusLog to oaRequestBolus;
|
|
190
173
|
action osNominalTherapy : OperativeScenario {
|
|
191
|
-
@MemoIdentity { :>> providedId = "OS-001"; }
|
|
192
|
-
attribute :>> name = "NominalTherapySession";
|
|
174
|
+
@MemoIdentity { :>> providedId = "OS-001"; :>> label = "NominalTherapySession"; }
|
|
193
175
|
attribute :>> preCondition = "prescription issued, reservoir loaded";
|
|
194
176
|
attribute :>> postCondition = "therapy completed and stopped by clinician";
|
|
195
177
|
attribute :>> pathSummary = "Prescribe > load reservoir > program and confirm > start basal > patient boluses within limits > stop therapy > review log.";
|
|
196
178
|
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §2.2 Main GPCA System Functions"; }
|
|
197
179
|
|
|
198
180
|
action oaCompleteNominalTherapy : OperativeAction {
|
|
199
|
-
|
|
181
|
+
@MemoIdentity { :>> label = "CompleteNominalTherapy"; }
|
|
200
182
|
action deliverWithinLimits; action recordTherapyEvent;
|
|
201
183
|
first start then deliverWithinLimits; first deliverWithinLimits then recordTherapyEvent; first recordTherapyEvent then done;
|
|
202
184
|
}
|
|
203
185
|
}
|
|
204
186
|
action osLockoutBolus : OperativeScenario {
|
|
205
187
|
attribute :>> scenarioKind = ScenarioKind::alternate;
|
|
206
|
-
@MemoIdentity { :>> providedId = "OS-002"; }
|
|
207
|
-
attribute :>> name = "BolusRequestDuringLockout";
|
|
188
|
+
@MemoIdentity { :>> providedId = "OS-002"; :>> label = "BolusRequestDuringLockout"; }
|
|
208
189
|
attribute :>> preCondition = "basal infusion active; lockout interval running";
|
|
209
190
|
attribute :>> postCondition = "request ignored, logged; basal continues unchanged";
|
|
210
191
|
attribute :>> pathSummary = "Patient presses bolus button during lockout > infusion manager rejects request > event logged > no additional drug delivered.";
|
|
211
192
|
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.9 PATIENT BOLUS mode (lockout requirements)"; }
|
|
212
193
|
|
|
213
194
|
action oaRejectBolusDuringLockout : OperativeAction {
|
|
214
|
-
|
|
195
|
+
@MemoIdentity { :>> label = "RejectBolusDuringLockout"; }
|
|
215
196
|
action checkLockout; action rejectAndLog;
|
|
216
197
|
first start then checkLockout; first checkLockout then rejectAndLog; first rejectAndLog then done;
|
|
217
198
|
}
|
|
218
199
|
}
|
|
219
200
|
}
|
|
220
201
|
action wfRespondToTherapyAlarm : OperationalWorkflow {
|
|
221
|
-
|
|
202
|
+
@MemoIdentity { :>> label = "RespondToTherapyAlarm"; }
|
|
222
203
|
attribute :>> workflowState = WorkflowStateKind::toBe;
|
|
223
204
|
attribute :>> entryCondition = "A therapy alarm or degraded condition is detected.";
|
|
224
205
|
attribute :>> completionCondition = "The pump is safe and the clinician has resolved or escalated the condition.";
|
|
225
206
|
|
|
226
|
-
#refinement dependency fcsAlarmSense to oaRespondAlarm;
|
|
227
|
-
#refinement dependency fcsAlarmEvaluate to oaRespondAlarm;
|
|
228
|
-
#refinement dependency fcsAlarmStopInfusion to oaRespondAlarm;
|
|
229
|
-
#refinement dependency fcsAlarmAnnunciate to oaRespondAlarm;
|
|
207
|
+
#refinement dependency fcAlarmStop::fcsAlarmSense to oaRespondAlarm;
|
|
208
|
+
#refinement dependency fcAlarmStop::fcsAlarmEvaluate to oaRespondAlarm;
|
|
209
|
+
#refinement dependency fcAlarmStop::fcsAlarmStopInfusion to oaRespondAlarm;
|
|
210
|
+
#refinement dependency fcAlarmStop::fcsAlarmAnnunciate to oaRespondAlarm;
|
|
230
211
|
action osOcclusionAlarm : OperativeScenario {
|
|
231
212
|
attribute :>> scenarioKind = ScenarioKind::alternate;
|
|
232
|
-
@MemoIdentity { :>> providedId = "OS-003"; }
|
|
233
|
-
attribute :>> name = "OcclusionDetectedDuringInfusion";
|
|
213
|
+
@MemoIdentity { :>> providedId = "OS-003"; :>> label = "OcclusionDetectedDuringInfusion"; }
|
|
234
214
|
attribute :>> preCondition = "therapy active; downstream line becomes blocked";
|
|
235
215
|
attribute :>> postCondition = "infusion paused, alarm annunciated, clinician clears occlusion and resumes";
|
|
236
216
|
attribute :>> pathSummary = "Occlusion sensor exceeds pressure threshold > alarm raised same step > infusion paused > audible and visual annunciation > clinician resolves and resumes.";
|
|
237
217
|
@MemoIdentity { :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.2 Alarms and Alerts (occlusion)"; }
|
|
238
218
|
|
|
239
219
|
action oaRespondToOcclusion : OperativeAction {
|
|
240
|
-
|
|
220
|
+
@MemoIdentity { :>> label = "RespondToOcclusion"; }
|
|
241
221
|
action pauseInfusion; action annunciateOcclusion; action resolveAndResume;
|
|
242
222
|
first start then pauseInfusion; first pauseInfusion then annunciateOcclusion; first annunciateOcclusion then resolveAndResume; first resolveAndResume then done;
|
|
243
223
|
}
|
|
244
224
|
}
|
|
245
225
|
action osAirInLine : OperativeScenario {
|
|
246
226
|
attribute :>> scenarioKind = ScenarioKind::alternate;
|
|
247
|
-
@MemoIdentity { :>> providedId = "OS-004"; }
|
|
248
|
-
attribute :>> name = "AirInLineDetected";
|
|
227
|
+
@MemoIdentity { :>> providedId = "OS-004"; :>> label = "AirInLineDetected"; }
|
|
249
228
|
attribute :>> preCondition = "therapy active; air bubble enters tubing";
|
|
250
229
|
attribute :>> postCondition = "infusion stopped before air reaches patient; alarm annunciated";
|
|
251
230
|
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
231
|
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 Notification Requirements (REQ 59: Air embolism)"; }
|
|
253
232
|
|
|
254
233
|
action oaRespondToAirInLine : OperativeAction {
|
|
255
|
-
|
|
234
|
+
@MemoIdentity { :>> label = "RespondToAirInLine"; }
|
|
256
235
|
action stopOrKvo; action annunciateAir; action reprimeAndRestart;
|
|
257
236
|
first start then stopOrKvo; first stopOrKvo then annunciateAir; first annunciateAir then reprimeAndRestart; first reprimeAndRestart then done;
|
|
258
237
|
}
|
|
259
238
|
}
|
|
260
239
|
action osEmptyReservoir : OperativeScenario {
|
|
261
240
|
attribute :>> scenarioKind = ScenarioKind::alternate;
|
|
262
|
-
@MemoIdentity { :>> providedId = "OS-005"; }
|
|
263
|
-
attribute :>> name = "ReservoirEmptyDuringTherapy";
|
|
241
|
+
@MemoIdentity { :>> providedId = "OS-005"; :>> label = "ReservoirEmptyDuringTherapy"; }
|
|
264
242
|
attribute :>> preCondition = "therapy active; reservoir volume reaches empty threshold";
|
|
265
243
|
attribute :>> postCondition = "infusion stopped, alarm raised, reservoir replaced";
|
|
266
244
|
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
245
|
@MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 Notification Requirements (REQ 59: Empty Reservoir)"; }
|
|
268
246
|
|
|
269
247
|
action oaReplaceEmptyReservoir : OperativeAction {
|
|
270
|
-
|
|
248
|
+
@MemoIdentity { :>> label = "ReplaceEmptyReservoir"; }
|
|
271
249
|
action stopAndAnnunciate; action replaceReservoir; action resumeTherapy;
|
|
272
250
|
first start then stopAndAnnunciate; first stopAndAnnunciate then replaceReservoir; first replaceReservoir then resumeTherapy; first resumeTherapy then done;
|
|
273
251
|
}
|
|
274
252
|
}
|
|
275
253
|
action osPowerLoss : OperativeScenario {
|
|
276
254
|
attribute :>> scenarioKind = ScenarioKind::alternate;
|
|
277
|
-
@MemoIdentity { :>> providedId = "OS-006"; }
|
|
278
|
-
attribute :>> name = "MainsPowerLossAndRecovery";
|
|
255
|
+
@MemoIdentity { :>> providedId = "OS-006"; :>> label = "MainsPowerLossAndRecovery"; }
|
|
279
256
|
attribute :>> preCondition = "therapy active on mains power";
|
|
280
257
|
attribute :>> postCondition = "therapy continues on battery; prescription preserved across full power loss";
|
|
281
258
|
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
259
|
@MemoIdentity { :>> sourceReference = "CITE-004: GIP Hazard Analysis v1.0 (2009), §2.4.3 Electrical Hazards (battery failure)"; }
|
|
283
260
|
|
|
284
261
|
action oaRecoverAfterPowerLoss : OperativeAction {
|
|
285
|
-
|
|
262
|
+
@MemoIdentity { :>> label = "RecoverAfterPowerLoss"; }
|
|
286
263
|
action switchToBattery; action restorePrescription; action confirmRestart;
|
|
287
264
|
first start then switchToBattery; first switchToBattery then restorePrescription; first restorePrescription then confirmRestart; first confirmRestart then done;
|
|
288
265
|
}
|
|
@@ -292,15 +269,13 @@ package memo_examples_gpca_pump_gpca_operational {
|
|
|
292
269
|
|
|
293
270
|
// ── Operational capabilities ────────────────────────────────
|
|
294
271
|
part ocTitratedAnalgesia : OperationalCapability {
|
|
295
|
-
@MemoIdentity { :>> providedId = "OC-001"; }
|
|
296
|
-
attribute :>> name = "DeliverTitratedAnalgesia";
|
|
272
|
+
@MemoIdentity { :>> providedId = "OC-001"; :>> label = "DeliverTitratedAnalgesia"; }
|
|
297
273
|
attribute :>> capabilityLevel = "primary";
|
|
298
274
|
attribute :>> preCondition = "confirmed prescription and loaded reservoir";
|
|
299
275
|
attribute :>> postCondition = "drug delivered within prescribed limits at all times";
|
|
300
276
|
}
|
|
301
277
|
part ocFailSafeTherapy : OperationalCapability {
|
|
302
|
-
@MemoIdentity { :>> providedId = "OC-002"; }
|
|
303
|
-
attribute :>> name = "FailSafeTherapyManagement";
|
|
278
|
+
@MemoIdentity { :>> providedId = "OC-002"; :>> label = "FailSafeTherapyManagement"; }
|
|
304
279
|
attribute :>> capabilityLevel = "safety";
|
|
305
280
|
attribute :>> preCondition = "any single failure or foreseeable misuse";
|
|
306
281
|
attribute :>> postCondition = "pump reaches a safe state (infusion stopped or paused) and the operator is alerted";
|
|
@@ -7,8 +7,7 @@ package memo_examples_gpca_pump_gpca_physical {
|
|
|
7
7
|
private import memo_core_common::*;
|
|
8
8
|
private import memo_core_common::MemoIdentity;
|
|
9
9
|
part mainController : ProcessingNode {
|
|
10
|
-
@MemoIdentity { :>> providedId = "PN-001"; }
|
|
11
|
-
attribute :>> name = "MainControllerMCU";
|
|
10
|
+
@MemoIdentity { :>> providedId = "PN-001"; :>> label = "MainControllerMCU"; }
|
|
12
11
|
attribute :>> nodeKind = ProcessingNodeKind::microcontroller;
|
|
13
12
|
attribute :>> processorArchitecture = "ARM Cortex-M4, lockstep-capable";
|
|
14
13
|
attribute :>> memoryMB = "1 MB flash / 256 KB SRAM with ECC";
|
|
@@ -18,32 +17,27 @@ package memo_examples_gpca_pump_gpca_physical {
|
|
|
18
17
|
}
|
|
19
18
|
|
|
20
19
|
in port portSensorHarness : PhysicalPort {
|
|
21
|
-
@MemoIdentity { :>> providedId = "PP-001"; }
|
|
22
|
-
attribute :>> name = "SensorHarnessConnector";
|
|
20
|
+
@MemoIdentity { :>> providedId = "PP-001"; :>> label = "SensorHarnessConnector"; }
|
|
23
21
|
attribute :>> portKind = InterfaceKind::digitalSignal;
|
|
24
22
|
attribute :>> connectorType = "keyed 12-pin locking header";
|
|
25
23
|
}
|
|
26
24
|
out port portMotorDrive : PhysicalPort {
|
|
27
|
-
@MemoIdentity { :>> providedId = "PP-002"; }
|
|
28
|
-
attribute :>> name = "MotorDriveConnector";
|
|
25
|
+
@MemoIdentity { :>> providedId = "PP-002"; :>> label = "MotorDriveConnector"; }
|
|
29
26
|
attribute :>> portKind = InterfaceKind::digitalSignal;
|
|
30
27
|
attribute :>> connectorType = "keyed 6-pin locking header with enable interlock";
|
|
31
28
|
}
|
|
32
29
|
in port portPatientPendant : PhysicalPort {
|
|
33
|
-
@MemoIdentity { :>> providedId = "PP-003"; }
|
|
34
|
-
attribute :>> name = "PatientPendantJack";
|
|
30
|
+
@MemoIdentity { :>> providedId = "PP-003"; :>> label = "PatientPendantJack"; }
|
|
35
31
|
attribute :>> portKind = InterfaceKind::digitalSignal;
|
|
36
32
|
attribute :>> connectorType = "latching 3.5 mm pendant jack";
|
|
37
33
|
}
|
|
38
34
|
inout port portServiceAccess : PhysicalPort {
|
|
39
|
-
@MemoIdentity { :>> providedId = "PP-004"; }
|
|
40
|
-
attribute :>> name = "ServiceMaintenancePort";
|
|
35
|
+
@MemoIdentity { :>> providedId = "PP-004"; :>> label = "ServiceMaintenancePort"; }
|
|
41
36
|
attribute :>> portKind = InterfaceKind::api;
|
|
42
37
|
attribute :>> connectorType = "covered UART/USB service connector";
|
|
43
38
|
}
|
|
44
39
|
in port portMainsInlet : PhysicalPort {
|
|
45
|
-
@MemoIdentity { :>> providedId = "PP-005"; }
|
|
46
|
-
attribute :>> name = "MainsPowerInlet";
|
|
40
|
+
@MemoIdentity { :>> providedId = "PP-005"; :>> label = "MainsPowerInlet"; }
|
|
47
41
|
attribute :>> portKind = InterfaceKind::power;
|
|
48
42
|
attribute :>> connectorType = "IEC 60320 C8 inlet";
|
|
49
43
|
}
|