@memoarchitect/ontology 0.7.0 → 0.8.24
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 +4 -2
- package/examples/connected-patient-monitor/memo.package.yaml +3 -0
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
- package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
- package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +8 -6
- package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
- package/examples/functional-logical-physical/memo.package.yaml +3 -0
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +6 -6
- package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
- package/examples/gpca-pump/memo.package.yaml +3 -0
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +18 -8
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +341 -99
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +25 -11
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +328 -271
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +52 -11
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +14 -3
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +8 -5
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +175 -259
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +97 -103
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +5 -10
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +101 -100
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +17 -17
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +274 -334
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +115 -35
- package/examples/gpca-pump/model/catalog/project.sysml +5 -0
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +1 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +2 -5
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -7
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +5 -8
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +5 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +2 -5
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +5 -6
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +5 -6
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
- package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +1 -1
- package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
- package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +4 -3
- package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
- package/examples/multidimensional-layers/memo.package.yaml +3 -0
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
- package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
- package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +133 -128
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +139 -157
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +56 -33
- package/examples/nested-architecture-dsm/model/catalog/traces.sysml +25 -26
- package/examples/reusable-instrument/memo.package.yaml +3 -0
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +16 -23
- package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
- package/examples/ros-mobile-robot/README.md +40 -0
- package/examples/ros-mobile-robot/memo.package.yaml +3 -0
- package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
- package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
- package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +12 -0
- package/examples/software-only-medical-device/memo.package.yaml +3 -0
- package/examples/software-only-medical-device/model/catalog/project.sysml +4 -0
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +12 -6
- package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
- package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +58 -75
- package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
- package/examples/surgical-robot/memo.package.yaml +3 -0
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +1 -1
- package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
- package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -18
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -11
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +43 -68
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +57 -68
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +40 -70
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +4 -8
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +1 -20
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +52 -84
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +22 -33
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +13 -10
- package/examples/temperature-alarm/memo.package.yaml +3 -0
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +28 -25
- package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
- package/examples/ui-screen-regions/memo.package.yaml +3 -0
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +57 -33
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +102 -79
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +5 -5
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +21 -6
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/traces.sysml +28 -125
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +2 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +1 -2
- package/extensions/LICENSES/MIT.txt +19 -0
- package/extensions/README.md +94 -0
- package/extensions/aadl/memo.package.yaml +18 -0
- package/extensions/aadl/src/aadl_extension.sysml +6 -0
- package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
- package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
- package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
- package/extensions/cloud/memo.package.yaml +18 -0
- package/extensions/cloud/src/cloud_extension.sysml +44 -0
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
- package/extensions/container/memo.package.yaml +18 -0
- package/extensions/container/src/container_extension.sysml +37 -0
- package/extensions/container/src/methodology/container_methodology.sysml +17 -0
- package/extensions/messaging/memo.package.yaml +18 -0
- package/extensions/messaging/src/messaging_extension.sysml +64 -0
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
- package/extensions/ros/memo.package.yaml +18 -0
- package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
- package/extensions/ros/src/ros_extension.sysml +200 -0
- package/extensions/template/src/extension.sysml +37 -0
- package/memo.manifest.yaml +13 -2
- package/methodologies/default/memo.package.yaml +1 -1
- package/methodologies/gpca/memo.package.yaml +1 -1
- package/ontology/memo.package.yaml +1 -1
- package/package.json +5 -3
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/decisions/memo_decisions.sysml +23 -2
- package/src/architecture/functional/behavior/memo_behavior.sysml +51 -23
- package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
- package/src/architecture/functional/functions/memo_functions.sysml +93 -36
- package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +2 -2
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -22
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +40 -13
- package/src/architecture/implementation/ui/memo_ui.sysml +83 -43
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +64 -12
- package/src/architecture/logical/structure/memo_logical_structure.sysml +26 -25
- package/src/architecture/operational/activities/memo_activities.sysml +27 -29
- package/src/architecture/operational/context/actors/memo_actors.sysml +8 -10
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +16 -33
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -17
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +36 -84
- package/src/architecture/operational/structure/memo_operational.sysml +42 -13
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -27
- package/src/architecture/operational/workflows/memo_workflows.sysml +45 -28
- package/src/architecture/realization/deployment/memo_deployment.sysml +115 -20
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +29 -4
- package/src/artifacts/configuration_management/memo_configuration_management.sysml +16 -0
- package/src/artifacts/core/memo_controlled_artifacts.sysml +3 -1
- package/src/artifacts/standards/cfr_21_820.sysml +116 -0
- package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
- package/src/artifacts/standards/iec_60601_1.sysml +149 -0
- package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
- package/src/artifacts/standards/iec_60812.sysml +51 -0
- package/src/artifacts/standards/iec_62304.sysml +210 -0
- package/src/artifacts/standards/iec_62366_1.sysml +113 -0
- package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
- package/src/artifacts/standards/iso_13485.sysml +113 -0
- package/src/artifacts/standards/iso_14971.sysml +94 -0
- package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
- package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
- package/src/artifacts/templates/dhf/21cfr820/design-input.md +1 -1
- package/src/artifacts/templates/dhf/21cfr820/design-output.md +5 -5
- package/src/artifacts/templates/dhf/21cfr820/design-review.md +1 -1
- package/src/artifacts/templates/dhf/21cfr820/design-validation.md +2 -2
- package/src/artifacts/templates/dhf/21cfr820/design-verification.md +2 -2
- package/src/artifacts/templates/dhf/21cfr820/dhf-index.md +2 -2
- package/src/artifacts/templates/dhf/21cfr820/transfer-plan.md +1 -1
- package/src/artifacts/templates/dhf/21cfr820/user-needs.md +1 -1
- package/src/artifacts/templates/dhf/21cfr820/vv-plan.md +3 -3
- package/src/artifacts/templates/dhf/21cfr820/vv-report.md +4 -4
- package/src/artifacts/templates/dhf/fda-cybersecurity/incident-response.md +1 -1
- package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +3 -2
- package/src/artifacts/templates/dhf/fda-cybersecurity/security-arch.md +2 -2
- package/src/artifacts/templates/dhf/fda-cybersecurity/threat-model.md +4 -4
- package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +4 -3
- package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
- package/src/artifacts/templates/dhf/iec-62304/detailed-design.md +1 -1
- package/src/artifacts/templates/dhf/iec-62304/integration-test.md +3 -3
- package/src/artifacts/templates/dhf/iec-62304/sad.md +6 -5
- package/src/artifacts/templates/dhf/iec-62304/sbom.md +3 -2
- package/src/artifacts/templates/dhf/iec-62304/sdp.md +5 -4
- package/src/artifacts/templates/dhf/iec-62304/soup.md +4 -2
- package/src/artifacts/templates/dhf/iec-62304/srs.md +54 -20
- package/src/artifacts/templates/dhf/iec-62304/sw-traceability.md +3 -3
- package/src/artifacts/templates/dhf/iec-62304/system-test.md +1 -1
- package/src/artifacts/templates/dhf/iec-62366/summative-eval.md +1 -1
- package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +40 -4
- package/src/artifacts/templates/dhf/iec-62366/ue-plan.md +1 -1
- package/src/artifacts/templates/dhf/iec-62366/urra.md +3 -3
- package/src/artifacts/templates/dhf/iso-14971/fmea.md +42 -19
- package/src/artifacts/templates/dhf/iso-14971/har.md +3 -3
- package/src/artifacts/templates/dhf/iso-14971/rmp.md +2 -2
- package/src/artifacts/templates/dhf/system/sad.md +173 -0
- package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
- package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
- package/src/artifacts/templates/dhf/system/syrs.md +128 -0
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +40 -21
- package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
- package/src/assurance/requirements/memo_requirements.sysml +7 -20
- package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
- package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
- package/src/assurance/safety_risk/memo_risk.sysml +90 -7
- package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +16 -0
- package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
- package/src/core/annotations/memo_annotations.sysml +25 -6
- package/src/core/common/memo_common.sysml +130 -21
- package/src/core/consistency_rules/consistency_rules.sysml +1 -1
- package/src/core/dimensions/dimensions.sysml +12 -0
- package/src/core/enumerations/memo_enumerations.sysml +60 -14
- package/src/core/relationships/memo_relationships.sysml +199 -196
- package/src/memo_namespaces.sysml +30 -0
- package/src/methodology/core/memo_core.sysml +24 -0
- package/src/methodology/profiles/memo_profiles.sysml +1 -1
- package/src/methodology/workflow/memo_workflow.sysml +5 -5
- package/src/rules/closure/closure_rules.sysml +20 -20
- package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
- package/src/rules/ontology/ontology_invariants.sysml +223 -11
- package/src/rules/quantitative/quantitative_rules.sysml +2 -2
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +30 -30
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
- package/src/viewpoints/context/context_viewpoint.sysml +2 -3
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +1 -2
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -4
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +46 -3
- package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -3
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -3
- package/src/viewpoints/logical/logical_viewpoint.sysml +1 -2
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +1 -2
- package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +2 -3
- package/src/viewpoints/physical/physical_viewpoint.sysml +1 -2
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +1 -2
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +1 -2
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +1 -2
- package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +1 -2
- package/src/viewpoints/software/software_viewpoint.sysml +1 -2
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +1 -2
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
- package/src/viewpoints/usability/usability_viewpoint.sysml +1 -2
- package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -3
- package/templates/connected-device/memo.package.yaml +2 -0
- package/templates/default/memo.package.yaml +2 -0
- package/templates/infusion-pump/memo.package.yaml +2 -0
- package/templates/monitoring-device/memo.package.yaml +2 -0
- package/templates/samd/memo.package.yaml +2 -0
- package/examples/extensions/README.md +0 -16
- package/examples/extensions/template/src/extension.sysml +0 -15
- package/examples/gpca-pump/gpca-pump.kpar +0 -0
- /package/{examples/extensions → extensions}/clinical/memo.package.yaml +0 -0
- /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
- /package/{examples/extensions → extensions}/clinical/src/methodology/clinical_methodology.sysml +0 -0
- /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
- /package/{examples/extensions → extensions}/template/memo.package.yaml +0 -0
package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml
CHANGED
|
@@ -25,16 +25,25 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_use_case
|
|
|
25
25
|
attribute :>> id = "UC-SAMPLE-001";
|
|
26
26
|
attribute :>> name = "Review Device Status";
|
|
27
27
|
attribute :>> useCaseKind = UseCaseKind::clinical;
|
|
28
|
+
include validateTherapySettings;
|
|
29
|
+
subject supportingSystem;
|
|
30
|
+
actor patientActor = patient;
|
|
28
31
|
}
|
|
29
32
|
use case configureTherapy : UseCase {
|
|
30
33
|
attribute :>> id = "UC-SAMPLE-002";
|
|
31
34
|
attribute :>> name = "Configure Therapy";
|
|
32
35
|
attribute :>> useCaseKind = UseCaseKind::clinical;
|
|
36
|
+
include reviewStatus;
|
|
37
|
+
subject supportingSystem;
|
|
38
|
+
actor clinicianInitiator = clinician;
|
|
39
|
+
actor patientActor = patient;
|
|
33
40
|
}
|
|
34
41
|
use case maintainDevice : UseCase {
|
|
35
42
|
attribute :>> id = "UC-SAMPLE-003";
|
|
36
43
|
attribute :>> name = "Maintain Device";
|
|
37
44
|
attribute :>> useCaseKind = UseCaseKind::service;
|
|
45
|
+
subject supportingSystem;
|
|
46
|
+
actor serviceTechnicianActor = serviceTechnician;
|
|
38
47
|
}
|
|
39
48
|
|
|
40
49
|
use case documentTreatment : UseCase {
|
|
@@ -48,15 +57,10 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_use_case
|
|
|
48
57
|
attribute :>> id = "UC-SAMPLE-005";
|
|
49
58
|
attribute :>> name = "Validate Therapy Settings";
|
|
50
59
|
attribute :>> useCaseKind = UseCaseKind::clinical;
|
|
60
|
+
subject supportingSystem;
|
|
61
|
+
actor clinicianActor = clinician;
|
|
51
62
|
}
|
|
52
63
|
|
|
53
|
-
connection : Initiates connect initiatingUser ::> clinician to initiatedUseCase ::> configureTherapy;
|
|
54
|
-
connection : ParticipatesIn connect participatingActor ::> patient to useCase ::> reviewStatus;
|
|
55
|
-
connection : ParticipatesIn connect participatingActor ::> patient to useCase ::> configureTherapy;
|
|
56
|
-
connection : ParticipatesIn connect participatingActor ::> serviceTechnician to useCase ::> maintainDevice;
|
|
57
|
-
connection : ParticipatesIn connect participatingActor ::> clinician to useCase ::> validateTherapySettings;
|
|
58
|
-
connection : Includes connect includingUseCase ::> configureTherapy to includedUseCase ::> reviewStatus;
|
|
59
|
-
connection : Includes connect includingUseCase ::> reviewStatus to includedUseCase ::> validateTherapySettings;
|
|
60
64
|
connection : Extends connect extendingUseCase ::> documentTreatment to extendedUseCase ::> reviewStatus;
|
|
61
65
|
|
|
62
66
|
view sampleUseCaseView : MemoDiagramView {
|
|
@@ -68,14 +72,13 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_use_case
|
|
|
68
72
|
expose maintainDevice;
|
|
69
73
|
expose documentTreatment;
|
|
70
74
|
expose validateTherapySettings;
|
|
71
|
-
attribute :>> title = "Sample · Device Use Cases";
|
|
72
75
|
attribute :>> shortDescription = "Actors outside a device boundary with include, extend, hierarchy-level, and orthogonal-routing presentation.";
|
|
73
76
|
attribute :>> viewKind = DiagramViewKind::general;
|
|
74
77
|
attribute :>> diagramType = "ucd";
|
|
75
|
-
|
|
78
|
+
ref :>> viewpointDefinition = operationalViewpoint;
|
|
76
79
|
part :>> selectionQuery {
|
|
77
80
|
attribute :>> includeElementKinds = ("User", "UseCase");
|
|
78
|
-
attribute :>> includeRelationshipKinds = ("
|
|
81
|
+
attribute :>> includeRelationshipKinds = ("ParticipatesIn", "IncludesStep", "Extends");
|
|
79
82
|
}
|
|
80
83
|
// Presentation is owned by the model view, rather than a canvas control.
|
|
81
84
|
attribute :>> layoutHint = "usecase:level=all;edge=rounded";
|
|
@@ -8,6 +8,7 @@ package memo_examples_temperature_alarm {
|
|
|
8
8
|
private import ScalarValues::*;
|
|
9
9
|
|
|
10
10
|
private import memo_core_enumerations::*;
|
|
11
|
+
private import memo_core_common::*;
|
|
11
12
|
private import memo_core_dimensions::*;
|
|
12
13
|
private import memo_architecture_operational_context_actors::*;
|
|
13
14
|
private import memo_assurance_requirements_needs::*;
|
|
@@ -22,6 +23,7 @@ package memo_examples_temperature_alarm {
|
|
|
22
23
|
private import memo_assurance_human_factors::*;
|
|
23
24
|
private import memo_architecture_implementation_ui::*;
|
|
24
25
|
private import memo_core_relationships::*;
|
|
26
|
+
private import memo_assurance_safety_risk_analysis::*;
|
|
25
27
|
|
|
26
28
|
// ── Operational intent ──────────────────────────────────────
|
|
27
29
|
part icuNurse : User {
|
|
@@ -33,23 +35,24 @@ package memo_examples_temperature_alarm {
|
|
|
33
35
|
attribute :>> id = "TA-UC-001";
|
|
34
36
|
attribute :>> name = "MonitorPatientTemperature";
|
|
35
37
|
attribute :>> goalStatement = "Continuously monitor core temperature and be alerted when it leaves the safe range.";
|
|
38
|
+
subject supportingSystem;
|
|
39
|
+
actor icuNurseInitiator = icuNurse;
|
|
36
40
|
}
|
|
37
|
-
action actAcknowledgeAlarm :
|
|
41
|
+
action actAcknowledgeAlarm : OperativeAction {
|
|
38
42
|
attribute :>> id = "TA-ACT-001"; attribute :>> name = "ReviewAndAcknowledgeAlarm";
|
|
39
43
|
attribute :>> criticality = CriticalityKind::high;
|
|
44
|
+
|
|
45
|
+
action taskAckAlarm : OperativeAction {
|
|
46
|
+
attribute :>> criticality = CriticalityKind::high;
|
|
47
|
+
attribute :>> id = "TA-TASK-001"; attribute :>> name = "AcknowledgeTemperatureAlarm";
|
|
48
|
+
attribute :>> taskGoal = "recognize, assess, and acknowledge the alarm";
|
|
49
|
+
attribute :>> potentialHarm = "delayed intervention for hypo-/hyperthermia";
|
|
50
|
+
attribute :>> severityIfFailed = SeverityKind::serious;
|
|
51
|
+
}
|
|
40
52
|
}
|
|
41
|
-
action taskAckAlarm : UserTask {
|
|
42
|
-
attribute :>> criticality = CriticalityKind::high;
|
|
43
|
-
attribute :>> id = "TA-TASK-001"; attribute :>> name = "AcknowledgeTemperatureAlarm";
|
|
44
|
-
attribute :>> taskGoal = "recognize, assess, and acknowledge the alarm";
|
|
45
|
-
attribute :>> potentialHarm = "delayed intervention for hypo-/hyperthermia";
|
|
46
|
-
attribute :>> severityIfFailed = SeverityKind::serious;
|
|
47
|
-
}
|
|
48
|
-
connection : Initiates connect initiatingUser ::> icuNurse to initiatedUseCase ::> ucMonitorTemp;
|
|
49
|
-
connection : Composes connect parent ::> actAcknowledgeAlarm to child ::> taskAckAlarm;
|
|
50
53
|
|
|
51
54
|
// ── Functional and logical slices ───────────────────────────
|
|
52
|
-
|
|
55
|
+
action fnDetectDeviation : SystemFunction {
|
|
53
56
|
attribute :>> id = "TA-FN-001"; attribute :>> name = "DetectTemperatureDeviation";
|
|
54
57
|
attribute :>> criticality = CriticalityKind::high;
|
|
55
58
|
// This function is owned by the functional architecture layer (its
|
|
@@ -67,8 +70,7 @@ package memo_examples_temperature_alarm {
|
|
|
67
70
|
connection : IndependentOf connect channel ::> chMonitor to otherChannel ::> chPrimary {
|
|
68
71
|
attribute :>> independenceBasis = "separate sensing element and power rail";
|
|
69
72
|
}
|
|
70
|
-
|
|
71
|
-
|
|
73
|
+
allocate fnDetectDeviation to chMonitor;
|
|
72
74
|
// ── UI: alarm element and acknowledgement action ────────────
|
|
73
75
|
part uiBedside : UserInterface {
|
|
74
76
|
attribute :>> id = "TA-UI-001"; attribute :>> name = "BedsideDisplay";
|
|
@@ -84,10 +86,10 @@ package memo_examples_temperature_alarm {
|
|
|
84
86
|
attribute :>> id = "TA-UIA-001"; attribute :>> name = "AcknowledgeAlarm";
|
|
85
87
|
attribute :>> intent = InteractionIntentKind::acknowledgement;
|
|
86
88
|
attribute :>> confirmationRequired = true;
|
|
89
|
+
perform fnDetectDeviation;
|
|
87
90
|
}
|
|
88
91
|
connection : ElementTriggersAction connect element ::> elAlarmBanner to triggeredAction ::> uiaAcknowledge;
|
|
89
|
-
connection :
|
|
90
|
-
connection : Supports { attribute :>> supportKind = SupportKind::task; connect supporter ::> uiBedside to supported ::> taskAckAlarm; }
|
|
92
|
+
connection : Supports { connect supporter ::> uiBedside to supported ::> actAcknowledgeAlarm.taskAckAlarm; }
|
|
91
93
|
|
|
92
94
|
// ── Risk chain with use error ───────────────────────────────
|
|
93
95
|
part ueSilenceAndForget : UseError {
|
|
@@ -101,41 +103,42 @@ package memo_examples_temperature_alarm {
|
|
|
101
103
|
attribute :>> severity = SeverityKind::serious;
|
|
102
104
|
attribute :>> foreseeable = true;
|
|
103
105
|
}
|
|
104
|
-
|
|
106
|
+
part rcReAnnunciate : RiskControlMeasure {
|
|
105
107
|
attribute :>> id = "TA-RC-001"; attribute :>> name = "AutoReAnnunciationAfterSilence";
|
|
106
108
|
attribute :>> controlKind = RiskControlKind::alarm;
|
|
107
109
|
attribute :>> implementationKind = RiskControlImplementationKind::softwareDesign;
|
|
108
110
|
}
|
|
109
|
-
connection : CommitsUseError connect task ::> taskAckAlarm to useError ::> ueSilenceAndForget;
|
|
111
|
+
connection : CommitsUseError connect task ::> actAcknowledgeAlarm.taskAckAlarm to useError ::> ueSilenceAndForget;
|
|
110
112
|
connection : Causes { attribute :>> causeKind = CauseKind::useErrorLeadsToHazard; connect cause ::> ueSilenceAndForget to effect ::> hzUndetectedDeviation; }
|
|
111
113
|
connection : Mitigates { attribute :>> mitigationKind = MitigationKind::hazard; connect control ::> rcReAnnunciate to mitigatedElement ::> hzUndetectedDeviation; }
|
|
112
114
|
connection : ControlImplementedBy connect riskControl ::> rcReAnnunciate to implementingElement ::> elAlarmBanner;
|
|
113
115
|
|
|
114
116
|
// ── Verification, validation, evidence ──────────────────────
|
|
115
|
-
action vsAlarmLatency :
|
|
117
|
+
action vsAlarmLatency : OperativeScenario {
|
|
116
118
|
attribute :>> id = "TA-VS-001"; attribute :>> name = "AlarmLatencyScenario";
|
|
117
|
-
attribute :>> variantKind = ScenarioVariantKind::nominal;
|
|
118
|
-
attribute :>> operationalCondition = OperationalConditionKind::normal;
|
|
119
|
-
attribute :>> scenarioPurpose = ScenarioPurposeKind::memoVerification;
|
|
120
119
|
attribute :>> pathSummary = "Induce out-of-range temperature; measure detection-to-annunciation latency.";
|
|
121
120
|
}
|
|
122
121
|
verification vcAlarmLatency : VerificationCase {
|
|
123
122
|
attribute :>> id = "TA-VC-001"; attribute :>> name = "VerifyAlarmLatency";
|
|
124
123
|
attribute :>> methodKind = VerificationMethodKind::test;
|
|
125
124
|
attribute :>> acceptanceCriteria = "annunciation within 2 s of sustained deviation";
|
|
125
|
+
|
|
126
|
+
subject verified : Base::Anything[*] = (fnDetectDeviation);
|
|
126
127
|
}
|
|
127
|
-
part uvAckTask :
|
|
128
|
+
part uvAckTask : MemoEvidence {
|
|
129
|
+
attribute :>> evidenceKind = EvidenceKind::usabilityValidation;
|
|
128
130
|
attribute :>> id = "TA-UV-001"; attribute :>> name = "SummativeAlarmAcknowledgement";
|
|
129
131
|
attribute :>> participantProfile = "15 ICU nurses, representative shift conditions";
|
|
130
132
|
attribute :>> participantCount = 15;
|
|
131
133
|
attribute :>> acceptanceCriteria = "no critical-task failures; all alarms assessed before silencing";
|
|
132
134
|
}
|
|
133
|
-
part evLatencyReport :
|
|
135
|
+
part evLatencyReport : MemoEvidence {
|
|
136
|
+
attribute :>> evidenceKind = EvidenceKind::evidence;
|
|
134
137
|
attribute :>> id = "TA-EV-001"; attribute :>> name = "AlarmLatencyTestReport";
|
|
135
138
|
attribute :>> evidenceType = "test report";
|
|
136
139
|
}
|
|
137
140
|
connection : ExecutesScenario connect verificationCase ::> vcAlarmLatency to scenario ::> vsAlarmLatency;
|
|
138
|
-
|
|
139
|
-
connection : Validates connect validationCase ::> uvAckTask to validationTarget ::> taskAckAlarm;
|
|
141
|
+
|
|
142
|
+
connection : Validates connect validationCase ::> uvAckTask to validationTarget ::> actAcknowledgeAlarm.taskAckAlarm;
|
|
140
143
|
connection : ProducesEvidence connect producer ::> vcAlarmLatency to producedEvidence ::> evLatencyReport;
|
|
141
144
|
}
|
|
@@ -6,7 +6,6 @@ package memo_examples_temperature_alarm_viewpoints_unassigned_views_temperature_
|
|
|
6
6
|
view temperatureAlarmOverview : MemoDiagramView {
|
|
7
7
|
expose memo_examples_temperature_alarm::*;
|
|
8
8
|
attribute depth = 2;
|
|
9
|
-
attribute :>> title = "Temperature Alarm Overview";
|
|
10
9
|
attribute :>> viewKind = DiagramViewKind::general;
|
|
11
10
|
attribute :>> diagramType = "bdd";
|
|
12
11
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// Functional architecture: the display-management function tree.
|
|
2
2
|
package memo_examples_ui_screen_regions_architecture_functional_functions {
|
|
3
|
+
private import memo_examples_ui_screen_regions_assurance_requirements::*;
|
|
3
4
|
private import ScalarValues::*;
|
|
4
5
|
|
|
5
6
|
private import memo_core_relationships::*;
|
|
@@ -15,46 +16,69 @@ package memo_examples_ui_screen_regions_architecture_functional_functions {
|
|
|
15
16
|
private import memo_core_enumerations::*;
|
|
16
17
|
private import memo_architecture_functional_functions::*;
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
attribute :>> id = "UIR-FN-001"; attribute :>> name = "SetInfusionRate";
|
|
20
|
-
attribute :>> shortDescription = "Apply a clinician-entered rate to the pump controller.";
|
|
21
|
-
attribute :>> description = "Validates a requested infusion rate against the drug library limits and the pump's mechanical range, then commits it to the controller as the active setpoint.";
|
|
22
|
-
attribute :>> criticality = CriticalityKind::high;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
part fnManageInfusionDisplay : SystemFunction {
|
|
19
|
+
action fnManageInfusionDisplay : SystemFunction {
|
|
26
20
|
attribute :>> id = "UIR-FN-002"; attribute :>> name = "ManageInfusionDisplay";
|
|
27
21
|
attribute :>> shortDescription = "Coordinate the running-infusion display and its interactive regions.";
|
|
28
22
|
attribute :>> description = "Maintains the clinician-facing infusion state and delegates rate programming, drug selection, and status presentation to focused child functions.";
|
|
29
23
|
attribute :>> criticality = CriticalityKind::high;
|
|
30
|
-
}
|
|
31
24
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
25
|
+
action fnSetInfusionRate : SystemFunction {
|
|
26
|
+
attribute :>> id = "UIR-FN-001"; attribute :>> name = "SetInfusionRate";
|
|
27
|
+
attribute :>> shortDescription = "Apply a clinician-entered rate to the pump controller.";
|
|
28
|
+
attribute :>> description = "Validates a requested infusion rate against the drug library limits and the pump's mechanical range, then commits it to the controller as the active setpoint.";
|
|
29
|
+
attribute :>> criticality = CriticalityKind::high;
|
|
30
|
+
}
|
|
38
31
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
32
|
+
action fnValidateDrugSelection : SystemFunction {
|
|
33
|
+
attribute :>> id = "UIR-FN-003"; attribute :>> name = "ValidateDrugSelection";
|
|
34
|
+
attribute :>> shortDescription = "Validate a selected drug and concentration against the active care-area library.";
|
|
35
|
+
attribute :>> description = "Accepts only a drug and concentration present in the active drug library, then supplies its dosing limits to rate validation.";
|
|
36
|
+
attribute :>> criticality = CriticalityKind::high;
|
|
37
|
+
}
|
|
45
38
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
39
|
+
action fnPresentDeliveryStatus : SystemFunction {
|
|
40
|
+
attribute :>> id = "UIR-FN-004"; attribute :>> name = "PresentDeliveryStatus";
|
|
41
|
+
attribute :>> shortDescription = "Present current rate and cumulative delivered volume.";
|
|
42
|
+
attribute :>> description = "Refreshes the rate and volume-delivered indicators from controller state at the specified display update interval.";
|
|
43
|
+
attribute :>> criticality = CriticalityKind::medium;
|
|
44
|
+
}
|
|
52
45
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
46
|
+
action fnPresentLocalTime : SystemFunction {
|
|
47
|
+
attribute :>> id = "UIR-FN-005"; attribute :>> name = "PresentLocalTime";
|
|
48
|
+
attribute :>> shortDescription = "Read the synchronized clock and present local time.";
|
|
49
|
+
attribute :>> description = "Formats the device clock as local 24-hour time and refreshes the status-bar value once per second.";
|
|
50
|
+
attribute :>> criticality = CriticalityKind::medium;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
action fnPresentBatteryStatus : SystemFunction {
|
|
54
|
+
attribute :>> id = "UIR-FN-006"; attribute :>> name = "PresentBatteryStatus";
|
|
55
|
+
attribute :>> shortDescription = "Present battery state of charge and low-battery status.";
|
|
56
|
+
attribute :>> description = "Converts battery telemetry into percentage, icon state, and low-battery prominence for the running-infusion screen.";
|
|
57
|
+
attribute :>> criticality = CriticalityKind::medium;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
satisfy reqRateEntry by fnSetInfusionRate;
|
|
59
61
|
|
|
62
|
+
satisfy reqRateLegibility by fnPresentDeliveryStatus;
|
|
63
|
+
|
|
64
|
+
satisfy reqVolumeDisplay by fnPresentDeliveryStatus;
|
|
65
|
+
|
|
66
|
+
satisfy reqDrugLibrarySelection by fnValidateDrugSelection;
|
|
67
|
+
|
|
68
|
+
satisfy reqDisplayFreshness by fnPresentDeliveryStatus;
|
|
69
|
+
|
|
70
|
+
satisfy reqActiveRateDisplay by fnPresentDeliveryStatus;
|
|
71
|
+
|
|
72
|
+
satisfy reqDrugIdentityDisplay by fnValidateDrugSelection;
|
|
73
|
+
|
|
74
|
+
satisfy reqTimeDisplay by fnPresentLocalTime;
|
|
75
|
+
|
|
76
|
+
satisfy reqTimeAccuracy by fnPresentLocalTime;
|
|
77
|
+
|
|
78
|
+
satisfy reqBatteryStatusDisplay by fnPresentBatteryStatus;
|
|
79
|
+
|
|
80
|
+
satisfy reqBatteryWarningPerformance by fnPresentBatteryStatus;
|
|
81
|
+
|
|
82
|
+
satisfy reqDrugSelectionPerformance by fnValidateDrugSelection;
|
|
83
|
+
}
|
|
60
84
|
}
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
// panel they run on. One part tree carries geometry and design record — there
|
|
3
3
|
// is no separate region type.
|
|
4
4
|
package memo_examples_ui_screen_regions_architecture_implementation_ui {
|
|
5
|
+
private import memo_examples_ui_screen_regions_assurance_requirements::*;
|
|
5
6
|
private import ScalarValues::*;
|
|
7
|
+
private import memo_examples_ui_screen_regions_architecture_functional_functions::*;
|
|
6
8
|
|
|
7
9
|
private import memo_core_relationships::*;
|
|
8
10
|
private import memo_core_annotations::*;
|
|
@@ -46,69 +48,74 @@ package memo_examples_ui_screen_regions_architecture_implementation_ui {
|
|
|
46
48
|
}
|
|
47
49
|
attribute :>> boundaryColor = "#1B3A4B";
|
|
48
50
|
attribute :>> detectionMethod = BoundsDetectionKind::manual;
|
|
49
|
-
}
|
|
50
51
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
52
|
+
// ── A recursively inspectable dynamic region ─────────────
|
|
53
|
+
// The reusable region is the parent. Closed and expanded presentations
|
|
54
|
+
// are siblings beneath it, so a renderer (including a 3-D renderer)
|
|
55
|
+
// can reuse the region and select the state appropriate to its scene.
|
|
56
|
+
// The region has its own capture; geometry views stop at that
|
|
57
|
+
// boundary on the main screen and let the reviewer double-click to
|
|
58
|
+
// recurse into its children.
|
|
59
|
+
part elDrugSelectorRegion : UIElement {
|
|
60
|
+
attribute redefines name = "DrugSelectorRegion";
|
|
61
|
+
attribute redefines id = "UIE-005";
|
|
62
|
+
attribute redefines shortDescription = "Reusable region containing drug-selector states.";
|
|
63
|
+
attribute redefines description = "Parent geometry region for the drug selector. Its state presentations are sibling UI elements, permitting the same region definition to be reused in flat, spatial, or 3-D renderings.";
|
|
64
|
+
attribute redefines formKind = UIElementFormKind::panel;
|
|
65
|
+
attribute redefines safetyClass = SafetyClassKind::C;
|
|
66
|
+
attribute redefines labelText = "DRUG";
|
|
67
|
+
attribute redefines disclosureKind = UIDisclosureKind::inline;
|
|
68
|
+
attribute redefines boundaryColor = "#F59E0B";
|
|
69
|
+
attribute redefines detectionMethod = BoundsDetectionKind::manual;
|
|
70
|
+
attribute redefines confirmedBy = "j.okafor";
|
|
71
|
+
attribute redefines confirmedAt = "2026-07-15";
|
|
72
|
+
attribute redefines bounds {
|
|
73
|
+
attribute redefines x = 0.03;
|
|
74
|
+
attribute redefines y = 0.43;
|
|
75
|
+
attribute redefines width = 0.47;
|
|
76
|
+
attribute redefines height = 0.18;
|
|
77
|
+
}
|
|
77
78
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
79
|
+
part elDrugSelectorClosed : UIElement {
|
|
80
|
+
attribute :>> id = "UIE-010"; attribute :>> name = "ClosedDrugSelector";
|
|
81
|
+
attribute :>> shortDescription = "Closed drug selector shown on the main screen.";
|
|
82
|
+
attribute :>> description = "The compact, normal-state selector. It is a sibling of the expanded menu rather than a different identity for the parent region.";
|
|
83
|
+
attribute :>> formKind = UIElementFormKind::selector;
|
|
84
|
+
attribute :>> safetyClass = SafetyClassKind::C;
|
|
85
|
+
attribute :>> labelText = "Norepinephrine 8 mg / 250 mL";
|
|
86
|
+
attribute :>> disclosureKind = UIDisclosureKind::conditional;
|
|
87
|
+
attribute :>> visibilityCondition = "drug selector inactive";
|
|
88
|
+
attribute :>> bounds {
|
|
89
|
+
attribute :>> x = 0.0; attribute :>> y = 0.0;
|
|
90
|
+
attribute :>> width = 1.0; attribute :>> height = 0.25;
|
|
91
|
+
}
|
|
92
|
+
attribute :>> boundaryColor = "#F59E0B";
|
|
93
|
+
attribute :>> detectionMethod = BoundsDetectionKind::manual;
|
|
94
|
+
}
|
|
94
95
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
96
|
+
// Open, this sibling overlays the same parent region. `overlay`
|
|
97
|
+
// states that covering adjacent content is intended dropdown
|
|
98
|
+
// behaviour, not a defect.
|
|
99
|
+
part elDrugMenuExpanded : UIElement {
|
|
100
|
+
attribute redefines name = "ExpandedDrugMenu";
|
|
101
|
+
attribute redefines id = "UIE-011";
|
|
102
|
+
attribute redefines shortDescription = "Expanded drug library choices.";
|
|
103
|
+
attribute redefines description = "Expanded state listing Norepinephrine, Dopamine, and Heparin. It shares the DrugSelectorRegion parent with the closed state and can extend beyond that parent's normal inline allocation.";
|
|
104
|
+
attribute redefines formKind = UIElementFormKind::selector;
|
|
105
|
+
attribute redefines safetyClass = SafetyClassKind::C;
|
|
106
|
+
attribute redefines labelText = "Norepinephrine; Dopamine; Heparin";
|
|
107
|
+
attribute redefines disclosureKind = UIDisclosureKind::overlay;
|
|
108
|
+
attribute redefines visibilityCondition = "drug selector activated";
|
|
109
|
+
attribute redefines boundaryColor = "#d97706";
|
|
110
|
+
attribute redefines detectionMethod = BoundsDetectionKind::manual;
|
|
111
|
+
attribute redefines bounds {
|
|
112
|
+
attribute redefines x = 0.0;
|
|
113
|
+
attribute redefines y = 0.20;
|
|
114
|
+
attribute redefines width = 1.0;
|
|
115
|
+
attribute redefines height = 0.80;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
109
118
|
}
|
|
110
|
-
attribute :>> boundaryColor = "#D97706";
|
|
111
|
-
attribute :>> detectionMethod = BoundsDetectionKind::manual;
|
|
112
119
|
}
|
|
113
120
|
|
|
114
121
|
// ── The settings screen: a sibling root, not a child ────────
|
|
@@ -126,28 +133,28 @@ package memo_examples_ui_screen_regions_architecture_implementation_ui {
|
|
|
126
133
|
}
|
|
127
134
|
attribute :>> boundaryColor = "#1B3A4B";
|
|
128
135
|
attribute :>> detectionMethod = BoundsDetectionKind::manual;
|
|
129
|
-
}
|
|
130
136
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
137
|
+
// A modal child of the settings screen. It is visible only while a
|
|
138
|
+
// pending rate change awaits explicit confirmation and intentionally
|
|
139
|
+
// covers the settings form beneath it.
|
|
140
|
+
part elRateConfirmDialog : UIElement {
|
|
141
|
+
attribute :>> id = "UIE-009"; attribute :>> name = "RateChangeConfirmationDialog";
|
|
142
|
+
attribute :>> shortDescription = "Modal confirmation popup for a new infusion rate.";
|
|
143
|
+
attribute :>> description = "Restates the pending infusion rate above the settings screen and requires an explicit confirm or cancel disposition before the value can reach the controller.";
|
|
144
|
+
attribute :>> formKind = UIElementFormKind::dialog;
|
|
145
|
+
attribute :>> safetyClass = SafetyClassKind::C;
|
|
146
|
+
attribute :>> labelText = "Confirm rate change?";
|
|
147
|
+
attribute :>> disclosureKind = UIDisclosureKind::overlay;
|
|
148
|
+
attribute :>> visibilityCondition = "pending rate change";
|
|
149
|
+
attribute :>> bounds {
|
|
150
|
+
attribute :>> x = 0.28; attribute :>> y = 0.22;
|
|
151
|
+
attribute :>> width = 0.44; attribute :>> height = 0.56;
|
|
152
|
+
}
|
|
153
|
+
attribute :>> boundaryColor = "#D59000";
|
|
154
|
+
attribute :>> detectionMethod = BoundsDetectionKind::manual;
|
|
155
|
+
attribute :>> confirmedBy = "j.okafor";
|
|
156
|
+
attribute :>> confirmedAt = "2026-07-16";
|
|
146
157
|
}
|
|
147
|
-
attribute :>> boundaryColor = "#D59000";
|
|
148
|
-
attribute :>> detectionMethod = BoundsDetectionKind::manual;
|
|
149
|
-
attribute :>> confirmedBy = "j.okafor";
|
|
150
|
-
attribute :>> confirmedAt = "2026-07-16";
|
|
151
158
|
}
|
|
152
159
|
|
|
153
160
|
// ── UI actions and the functions they invoke ────────────────
|
|
@@ -156,18 +163,21 @@ package memo_examples_ui_screen_regions_architecture_implementation_ui {
|
|
|
156
163
|
attribute :>> intent = InteractionIntentKind::userInput;
|
|
157
164
|
attribute :>> confirmationRequired = true;
|
|
158
165
|
attribute :>> feedbackProvided = "new rate echoed on a confirmation dialog before it is applied";
|
|
166
|
+
perform fnManageInfusionDisplay.fnSetInfusionRate;
|
|
159
167
|
}
|
|
160
168
|
|
|
161
169
|
action uiaOpenSettings : UIAction {
|
|
162
170
|
attribute :>> id = "UIR-UIA-002"; attribute :>> name = "OpenInfusionSettings";
|
|
163
171
|
attribute :>> intent = InteractionIntentKind::navigation;
|
|
164
172
|
attribute :>> confirmationRequired = false;
|
|
173
|
+
perform fnManageInfusionDisplay;
|
|
165
174
|
}
|
|
166
175
|
|
|
167
176
|
action uiaSelectDrug : UIAction {
|
|
168
177
|
attribute :>> id = "UIR-UIA-003"; attribute :>> name = "SelectDrug";
|
|
169
178
|
attribute :>> intent = InteractionIntentKind::userInput;
|
|
170
179
|
attribute :>> confirmationRequired = true;
|
|
180
|
+
perform fnManageInfusionDisplay.fnValidateDrugSelection;
|
|
171
181
|
}
|
|
172
182
|
|
|
173
183
|
part uiElement12 : UIElement {
|
|
@@ -178,6 +188,7 @@ package memo_examples_ui_screen_regions_architecture_implementation_ui {
|
|
|
178
188
|
attribute redefines detectionMethod = BoundsDetectionKind::manual;
|
|
179
189
|
attribute redefines boundaryColor = "#14B8A6";
|
|
180
190
|
attribute redefines boundaryOpacity = 0.12;
|
|
191
|
+
attribute redefines boundaryWidth = 5;
|
|
181
192
|
attribute redefines bounds {
|
|
182
193
|
attribute redefines x = 0.52234;
|
|
183
194
|
attribute redefines y = 0.11311;
|
|
@@ -186,4 +197,16 @@ package memo_examples_ui_screen_regions_architecture_implementation_ui {
|
|
|
186
197
|
}
|
|
187
198
|
}
|
|
188
199
|
|
|
200
|
+
|
|
201
|
+
satisfy reqRateLegibility by elMainScreen;
|
|
202
|
+
|
|
203
|
+
satisfy reqRateEntry by elSettingsScreen;
|
|
204
|
+
|
|
205
|
+
satisfy reqRateEntry by elSettingsScreen.elRateConfirmDialog;
|
|
206
|
+
|
|
207
|
+
satisfy reqDrugLibrarySelection by elMainScreen.elDrugSelectorRegion;
|
|
208
|
+
|
|
209
|
+
satisfy reqDrugIdentityDisplay by elMainScreen.elDrugSelectorRegion.elDrugSelectorClosed;
|
|
210
|
+
|
|
211
|
+
satisfy reqDrugSelectionPerformance by elMainScreen.elDrugSelectorRegion;
|
|
189
212
|
}
|
|
@@ -22,7 +22,7 @@ package memo_examples_ui_screen_regions_assurance_safety_risk {
|
|
|
22
22
|
attribute :>> foreseeable = true;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
part rcRateConfirm : RiskControlMeasure {
|
|
26
26
|
attribute :>> id = "UIR-RC-001"; attribute :>> name = "RateChangeConfirmationDialog";
|
|
27
27
|
attribute :>> shortDescription = "Explicit confirmation step before a rate change applies.";
|
|
28
28
|
attribute :>> description = "A confirmation dialog restates the requested rate in words and numerals before the change is committed, so a mis-set decimal point has a second chance to be caught.";
|
|
@@ -37,7 +37,7 @@ package memo_examples_ui_screen_regions_assurance_safety_risk {
|
|
|
37
37
|
attribute :>> foreseeable = true;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
part rcDrugLibraryGuard : RiskControlMeasure {
|
|
41
41
|
attribute :>> id = "UIR-RC-002"; attribute :>> name = "CareAreaDrugLibraryGuard";
|
|
42
42
|
attribute :>> shortDescription = "Restrict selection to enabled care-area drug-library entries.";
|
|
43
43
|
attribute :>> description = "Filters the dynamic selector to the active care-area formulary and validates the selected drug and concentration before its dosing limits are used.";
|
|
@@ -52,7 +52,7 @@ package memo_examples_ui_screen_regions_assurance_safety_risk {
|
|
|
52
52
|
attribute :>> foreseeable = true;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
part rcLowBatteryProminence : RiskControlMeasure {
|
|
56
56
|
attribute :>> id = "UIR-RC-003"; attribute :>> name = "ProminentLowBatteryStatus";
|
|
57
57
|
attribute :>> shortDescription = "Update and emphasize low remaining battery status within one second.";
|
|
58
58
|
attribute :>> description = "Monitors battery telemetry and changes the status indicator's color and icon state at the low-runtime threshold so the clinician can restore power before therapy interruption.";
|
|
@@ -67,7 +67,7 @@ package memo_examples_ui_screen_regions_assurance_safety_risk {
|
|
|
67
67
|
attribute :>> foreseeable = true;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
part rcDisplayFreshnessMonitor : RiskControlMeasure {
|
|
71
71
|
attribute :>> id = "UIR-RC-004"; attribute :>> name = "InfusionDisplayFreshnessMonitor";
|
|
72
72
|
attribute :>> shortDescription = "Refresh displayed rate and volume at 1 Hz and detect stale telemetry.";
|
|
73
73
|
attribute :>> description = "Maintains a one-second display age budget for infusion status and detects a missed telemetry refresh before stale values can persist.";
|
|
@@ -82,7 +82,7 @@ package memo_examples_ui_screen_regions_assurance_safety_risk {
|
|
|
82
82
|
attribute :>> foreseeable = true;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
|
|
85
|
+
part rcClockFreshnessCheck : RiskControlMeasure {
|
|
86
86
|
attribute :>> id = "UIR-RC-005"; attribute :>> name = "SynchronizedClockFreshnessCheck";
|
|
87
87
|
attribute :>> shortDescription = "Synchronize the display clock and bound visible time error.";
|
|
88
88
|
attribute :>> description = "Checks the displayed clock against the synchronized device clock and refreshes the visible minute at rollover.";
|