@memoarchitect/ontology 0.6.4 → 0.7.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 +1 -1
- package/examples/connected-patient-monitor/model/catalog/project.sysml +24 -0
- package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/connected-patient-monitor/model/{viewpoints → catalog/viewpoints/unassigned/views}/connected_patient_monitor_overview.sysml +1 -1
- package/examples/embedded-infusion-pump/model/catalog/project.sysml +24 -0
- package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/embedded-infusion-pump/model/{viewpoints → catalog/viewpoints/unassigned/views}/embedded_infusion_pump_overview.sysml +1 -1
- package/examples/extensions/clinical/memo.package.yaml +18 -9
- package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +10 -2
- package/examples/extensions/template/memo.package.yaml +17 -9
- package/examples/functional-logical-physical/model/catalog/project.sysml +24 -0
- package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/functional-logical-physical/model/{viewpoints → catalog/viewpoints/unassigned/views}/functional_logical_physical_overview.sysml +1 -1
- package/examples/gpca-pump/analysis/Samples/01-model-overview.ipynb +148 -0
- package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +301 -0
- package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +229 -0
- package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +200 -0
- package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +188 -0
- package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +173 -0
- package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +180 -0
- package/examples/gpca-pump/analysis/Samples/README.md +37 -0
- package/examples/gpca-pump/gpca-pump.kpar +0 -0
- package/examples/gpca-pump/methodology/gpca_methodology.sysml +7 -8
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +89 -11
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +22 -12
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +2 -2
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +8 -2
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +5 -5
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +3 -8
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +6 -6
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +1 -15
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +41 -11
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +19 -8
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +2 -2
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +10 -1
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +34 -30
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +59 -31
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +1 -1
- package/examples/gpca-pump/model/catalog/project.sysml +21 -0
- package/examples/gpca-pump/model/catalog/viewpoints/context/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/context/views}/context_system_context_view.sysml +3 -3
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/cybersecurity_cybersecurity_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_cyber_assessment_view.sysml +4 -4
- package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_threat_model_view.sysml +4 -4
- package/examples/gpca-pump/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_allocation_view.sysml +2 -2
- package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_browser_view.sysml +3 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/behavior_action_flow_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/document_architecture_description_view.sysml +7 -7
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_device_interconnect_view.sysml +5 -5
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_logical_architecture_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_mode_state_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_system_decomposition_view.sysml +3 -3
- package/examples/gpca-pump/model/catalog/viewpoints/operational/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_scenario_sequence_view.sysml +2 -2
- package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_use_case_view.sysml +3 -3
- package/examples/gpca-pump/model/catalog/viewpoints/physical/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/physical/views}/physical_physical_bom_view.sysml +2 -2
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/document_dhf_index_view.sysml +6 -6
- package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/requirements_requirements_trace_view.sysml +2 -2
- package/examples/gpca-pump/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_hazard_analysis_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_rmf_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_fmea_view.sysml +2 -2
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_risk_chain_view.sysml +3 -3
- package/examples/gpca-pump/model/catalog/viewpoints/software/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/document_sdd_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/software_software_architecture_view.sysml +3 -3
- package/examples/gpca-pump/model/catalog/viewpoints/usability/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/usability/views}/document_usability_view.sysml +4 -4
- package/examples/gpca-pump/model/catalog/viewpoints/verification/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/document_vv_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/verification_verification_coverage_view.sysml +2 -2
- package/examples/ivd-laboratory-system/model/catalog/project.sysml +24 -0
- package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/ivd-laboratory-system/model/{viewpoints → catalog/viewpoints/unassigned/views}/ivd_laboratory_system_overview.sysml +1 -1
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +1 -0
- package/examples/manual-surgical-instrument/model/catalog/project.sysml +24 -0
- package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/manual-surgical-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/manual_surgical_instrument_overview.sysml +1 -1
- package/examples/multidimensional-layers/model/catalog/project.sysml +24 -0
- package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/multidimensional-layers/model/{viewpoints → catalog/viewpoints/unassigned/views}/multidimensional_layers_overview.sysml +1 -1
- package/examples/nested-architecture-dsm/README.md +49 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +174 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +183 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +53 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +89 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +90 -0
- package/examples/nested-architecture-dsm/model/catalog/project.sysml +28 -0
- package/examples/nested-architecture-dsm/model/catalog/traces.sysml +49 -0
- package/examples/reusable-instrument/model/catalog/project.sysml +24 -0
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -6
- package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/reusable-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/reusable_instrument_overview.sysml +1 -1
- package/examples/software-only-medical-device/model/catalog/project.sysml +24 -0
- package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/software-only-medical-device/model/{viewpoints → catalog/viewpoints/unassigned/views}/software_only_medical_device_overview.sysml +1 -1
- package/examples/surgical-closure-workflow/model/catalog/project.sysml +24 -0
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +23 -19
- package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/surgical-closure-workflow/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_closure_workflow_overview.sysml +1 -1
- package/examples/surgical-robot/model/catalog/project.sysml +24 -0
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +5 -3
- package/examples/surgical-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/surgical-robot/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_robot_overview.sysml +1 -1
- package/examples/sysml-diagram-samples/README.md +7 -0
- package/examples/sysml-diagram-samples/dhf/documents/DOC-HAR-001.md +11 -0
- package/examples/sysml-diagram-samples/memo.package.yaml +11 -5
- package/examples/sysml-diagram-samples/model/catalog/project.sysml +33 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/action_flow_view.sysml +18 -10
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/context_view.sysml +4 -2
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +47 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/functional_flow_view.sysml +23 -20
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/interconnection_view.sysml +17 -14
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +94 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/operational_behaviour_view.sysml +23 -20
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +13 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/requirements_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +51 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/state_transition_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/tree_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/use_case_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +93 -0
- package/examples/temperature-alarm/model/catalog/project.sysml +24 -0
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +2 -1
- package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/temperature-alarm/model/{viewpoints → catalog/viewpoints/unassigned/views}/temperature_alarm_overview.sysml +1 -1
- package/examples/ui-screen-regions/README.md +117 -0
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +60 -0
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +189 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +61 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/drugSelectorRegion/drug-selector-expanded-2.4.1.png +0 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/mainScreenLayout/main-screen-2.4.1.png +0 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/settingsScreenLayout/settings-screen-2.4.1.png +0 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +51 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +27 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +27 -0
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +59 -0
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +25 -0
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +178 -0
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +93 -0
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +60 -0
- package/examples/ui-screen-regions/model/catalog/project.sysml +45 -0
- package/examples/ui-screen-regions/model/catalog/traces.sysml +276 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +62 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +62 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +62 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +57 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +52 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +54 -0
- package/memo.manifest.yaml +2 -0
- package/methodologies/default/memo.package.yaml +19 -9
- package/methodologies/gpca/memo.package.yaml +18 -9
- package/ontology/memo.package.yaml +23 -8
- package/package.json +1 -3
- package/profile/memo.package.yaml +18 -9
- package/src/architecture/decisions/memo_decisions.sysml +7 -0
- package/src/architecture/functional/behavior/memo_behavior.sysml +1 -1
- package/src/architecture/functional/functions/memo_functions.sysml +5 -12
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +1 -3
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +18 -5
- package/src/architecture/implementation/ui/memo_ui.sysml +210 -27
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +1 -2
- package/src/architecture/logical/structure/memo_logical_structure.sysml +71 -15
- package/src/architecture/operational/activities/memo_activities.sysml +0 -1
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +2 -2
- package/src/architecture/operational/workflows/memo_workflows.sysml +0 -6
- package/src/{compliance/change/memo_change.sysml → artifacts/configuration_management/memo_configuration_management.sysml} +5 -3
- package/src/artifacts/core/memo_controlled_artifacts.sysml +33 -0
- package/src/artifacts/documents/risk_management/memo_risk_management.sysml +12 -0
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +1 -1
- package/src/assurance/human_factors/memo_human_factors.sysml +1 -1
- package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +11 -0
- package/src/assurance/verification_validation/clinical_evaluation/memo_clinical_evaluation.sysml +11 -0
- package/src/assurance/verification_validation/memo_assurance.sysml +1 -1
- package/src/core/annotations/memo_annotations.sysml +77 -0
- package/src/core/common/memo_common.sysml +20 -3
- package/src/core/consistency_rules/consistency_rules.sysml +7 -0
- package/src/core/dimensions/dimensions.sysml +5 -1
- package/src/core/enumerations/memo_enumerations.sysml +41 -6
- package/src/core/methodology_scope/methodology_scope.sysml +7 -15
- package/src/core/relationships/memo_relationships.sysml +4 -2
- package/src/memo_namespaces.sysml +97 -67
- package/src/methodology/core/memo_core.sysml +45 -2
- package/src/methodology/profiles/memo_profiles.sysml +30 -40
- package/src/methodology/workflow/memo_workflow.sysml +7 -2
- package/src/rules/closure/closure_rules.sysml +104 -31
- package/src/rules/coverage/coverage_rules.sysml +4 -256
- package/src/rules/crosslayer/cross_layer_rules.sysml +6 -15
- package/src/rules/lifecycle/lifecycle_rules.sysml +4 -39
- package/src/rules/ontology/ontology_invariants.sysml +38 -68
- package/src/rules/quantitative/quantitative_rules.sysml +8 -8
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +7 -0
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +3 -1
- package/src/viewpoints/clinical/{clinical_evidence_view → views/clinical_evidence_view}/clinical_evidence_view.sysml +2 -2
- package/src/viewpoints/context/context_viewpoint.sysml +3 -1
- package/src/viewpoints/context/{system_context_view → views/system_context_view}/system_context_view.sysml +2 -2
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +3 -1
- package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view → views/cybersecurity_assessment_view}/cybersecurity_assessment_view.sysml +2 -2
- package/src/viewpoints/cybersecurity/{threat_model_view → views/threat_model_view}/threat_model_view.sysml +2 -2
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +6 -0
- package/src/viewpoints/functional/functional_viewpoint.sysml +3 -1
- package/src/viewpoints/functional/{function_allocation_view → views/function_allocation_view}/function_allocation_view.sysml +2 -2
- package/src/viewpoints/functional/{system_functional_tree_view → views/system_functional_tree_view}/system_functional_tree_view.sysml +2 -2
- package/src/viewpoints/logical/logical_viewpoint.sysml +3 -1
- package/src/viewpoints/logical/{logical_architecture_view → views/logical_architecture_view}/logical_architecture_view.sysml +2 -2
- package/src/viewpoints/operational/operational_viewpoint.sysml +3 -1
- package/src/viewpoints/operational/{use_case_view → views/use_case_view}/use_case_view.sysml +2 -2
- package/src/viewpoints/physical/physical_viewpoint.sysml +3 -1
- package/src/viewpoints/physical/{network_topology_view → views/network_topology_view}/network_topology_view.sysml +2 -2
- package/src/viewpoints/physical/{physical_bom_view → views/physical_bom_view}/physical_bom_view.sysml +2 -2
- package/src/viewpoints/rendering/memo_rendering.sysml +354 -0
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +3 -1
- package/src/viewpoints/requirements/{requirements_traceability_view → views/requirements_traceability_view}/requirements_traceability_view.sysml +2 -2
- package/src/viewpoints/risk/risk_viewpoint.sysml +3 -1
- package/src/viewpoints/risk/{risk_chain_view → views/risk_chain_view}/risk_chain_view.sysml +2 -2
- package/src/viewpoints/software/software_viewpoint.sysml +3 -1
- package/src/viewpoints/software/{software_architecture_view → views/software_architecture_view}/software_architecture_view.sysml +2 -2
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +28 -0
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +23 -0
- package/src/viewpoints/usability/usability_viewpoint.sysml +3 -1
- package/src/viewpoints/usability/{usability_engineering_view → views/usability_engineering_view}/usability_engineering_view.sysml +2 -2
- package/src/viewpoints/verification/verification_viewpoint.sysml +3 -1
- package/src/viewpoints/verification/{verification_coverage_view → views/verification_coverage_view}/verification_coverage_view.sysml +2 -2
- package/templates/connected-device/memo.package.yaml +11 -5
- package/templates/connected-device/model/catalog/project.sysml +28 -0
- package/templates/connected-device/syside.toml +1 -1
- package/templates/default/memo.package.yaml +11 -5
- package/templates/default/model/catalog/project.sysml +28 -0
- package/templates/default/syside.toml +1 -1
- package/templates/infusion-pump/memo.package.yaml +11 -5
- package/templates/infusion-pump/model/catalog/project.sysml +28 -0
- package/templates/infusion-pump/syside.toml +1 -1
- package/templates/monitoring-device/memo.package.yaml +11 -5
- package/templates/monitoring-device/model/catalog/project.sysml +28 -0
- package/templates/monitoring-device/syside.toml +1 -1
- package/templates/samd/memo.package.yaml +11 -5
- package/templates/samd/model/catalog/project.sysml +28 -0
- package/templates/samd/syside.toml +1 -1
- package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +0 -3
- package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +0 -3
- package/examples/functional-logical-physical/model/functional_logical_physical.sysml +0 -3
- package/examples/gpca-pump/memo.config.yaml +0 -9
- package/examples/gpca-pump/methodology/gpca_scope.sysml +0 -25
- package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +0 -3
- package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +0 -3
- package/examples/multidimensional-layers/model/multidimensional_layers.sysml +0 -4
- package/examples/reusable-instrument/model/reusable_instrument.sysml +0 -4
- package/examples/software-only-medical-device/model/software_only_medical_device.sysml +0 -4
- package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +0 -4
- package/examples/surgical-robot/model/surgical_robot.sysml +0 -4
- package/examples/temperature-alarm/model/temperature_alarm.sysml +0 -4
- package/ontology/memo.rendering.yaml +0 -84
- package/src/compliance/artifacts/memo_artifacts.sysml +0 -12
- package/src/compliance/document_views/memo_document_views.sysml +0 -7
- package/src/compliance/iso14971/risk_management_file.sysml +0 -16
- package/src/compliance/postmarket/memo_postmarket.sysml +0 -16
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/change-record.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-input.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-output.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-review.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-validation.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-verification.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/dhf-index.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/transfer-plan.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/user-needs.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-plan.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-report.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/incident-response.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/postmarket-surveillance.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/security-arch.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/threat-model.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/vuln-assessment.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/change-control.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/detailed-design.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/integration-test.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sad.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sbom.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sdp.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/soup.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/srs.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sw-traceability.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/system-test.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/formative-eval.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/summative-eval.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/task-analysis.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ue-plan.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ui-spec.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/urra.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/use-spec.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/fmea.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/fta.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/har.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-benefit.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-matrix.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmp.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmr.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/approval-block.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/document-control-header.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/references-section.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/revision-history-table.md +0 -0
- /package/templates/connected-device/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/connected-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/connected-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/default/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/default/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/default/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/infusion-pump/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/infusion-pump/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/infusion-pump/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/monitoring-device/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/monitoring-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/monitoring-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/samd/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/samd/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/samd/{src → model/catalog}/assurance/requirements.sysml +0 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "markdown",
|
|
5
|
+
"id": "memo-1",
|
|
6
|
+
"metadata": {},
|
|
7
|
+
"source": [
|
|
8
|
+
"# Model inventory table\n",
|
|
9
|
+
"\n",
|
|
10
|
+
"Filter a model-independent element table and export the current result to CSV.\n",
|
|
11
|
+
"\n",
|
|
12
|
+
"This sample uses only standard SysML v2 concepts and automatically discovers the project's `model/` or `src/` directory."
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"cell_type": "code",
|
|
17
|
+
"execution_count": 1,
|
|
18
|
+
"id": "memo-2",
|
|
19
|
+
"metadata": {
|
|
20
|
+
"execution": {
|
|
21
|
+
"iopub.execute_input": "2026-07-29T22:35:06.617815Z",
|
|
22
|
+
"iopub.status.busy": "2026-07-29T22:35:06.617748Z",
|
|
23
|
+
"iopub.status.idle": "2026-07-29T22:35:06.932238Z",
|
|
24
|
+
"shell.execute_reply": "2026-07-29T22:35:06.931715Z"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"outputs": [
|
|
28
|
+
{
|
|
29
|
+
"name": "stdout",
|
|
30
|
+
"output_type": "stream",
|
|
31
|
+
"text": [
|
|
32
|
+
"Loaded 42 SysML files from /Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/model\n"
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"source": [
|
|
37
|
+
"from pathlib import Path\n",
|
|
38
|
+
"from collections import Counter, defaultdict\n",
|
|
39
|
+
"import syside\n",
|
|
40
|
+
"\n",
|
|
41
|
+
"def find_sysml_root(start=Path.cwd()):\n",
|
|
42
|
+
" \"\"\"Find the nearest model/ or src/ folder containing textual SysML.\"\"\"\n",
|
|
43
|
+
" for directory in (start, *start.parents):\n",
|
|
44
|
+
" for folder_name in ('model', 'src'):\n",
|
|
45
|
+
" candidate = directory / folder_name\n",
|
|
46
|
+
" if candidate.is_dir() and next(candidate.rglob('*.sysml'), None):\n",
|
|
47
|
+
" return candidate\n",
|
|
48
|
+
" raise FileNotFoundError('No model/ or src/ directory containing .sysml files was found')\n",
|
|
49
|
+
"\n",
|
|
50
|
+
"SYSML_ROOT = find_sysml_root()\n",
|
|
51
|
+
"SYSML_FILES = sorted(SYSML_ROOT.rglob('*.sysml'))\n",
|
|
52
|
+
"model, diagnostics = syside.try_load_model([str(path) for path in SYSML_FILES])\n",
|
|
53
|
+
"print(f'Loaded {len(SYSML_FILES)} SysML files from {SYSML_ROOT}')"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"cell_type": "code",
|
|
58
|
+
"execution_count": 2,
|
|
59
|
+
"id": "memo-3",
|
|
60
|
+
"metadata": {
|
|
61
|
+
"execution": {
|
|
62
|
+
"iopub.execute_input": "2026-07-29T22:35:06.933891Z",
|
|
63
|
+
"iopub.status.busy": "2026-07-29T22:35:06.933794Z",
|
|
64
|
+
"iopub.status.idle": "2026-07-29T22:35:06.948150Z",
|
|
65
|
+
"shell.execute_reply": "2026-07-29T22:35:06.947725Z"
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"outputs": [
|
|
69
|
+
{
|
|
70
|
+
"data": {
|
|
71
|
+
"text/html": [
|
|
72
|
+
"<p><strong>6,676</strong> matching elements; showing 250.</p>\n",
|
|
73
|
+
"<div style=\"max-height:620px;overflow:auto\"><table style=\"font-size:12px\"><thead style=\"position:sticky;top:0;background:white\"><tr><th>Kind</th><th>Name</th><th>Qualified name</th><th>Owner</th></tr></thead><tbody><tr><td>ActionDefinition</td><td>AcquireSensorData</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::AcquireSensorData</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions</td></tr><tr><td>ActionDefinition</td><td>ActuatePumpMotor</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::ActuatePumpMotor</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions</td></tr><tr><td>ActionDefinition</td><td>ComputeFlowCommand</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::ComputeFlowCommand</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions</td></tr><tr><td>ActionDefinition</td><td>EnforceDoseLimits</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::EnforceDoseLimits</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions</td></tr><tr><td>ActionDefinition</td><td>EvaluateAlarmConditions</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::EvaluateAlarmConditions</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions</td></tr><tr><td>ActionDefinition</td><td>LogTherapyEvent</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::LogTherapyEvent</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions</td></tr><tr><td>ActionUsage</td><td>infusionDeliveryFlow</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::infusionDeliveryFlow</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions</td></tr><tr><td>ActionUsage</td><td>acquireSensors</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::infusionDeliveryFlow::acquireSensors</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::infusionDeliveryFlow</td></tr><tr><td>ActionUsage</td><td>actuateMotor</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::infusionDeliveryFlow::actuateMotor</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::infusionDeliveryFlow</td></tr><tr><td>ActionUsage</td><td>computeFlow</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::infusionDeliveryFlow::computeFlow</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::infusionDeliveryFlow</td></tr><tr><td>ActionUsage</td><td>enforceLimits</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::infusionDeliveryFlow::enforceLimits</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::infusionDeliveryFlow</td></tr><tr><td>ActionUsage</td><td>evaluateAlarms</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::infusionDeliveryFlow::evaluateAlarms</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::infusionDeliveryFlow</td></tr><tr><td>ActionUsage</td><td>logEvent</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::infusionDeliveryFlow::logEvent</td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions::infusionDeliveryFlow</td></tr><tr><td>ActionUsage</td><td>oaCompleteNominalTherapy</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaCompleteNominalTherapy</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>deliverWithinLimits</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaCompleteNominalTherapy::deliverWithinLimits</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaCompleteNominalTherapy</td></tr><tr><td>ActionUsage</td><td>recordTherapyEvent</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaCompleteNominalTherapy::recordTherapyEvent</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaCompleteNominalTherapy</td></tr><tr><td>ActionUsage</td><td>oaLoadReservoir</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaLoadReservoir</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>oaMaintain</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaMaintain</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>oaPrescribe</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaPrescribe</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>oaProgram</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaProgram</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>oaRecoverAfterPowerLoss</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRecoverAfterPowerLoss</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>confirmRestart</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRecoverAfterPowerLoss::confirmRestart</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRecoverAfterPowerLoss</td></tr><tr><td>ActionUsage</td><td>restorePrescription</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRecoverAfterPowerLoss::restorePrescription</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRecoverAfterPowerLoss</td></tr><tr><td>ActionUsage</td><td>switchToBattery</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRecoverAfterPowerLoss::switchToBattery</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRecoverAfterPowerLoss</td></tr><tr><td>ActionUsage</td><td>oaRejectBolusDuringLockout</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRejectBolusDuringLockout</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>checkLockout</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRejectBolusDuringLockout::checkLockout</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRejectBolusDuringLockout</td></tr><tr><td>ActionUsage</td><td>rejectAndLog</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRejectBolusDuringLockout::rejectAndLog</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRejectBolusDuringLockout</td></tr><tr><td>ActionUsage</td><td>oaReplaceEmptyReservoir</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaReplaceEmptyReservoir</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>replaceReservoir</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaReplaceEmptyReservoir::replaceReservoir</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaReplaceEmptyReservoir</td></tr><tr><td>ActionUsage</td><td>resumeTherapy</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaReplaceEmptyReservoir::resumeTherapy</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaReplaceEmptyReservoir</td></tr><tr><td>ActionUsage</td><td>stopAndAnnunciate</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaReplaceEmptyReservoir::stopAndAnnunciate</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaReplaceEmptyReservoir</td></tr><tr><td>ActionUsage</td><td>oaRequestBolus</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRequestBolus</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>oaRespondAlarm</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRespondAlarm</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>oaRespondToAirInLine</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRespondToAirInLine</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>annunciateAir</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRespondToAirInLine::annunciateAir</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRespondToAirInLine</td></tr><tr><td>ActionUsage</td><td>reprimeAndRestart</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRespondToAirInLine::reprimeAndRestart</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRespondToAirInLine</td></tr><tr><td>ActionUsage</td><td>stopOrKvo</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRespondToAirInLine::stopOrKvo</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRespondToAirInLine</td></tr><tr><td>ActionUsage</td><td>oaRespondToOcclusion</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRespondToOcclusion</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>annunciateOcclusion</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRespondToOcclusion::annunciateOcclusion</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRespondToOcclusion</td></tr><tr><td>ActionUsage</td><td>pauseInfusion</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRespondToOcclusion::pauseInfusion</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRespondToOcclusion</td></tr><tr><td>ActionUsage</td><td>resolveAndResume</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRespondToOcclusion::resolveAndResume</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaRespondToOcclusion</td></tr><tr><td>ActionUsage</td><td>oaReviewLog</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaReviewLog</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>oaStartTherapy</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::oaStartTherapy</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>wfManageActiveTherapy</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::wfManageActiveTherapy</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>wfPrepareAndStartTherapy</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::wfPrepareAndStartTherapy</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>wfRespondToTherapyAlarm</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::wfRespondToTherapyAlarm</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>wsProgram</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::wsProgram</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>wsRequestBolus</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::wsRequestBolus</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>wsRespondAlarm</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::wsRespondAlarm</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>ActionUsage</td><td>wsStart</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational::wsStart</td><td>memo_examples_gpca_pump_model_catalog_gpca_operational</td></tr><tr><td>AllocationUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions</td></tr><tr><td>AllocationUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions</td></tr><tr><td>AllocationUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions</td></tr><tr><td>AllocationUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions</td></tr><tr><td>AllocationUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions</td></tr><tr><td>AllocationUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_behavior_actions</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmeaDelivery</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmeaDelivery</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmeaDelivery</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmeaDelivery</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmeaDelivery</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmeaDelivery</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmeaDelivery</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmMotorRunaway</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmMotorRunaway</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmMotorRunaway</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmMotorRunaway</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmMotorRunaway</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmMotorRunaway</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmMotorRunaway</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmMotorRunaway</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmMotorRunaway</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmAirSensorSilent</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmAirSensorSilent</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmAirSensorSilent</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmAirSensorSilent</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmAirSensorSilent</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmAirSensorSilent</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmAirSensorSilent</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmAirSensorSilent</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmAirSensorSilent</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmOcclusionDrift</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmOcclusionDrift</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmOcclusionDrift</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmOcclusionDrift</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmOcclusionDrift</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmOcclusionDrift</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmOcclusionDrift</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmOcclusionDrift</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmOcclusionDrift</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmStuckBolusButton</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmStuckBolusButton</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmStuckBolusButton</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmStuckBolusButton</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmStuckBolusButton</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmStuckBolusButton</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmStuckBolusButton</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmStuckBolusButton</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmStuckBolusButton</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmBatteryEarlyDepletion</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmBatteryEarlyDepletion</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmBatteryEarlyDepletion</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmBatteryEarlyDepletion</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmBatteryEarlyDepletion</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmBatteryEarlyDepletion</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmBatteryEarlyDepletion</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmBatteryEarlyDepletion</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmBatteryEarlyDepletion</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feOverdose</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feOverdose</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feOverdose</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feOverdose</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feOverdose</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feOverdose</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feOverdose</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feAirDelivered</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feAirDelivered</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feAirDelivered</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feAirDelivered</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feAirDelivered</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feAirDelivered</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feAirDelivered</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feTherapyInterrupted</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feTherapyInterrupted</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feTherapyInterrupted</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feTherapyInterrupted</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feTherapyInterrupted</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feTherapyInterrupted</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::feTherapyInterrupted</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fcMotorDriverFault</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fcMotorDriverFault</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fcMotorDriverFault</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fcMotorDriverFault</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fcMotorDriverFault</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fcMotorDriverFault</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fcTransducerAging</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fcTransducerAging</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fcTransducerAging</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fcTransducerAging</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fcTransducerAging</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fcTransducerAging</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fcPendantAbuse</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fcPendantAbuse</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fcPendantAbuse</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fcPendantAbuse</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fcPendantAbuse</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fcPendantAbuse</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::dmFlowCrossCheck</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::dmFlowCrossCheck</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::dmFlowCrossCheck</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::dmFlowCrossCheck</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::dmFlowCrossCheck</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::dmPostSensorCheck</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::dmPostSensorCheck</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::dmPostSensorCheck</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::dmPostSensorCheck</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::dmPostSensorCheck</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::dmStuckInputMonitor</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::dmStuckInputMonitor</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::dmStuckInputMonitor</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::dmStuckInputMonitor</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::dmStuckInputMonitor</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmeaActionAirSensor</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmeaActionAirSensor</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmeaActionAirSensor</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmeaActionAirSensor</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmeaActionAirSensor</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmeaActionAirSensor</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fmeaActionAirSensor</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::ftaOverdose</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::ftaOverdose</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::ftaOverdose</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::ftaOverdose</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::ftaOverdose</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::ftaOverdose</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::ftaOverdose</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteOverdoseTop</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteOverdoseTop</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteOverdoseTop</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteOverdoseTop</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteMotorRunaway</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteMotorRunaway</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteMotorRunaway</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteMotorRunaway</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteMotorRunaway</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteMotorRunaway</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteCrossCheckFails</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteCrossCheckFails</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteCrossCheckFails</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteCrossCheckFails</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteCrossCheckFails</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteCrossCheckFails</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteLockoutFault</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteLockoutFault</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteLockoutFault</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteLockoutFault</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteLockoutFault</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteLockoutFault</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteStuckButtonUndetected</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteStuckButtonUndetected</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteStuckButtonUndetected</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteStuckButtonUndetected</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteStuckButtonUndetected</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::fteStuckButtonUndetected</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::ftgOverdoseOr</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::ftgOverdoseOr</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::ftgOverdoseOr</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::ftgMotorAnd</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::ftgMotorAnd</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::ftgMotorAnd</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::ftgBolusAnd</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::ftgBolusAnd</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::ftgBolusAnd</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::mcsMotorPath</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::mcsMotorPath</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::mcsMotorPath</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::mcsMotorPath</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::mcsMotorPath</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::mcsBolusPath</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::mcsBolusPath</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::mcsBolusPath</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::mcsBolusPath</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_analysis::mcsBolusPath</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcTherapyControl</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcTherapyControl</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcTherapyControl</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcTherapyControl</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcTherapyControl</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcSafetyMonitoring</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcSafetyMonitoring</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcSafetyMonitoring</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcSafetyMonitoring</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcSafetyMonitoring</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcOperatorInterface</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcOperatorInterface</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcOperatorInterface</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcOperatorInterface</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcOperatorInterface</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcDrugDelivery</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcDrugDelivery</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcDrugDelivery</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcDrugDelivery</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcDrugDelivery</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcPowerSubsystem</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcPowerSubsystem</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcPowerSubsystem</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcPowerSubsystem</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::lcPowerSubsystem</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::gpcaDeviceSensors</td></tr><tr><td>AttributeUsage</td><td></td><td></td><td>memo_examples_gpca_pump_model_catalog_gpca_architecture::gpcaDeviceSensors</td></tr></tbody></table></div>"
|
|
74
|
+
],
|
|
75
|
+
"text/plain": [
|
|
76
|
+
"<IPython.core.display.HTML object>"
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
"metadata": {},
|
|
80
|
+
"output_type": "display_data"
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"source": [
|
|
84
|
+
"from html import escape\n",
|
|
85
|
+
"from IPython.display import HTML, display\n",
|
|
86
|
+
"\n",
|
|
87
|
+
"KIND_FILTER = '' # Example: 'PartUsage' or 'Requirement'\n",
|
|
88
|
+
"NAME_FILTER = '' # Case-insensitive name fragment\n",
|
|
89
|
+
"ROW_LIMIT = 250\n",
|
|
90
|
+
"\n",
|
|
91
|
+
"semantic_elements = (\n",
|
|
92
|
+
" list(model.elements(syside.Usage, include_subtypes=True))\n",
|
|
93
|
+
" + list(model.elements(syside.Definition, include_subtypes=True))\n",
|
|
94
|
+
")\n",
|
|
95
|
+
"\n",
|
|
96
|
+
"def text(value):\n",
|
|
97
|
+
" return str(value) if value else ''\n",
|
|
98
|
+
"\n",
|
|
99
|
+
"records = []\n",
|
|
100
|
+
"for item in semantic_elements:\n",
|
|
101
|
+
" kind = type(item).__name__\n",
|
|
102
|
+
" name = text(item.name or item.declared_name)\n",
|
|
103
|
+
" qualified_name = text(item.qualified_name)\n",
|
|
104
|
+
" owner = getattr(item, 'owner', None)\n",
|
|
105
|
+
" owner_name = text(getattr(owner, 'qualified_name', None) or getattr(owner, 'name', None))\n",
|
|
106
|
+
" if KIND_FILTER and KIND_FILTER.casefold() not in kind.casefold():\n",
|
|
107
|
+
" continue\n",
|
|
108
|
+
" if NAME_FILTER and NAME_FILTER.casefold() not in (name + ' ' + qualified_name).casefold():\n",
|
|
109
|
+
" continue\n",
|
|
110
|
+
" records.append({'kind': kind, 'name': name, 'qualified_name': qualified_name, 'owner': owner_name})\n",
|
|
111
|
+
"\n",
|
|
112
|
+
"records.sort(key=lambda row: (row['kind'], row['qualified_name'], row['name']))\n",
|
|
113
|
+
"visible = records[:ROW_LIMIT]\n",
|
|
114
|
+
"rows = ''.join(\n",
|
|
115
|
+
" '<tr>' + ''.join(f'<td>{escape(row[key])}</td>' for key in ('kind', 'name', 'qualified_name', 'owner')) + '</tr>'\n",
|
|
116
|
+
" for row in visible\n",
|
|
117
|
+
")\n",
|
|
118
|
+
"display(HTML(f'''<p><strong>{len(records):,}</strong> matching elements; showing {len(visible):,}.</p>\n",
|
|
119
|
+
"<div style=\"max-height:620px;overflow:auto\"><table style=\"font-size:12px\"><thead style=\"position:sticky;top:0;background:white\"><tr><th>Kind</th><th>Name</th><th>Qualified name</th><th>Owner</th></tr></thead><tbody>{rows}</tbody></table></div>'''))"
|
|
120
|
+
]
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"cell_type": "code",
|
|
124
|
+
"execution_count": 3,
|
|
125
|
+
"id": "memo-4",
|
|
126
|
+
"metadata": {
|
|
127
|
+
"execution": {
|
|
128
|
+
"iopub.execute_input": "2026-07-29T22:35:06.949118Z",
|
|
129
|
+
"iopub.status.busy": "2026-07-29T22:35:06.949060Z",
|
|
130
|
+
"iopub.status.idle": "2026-07-29T22:35:06.961470Z",
|
|
131
|
+
"shell.execute_reply": "2026-07-29T22:35:06.961042Z"
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"outputs": [
|
|
135
|
+
{
|
|
136
|
+
"name": "stdout",
|
|
137
|
+
"output_type": "stream",
|
|
138
|
+
"text": [
|
|
139
|
+
"Exported 6,676 rows to /Users/poojakashyap/sandbox/memo-meta/memo/examples/gpca-pump/analysis/Samples/model-inventory.csv\n"
|
|
140
|
+
]
|
|
141
|
+
}
|
|
142
|
+
],
|
|
143
|
+
"source": [
|
|
144
|
+
"import csv\n",
|
|
145
|
+
"\n",
|
|
146
|
+
"OUTPUT = Path('model-inventory.csv')\n",
|
|
147
|
+
"with OUTPUT.open('w', newline='', encoding='utf-8') as stream:\n",
|
|
148
|
+
" writer = csv.DictWriter(stream, fieldnames=['kind', 'name', 'qualified_name', 'owner'])\n",
|
|
149
|
+
" writer.writeheader()\n",
|
|
150
|
+
" writer.writerows(records)\n",
|
|
151
|
+
"print(f'Exported {len(records):,} rows to {OUTPUT.resolve()}')"
|
|
152
|
+
]
|
|
153
|
+
}
|
|
154
|
+
],
|
|
155
|
+
"metadata": {
|
|
156
|
+
"kernelspec": {
|
|
157
|
+
"display_name": "Python 3 (ipykernel)",
|
|
158
|
+
"language": "python",
|
|
159
|
+
"name": "python3"
|
|
160
|
+
},
|
|
161
|
+
"language_info": {
|
|
162
|
+
"codemirror_mode": {
|
|
163
|
+
"name": "ipython",
|
|
164
|
+
"version": 3
|
|
165
|
+
},
|
|
166
|
+
"file_extension": ".py",
|
|
167
|
+
"mimetype": "text/x-python",
|
|
168
|
+
"name": "python",
|
|
169
|
+
"nbconvert_exporter": "python",
|
|
170
|
+
"pygments_lexer": "ipython3",
|
|
171
|
+
"version": "3.12.13"
|
|
172
|
+
},
|
|
173
|
+
"memo": {
|
|
174
|
+
"description": "Filter a model-independent element table and export the current result to CSV.",
|
|
175
|
+
"starter": true
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
"nbformat": 4,
|
|
179
|
+
"nbformat_minor": 5
|
|
180
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# MEMO analysis samples
|
|
2
|
+
|
|
3
|
+
These notebooks are created by `memo init` and are designed to work with any
|
|
4
|
+
MEMO textual SysML v2 project. They locate the nearest `model/` or `src/`
|
|
5
|
+
directory automatically and query it through the typed Syside API.
|
|
6
|
+
|
|
7
|
+
## Prerequisites
|
|
8
|
+
|
|
9
|
+
Use Python 3.12 or newer with JupyterLab and Syside installed and licensed:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
python -m venv analysis/.venv
|
|
13
|
+
source analysis/.venv/bin/activate
|
|
14
|
+
python -m pip install jupyterlab syside
|
|
15
|
+
cd analysis
|
|
16
|
+
jupyter lab --port 8888
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Configure the Syside license using its supported keyring or environment setup.
|
|
20
|
+
MEMO Architect's **Analysis → Jupyter Notebooks** menu opens the local server at
|
|
21
|
+
`http://127.0.0.1:8888`.
|
|
22
|
+
|
|
23
|
+
## Included notebooks
|
|
24
|
+
|
|
25
|
+
| Notebook | Purpose |
|
|
26
|
+
|---|---|
|
|
27
|
+
| `01-model-overview.ipynb` | Model size, semantic composition, and diagnostic summary. |
|
|
28
|
+
| `02-architecture-hotspots.ipynb` | Busy containers, deep ownership paths, and dominant types. |
|
|
29
|
+
| `03-model-quality.ipynb` | Diagnostics, unnamed elements, repeated names, and empty definitions. |
|
|
30
|
+
| `04-change-impact-explorer.ipynb` | Search an element and inspect its structural neighborhood. |
|
|
31
|
+
| `05-model-charts.ipynb` | Bar and donut charts rendered without extra plotting packages. |
|
|
32
|
+
| `06-ownership-graph.ipynb` | SVG network graph of model ownership relationships. |
|
|
33
|
+
| `07-model-inventory-table.ipynb` | Filterable inventory parameters, HTML table, and CSV export. |
|
|
34
|
+
|
|
35
|
+
The notebooks use `syside.try_load_model()`, so partial analysis remains
|
|
36
|
+
available while the project contains parser or semantic diagnostics. Review the
|
|
37
|
+
reported diagnostics before treating analysis results as release evidence.
|
|
Binary file
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
+
// The GPCA methodology package.
|
|
2
|
+
//
|
|
3
|
+
// The `ResolvesToMethodology` connection that used to live here bound a model
|
|
4
|
+
// element to an authored `ResolvedMethodology` instance. A resolved methodology
|
|
5
|
+
// is derived from the project binding and the methodology chain, so there is
|
|
6
|
+
// nothing here to connect to: see `model/catalog/gpca_project.sysml` for the
|
|
7
|
+
// binding, and `gpca_profiles.sysml` for the methodology it selects.
|
|
1
8
|
package memo_examples_gpca_pump_methodology_gpca_methodology {
|
|
2
|
-
private import ScalarValues::*;
|
|
3
|
-
|
|
4
|
-
private import memo_methodology_profiles::*;
|
|
5
9
|
private import memo_examples_gpca_pump_methodology_gpca_profiles::*;
|
|
6
|
-
private import memo_core_relationships::*;
|
|
7
|
-
private import memo_examples_gpca_pump_model_catalog_gpca_requirements::*;
|
|
8
|
-
private import memo_examples_gpca_pump_model_catalog_gpca_architecture::*;
|
|
9
|
-
|
|
10
|
-
connection : ResolvesToMethodology connect boundModelElement ::> tlm to resolvedMethodology ::> gpcaMethodResolved;
|
|
11
10
|
}
|
|
@@ -1,25 +1,103 @@
|
|
|
1
|
+
// GPCA prototype methodology.
|
|
2
|
+
//
|
|
3
|
+
// Converted from subtraction to explicit selection at the native semantic flip.
|
|
4
|
+
// Before, this methodology said "the default, minus cybersecurity and SOUP" by
|
|
5
|
+
// listing `excludedKind` entries on a separate `MethodologyScope` part. ADR-1-15
|
|
6
|
+
// requires a methodology to declare its own final effective lists, so the
|
|
7
|
+
// selection is now stated positively here and the scope part is gone.
|
|
8
|
+
//
|
|
9
|
+
// Two differences from the pre-flip behaviour are deliberate and recorded:
|
|
10
|
+
//
|
|
11
|
+
// 1. Cybersecurity is excluded by *not* selecting `memo_assurance_cybersecurity`
|
|
12
|
+
// and by two explicit RulePolicy entries disabling the cybersecurity closure
|
|
13
|
+
// rules. Before, `excludedKind` named eleven cybersecurity kinds; naming the
|
|
14
|
+
// discipline once is the same selection stated at the level the methodology
|
|
15
|
+
// metamodel supports.
|
|
16
|
+
// 2. `SoftwareModule[moduleKind=soup]` cannot be expressed as an inclusion.
|
|
17
|
+
// Explicit selection works over kinds, not over instance attribute values,
|
|
18
|
+
// so a per-instance filter has no positive form. The GPCA model declares no
|
|
19
|
+
// SOUP module, so the effective element set is unchanged; the intent is
|
|
20
|
+
// recorded in this methodology's description and belongs to a project rule
|
|
21
|
+
// if it ever needs enforcing.
|
|
22
|
+
//
|
|
23
|
+
// The authored `gpcaMethodResolved : ResolvedMethodology` is gone. A resolved
|
|
24
|
+
// methodology is derived from the binding and the methodology chain; authoring
|
|
25
|
+
// one by hand created a second answer that no resolver produced.
|
|
1
26
|
package memo_examples_gpca_pump_methodology_gpca_profiles {
|
|
2
27
|
private import ScalarValues::*;
|
|
3
28
|
|
|
4
29
|
private import memo_methodology_core::*;
|
|
5
30
|
private import memo_methodology_profiles::*;
|
|
6
31
|
private import memo_core_enumerations::*;
|
|
32
|
+
private import memo_rules_closure::*;
|
|
7
33
|
|
|
8
34
|
part gpcaMethodDefinition : MethodologyDefinition {
|
|
9
35
|
attribute :>> id = "METH-GPCA-001";
|
|
10
36
|
attribute :>> name = "GPCAPrototypeMethodology";
|
|
11
|
-
attribute :>> version = "
|
|
37
|
+
attribute :>> version = "0.6.5";
|
|
12
38
|
attribute :>> domain = "medical device modeling";
|
|
13
|
-
attribute :>> description = "GPCA infusion pump methodology
|
|
14
|
-
|
|
15
|
-
|
|
39
|
+
attribute :>> description = "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.";
|
|
40
|
+
ref :>> baseMethodology = mdDefaultDefinition;
|
|
41
|
+
attribute :>> scopeMode = ScopeModeKind::explicit;
|
|
42
|
+
|
|
43
|
+
attribute :>> includedLayer = (
|
|
44
|
+
"memo_architecture_operational",
|
|
45
|
+
"memo_architecture_functional",
|
|
46
|
+
"memo_architecture_logical",
|
|
47
|
+
"memo_architecture_implementation",
|
|
48
|
+
"memo_architecture_realization"
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
// Explicit means explicit. A methodology that names its assurance
|
|
52
|
+
// disciplines and stops there selects no rules at all, because rules
|
|
53
|
+
// live in their own packages. Before the flip an empty list read as
|
|
54
|
+
// "everything", which hid exactly this: the selection said nothing and
|
|
55
|
+
// the tools behaved as though it said everything.
|
|
56
|
+
attribute :>> includedModule = (
|
|
57
|
+
"memo_core_common",
|
|
58
|
+
"memo_core_enumerations",
|
|
59
|
+
"memo_core_relationships",
|
|
60
|
+
"memo_core_annotations",
|
|
61
|
+
"memo_core_consistency_rules",
|
|
62
|
+
"memo_assurance_requirements",
|
|
63
|
+
"memo_assurance_requirements_needs",
|
|
64
|
+
"memo_assurance_safety_risk",
|
|
65
|
+
"memo_assurance_human_factors",
|
|
66
|
+
"memo_assurance_verification_validation",
|
|
67
|
+
"memo_rules_closure",
|
|
68
|
+
"memo_rules_crosslayer",
|
|
69
|
+
"memo_rules_quantitative",
|
|
70
|
+
"memo_rules_ontology"
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
attribute :>> includedStandard = (
|
|
74
|
+
"ISO 14971",
|
|
75
|
+
"IEC 62304",
|
|
76
|
+
"21 CFR 820",
|
|
77
|
+
"ISO 13485",
|
|
78
|
+
"ISO 14155",
|
|
79
|
+
"IEC 62366",
|
|
80
|
+
"IEC 60601-1"
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
attribute :>> includedArtifactKind = ("RiskManagementPlan");
|
|
84
|
+
|
|
85
|
+
attribute :>> includedViewpoint = ("VP-CTX", "VP-LOG", "VP-RISK");
|
|
86
|
+
|
|
87
|
+
part disableThreatMitigation : RulePolicy :> rulePolicy {
|
|
88
|
+
ref :>> targetRule : ThreatMitigationRule;
|
|
89
|
+
attribute :>> disposition = RuleDispositionKind::disabled;
|
|
90
|
+
attribute :>> rationaleText = "CR-MED-040 requires every threat to carry a mitigation. The prototype has no network or removable-media interface, so no threat is in scope and the rule can only report on elements this variant does not model.";
|
|
91
|
+
attribute :>> authority = "GPCA Systems Engineering Lead";
|
|
92
|
+
attribute :>> approvalReference = "GPCA-DHF-CR-0007";
|
|
93
|
+
}
|
|
16
94
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
95
|
+
part disableAssetThreatLink : RulePolicy :> rulePolicy {
|
|
96
|
+
ref :>> targetRule : AssetThreatLinkRule;
|
|
97
|
+
attribute :>> disposition = RuleDispositionKind::disabled;
|
|
98
|
+
attribute :>> rationaleText = "CR-MED-041 requires every cybersecurity asset to trace to a threat. Cybersecurity is not a selected discipline for this variant, so the rule has no subjects and its absence is recorded here rather than left implicit.";
|
|
99
|
+
attribute :>> authority = "GPCA Systems Engineering Lead";
|
|
100
|
+
attribute :>> approvalReference = "GPCA-DHF-CR-0007";
|
|
101
|
+
}
|
|
24
102
|
}
|
|
25
103
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_gpca_pump_gpca_architecture {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
4
|
private import memo_architecture_implementation_hardware_structure::*;
|
|
@@ -44,6 +44,17 @@ package memo_examples_gpca_pump_model_catalog_gpca_architecture {
|
|
|
44
44
|
attribute :>> safetyPartition = "supporting partition";
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
// ── Device (UMN AADL architectural model) ───────────────────
|
|
48
|
+
// The AADL top-level `GPCA_Device` system. GPCA_Device.Impl declares only
|
|
49
|
+
// GPCA_HW_Sensors, GPCA_SW, and GPCA_HW_Actuators as subcomponents.
|
|
50
|
+
part gpcaDevice : PhysicalAssembly {
|
|
51
|
+
attribute :>> id = "HW-000";
|
|
52
|
+
attribute :>> name = "GPCA_Device";
|
|
53
|
+
attribute :>> responsibility = "AADL device boundary containing the sensor wrapper, GPCA software, and actuator wrapper.";
|
|
54
|
+
attribute :>> safetyRole = "device boundary carrying the intended use and the risk-control architecture";
|
|
55
|
+
attribute :>> partNumber = "GPCA-DEV-001";
|
|
56
|
+
}
|
|
57
|
+
|
|
47
58
|
// ── Hardware: aggregates (UMN AADL architectural model) ─────
|
|
48
59
|
part gpcaDeviceSensors : HardwareAssembly {
|
|
49
60
|
attribute :>> id = "HW-001";
|
|
@@ -250,17 +261,16 @@ package memo_examples_gpca_pump_model_catalog_gpca_architecture {
|
|
|
250
261
|
}
|
|
251
262
|
|
|
252
263
|
// ── Structural composition ──────────────────────────────────
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
connection : Composes connect parent ::>
|
|
256
|
-
connection : Composes connect parent ::>
|
|
257
|
-
connection : Composes connect parent ::>
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
connection : Composes connect parent ::> gpcaActuators to child ::> operatorDisplay;
|
|
264
|
+
// Device level (GPCA_Device.aadl): the assemblies and the software system
|
|
265
|
+
// the device is built from.
|
|
266
|
+
connection : Composes connect parent ::> gpcaDevice to child ::> gpcaDeviceSensors;
|
|
267
|
+
connection : Composes connect parent ::> gpcaDevice to child ::> gpcaActuators;
|
|
268
|
+
connection : Composes connect parent ::> gpcaDevice to child ::> gpcaSoftware;
|
|
269
|
+
|
|
270
|
+
// The physical parts below are MEMO design extensions derived from system
|
|
271
|
+
// requirements and hazard analysis, not subcomponents in the published
|
|
272
|
+
// AADL packages. They intentionally remain outside this AADL composition
|
|
273
|
+
// until a project authority defines their interfaces and ownership.
|
|
264
274
|
connection : Composes connect parent ::> gpcaSoftware to child ::> tlm;
|
|
265
275
|
connection : Composes connect parent ::> gpcaSoftware to child ::> config;
|
|
266
276
|
connection : Composes connect parent ::> gpcaSoftware to child ::> alarm;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_gpca_pump_gpca_behavior_actions {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
|
-
private import
|
|
3
|
+
private import memo_examples_gpca_pump_gpca_architecture::*;
|
|
4
4
|
|
|
5
5
|
private import memo_architecture_functional_behavior::*;
|
|
6
6
|
private import memo_architecture_logical_interfaces::*;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
4
|
private import memo_architecture_functional_behavior::*;
|
|
@@ -13,13 +13,19 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
|
|
|
13
13
|
// auto-initiate on the prescribed schedule (REQ 24), with no
|
|
14
14
|
// external trigger. Mode-tree containment edges (Composes)
|
|
15
15
|
// live in gpca_trace.sysml.
|
|
16
|
+
// Audit scope: this is a requirements-level therapy-mode abstraction, not
|
|
17
|
+
// a full transcription of CITE-009's monolithic Stateflow chart. The
|
|
18
|
+
// source chart also contains detailed Configuration, Alarms,
|
|
19
|
+
// System_Monitor, Log, and Infusion_Manager state behavior that remains
|
|
20
|
+
// outside this compact mode view.
|
|
16
21
|
// ═════════════════════════════════════════════════════════════
|
|
17
22
|
state topLevelModeMachine : StateMachine {
|
|
18
23
|
attribute :>> id = "BM-001";
|
|
19
24
|
attribute :>> name = "TopLevelModeMachine";
|
|
20
25
|
attribute :>> machineKind = "hierarchical state machine";
|
|
21
26
|
attribute :>> executionSemantics = "single-step synchronous; sub-modes inherit all parent-mode requirements";
|
|
22
|
-
attribute
|
|
27
|
+
attribute fidelityScope = "Requirements-derived therapy mode hierarchy; partial abstraction of CITE-009, not a state-for-state Stateflow transcription";
|
|
28
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1 Fig 4.1; CITE-009: CriSys PCA Pump Software Model";
|
|
23
29
|
}
|
|
24
30
|
|
|
25
31
|
// ── Mode states (Fig 4.1) ───────────────────────────────────
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_gpca_pump_gpca_behavior_subsystems {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
4
|
private import memo_architecture_functional_functions::*;
|
|
5
5
|
private import memo_core_enumerations::*;
|
|
6
|
+
private import memo_architecture_logical_interfaces::*;
|
|
7
|
+
private import memo_architecture_operational_use_cases::*;
|
|
8
|
+
private import memo_assurance_requirements::*;
|
|
9
|
+
private import memo_core_common::*;
|
|
6
10
|
|
|
7
11
|
// ── Logical functions ───────────────────────────────────────
|
|
8
12
|
part fnAcquireSensors : SystemFunction {
|
|
@@ -110,7 +114,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
110
114
|
attribute :>> id = "LF-001";
|
|
111
115
|
attribute :>> name = "SensorAcquisitionFlow";
|
|
112
116
|
attribute :>> flowKind = FlowKind::measurement;
|
|
113
|
-
attribute :>> direction = DirectionKind::input;
|
|
114
117
|
attribute :>> latencyBudgetMs = 20.0;
|
|
115
118
|
attribute :>> staleAfterMs = 40.0;
|
|
116
119
|
attribute :>> integrityLevel = "class C data path";
|
|
@@ -121,7 +124,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
121
124
|
attribute :>> id = "LF-002";
|
|
122
125
|
attribute :>> name = "FlowCommandFlow";
|
|
123
126
|
attribute :>> flowKind = FlowKind::command;
|
|
124
|
-
attribute :>> direction = DirectionKind::output;
|
|
125
127
|
attribute :>> latencyBudgetMs = 20.0;
|
|
126
128
|
attribute :>> staleAfterMs = 20.0;
|
|
127
129
|
attribute :>> integrityLevel = "class C command path";
|
|
@@ -132,7 +134,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
132
134
|
attribute :>> id = "LF-003";
|
|
133
135
|
attribute :>> name = "AlarmSignalFlow";
|
|
134
136
|
attribute :>> flowKind = FlowKind::alarm;
|
|
135
|
-
attribute :>> direction = DirectionKind::output;
|
|
136
137
|
attribute :>> latencyBudgetMs = 20.0;
|
|
137
138
|
attribute :>> staleAfterMs = 20.0;
|
|
138
139
|
attribute :>> integrityLevel = "class C alarm path; same-step delivery to infusion manager";
|
|
@@ -143,7 +144,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems {
|
|
|
143
144
|
attribute :>> id = "LF-004";
|
|
144
145
|
attribute :>> name = "PrescriptionEntryFlow";
|
|
145
146
|
attribute :>> flowKind = FlowKind::configuration;
|
|
146
|
-
attribute :>> direction = DirectionKind::input;
|
|
147
147
|
attribute :>> latencyBudgetMs = 500.0;
|
|
148
148
|
attribute :>> staleAfterMs = 0.0;
|
|
149
149
|
attribute :>> integrityLevel = "confirmed double-entry path";
|