@memoarchitect/ontology 0.13.2 → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +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 +61 -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
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
//
|
|
9
9
|
// Two differences from the pre-flip behaviour are deliberate and recorded:
|
|
10
10
|
//
|
|
11
|
-
// 1. Cybersecurity is excluded by *not*
|
|
11
|
+
// 1. Cybersecurity is excluded by *not* importing `memo_assurance_cybersecurity`
|
|
12
12
|
// and by two explicit RulePolicy entries disabling the cybersecurity closure
|
|
13
13
|
// rules. Before, `excludedKind` named eleven cybersecurity kinds; naming the
|
|
14
14
|
// discipline once is the same selection stated at the level the methodology
|
|
@@ -28,64 +28,73 @@ package memo_examples_gpca_pump_methodology_gpca_profiles {
|
|
|
28
28
|
|
|
29
29
|
private import memo_methodology_core::*;
|
|
30
30
|
private import memo_methodology_profiles::*;
|
|
31
|
-
private import memo_core_enumerations::*;
|
|
32
|
-
private import memo_rules_closure::*;
|
|
33
31
|
|
|
34
|
-
|
|
32
|
+
// ── The selection ────────────────────────────────────────────────────
|
|
33
|
+
//
|
|
34
|
+
// What this methodology selects is what this package publicly imports.
|
|
35
|
+
// The five architecture layers, each through the package that publicly
|
|
36
|
+
// imports the whole layer:
|
|
37
|
+
public import memo_architecture_operational::*;
|
|
38
|
+
public import memo_architecture_functional::*;
|
|
39
|
+
public import memo_architecture_logical::*;
|
|
40
|
+
public import memo_architecture_implementation::*;
|
|
41
|
+
public import memo_architecture_realization::*;
|
|
42
|
+
|
|
43
|
+
// Explicit means explicit. A methodology that names its assurance
|
|
44
|
+
// disciplines and stops there selects no rules at all, because rules
|
|
45
|
+
// live in their own packages. Before the flip an empty list read as
|
|
46
|
+
// "everything", which hid exactly this: the selection said nothing and
|
|
47
|
+
// the tools behaved as though it said everything. Cybersecurity is the
|
|
48
|
+
// discipline not imported.
|
|
49
|
+
public import memo_core_common::*;
|
|
50
|
+
public import memo_core_enumerations::*;
|
|
51
|
+
public import memo_core_relationships::*;
|
|
52
|
+
public import memo_core_annotations::*;
|
|
53
|
+
public import memo_core_consistency_rules::*;
|
|
54
|
+
public import memo_assurance_requirements::*;
|
|
55
|
+
public import memo_assurance_requirements_needs::*;
|
|
56
|
+
public import memo_assurance_safety_risk::*;
|
|
57
|
+
public import memo_assurance_human_factors::*;
|
|
58
|
+
public import memo_assurance_verification_validation::*;
|
|
59
|
+
public import memo_rules_closure::*;
|
|
60
|
+
public import memo_rules_crosslayer::*;
|
|
61
|
+
public import memo_rules_quantitative::*;
|
|
62
|
+
public import memo_rules_ontology::*;
|
|
63
|
+
|
|
64
|
+
private import memo_artifacts_standards_iso_14971::iso14971;
|
|
65
|
+
private import memo_artifacts_standards_iec_62304::iec62304;
|
|
66
|
+
private import memo_artifacts_standards_cfr_21_820::cfr21Part820;
|
|
67
|
+
private import memo_artifacts_standards_iso_13485::iso13485;
|
|
68
|
+
private import memo_viewpoints_context_context_viewpoint::contextViewpoint;
|
|
69
|
+
private import memo_viewpoints_logical_logical_viewpoint::logicalArchitectureViewpoint;
|
|
70
|
+
private import memo_viewpoints_risk_risk_viewpoint::riskViewpoint;
|
|
71
|
+
|
|
35
72
|
private import memo_core_common::MemoIdentity;
|
|
36
73
|
part gpcaMethodDefinition : MethodologyDefinition {
|
|
37
|
-
@MemoIdentity { :>> providedId = "METH-GPCA-001"; }
|
|
38
|
-
attribute :>> name = "GPCAPrototypeMethodology";
|
|
74
|
+
@MemoIdentity { :>> providedId = "METH-GPCA-001"; :>> label = "GPCAPrototypeMethodology"; }
|
|
39
75
|
attribute :>> version = "0.6.5";
|
|
40
76
|
attribute :>> domain = "medical device modeling";
|
|
41
|
-
|
|
77
|
+
doc /* GPCA infusion pump methodology for the non-networked prototype variant. Explicitly selects the five architecture layers and four of the five assurance disciplines; cybersecurity is out of scope because the prototype has no network interface. The prototype uses no SOUP. */
|
|
42
78
|
ref :>> baseMethodology = mdDefaultDefinition;
|
|
43
79
|
attribute :>> scopeMode = ScopeModeKind::explicit;
|
|
44
80
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
81
|
+
// Typed. The standards GPCA also names, ISO 14155, IEC 62366 and
|
|
82
|
+
// IEC 60601-1, have no RegulatoryStandard in the ontology yet, and the
|
|
83
|
+
// artifact kind "RiskManagementPlan" is no ArtifactKind literal; as
|
|
84
|
+
// strings they selected nothing and nothing said so.
|
|
85
|
+
ref :>> includedStandard = (
|
|
86
|
+
iso14971,
|
|
87
|
+
iec62304,
|
|
88
|
+
cfr21Part820,
|
|
89
|
+
iso13485
|
|
51
90
|
);
|
|
52
91
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
// the tools behaved as though it said everything.
|
|
58
|
-
attribute :>> includedModule = (
|
|
59
|
-
"memo_core_common",
|
|
60
|
-
"memo_core_enumerations",
|
|
61
|
-
"memo_core_relationships",
|
|
62
|
-
"memo_core_annotations",
|
|
63
|
-
"memo_core_consistency_rules",
|
|
64
|
-
"memo_assurance_requirements",
|
|
65
|
-
"memo_assurance_requirements_needs",
|
|
66
|
-
"memo_assurance_safety_risk",
|
|
67
|
-
"memo_assurance_human_factors",
|
|
68
|
-
"memo_assurance_verification_validation",
|
|
69
|
-
"memo_rules_closure",
|
|
70
|
-
"memo_rules_crosslayer",
|
|
71
|
-
"memo_rules_quantitative",
|
|
72
|
-
"memo_rules_ontology"
|
|
92
|
+
ref :>> includedViewpoint = (
|
|
93
|
+
contextViewpoint,
|
|
94
|
+
logicalArchitectureViewpoint,
|
|
95
|
+
riskViewpoint
|
|
73
96
|
);
|
|
74
97
|
|
|
75
|
-
attribute :>> includedStandard = (
|
|
76
|
-
"ISO 14971",
|
|
77
|
-
"IEC 62304",
|
|
78
|
-
"21 CFR 820",
|
|
79
|
-
"ISO 13485",
|
|
80
|
-
"ISO 14155",
|
|
81
|
-
"IEC 62366",
|
|
82
|
-
"IEC 60601-1"
|
|
83
|
-
);
|
|
84
|
-
|
|
85
|
-
attribute :>> includedArtifactKind = ("RiskManagementPlan");
|
|
86
|
-
|
|
87
|
-
attribute :>> includedViewpoint = ("VP-CTX", "VP-LOG", "VP-RISK");
|
|
88
|
-
|
|
89
98
|
part disableThreatMitigation : RulePolicy :> rulePolicy {
|
|
90
99
|
ref :>> targetRule : ThreatMitigationRule;
|
|
91
100
|
attribute :>> disposition = RuleDispositionKind::disabled;
|
|
@@ -8,17 +8,15 @@ package memo_examples_gpca_pump_gpca_analysis {
|
|
|
8
8
|
private import memo_core_common::MemoIdentity;
|
|
9
9
|
// ── FMEA (IEC 60812) ────────────────────────────────────────
|
|
10
10
|
part fmeaDelivery : FMEAWorksheet {
|
|
11
|
-
@MemoIdentity { :>> providedId = "FMEA-001"; }
|
|
12
|
-
attribute :>> name = "DrugDeliveryFMEA";
|
|
11
|
+
@MemoIdentity { :>> providedId = "FMEA-001"; :>> label = "DrugDeliveryFMEA"; }
|
|
13
12
|
attribute :>> analysisScope = "Fluid path, pump mechanism, delivery sensors, and patient pendant";
|
|
14
13
|
attribute :>> standardReference = "IEC 60812";
|
|
15
14
|
attribute :>> analysisBasis = "UMN CriSys GPCA architecture v2.0";
|
|
16
15
|
attribute :>> revisionDate = "2026-07-03";
|
|
17
16
|
attribute :>> reviewer = "Safety review board";
|
|
18
17
|
}
|
|
19
|
-
|
|
20
|
-
@MemoIdentity { :>> providedId = "FM-001"; }
|
|
21
|
-
attribute :>> name = "PumpMotorRunaway";
|
|
18
|
+
item fmMotorRunaway : FailureMode {
|
|
19
|
+
@MemoIdentity { :>> providedId = "FM-001"; :>> label = "PumpMotorRunaway"; }
|
|
22
20
|
attribute :>> failureModeKind = FailureModeKind::unintendedFunction;
|
|
23
21
|
attribute :>> effect = "Excess drug delivered to the patient beyond the prescribed rate.";
|
|
24
22
|
attribute :>> severityRating = 10;
|
|
@@ -27,11 +25,10 @@ package memo_examples_gpca_pump_gpca_analysis {
|
|
|
27
25
|
attribute :>> detectionRating = 3;
|
|
28
26
|
attribute :>> rpn = 60;
|
|
29
27
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
30
|
-
|
|
28
|
+
doc /* Motor steps faster than commanded, delivering more drug than prescribed. */
|
|
31
29
|
}
|
|
32
|
-
|
|
33
|
-
@MemoIdentity { :>> providedId = "FM-002"; }
|
|
34
|
-
attribute :>> name = "AirSensorFailsSilent";
|
|
30
|
+
item fmAirSensorSilent : FailureMode {
|
|
31
|
+
@MemoIdentity { :>> providedId = "FM-002"; :>> label = "AirSensorFailsSilent"; }
|
|
35
32
|
attribute :>> failureModeKind = FailureModeKind::lossOfFunction;
|
|
36
33
|
attribute :>> effect = "Air embolism reaches the patient undetected.";
|
|
37
34
|
attribute :>> severityRating = 10;
|
|
@@ -40,11 +37,10 @@ package memo_examples_gpca_pump_gpca_analysis {
|
|
|
40
37
|
attribute :>> detectionRating = 4;
|
|
41
38
|
attribute :>> rpn = 120;
|
|
42
39
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
43
|
-
|
|
40
|
+
doc /* Air-in-line sensor reports 'no air' regardless of actual line state. */
|
|
44
41
|
}
|
|
45
|
-
|
|
46
|
-
@MemoIdentity { :>> providedId = "FM-003"; }
|
|
47
|
-
attribute :>> name = "OcclusionSensorDrift";
|
|
42
|
+
item fmOcclusionDrift : FailureMode {
|
|
43
|
+
@MemoIdentity { :>> providedId = "FM-003"; :>> label = "OcclusionSensorDrift"; }
|
|
48
44
|
attribute :>> failureModeKind = FailureModeKind::degradedFunction;
|
|
49
45
|
attribute :>> effect = "Occluded line is detected late or not at all, interrupting therapy.";
|
|
50
46
|
attribute :>> severityRating = 7;
|
|
@@ -53,11 +49,10 @@ package memo_examples_gpca_pump_gpca_analysis {
|
|
|
53
49
|
attribute :>> detectionRating = 4;
|
|
54
50
|
attribute :>> rpn = 112;
|
|
55
51
|
attribute :>> criticality = CriticalityKind::high;
|
|
56
|
-
|
|
52
|
+
doc /* Pressure sensor drifts so occlusions are detected late or not at all. */
|
|
57
53
|
}
|
|
58
|
-
|
|
59
|
-
@MemoIdentity { :>> providedId = "FM-004"; }
|
|
60
|
-
attribute :>> name = "BolusButtonStuckClosed";
|
|
54
|
+
item fmStuckBolusButton : FailureMode {
|
|
55
|
+
@MemoIdentity { :>> providedId = "FM-004"; :>> label = "BolusButtonStuckClosed"; }
|
|
61
56
|
attribute :>> failureModeKind = FailureModeKind::unintendedFunction;
|
|
62
57
|
attribute :>> effect = "Repeated unrequested boluses are delivered.";
|
|
63
58
|
attribute :>> severityRating = 9;
|
|
@@ -66,11 +61,10 @@ package memo_examples_gpca_pump_gpca_analysis {
|
|
|
66
61
|
attribute :>> detectionRating = 2;
|
|
67
62
|
attribute :>> rpn = 54;
|
|
68
63
|
attribute :>> criticality = CriticalityKind::high;
|
|
69
|
-
|
|
64
|
+
doc /* Pendant switch shorted, continuously asserting bolus requests. */
|
|
70
65
|
}
|
|
71
|
-
|
|
72
|
-
@MemoIdentity { :>> providedId = "FM-005"; }
|
|
73
|
-
attribute :>> name = "BatteryDepletesEarly";
|
|
66
|
+
item fmBatteryEarlyDepletion : FailureMode {
|
|
67
|
+
@MemoIdentity { :>> providedId = "FM-005"; :>> label = "BatteryDepletesEarly"; }
|
|
74
68
|
attribute :>> failureModeKind = FailureModeKind::prematureFunction;
|
|
75
69
|
attribute :>> effect = "Pump loses power during transport, stopping therapy.";
|
|
76
70
|
attribute :>> severityRating = 6;
|
|
@@ -79,94 +73,83 @@ package memo_examples_gpca_pump_gpca_analysis {
|
|
|
79
73
|
attribute :>> detectionRating = 3;
|
|
80
74
|
attribute :>> rpn = 72;
|
|
81
75
|
attribute :>> criticality = CriticalityKind::medium;
|
|
82
|
-
|
|
76
|
+
doc /* Aged battery sustains less than the specified backup duration during transport. */
|
|
83
77
|
}
|
|
84
|
-
|
|
85
|
-
@MemoIdentity { :>> providedId = "FE-001"; }
|
|
86
|
-
attribute :>> name = "ExcessDrugDelivered";
|
|
78
|
+
item feOverdose : FailureEffect {
|
|
79
|
+
@MemoIdentity { :>> providedId = "FE-001"; :>> label = "ExcessDrugDelivered"; }
|
|
87
80
|
attribute :>> effectLevel = FailureEffectLevelKind::endEffect;
|
|
88
81
|
attribute :>> effectOnPatient = "opioid overdose, respiratory depression";
|
|
89
82
|
attribute :>> effectOnOperator = "emergency intervention required";
|
|
90
83
|
attribute :>> effectOnSystem = "therapy stopped by cross-check or clinician";
|
|
91
84
|
attribute :>> severity = SeverityKind::catastrophic;
|
|
92
85
|
}
|
|
93
|
-
|
|
94
|
-
@MemoIdentity { :>> providedId = "FE-002"; }
|
|
95
|
-
attribute :>> name = "AirReachesPatientLine";
|
|
86
|
+
item feAirDelivered : FailureEffect {
|
|
87
|
+
@MemoIdentity { :>> providedId = "FE-002"; :>> label = "AirReachesPatientLine"; }
|
|
96
88
|
attribute :>> effectLevel = FailureEffectLevelKind::endEffect;
|
|
97
89
|
attribute :>> effectOnPatient = "risk of vascular air embolism";
|
|
98
90
|
attribute :>> effectOnOperator = "line re-prime and incident report";
|
|
99
91
|
attribute :>> effectOnSystem = "undetected hazardous state";
|
|
100
92
|
attribute :>> severity = SeverityKind::catastrophic;
|
|
101
93
|
}
|
|
102
|
-
|
|
103
|
-
@MemoIdentity { :>> providedId = "FE-003"; }
|
|
104
|
-
attribute :>> name = "TherapyInterruptedUnnoticed";
|
|
94
|
+
item feTherapyInterrupted : FailureEffect {
|
|
95
|
+
@MemoIdentity { :>> providedId = "FE-003"; :>> label = "TherapyInterruptedUnnoticed"; }
|
|
105
96
|
attribute :>> effectLevel = FailureEffectLevelKind::endEffect;
|
|
106
97
|
attribute :>> effectOnPatient = "untreated pain; possible post-occlusion bolus";
|
|
107
98
|
attribute :>> effectOnOperator = "delayed response";
|
|
108
99
|
attribute :>> effectOnSystem = "under-delivery until detected";
|
|
109
100
|
attribute :>> severity = SeverityKind::serious;
|
|
110
101
|
}
|
|
111
|
-
|
|
112
|
-
@MemoIdentity { :>> providedId = "FCA-001"; }
|
|
113
|
-
attribute :>> name = "MotorDriverElectronicsFault";
|
|
102
|
+
item fcMotorDriverFault : FailureCause {
|
|
103
|
+
@MemoIdentity { :>> providedId = "FCA-001"; :>> label = "MotorDriverElectronicsFault"; }
|
|
114
104
|
attribute :>> causeCategory = FailureCauseCategoryKind::design;
|
|
115
105
|
attribute :>> causeDescription = "Driver stage latch-up or firmware step-rate computation fault";
|
|
116
106
|
attribute :>> occurrenceRating = ProbabilityKind::remote;
|
|
117
107
|
attribute :>> preventionMethod = "independent flow cross-check; watchdog";
|
|
118
108
|
}
|
|
119
|
-
|
|
120
|
-
@MemoIdentity { :>> providedId = "FCA-002"; }
|
|
121
|
-
attribute :>> name = "UltrasonicTransducerAging";
|
|
109
|
+
item fcTransducerAging : FailureCause {
|
|
110
|
+
@MemoIdentity { :>> providedId = "FCA-002"; :>> label = "UltrasonicTransducerAging"; }
|
|
122
111
|
attribute :>> causeCategory = FailureCauseCategoryKind::wear;
|
|
123
112
|
attribute :>> causeDescription = "Air sensor transducer sensitivity degrades with age";
|
|
124
113
|
attribute :>> occurrenceRating = ProbabilityKind::occasional;
|
|
125
114
|
attribute :>> preventionMethod = "POST sensor plausibility check; periodic maintenance";
|
|
126
115
|
}
|
|
127
|
-
|
|
128
|
-
@MemoIdentity { :>> providedId = "FCA-003"; }
|
|
129
|
-
attribute :>> name = "PendantCableAbuse";
|
|
116
|
+
item fcPendantAbuse : FailureCause {
|
|
117
|
+
@MemoIdentity { :>> providedId = "FCA-003"; :>> label = "PendantCableAbuse"; }
|
|
130
118
|
attribute :>> causeCategory = FailureCauseCategoryKind::misuse;
|
|
131
119
|
attribute :>> causeDescription = "Cable crushed in bed rail shorts the switch line";
|
|
132
120
|
attribute :>> occurrenceRating = ProbabilityKind::occasional;
|
|
133
121
|
attribute :>> preventionMethod = "stuck-input detection (REQ-X-09); strain-relieved cable";
|
|
134
122
|
}
|
|
135
123
|
part dmFlowCrossCheck : DetectionMethod {
|
|
136
|
-
@MemoIdentity { :>> providedId = "DM-001"; }
|
|
137
|
-
attribute :>> name = "CommandedVsMeasuredFlowComparison";
|
|
124
|
+
@MemoIdentity { :>> providedId = "DM-001"; :>> label = "CommandedVsMeasuredFlowComparison"; }
|
|
138
125
|
attribute :>> methodKind = DetectionMethodKind::monitoring;
|
|
139
126
|
attribute :>> detectionPoint = "every execution step during ACTIVE therapy";
|
|
140
127
|
attribute :>> confidence = DetectionKind::high;
|
|
141
128
|
}
|
|
142
129
|
part dmPostSensorCheck : DetectionMethod {
|
|
143
|
-
@MemoIdentity { :>> providedId = "DM-002"; }
|
|
144
|
-
attribute :>> name = "POSTSensorPlausibilityCheck";
|
|
130
|
+
@MemoIdentity { :>> providedId = "DM-002"; :>> label = "POSTSensorPlausibilityCheck"; }
|
|
145
131
|
attribute :>> methodKind = DetectionMethodKind::selfDiagnostic;
|
|
146
132
|
attribute :>> detectionPoint = "power-on and periodic in-service test";
|
|
147
133
|
attribute :>> confidence = DetectionKind::moderate;
|
|
148
134
|
}
|
|
149
135
|
part dmStuckInputMonitor : DetectionMethod {
|
|
150
|
-
@MemoIdentity { :>> providedId = "DM-003"; }
|
|
151
|
-
attribute :>> name = "StuckInputMonitor";
|
|
136
|
+
@MemoIdentity { :>> providedId = "DM-003"; :>> label = "StuckInputMonitor"; }
|
|
152
137
|
attribute :>> methodKind = DetectionMethodKind::monitoring;
|
|
153
138
|
attribute :>> detectionPoint = "bolus input asserted beyond 60 s";
|
|
154
139
|
attribute :>> confidence = DetectionKind::high;
|
|
155
140
|
}
|
|
156
141
|
part fmeaActionAirSensor : FMEAAction {
|
|
157
|
-
@MemoIdentity { :>> providedId = "FMA-001"; }
|
|
158
|
-
attribute :>> name = "AddRedundantAirDetectionWindow";
|
|
142
|
+
@MemoIdentity { :>> providedId = "FMA-001"; :>> label = "AddRedundantAirDetectionWindow"; }
|
|
159
143
|
attribute :>> actionKind = FMEAActionKind::designChange;
|
|
160
144
|
attribute :>> responsible = "hardware lead";
|
|
161
145
|
attribute :>> targetCompletionDate = "2026-09-30";
|
|
162
146
|
attribute :>> revisedRpn = 40;
|
|
163
|
-
|
|
147
|
+
doc /* Add second sensing window downstream so a single silent transducer cannot mask air. */
|
|
164
148
|
}
|
|
165
149
|
|
|
166
150
|
// ── Fault tree (overdose top event) ─────────────────────────
|
|
167
151
|
part ftaOverdose : FaultTree {
|
|
168
|
-
@MemoIdentity { :>> providedId = "FTA-001"; }
|
|
169
|
-
attribute :>> name = "OverdoseFaultTree";
|
|
152
|
+
@MemoIdentity { :>> providedId = "FTA-001"; :>> label = "OverdoseFaultTree"; }
|
|
170
153
|
attribute :>> standardReference = "IEC 61025";
|
|
171
154
|
attribute :>> analysisScope = "Drug over-delivery during ACTIVE therapy";
|
|
172
155
|
attribute :>> topEventDescription = "Drug delivered in excess of prescription limits";
|
|
@@ -174,68 +157,58 @@ package memo_examples_gpca_pump_gpca_analysis {
|
|
|
174
157
|
attribute :>> revisionDate = "2026-07-03";
|
|
175
158
|
}
|
|
176
159
|
part fteOverdoseTop : FaultTreeNode {
|
|
177
|
-
@MemoIdentity { :>> providedId = "FTE-001"; }
|
|
178
|
-
attribute :>> name = "ExcessDrugDeliveredTopEvent";
|
|
160
|
+
@MemoIdentity { :>> providedId = "FTE-001"; :>> label = "ExcessDrugDeliveredTopEvent"; }
|
|
179
161
|
attribute :>> eventKind = FaultTreeEventKind::topEvent;
|
|
180
|
-
|
|
162
|
+
doc /* Delivered volume exceeds prescribed limits */
|
|
181
163
|
}
|
|
182
164
|
part fteMotorRunaway : FaultTreeNode {
|
|
183
|
-
@MemoIdentity { :>> providedId = "FTE-002"; }
|
|
184
|
-
attribute :>> name = "MotorRunawayBasicEvent";
|
|
165
|
+
@MemoIdentity { :>> providedId = "FTE-002"; :>> label = "MotorRunawayBasicEvent"; }
|
|
185
166
|
attribute :>> eventKind = FaultTreeEventKind::basicEvent;
|
|
186
167
|
attribute :>> failureRate = 0.000001;
|
|
187
168
|
attribute :>> exposureTime = 100.0;
|
|
188
|
-
|
|
169
|
+
doc /* Pump motor delivers faster than commanded (FM-001) */
|
|
189
170
|
}
|
|
190
171
|
part fteCrossCheckFails : FaultTreeNode {
|
|
191
|
-
@MemoIdentity { :>> providedId = "FTE-003"; }
|
|
192
|
-
attribute :>> name = "FlowCrossCheckUnavailable";
|
|
172
|
+
@MemoIdentity { :>> providedId = "FTE-003"; :>> label = "FlowCrossCheckUnavailable"; }
|
|
193
173
|
attribute :>> eventKind = FaultTreeEventKind::basicEvent;
|
|
194
174
|
attribute :>> failureRate = 0.00001;
|
|
195
175
|
attribute :>> exposureTime = 100.0;
|
|
196
|
-
|
|
176
|
+
doc /* Independent flow sensor or comparison logic fails (FM-003 family) */
|
|
197
177
|
}
|
|
198
178
|
part fteLockoutFault : FaultTreeNode {
|
|
199
|
-
@MemoIdentity { :>> providedId = "FTE-004"; }
|
|
200
|
-
attribute :>> name = "LockoutEnforcementFault";
|
|
179
|
+
@MemoIdentity { :>> providedId = "FTE-004"; :>> label = "LockoutEnforcementFault"; }
|
|
201
180
|
attribute :>> eventKind = FaultTreeEventKind::basicEvent;
|
|
202
181
|
attribute :>> failureRate = 0.0000001;
|
|
203
182
|
attribute :>> exposureTime = 100.0;
|
|
204
|
-
|
|
183
|
+
doc /* Infusion manager authorizes bolus despite active lockout */
|
|
205
184
|
}
|
|
206
185
|
part fteStuckButtonUndetected : FaultTreeNode {
|
|
207
|
-
@MemoIdentity { :>> providedId = "FTE-005"; }
|
|
208
|
-
attribute :>> name = "StuckBolusButtonUndetected";
|
|
186
|
+
@MemoIdentity { :>> providedId = "FTE-005"; :>> label = "StuckBolusButtonUndetected"; }
|
|
209
187
|
attribute :>> eventKind = FaultTreeEventKind::basicEvent;
|
|
210
188
|
attribute :>> failureRate = 0.000001;
|
|
211
189
|
attribute :>> exposureTime = 100.0;
|
|
212
|
-
|
|
190
|
+
doc /* Pendant stuck closed and stuck-input monitor fails (FM-004) */
|
|
213
191
|
}
|
|
214
192
|
part ftgOverdoseOr : FaultTreeNode {
|
|
215
|
-
@MemoIdentity { :>> providedId = "FTG-001"; }
|
|
216
|
-
attribute :>> name = "OverdelivryPathOrGate";
|
|
193
|
+
@MemoIdentity { :>> providedId = "FTG-001"; :>> label = "OverdelivryPathOrGate"; }
|
|
217
194
|
attribute :>> gateKind = FaultTreeGateKind::orGate;
|
|
218
195
|
}
|
|
219
196
|
part ftgMotorAnd : FaultTreeNode {
|
|
220
|
-
@MemoIdentity { :>> providedId = "FTG-002"; }
|
|
221
|
-
attribute :>> name = "MotorRunawayAndCrossCheckGate";
|
|
197
|
+
@MemoIdentity { :>> providedId = "FTG-002"; :>> label = "MotorRunawayAndCrossCheckGate"; }
|
|
222
198
|
attribute :>> gateKind = FaultTreeGateKind::andGate;
|
|
223
199
|
}
|
|
224
200
|
part ftgBolusAnd : FaultTreeNode {
|
|
225
|
-
@MemoIdentity { :>> providedId = "FTG-003"; }
|
|
226
|
-
attribute :>> name = "UnauthorizedBolusAndGate";
|
|
201
|
+
@MemoIdentity { :>> providedId = "FTG-003"; :>> label = "UnauthorizedBolusAndGate"; }
|
|
227
202
|
attribute :>> gateKind = FaultTreeGateKind::andGate;
|
|
228
203
|
}
|
|
229
|
-
|
|
230
|
-
@MemoIdentity { :>> providedId = "MCS-001"; }
|
|
231
|
-
attribute :>> name = "MotorRunawayWithLostCrossCheck";
|
|
204
|
+
item mcsMotorPath : MinimalCutSet {
|
|
205
|
+
@MemoIdentity { :>> providedId = "MCS-001"; :>> label = "MotorRunawayWithLostCrossCheck"; }
|
|
232
206
|
attribute :>> cutSetOrder = 2;
|
|
233
207
|
attribute :>> involvedEvents = "FTE-002, FTE-003";
|
|
234
208
|
attribute :>> significance = "dominant contributor; controlled by RC-008 independence";
|
|
235
209
|
}
|
|
236
|
-
|
|
237
|
-
@MemoIdentity { :>> providedId = "MCS-002"; }
|
|
238
|
-
attribute :>> name = "StuckButtonWithLockoutFault";
|
|
210
|
+
item mcsBolusPath : MinimalCutSet {
|
|
211
|
+
@MemoIdentity { :>> providedId = "MCS-002"; :>> label = "StuckButtonWithLockoutFault"; }
|
|
239
212
|
attribute :>> cutSetOrder = 2;
|
|
240
213
|
attribute :>> involvedEvents = "FTE-004, FTE-005";
|
|
241
214
|
attribute :>> significance = "requires simultaneous software and detection failure; controlled by RC-001 and REQ-X-09";
|