@memoarchitect/ontology 0.6.5 → 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/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 +1 -1
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +2 -2
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +1 -1
- 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 +7 -6
- 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 +1 -1
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +34 -30
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +27 -23
- 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 +3 -3
- 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 +2 -4
- 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 +30 -73
- 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 +4 -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
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ pin an exact release; the package has no repository or runtime dependency on Mem
|
|
|
23
23
|
Tools or Memo Architect.
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
|
-
pnpm add @memoarchitect/ontology@0.
|
|
26
|
+
pnpm add @memoarchitect/ontology@0.7.0
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
> **Pre-1.0 notice:** ontology names, relationships, and package layout may
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Connected Patient Monitor — project identity and method binding.
|
|
2
|
+
//
|
|
3
|
+
// The native entrypoint. The imports name what this project contains and the
|
|
4
|
+
// binding names the methodology it is governed by. No YAML file participates.
|
|
5
|
+
package memo_examples_connected_patient_monitor_project {
|
|
6
|
+
private import ScalarValues::*;
|
|
7
|
+
|
|
8
|
+
private import memo_core_enumerations::*;
|
|
9
|
+
private import memo_methodology_core::*;
|
|
10
|
+
private import memo_methodology_profiles::*;
|
|
11
|
+
|
|
12
|
+
// The project's own content, imported so the catalog is one reachable
|
|
13
|
+
// closure from a single entrypoint.
|
|
14
|
+
private import memo_examples_connected_patient_monitor_viewpoints_unassigned::*;
|
|
15
|
+
private import memo_examples_connected_patient_monitor_viewpoints_unassigned_views_connected_patient_monitor_overview::*;
|
|
16
|
+
|
|
17
|
+
part projectBinding : ProjectMethodBinding {
|
|
18
|
+
attribute :>> id = "PMB-PATIENT-MONITOR-001";
|
|
19
|
+
attribute :>> name = "ConnectedPatientMonitorProjectMethodBinding";
|
|
20
|
+
attribute :>> projectName = "Connected Patient Monitor";
|
|
21
|
+
ref :>> selectedMethodology = mdDefaultDefinition;
|
|
22
|
+
attribute :>> scopeMode = ScopeModeKind::explicit;
|
|
23
|
+
}
|
|
24
|
+
}
|
package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/viewpoint.sysml
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// unassigned viewpoint.
|
|
2
|
+
//
|
|
3
|
+
// This project does not define its own viewpoint here; it binds the reusable
|
|
4
|
+
// MEMO viewpoint that frames these concerns. The views it governs sit beneath
|
|
5
|
+
// `views/`.
|
|
6
|
+
package memo_examples_connected_patient_monitor_viewpoints_unassigned {
|
|
7
|
+
// The reusable package declaring unassigned could not be resolved during
|
|
8
|
+
// conversion. Import it here so the views beneath this viewpoint resolve.
|
|
9
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_connected_patient_monitor_viewpoints_unassigned_views_connected_patient_monitor_overview {
|
|
2
2
|
private import memo_examples_connected_patient_monitor::*;
|
|
3
3
|
private import memo_viewpoints_definitions::*;
|
|
4
4
|
private import memo_core_enumerations::*;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Embedded Infusion Pump — project identity and method binding.
|
|
2
|
+
//
|
|
3
|
+
// The native entrypoint. The imports name what this project contains and the
|
|
4
|
+
// binding names the methodology it is governed by. No YAML file participates.
|
|
5
|
+
package memo_examples_embedded_infusion_pump_project {
|
|
6
|
+
private import ScalarValues::*;
|
|
7
|
+
|
|
8
|
+
private import memo_core_enumerations::*;
|
|
9
|
+
private import memo_methodology_core::*;
|
|
10
|
+
private import memo_methodology_profiles::*;
|
|
11
|
+
|
|
12
|
+
// The project's own content, imported so the catalog is one reachable
|
|
13
|
+
// closure from a single entrypoint.
|
|
14
|
+
private import memo_examples_embedded_infusion_pump_viewpoints_unassigned::*;
|
|
15
|
+
private import memo_examples_embedded_infusion_pump_viewpoints_unassigned_views_embedded_infusion_pump_overview::*;
|
|
16
|
+
|
|
17
|
+
part projectBinding : ProjectMethodBinding {
|
|
18
|
+
attribute :>> id = "PMB-INFUSION-PUMP-001";
|
|
19
|
+
attribute :>> name = "EmbeddedInfusionPumpProjectMethodBinding";
|
|
20
|
+
attribute :>> projectName = "Embedded Infusion Pump";
|
|
21
|
+
ref :>> selectedMethodology = mdDefaultDefinition;
|
|
22
|
+
attribute :>> scopeMode = ScopeModeKind::explicit;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// unassigned viewpoint.
|
|
2
|
+
//
|
|
3
|
+
// This project does not define its own viewpoint here; it binds the reusable
|
|
4
|
+
// MEMO viewpoint that frames these concerns. The views it governs sit beneath
|
|
5
|
+
// `views/`.
|
|
6
|
+
package memo_examples_embedded_infusion_pump_viewpoints_unassigned {
|
|
7
|
+
// The reusable package declaring unassigned could not be resolved during
|
|
8
|
+
// conversion. Import it here so the views beneath this viewpoint resolve.
|
|
9
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_embedded_infusion_pump_viewpoints_unassigned_views_embedded_infusion_pump_overview {
|
|
2
2
|
private import memo_examples_embedded_infusion_pump::*;
|
|
3
3
|
private import memo_viewpoints_definitions::*;
|
|
4
4
|
private import memo_core_enumerations::*;
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
# Application/distribution descriptor for this MEMO package.
|
|
2
|
+
#
|
|
3
|
+
# Identity and location only. It records what this package is called, what
|
|
4
|
+
# version it is, and where its SysML source sits so a resolver can find it.
|
|
5
|
+
# It does not select model content: the project's native SysML imports and its
|
|
6
|
+
# ProjectMethodBinding decide what is in the model. Semantic fields
|
|
7
|
+
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
|
+
# removed at the native semantic flip and are now rejected if present.
|
|
9
|
+
name: '@memoarchitect/example-extension-clinical'
|
|
10
|
+
version: 0.6.1
|
|
11
|
+
description: Example methodology extension for clinical-procedure vocabulary
|
|
12
|
+
license: MIT
|
|
13
|
+
tags:
|
|
14
|
+
- memo
|
|
15
|
+
- methodology
|
|
16
|
+
- extension
|
|
17
|
+
- clinical
|
|
18
|
+
sysmlDir: ./src
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
package memo_extension_clinical_methodology {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
private import memo_methodology_core::*;
|
|
4
|
+
private import memo_methodology_profiles::*;
|
|
5
|
+
private import memo_core_enumerations::*;
|
|
4
6
|
|
|
5
7
|
part clinicalExtensionMethod : MethodologyDefinition {
|
|
6
8
|
attribute :>> id = "EXT-CLINICAL-001";
|
|
7
9
|
attribute :>> name = "ClinicalProcedureExtension";
|
|
8
|
-
attribute :>> version = "0.6.
|
|
10
|
+
attribute :>> version = "0.6.5";
|
|
9
11
|
attribute :>> domain = "clinical procedures";
|
|
10
12
|
attribute :>> description = "Adds optional clinical-procedure vocabulary to a MEMO project.";
|
|
11
|
-
|
|
13
|
+
// The base is a typed SysML reference, not a name to keep in sync with
|
|
14
|
+
// another file. `baseMethodName` was the pre-flip spelling and no
|
|
15
|
+
// longer resolves.
|
|
16
|
+
ref :>> baseMethodology = mdDefaultDefinition;
|
|
17
|
+
// An extension adds its own module to whatever its base selected;
|
|
18
|
+
// saying so explicitly is required now that an empty list means empty.
|
|
19
|
+
attribute :>> scopeMode = ScopeModeKind::explicit;
|
|
12
20
|
attribute :>> includedModule = "memo_extension_clinical";
|
|
13
21
|
}
|
|
14
22
|
}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
# Application/distribution descriptor for this MEMO package.
|
|
2
|
+
#
|
|
3
|
+
# Identity and location only. It records what this package is called, what
|
|
4
|
+
# version it is, and where its SysML source sits so a resolver can find it.
|
|
5
|
+
# It does not select model content: the project's native SysML imports and its
|
|
6
|
+
# ProjectMethodBinding decide what is in the model. Semantic fields
|
|
7
|
+
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
|
+
# removed at the native semantic flip and are now rejected if present.
|
|
9
|
+
name: '{{name}}'
|
|
10
|
+
version: 0.1.0
|
|
11
|
+
description: MEMO methodology extension
|
|
12
|
+
license: MIT
|
|
13
|
+
tags:
|
|
14
|
+
- memo
|
|
15
|
+
- methodology
|
|
16
|
+
- extension
|
|
17
|
+
sysmlDir: ./src
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Functional Logical Physical — project identity and method binding.
|
|
2
|
+
//
|
|
3
|
+
// The native entrypoint. The imports name what this project contains and the
|
|
4
|
+
// binding names the methodology it is governed by. No YAML file participates.
|
|
5
|
+
package memo_examples_functional_logical_physical_project {
|
|
6
|
+
private import ScalarValues::*;
|
|
7
|
+
|
|
8
|
+
private import memo_core_enumerations::*;
|
|
9
|
+
private import memo_methodology_core::*;
|
|
10
|
+
private import memo_methodology_profiles::*;
|
|
11
|
+
|
|
12
|
+
// The project's own content, imported so the catalog is one reachable
|
|
13
|
+
// closure from a single entrypoint.
|
|
14
|
+
private import memo_examples_functional_logical_physical_viewpoints_unassigned::*;
|
|
15
|
+
private import memo_examples_functional_logical_physical_viewpoints_unassigned_views_functional_logical_physical_overview::*;
|
|
16
|
+
|
|
17
|
+
part projectBinding : ProjectMethodBinding {
|
|
18
|
+
attribute :>> id = "PMB-LOGICAL-PHYSICAL-001";
|
|
19
|
+
attribute :>> name = "FunctionalLogicalPhysicalProjectMethodBinding";
|
|
20
|
+
attribute :>> projectName = "Functional Logical Physical";
|
|
21
|
+
ref :>> selectedMethodology = mdDefaultDefinition;
|
|
22
|
+
attribute :>> scopeMode = ScopeModeKind::explicit;
|
|
23
|
+
}
|
|
24
|
+
}
|
package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/viewpoint.sysml
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// unassigned viewpoint.
|
|
2
|
+
//
|
|
3
|
+
// This project does not define its own viewpoint here; it binds the reusable
|
|
4
|
+
// MEMO viewpoint that frames these concerns. The views it governs sit beneath
|
|
5
|
+
// `views/`.
|
|
6
|
+
package memo_examples_functional_logical_physical_viewpoints_unassigned {
|
|
7
|
+
// The reusable package declaring unassigned could not be resolved during
|
|
8
|
+
// conversion. Import it here so the views beneath this viewpoint resolve.
|
|
9
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_functional_logical_physical_viewpoints_unassigned_views_functional_logical_physical_overview {
|
|
2
2
|
private import memo_examples_functional_logical_physical::*;
|
|
3
3
|
private import memo_viewpoints_definitions::*;
|
|
4
4
|
private import memo_core_enumerations::*;
|
|
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,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,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";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_gpca_pump_gpca_context {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
4
|
private import memo_architecture_operational_context_actors::*;
|
|
@@ -13,7 +13,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_context {
|
|
|
13
13
|
attribute :>> name = "GPCA_IntendedUse";
|
|
14
14
|
attribute :>> title = "GPCA Pump Intended Use";
|
|
15
15
|
attribute :>> shortDescription = "Patient-controlled analgesia infusion of prescribed opioid analgesics.";
|
|
16
|
-
attribute :>>
|
|
16
|
+
attribute :>> description = "The GPCA pump delivers a prescribed analgesic drug intravenously at a programmed basal rate, supplemented by square boluses delivered automatically at programmed intervals and by patient-requested bolus doses, subject to lockout intervals and maximum-dose limits.";
|
|
17
17
|
attribute :>> indication = "Management of acute post-operative or chronic pain requiring titrated intravenous opioid analgesia.";
|
|
18
18
|
attribute :>> contraindication = "Patients unable to comprehend or operate the bolus request mechanism; drugs without safe-value records in the hospital pharmacy database.";
|
|
19
19
|
attribute :>> patientPopulation = "Adult in-patients under clinical supervision.";
|
|
@@ -26,7 +26,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_context {
|
|
|
26
26
|
attribute :>> name = "BolusRequestBySomeoneOtherThanPatient";
|
|
27
27
|
attribute :>> title = "Bolus by proxy";
|
|
28
28
|
attribute :>> shortDescription = "A caregiver or visitor presses the patient bolus control.";
|
|
29
|
-
attribute :>>
|
|
29
|
+
attribute :>> description = "A person other than the patient activates the bolus request control, bypassing the intended patient self-limiting behavior.";
|
|
30
30
|
attribute :>> misuseContext = "Patient-controlled analgesia in a supervised hospital setting.";
|
|
31
31
|
attribute :>> foreseeableBasis = "Known PCA use pattern represented in the GPCA hazard analysis.";
|
|
32
32
|
attribute :>> affectedUseContext = "UC-001";
|
|
@@ -51,7 +51,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_context {
|
|
|
51
51
|
attribute :>> actorKind = ActorKind::patient;
|
|
52
52
|
attribute :>> id = "ACT-001";
|
|
53
53
|
attribute :>> name = "Patient";
|
|
54
|
-
attribute :>> actorKind = ActorKind::patient;
|
|
55
54
|
attribute :>> trainingLevel = "instructed by clinician on bolus request button only";
|
|
56
55
|
attribute :>> description = "Receives the infusion and requests bolus doses via the patient pendant.";
|
|
57
56
|
}
|
|
@@ -59,7 +58,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_context {
|
|
|
59
58
|
attribute :>> actorKind = ActorKind::clinician;
|
|
60
59
|
attribute :>> id = "ACT-002";
|
|
61
60
|
attribute :>> name = "ClinicianNurse";
|
|
62
|
-
attribute :>> actorKind = ActorKind::clinician;
|
|
63
61
|
attribute :>> trainingLevel = "trained clinical user; programs prescriptions and responds to alarms";
|
|
64
62
|
attribute :>> description = "Loads the drug reservoir, programs and confirms the prescription, starts/stops therapy, and responds to alarms.";
|
|
65
63
|
}
|
|
@@ -67,7 +65,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_context {
|
|
|
67
65
|
attribute :>> actorKind = ActorKind::clinician;
|
|
68
66
|
attribute :>> id = "ACT-003";
|
|
69
67
|
attribute :>> name = "PrescribingPhysician";
|
|
70
|
-
attribute :>> actorKind = ActorKind::clinician;
|
|
71
68
|
attribute :>> trainingLevel = "licensed prescriber";
|
|
72
69
|
attribute :>> description = "Prescribes drug, concentration, basal rate, bolus volume, lockout interval, and maximum dose limits.";
|
|
73
70
|
}
|
|
@@ -75,7 +72,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_context {
|
|
|
75
72
|
attribute :>> actorKind = ActorKind::clinician;
|
|
76
73
|
attribute :>> id = "ACT-004";
|
|
77
74
|
attribute :>> name = "Pharmacist";
|
|
78
|
-
attribute :>> actorKind = ActorKind::clinician;
|
|
79
75
|
attribute :>> trainingLevel = "licensed pharmacist";
|
|
80
76
|
attribute :>> description = "Prepares the drug reservoir and verifies drug and concentration against the prescription.";
|
|
81
77
|
}
|
|
@@ -83,7 +79,6 @@ package memo_examples_gpca_pump_model_catalog_gpca_context {
|
|
|
83
79
|
attribute :>> actorKind = ActorKind::technician;
|
|
84
80
|
attribute :>> id = "ACT-005";
|
|
85
81
|
attribute :>> name = "BiomedicalTechnician";
|
|
86
|
-
attribute :>> actorKind = ActorKind::technician;
|
|
87
82
|
attribute :>> trainingLevel = "service-trained; authenticated service access";
|
|
88
83
|
attribute :>> description = "Performs maintenance, battery replacement, and calibration through the service interface.";
|
|
89
84
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_gpca_pump_gpca_cybersecurity {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
4
|
private import memo_assurance_cybersecurity::*;
|
|
@@ -7,10 +7,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_cybersecurity {
|
|
|
7
7
|
private import memo_assurance_verification_validation::*;
|
|
8
8
|
private import memo_core_enumerations::*;
|
|
9
9
|
private import memo_core_relationships::*;
|
|
10
|
-
private import
|
|
11
|
-
private import
|
|
12
|
-
private import
|
|
13
|
-
private import
|
|
10
|
+
private import memo_examples_gpca_pump_gpca_architecture::*;
|
|
11
|
+
private import memo_examples_gpca_pump_gpca_risk::*;
|
|
12
|
+
private import memo_examples_gpca_pump_gpca_requirements::*;
|
|
13
|
+
private import memo_examples_gpca_pump_gpca_verification::*;
|
|
14
14
|
|
|
15
15
|
part therapyConfigurationAsset : CybersecurityAsset {
|
|
16
16
|
attribute :>> id = "AST-CYB-001";
|
|
@@ -78,7 +78,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_cybersecurity {
|
|
|
78
78
|
attribute :>> cweReference = "CWE-798";
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
action tamperedConfigurationScenario : ThreatScenario {
|
|
82
82
|
attribute :>> id = "SCN-001";
|
|
83
83
|
attribute :>> name = "TamperedTherapyConfigurationScenario";
|
|
84
84
|
attribute :>> description = "An attacker with local access to the maintenance port alters lockout or dose parameters, aiming to bypass safety limits; may enable unsafe therapy delivery or bypass safeguards.";
|