@memoarchitect/ontology 0.8.24 → 0.11.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/connected_patient_monitor.sysml +9 -7
- package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -1
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +9 -7
- package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +8 -6
- package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
- package/examples/gpca-pump/memo.identity.yaml +2185 -0
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +29 -24
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +14 -13
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +121 -125
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +390 -388
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +15 -14
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -8
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
- package/examples/gpca-pump/model/catalog/project.sysml +3 -1
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +6 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +6 -4
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +5 -3
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +9 -7
- package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -1
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +6 -4
- package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -4
- package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
- package/examples/nested-architecture-dsm/memo.identity.yaml +181 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +20 -18
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
- package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +34 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +11 -6
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +16 -14
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
- package/examples/nested-architecture-dsm/model/catalog/project.sysml +4 -1
- package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +17 -16
- package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
- package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +10 -8
- package/examples/surgical-closure-workflow/model/catalog/project.sysml +3 -1
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +54 -51
- package/examples/surgical-robot/model/catalog/project.sysml +3 -1
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
- package/examples/sysml-diagram-samples/model/catalog/project.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +10 -8
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +7 -5
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +2 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +11 -9
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +2 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +11 -7
- package/examples/temperature-alarm/memo.identity.yaml +64 -0
- package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +27 -22
- package/examples/ui-screen-regions/memo.identity.yaml +205 -0
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +14 -12
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +26 -24
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
- package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
- package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +5 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +5 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +5 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +3 -1
- package/extensions/aadl/memo.package.yaml +1 -1
- package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
- package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
- package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
- package/extensions/cloud/memo.package.yaml +1 -1
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
- package/extensions/container/memo.package.yaml +1 -1
- package/extensions/container/src/methodology/container_methodology.sysml +3 -1
- package/extensions/messaging/memo.package.yaml +1 -1
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
- package/extensions/ros/memo.package.yaml +1 -1
- package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
- package/extensions/template/src/extension.sysml +3 -1
- 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 +2 -2
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/functional/behavior/memo_behavior.sysml +1 -1
- package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
- package/src/architecture/implementation/ui/memo_ui.sysml +0 -23
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +3 -1
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +3 -11
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +1 -12
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -11
- package/src/architecture/operational/workflows/memo_workflows.sysml +0 -20
- package/src/architecture/realization/deployment/memo_deployment.sysml +16 -9
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
- package/src/artifacts/standards/cfr_21_820.sysml +80 -89
- package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
- package/src/artifacts/standards/iec_60601_1.sysml +108 -121
- package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
- package/src/artifacts/standards/iec_60812.sysml +21 -22
- package/src/artifacts/standards/iec_62304.sysml +150 -169
- package/src/artifacts/standards/iec_62366_1.sysml +80 -89
- package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
- package/src/artifacts/standards/iso_13485.sysml +80 -89
- package/src/artifacts/standards/iso_14971.sysml +66 -73
- package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
- package/src/artifacts/templates/dhf/iec-60601/hrs.md +6 -6
- package/src/artifacts/templates/dhf/iec-62304/srs.md +10 -10
- package/src/artifacts/templates/dhf/system/syrs.md +6 -6
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +0 -1
- package/src/assurance/human_factors/memo_human_factors.sysml +0 -1
- package/src/assurance/requirements/memo_requirements.sysml +20 -16
- package/src/assurance/requirements/needs/memo_needs.sysml +33 -5
- package/src/assurance/safety_risk/memo_risk.sysml +20 -0
- package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
- package/src/core/common/memo_common.sysml +50 -50
- package/src/core/enumerations/memo_enumerations.sysml +1 -1
- package/src/core/relationships/memo_relationships.sysml +22 -49
- package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
- package/src/methodology/core/memo_core.sysml +0 -10
- package/src/methodology/profiles/memo_profiles.sysml +18 -16
- package/src/rules/closure/closure_rules.sysml +58 -22
- package/src/rules/crosslayer/cross_layer_rules.sysml +5 -3
- package/src/rules/ontology/ontology_invariants.sysml +119 -35
- package/src/rules/quantitative/quantitative_rules.sysml +4 -2
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +29 -28
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -2
- package/src/viewpoints/context/context_viewpoint.sysml +5 -3
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +5 -3
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -2
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +6 -16
- package/src/viewpoints/functional/functional_viewpoint.sysml +4 -2
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +5 -3
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +5 -3
- package/src/viewpoints/logical/logical_viewpoint.sysml +4 -2
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +5 -3
- package/src/viewpoints/operational/operational_viewpoint.sysml +4 -2
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +5 -3
- package/src/viewpoints/physical/physical_viewpoint.sysml +4 -2
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +5 -3
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +5 -3
- package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +4 -2
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +5 -3
- package/src/viewpoints/risk/risk_viewpoint.sysml +4 -2
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +5 -3
- package/src/viewpoints/software/software_viewpoint.sysml +4 -2
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +5 -3
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +4 -2
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
- package/src/viewpoints/usability/usability_viewpoint.sysml +4 -2
- package/src/viewpoints/verification/verification_viewpoint.sysml +4 -2
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +5 -3
- package/templates/connected-device/model/catalog/project.sysml +3 -1
- package/templates/default/model/catalog/project.sysml +3 -1
- package/templates/infusion-pump/model/catalog/project.sysml +3 -1
- package/templates/monitoring-device/model/catalog/project.sysml +3 -1
- package/templates/samd/model/catalog/project.sysml +3 -1
|
@@ -14,8 +14,10 @@ package memo_examples_manual_surgical_instrument_project {
|
|
|
14
14
|
private import memo_examples_manual_surgical_instrument_viewpoints_unassigned::*;
|
|
15
15
|
private import memo_examples_manual_surgical_instrument_viewpoints_unassigned_views_manual_surgical_instrument_overview::*;
|
|
16
16
|
|
|
17
|
+
private import memo_core_common::*;
|
|
18
|
+
private import memo_core_common::MemoIdentity;
|
|
17
19
|
part projectBinding : ProjectMethodBinding {
|
|
18
|
-
|
|
20
|
+
@MemoIdentity { :>> providedId = "PMB-SURGICAL-INSTRUMENT-001"; }
|
|
19
21
|
attribute :>> name = "ManualSurgicalInstrumentProjectMethodBinding";
|
|
20
22
|
attribute :>> projectName = "Manual Surgical Instrument";
|
|
21
23
|
ref :>> selectedMethodology = mdDefaultDefinition;
|
|
@@ -17,8 +17,10 @@ package memo_examples_multidimensional_layers {
|
|
|
17
17
|
private import memo_assurance_verification_validation::*;
|
|
18
18
|
private import memo_core_relationships::*;
|
|
19
19
|
|
|
20
|
+
private import memo_core_common::*;
|
|
21
|
+
private import memo_core_common::MemoIdentity;
|
|
20
22
|
part doseLimitChecker : SoftwareModule {
|
|
21
|
-
|
|
23
|
+
@MemoIdentity { :>> providedId = "MDL-SW-001"; }
|
|
22
24
|
attribute :>> name = "DoseLimitChecker";
|
|
23
25
|
attribute :>> responsibility = "Reject therapy parameters outside the drug library's hard limits.";
|
|
24
26
|
attribute :>> safetyClass = SafetyClassKind::C;
|
|
@@ -33,7 +35,7 @@ package memo_examples_multidimensional_layers {
|
|
|
33
35
|
// The SAME identity progresses through realization stages — a deployed
|
|
34
36
|
// configuration is a stage of the element, not a second element.
|
|
35
37
|
part doseLimitCheckerRuntime : SoftwareComponent {
|
|
36
|
-
|
|
38
|
+
@MemoIdentity { :>> providedId = "MDL-RT-001"; }
|
|
37
39
|
attribute :>> name = "DoseLimitCheckerTask";
|
|
38
40
|
attribute :>> periodMs = 50.0;
|
|
39
41
|
attribute :>> deadlineMs = 50.0;
|
|
@@ -45,8 +47,8 @@ package memo_examples_multidimensional_layers {
|
|
|
45
47
|
#refinement dependency doseLimitCheckerRuntime to doseLimitChecker;
|
|
46
48
|
|
|
47
49
|
verification vcLimitEnforcement : VerificationCase {
|
|
48
|
-
|
|
49
|
-
attribute :>> methodKind =
|
|
50
|
+
@MemoIdentity { :>> providedId = "MDL-VC-001"; } attribute :>> name = "VerifyHardLimitEnforcement";
|
|
51
|
+
attribute :>> methodKind = MemoVerificationMethodKind::test;
|
|
50
52
|
attribute :>> acceptanceCriteria = "all out-of-limit programs rejected across the equivalence classes";
|
|
51
53
|
|
|
52
54
|
subject verified : Base::Anything[*] = (doseLimitChecker);
|
|
@@ -14,8 +14,10 @@ package memo_examples_multidimensional_layers_project {
|
|
|
14
14
|
private import memo_examples_multidimensional_layers_viewpoints_unassigned::*;
|
|
15
15
|
private import memo_examples_multidimensional_layers_viewpoints_unassigned_views_multidimensional_layers_overview::*;
|
|
16
16
|
|
|
17
|
+
private import memo_core_common::*;
|
|
18
|
+
private import memo_core_common::MemoIdentity;
|
|
17
19
|
part projectBinding : ProjectMethodBinding {
|
|
18
|
-
|
|
20
|
+
@MemoIdentity { :>> providedId = "PMB-MULTIDIMENSIONAL-LAYERS-001"; }
|
|
19
21
|
attribute :>> name = "MultidimensionalLayersProjectMethodBinding";
|
|
20
22
|
attribute :>> projectName = "Multidimensional Layers";
|
|
21
23
|
ref :>> selectedMethodology = mdDefaultDefinition;
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
# memo.identity.yaml — element identity registry (auto-generated)
|
|
2
|
+
# Assigned once and never reassigned. COMMIT THIS FILE: deleting it does
|
|
3
|
+
# not regenerate the same identities, it mints new ones, and every
|
|
4
|
+
# external reference to a shortId or uuid then points at nothing.
|
|
5
|
+
# Entries for deleted elements are retained so their numbers stay retired.
|
|
6
|
+
|
|
7
|
+
elements:
|
|
8
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnAcceptInput":
|
|
9
|
+
shortId: "SYS-1"
|
|
10
|
+
uuid: "743bc427-3611-54b4-b02f-f30d4474e8be"
|
|
11
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnAnnunciateAlarm":
|
|
12
|
+
shortId: "SYS-2"
|
|
13
|
+
uuid: "38a50787-f2bd-51ee-9b90-6e0e6695b9f6"
|
|
14
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnComputeRate":
|
|
15
|
+
shortId: "SYS-3"
|
|
16
|
+
uuid: "88ffa158-7036-55a6-910f-72ebeff80d8c"
|
|
17
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnControlDose":
|
|
18
|
+
shortId: "SYS-4"
|
|
19
|
+
uuid: "02ff5db5-4708-5084-8b09-2700ddb32faf"
|
|
20
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDeliverTherapy":
|
|
21
|
+
shortId: "SYS-5"
|
|
22
|
+
uuid: "97af02c1-1869-51cd-b6a3-3d9b0803cac0"
|
|
23
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDetectAirInLine":
|
|
24
|
+
shortId: "SYS-6"
|
|
25
|
+
uuid: "01cc8a11-19d1-598f-a56f-f7cf5ba0d243"
|
|
26
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDetectOcclusion":
|
|
27
|
+
shortId: "SYS-7"
|
|
28
|
+
uuid: "a1c87fbc-9933-5b07-a7a4-faa2a1b53589"
|
|
29
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnDriveActuator":
|
|
30
|
+
shortId: "SYS-8"
|
|
31
|
+
uuid: "cafa121a-9376-543e-b16f-3e1755ca2aa6"
|
|
32
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnEnforceDoseLimits":
|
|
33
|
+
shortId: "SYS-9"
|
|
34
|
+
uuid: "e3f15682-175f-550c-9daa-305017c19b54"
|
|
35
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnEnsureSafety":
|
|
36
|
+
shortId: "SYS-10"
|
|
37
|
+
uuid: "4c0057ea-363a-534f-b3cb-d939e9b9f22d"
|
|
38
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnInformUser":
|
|
39
|
+
shortId: "SYS-11"
|
|
40
|
+
uuid: "c0d2ae2a-c619-552c-ad94-67a87d75a5f0"
|
|
41
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnManagePower":
|
|
42
|
+
shortId: "SYS-12"
|
|
43
|
+
uuid: "7306642f-c2c8-53ed-bf55-4369cdec0373"
|
|
44
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnMeasureDelivered":
|
|
45
|
+
shortId: "SYS-13"
|
|
46
|
+
uuid: "e9e92f6d-4d74-5ab2-8a04-3a8a502db932"
|
|
47
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnMeterFluid":
|
|
48
|
+
shortId: "SYS-14"
|
|
49
|
+
uuid: "ad2c6549-6cde-5d0c-972d-121765bad784"
|
|
50
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnMonitorBattery":
|
|
51
|
+
shortId: "SYS-15"
|
|
52
|
+
uuid: "fa001550-9cd2-5118-880b-16dcc35f11e9"
|
|
53
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnRenderStatus":
|
|
54
|
+
shortId: "SYS-16"
|
|
55
|
+
uuid: "2f581251-4e2e-5e0c-b937-e668d7abb1df"
|
|
56
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnSelectPowerSource":
|
|
57
|
+
shortId: "SYS-17"
|
|
58
|
+
uuid: "96806e2b-9dad-5a25-906e-097da793517f"
|
|
59
|
+
"memo_examples_nested_architecture_dsm_architecture_functional_functions::fnValidatePrescription":
|
|
60
|
+
shortId: "SYS-18"
|
|
61
|
+
uuid: "a8c04e09-7dfe-50ae-8b7e-184964772b59"
|
|
62
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::lcAlarmAnnunciator":
|
|
63
|
+
shortId: "LGC-1"
|
|
64
|
+
uuid: "4a3bc844-d379-53a5-bd07-45cfddbb306f"
|
|
65
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::lcBatteryManager":
|
|
66
|
+
shortId: "LGC-2"
|
|
67
|
+
uuid: "d6971bce-148e-5366-ab22-f80166c10b3f"
|
|
68
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::lcDisplayManager":
|
|
69
|
+
shortId: "LGC-3"
|
|
70
|
+
uuid: "429d103c-969c-53fc-a447-2a0a9bb74764"
|
|
71
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::lcDoseController":
|
|
72
|
+
shortId: "LGC-4"
|
|
73
|
+
uuid: "3b49ad97-598e-5474-aae7-e1b378be185d"
|
|
74
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::lcKeypadHandler":
|
|
75
|
+
shortId: "LGC-5"
|
|
76
|
+
uuid: "69673dde-9347-5e7b-a896-6ee9e9069a86"
|
|
77
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::lcOcclusionChannel":
|
|
78
|
+
shortId: "LGC-6"
|
|
79
|
+
uuid: "f1964871-b8a4-510d-b946-c962847f61d4"
|
|
80
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::lcPowerRailMonitor":
|
|
81
|
+
shortId: "LGC-7"
|
|
82
|
+
uuid: "4deb4ccd-b9f0-5ff4-904e-cf88beff861d"
|
|
83
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::lcPressureIntegrityChannel":
|
|
84
|
+
shortId: "LGC-8"
|
|
85
|
+
uuid: "45f4a37a-5d78-5b1c-8638-e3df1bdcfedf"
|
|
86
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::lcPumpMechanism":
|
|
87
|
+
shortId: "LGC-9"
|
|
88
|
+
uuid: "630e869e-ef26-52f5-85a4-a9ab0e045006"
|
|
89
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::lcReservoirInterface":
|
|
90
|
+
shortId: "LGC-10"
|
|
91
|
+
uuid: "8bf720eb-227b-59bc-a8bd-17597157badf"
|
|
92
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::lcTherapyStateStore":
|
|
93
|
+
shortId: "LGC-11"
|
|
94
|
+
uuid: "59faa354-00b6-542a-9097-8b54c7cfa0a4"
|
|
95
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::lcWatchdogChannel":
|
|
96
|
+
shortId: "LGC-12"
|
|
97
|
+
uuid: "11ebfa38-f25a-5d86-a3fe-0daf3bbf37ae"
|
|
98
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::subControl":
|
|
99
|
+
shortId: "SBS-1"
|
|
100
|
+
uuid: "077d4a45-b168-52a4-9641-17c1f5b600ff"
|
|
101
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::subFluidPath":
|
|
102
|
+
shortId: "SBS-2"
|
|
103
|
+
uuid: "43548a32-68a1-51bf-ab90-378990d36d2c"
|
|
104
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::subPower":
|
|
105
|
+
shortId: "SBS-3"
|
|
106
|
+
uuid: "aa677b1f-eddb-5436-9c6f-85221b3b77aa"
|
|
107
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::subSafetyMonitor":
|
|
108
|
+
shortId: "SBS-4"
|
|
109
|
+
uuid: "c22054ce-e7da-5a61-8d9e-3dc1c364baba"
|
|
110
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::subUserInterface":
|
|
111
|
+
shortId: "SBS-5"
|
|
112
|
+
uuid: "d549ae19-f954-5553-98bc-2aae381754ae"
|
|
113
|
+
"memo_examples_nested_architecture_dsm_architecture_logical_structure::sysTherapyDelivery":
|
|
114
|
+
shortId: "SYS-19"
|
|
115
|
+
uuid: "523429e1-0a24-5aa6-b5c0-47c7eb82f4df"
|
|
116
|
+
"memo_examples_nested_architecture_dsm_architecture_operational_context::ctxIntraHospitalTransport":
|
|
117
|
+
shortId: "USE-1"
|
|
118
|
+
uuid: "a4ec22e7-25cb-54f8-b606-397da672af36"
|
|
119
|
+
"memo_examples_nested_architecture_dsm_architecture_operational_context::usrWardNurse":
|
|
120
|
+
shortId: "USR-1"
|
|
121
|
+
uuid: "39407d04-fca3-5b3a-b28e-194c9f31e9d4"
|
|
122
|
+
"memo_examples_nested_architecture_dsm_assurance_requirements::reqAirInLine":
|
|
123
|
+
shortId: "REQ-1"
|
|
124
|
+
uuid: "f2f205b4-1e68-5b3e-ae8d-cea54cdc3388"
|
|
125
|
+
"memo_examples_nested_architecture_dsm_assurance_requirements::reqAlarmAnnunciation":
|
|
126
|
+
shortId: "REQ-2"
|
|
127
|
+
uuid: "0b3ba822-88d2-5962-8593-f00c15ead07d"
|
|
128
|
+
"memo_examples_nested_architecture_dsm_assurance_requirements::reqBatteryEndurance":
|
|
129
|
+
shortId: "REQ-3"
|
|
130
|
+
uuid: "1f99da03-e599-54ad-aa32-4c24bf3ae84a"
|
|
131
|
+
"memo_examples_nested_architecture_dsm_assurance_requirements::reqDoseAccuracy":
|
|
132
|
+
shortId: "REQ-4"
|
|
133
|
+
uuid: "43f50994-6b6f-5417-8de1-c5ffd2d49451"
|
|
134
|
+
"memo_examples_nested_architecture_dsm_assurance_requirements::reqOcclusionDetection":
|
|
135
|
+
shortId: "REQ-5"
|
|
136
|
+
uuid: "8a62a44d-826b-5adb-801f-7b2597f482c5"
|
|
137
|
+
"memo_examples_nested_architecture_dsm_assurance_requirements::reqPrescriptionConfirmation":
|
|
138
|
+
shortId: "REQ-6"
|
|
139
|
+
uuid: "7c2749b0-b903-5aec-b96b-bd959ca99cc4"
|
|
140
|
+
"memo_examples_nested_architecture_dsm_assurance_requirements::reqStatusVisibility":
|
|
141
|
+
shortId: "REQ-7"
|
|
142
|
+
uuid: "395b9df3-124d-5aec-abac-8d89fda5636d"
|
|
143
|
+
"memo_examples_nested_architecture_dsm_assurance_requirements_needs::needAccurateTherapy":
|
|
144
|
+
shortId: "NDX-1"
|
|
145
|
+
uuid: "58558865-5133-5b8b-a6b8-6a1dcc99b070"
|
|
146
|
+
"memo_examples_nested_architecture_dsm_assurance_requirements_needs::needLegibleStatus":
|
|
147
|
+
shortId: "NDX-2"
|
|
148
|
+
uuid: "2cc071e0-c4c5-5471-ab29-7ce129dc6091"
|
|
149
|
+
"memo_examples_nested_architecture_dsm_assurance_requirements_needs::needProtectionFromHarm":
|
|
150
|
+
shortId: "NDX-3"
|
|
151
|
+
uuid: "ec2774b0-8efa-5546-bfba-dabda753f6da"
|
|
152
|
+
"memo_examples_nested_architecture_dsm_assurance_requirements_needs::needUninterruptedTherapy":
|
|
153
|
+
shortId: "NDX-4"
|
|
154
|
+
uuid: "3ffb013e-fa0d-5898-9b33-af672dbc9813"
|
|
155
|
+
"memo_examples_nested_architecture_dsm_assurance_verification_validation::vcAirInLineResponse":
|
|
156
|
+
shortId: "VRF-1"
|
|
157
|
+
uuid: "e753cc07-566d-59b6-bb3c-6cc6b459352f"
|
|
158
|
+
"memo_examples_nested_architecture_dsm_assurance_verification_validation::vcAlarmSignals":
|
|
159
|
+
shortId: "VRF-2"
|
|
160
|
+
uuid: "af14e49c-02b8-5516-bf8c-39ed3bfe6d94"
|
|
161
|
+
"memo_examples_nested_architecture_dsm_assurance_verification_validation::vcBatteryEndurance":
|
|
162
|
+
shortId: "VRF-3"
|
|
163
|
+
uuid: "52567124-af48-59df-9723-3fcbab9e6abd"
|
|
164
|
+
"memo_examples_nested_architecture_dsm_assurance_verification_validation::vcConfirmationFlow":
|
|
165
|
+
shortId: "VRF-4"
|
|
166
|
+
uuid: "39b56b75-a0d9-50ce-ba8c-05f251f61442"
|
|
167
|
+
"memo_examples_nested_architecture_dsm_assurance_verification_validation::vcDoseAccuracy":
|
|
168
|
+
shortId: "VRF-5"
|
|
169
|
+
uuid: "24488b50-82d9-5247-baf6-10bff2374783"
|
|
170
|
+
"memo_examples_nested_architecture_dsm_assurance_verification_validation::vcOcclusionResponse":
|
|
171
|
+
shortId: "VRF-6"
|
|
172
|
+
uuid: "0104d952-e7f0-5a72-ae6f-581f55e658d2"
|
|
173
|
+
"memo_examples_nested_architecture_dsm_assurance_verification_validation::vcPowerSourceSwitch":
|
|
174
|
+
shortId: "VRF-7"
|
|
175
|
+
uuid: "6d48d53d-2fcf-56d1-9118-6d46fc0a0885"
|
|
176
|
+
"memo_examples_nested_architecture_dsm_assurance_verification_validation::vcStatusLegibility":
|
|
177
|
+
shortId: "VRF-8"
|
|
178
|
+
uuid: "c9ca55b3-684d-5d15-ab5d-2f9afd4e88e3"
|
|
179
|
+
"memo_examples_nested_architecture_dsm_project::projectBinding":
|
|
180
|
+
shortId: "PRJ-1"
|
|
181
|
+
uuid: "1da70d84-c917-5ab8-8c32-f293886ffe93"
|
package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml
CHANGED
|
@@ -14,30 +14,32 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
|
|
|
14
14
|
private import memo_architecture_functional_functions::*;
|
|
15
15
|
private import memo_architecture_operational_context_use_context::*;
|
|
16
16
|
|
|
17
|
+
private import memo_core_common::*;
|
|
18
|
+
private import memo_core_common::MemoIdentity;
|
|
17
19
|
// ── Deliver therapy ──────────────────────────────────────────
|
|
18
20
|
action fnDeliverTherapy : SystemFunction {
|
|
19
|
-
|
|
21
|
+
@MemoIdentity { :>> providedId = "NDS-FN-001"; } attribute :>> name = "DeliverTherapy";
|
|
20
22
|
attribute :>> functionCategory = "therapy";
|
|
21
23
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
22
24
|
attribute :>> concernKind = ConcernKind::safety;
|
|
23
25
|
attribute :>> outputSummary = "fluid delivered to the patient line at the prescribed rate";
|
|
24
26
|
|
|
25
27
|
action fnMeterFluid : SystemFunction {
|
|
26
|
-
|
|
28
|
+
@MemoIdentity { :>> providedId = "NDS-FN-002"; } attribute :>> name = "MeterFluid";
|
|
27
29
|
attribute :>> functionCategory = "therapy";
|
|
28
30
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
29
31
|
attribute :>> concernKind = ConcernKind::safety;
|
|
30
32
|
attribute :>> outputSummary = "measured volume displaced per control period";
|
|
31
33
|
|
|
32
34
|
action fnDriveActuator : SystemFunction {
|
|
33
|
-
|
|
35
|
+
@MemoIdentity { :>> providedId = "NDS-FN-003"; } attribute :>> name = "DriveActuator";
|
|
34
36
|
attribute :>> functionCategory = "therapy";
|
|
35
37
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
36
38
|
attribute :>> trigger = "rate command from the dose control loop";
|
|
37
39
|
attribute :>> concernKind = ConcernKind::safety;
|
|
38
40
|
}
|
|
39
41
|
action fnMeasureDelivered : SystemFunction {
|
|
40
|
-
|
|
42
|
+
@MemoIdentity { :>> providedId = "NDS-FN-004"; } attribute :>> name = "MeasureDeliveredVolume";
|
|
41
43
|
attribute :>> functionCategory = "therapy";
|
|
42
44
|
attribute :>> criticality = CriticalityKind::high;
|
|
43
45
|
attribute :>> concernKind = ConcernKind::safety;
|
|
@@ -45,20 +47,20 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
|
|
|
45
47
|
}
|
|
46
48
|
}
|
|
47
49
|
action fnControlDose : SystemFunction {
|
|
48
|
-
|
|
50
|
+
@MemoIdentity { :>> providedId = "NDS-FN-005"; } attribute :>> name = "ControlDose";
|
|
49
51
|
attribute :>> functionCategory = "therapy";
|
|
50
52
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
51
53
|
attribute :>> concernKind = ConcernKind::safety;
|
|
52
54
|
|
|
53
55
|
action fnComputeRate : SystemFunction {
|
|
54
|
-
|
|
56
|
+
@MemoIdentity { :>> providedId = "NDS-FN-006"; } attribute :>> name = "ComputeInfusionRate";
|
|
55
57
|
attribute :>> functionCategory = "therapy";
|
|
56
58
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
57
59
|
attribute :>> concernKind = ConcernKind::safety;
|
|
58
60
|
attribute :>> outputSummary = "rate command, saturated at the prescribed ceiling";
|
|
59
61
|
}
|
|
60
62
|
action fnValidatePrescription : SystemFunction {
|
|
61
|
-
|
|
63
|
+
@MemoIdentity { :>> providedId = "NDS-FN-007"; } attribute :>> name = "ValidatePrescription";
|
|
62
64
|
attribute :>> functionCategory = "therapy";
|
|
63
65
|
attribute :>> criticality = CriticalityKind::high;
|
|
64
66
|
attribute :>> concernKind = ConcernKind::clinical;
|
|
@@ -69,27 +71,27 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
|
|
|
69
71
|
|
|
70
72
|
// ── Ensure safety ────────────────────────────────────────────
|
|
71
73
|
action fnEnsureSafety : SystemFunction {
|
|
72
|
-
|
|
74
|
+
@MemoIdentity { :>> providedId = "NDS-FN-008"; } attribute :>> name = "EnsureSafety";
|
|
73
75
|
attribute :>> functionCategory = "protection";
|
|
74
76
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
75
77
|
attribute :>> concernKind = ConcernKind::safety;
|
|
76
78
|
|
|
77
79
|
action fnDetectOcclusion : SystemFunction {
|
|
78
|
-
|
|
80
|
+
@MemoIdentity { :>> providedId = "NDS-FN-009"; } attribute :>> name = "DetectOcclusion";
|
|
79
81
|
attribute :>> functionCategory = "protection";
|
|
80
82
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
81
83
|
attribute :>> trigger = "line pressure above the occlusion threshold";
|
|
82
84
|
attribute :>> concernKind = ConcernKind::safety;
|
|
83
85
|
}
|
|
84
86
|
action fnDetectAirInLine : SystemFunction {
|
|
85
|
-
|
|
87
|
+
@MemoIdentity { :>> providedId = "NDS-FN-010"; } attribute :>> name = "DetectAirInLine";
|
|
86
88
|
attribute :>> functionCategory = "protection";
|
|
87
89
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
88
90
|
attribute :>> trigger = "air bolus detected in the patient line";
|
|
89
91
|
attribute :>> concernKind = ConcernKind::safety;
|
|
90
92
|
}
|
|
91
93
|
action fnEnforceDoseLimits : SystemFunction {
|
|
92
|
-
|
|
94
|
+
@MemoIdentity { :>> providedId = "NDS-FN-011"; } attribute :>> name = "EnforceDoseLimits";
|
|
93
95
|
attribute :>> functionCategory = "protection";
|
|
94
96
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
95
97
|
attribute :>> concernKind = ConcernKind::safety;
|
|
@@ -99,27 +101,27 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
|
|
|
99
101
|
|
|
100
102
|
// ── Inform the user ──────────────────────────────────────────
|
|
101
103
|
action fnInformUser : SystemFunction {
|
|
102
|
-
|
|
104
|
+
@MemoIdentity { :>> providedId = "NDS-FN-012"; } attribute :>> name = "InformUser";
|
|
103
105
|
attribute :>> functionCategory = "interaction";
|
|
104
106
|
attribute :>> criticality = CriticalityKind::high;
|
|
105
107
|
attribute :>> concernKind = ConcernKind::usability;
|
|
106
108
|
|
|
107
109
|
action fnRenderStatus : SystemFunction {
|
|
108
|
-
|
|
110
|
+
@MemoIdentity { :>> providedId = "NDS-FN-013"; } attribute :>> name = "RenderTherapyStatus";
|
|
109
111
|
attribute :>> functionCategory = "interaction";
|
|
110
112
|
attribute :>> criticality = CriticalityKind::high;
|
|
111
113
|
attribute :>> concernKind = ConcernKind::usability;
|
|
112
114
|
attribute :>> outputSummary = "rate, volume delivered and time remaining";
|
|
113
115
|
}
|
|
114
116
|
action fnAnnunciateAlarm : SystemFunction {
|
|
115
|
-
|
|
117
|
+
@MemoIdentity { :>> providedId = "NDS-FN-014"; } attribute :>> name = "AnnunciateAlarm";
|
|
116
118
|
attribute :>> functionCategory = "interaction";
|
|
117
119
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
118
120
|
attribute :>> trigger = "any active alarm condition";
|
|
119
121
|
attribute :>> concernKind = ConcernKind::safety;
|
|
120
122
|
}
|
|
121
123
|
action fnAcceptInput : SystemFunction {
|
|
122
|
-
|
|
124
|
+
@MemoIdentity { :>> providedId = "NDS-FN-015"; } attribute :>> name = "AcceptClinicianInput";
|
|
123
125
|
attribute :>> functionCategory = "interaction";
|
|
124
126
|
attribute :>> criticality = CriticalityKind::high;
|
|
125
127
|
attribute :>> concernKind = ConcernKind::usability;
|
|
@@ -129,20 +131,20 @@ package memo_examples_nested_architecture_dsm_architecture_functional_functions
|
|
|
129
131
|
|
|
130
132
|
// ── Manage power ─────────────────────────────────────────────
|
|
131
133
|
action fnManagePower : SystemFunction {
|
|
132
|
-
|
|
134
|
+
@MemoIdentity { :>> providedId = "NDS-FN-016"; } attribute :>> name = "ManagePower";
|
|
133
135
|
attribute :>> functionCategory = "platform";
|
|
134
136
|
attribute :>> criticality = CriticalityKind::high;
|
|
135
137
|
attribute :>> concernKind = ConcernKind::reliability;
|
|
136
138
|
|
|
137
139
|
action fnMonitorBattery : SystemFunction {
|
|
138
|
-
|
|
140
|
+
@MemoIdentity { :>> providedId = "NDS-FN-017"; } attribute :>> name = "MonitorBatteryState";
|
|
139
141
|
attribute :>> functionCategory = "platform";
|
|
140
142
|
attribute :>> criticality = CriticalityKind::high;
|
|
141
143
|
attribute :>> concernKind = ConcernKind::reliability;
|
|
142
144
|
attribute :>> outputSummary = "state of charge and remaining run time";
|
|
143
145
|
}
|
|
144
146
|
action fnSelectPowerSource : SystemFunction {
|
|
145
|
-
|
|
147
|
+
@MemoIdentity { :>> providedId = "NDS-FN-018"; } attribute :>> name = "SelectPowerSource";
|
|
146
148
|
attribute :>> functionCategory = "platform";
|
|
147
149
|
attribute :>> criticality = CriticalityKind::high;
|
|
148
150
|
attribute :>> trigger = "mains loss or rail brownout";
|
|
@@ -12,9 +12,11 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
|
|
|
12
12
|
private import memo_architecture_logical_structure::*;
|
|
13
13
|
private import memo_architecture_operational_context_use_context::*;
|
|
14
14
|
|
|
15
|
+
private import memo_core_common::*;
|
|
16
|
+
private import memo_core_common::MemoIdentity;
|
|
15
17
|
// ── Level 0: the system ──────────────────────────────────────
|
|
16
18
|
part sysTherapyDelivery : System {
|
|
17
|
-
|
|
19
|
+
@MemoIdentity { :>> providedId = "NDS-SYS-001"; } attribute :>> name = "TherapyDeliverySystem";
|
|
18
20
|
attribute :>> componentRole = ComponentRoleKind::generic;
|
|
19
21
|
attribute :>> systemType = SystemTypeKind::logical;
|
|
20
22
|
attribute :>> systemBoundaryDescription = "Everything inside the pump enclosure, including its power path and user interface.";
|
|
@@ -22,35 +24,35 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
|
|
|
22
24
|
|
|
23
25
|
// ── Level 1: subsystems ──────────────────────────────────
|
|
24
26
|
part subFluidPath : Subsystem {
|
|
25
|
-
|
|
27
|
+
@MemoIdentity { :>> providedId = "NDS-SUB-001"; } attribute :>> name = "FluidPathSubsystem";
|
|
26
28
|
attribute :>> componentRole = ComponentRoleKind::generic;
|
|
27
29
|
attribute :>> systemType = SystemTypeKind::hardware;
|
|
28
30
|
attribute :>> responsibility = "Move fluid from the reservoir to the patient line at a commanded rate.";
|
|
29
31
|
|
|
30
32
|
// ── Level 2/3: components ─────────────────────────────
|
|
31
33
|
part lcPumpMechanism : LogicalComponent {
|
|
32
|
-
|
|
34
|
+
@MemoIdentity { :>> providedId = "NDS-LC-001"; } attribute :>> name = "PumpMechanism";
|
|
33
35
|
attribute :>> componentRole = ComponentRoleKind::controlElement;
|
|
34
36
|
attribute :>> systemType = SystemTypeKind::hardware;
|
|
35
37
|
attribute :>> responsibility = "Displace fluid under command.";
|
|
36
38
|
attribute :>> controlledVariable = "delivered volume per stroke";
|
|
37
39
|
}
|
|
38
40
|
part lcOcclusionChannel : LogicalComponent {
|
|
39
|
-
|
|
41
|
+
@MemoIdentity { :>> providedId = "NDS-LC-002"; } attribute :>> name = "OcclusionSensingChannel";
|
|
40
42
|
attribute :>> componentRole = ComponentRoleKind::channel;
|
|
41
43
|
attribute :>> systemType = SystemTypeKind::hardware;
|
|
42
44
|
attribute :>> responsibility = "Sense line pressure and air in line.";
|
|
43
45
|
attribute :>> channelRole = ChannelRoleKind::primary;
|
|
44
46
|
}
|
|
45
47
|
part lcReservoirInterface : LogicalComponent {
|
|
46
|
-
|
|
48
|
+
@MemoIdentity { :>> providedId = "NDS-LC-003"; } attribute :>> name = "ReservoirInterface";
|
|
47
49
|
attribute :>> componentRole = ComponentRoleKind::generic;
|
|
48
50
|
attribute :>> systemType = SystemTypeKind::hardware;
|
|
49
51
|
attribute :>> responsibility = "Seat the reservoir and expose its remaining volume.";
|
|
50
52
|
}
|
|
51
53
|
}
|
|
52
54
|
part subControl : Subsystem {
|
|
53
|
-
|
|
55
|
+
@MemoIdentity { :>> providedId = "NDS-SUB-002"; } attribute :>> name = "ControlSubsystem";
|
|
54
56
|
attribute :>> componentRole = ComponentRoleKind::controlElement;
|
|
55
57
|
attribute :>> systemType = SystemTypeKind::software;
|
|
56
58
|
attribute :>> responsibility = "Decide what the fluid path should do, and hold the therapy state.";
|
|
@@ -60,14 +62,14 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
|
|
|
60
62
|
// which is what makes a collapsed ControlSubsystem row a genuine
|
|
61
63
|
// roll-up rather than a rename of its children.
|
|
62
64
|
part subSafetyMonitor : Subsystem {
|
|
63
|
-
|
|
65
|
+
@MemoIdentity { :>> providedId = "NDS-SUB-005"; } attribute :>> name = "SafetyMonitorSubsystem";
|
|
64
66
|
attribute :>> componentRole = ComponentRoleKind::channel;
|
|
65
67
|
attribute :>> systemType = SystemTypeKind::software;
|
|
66
68
|
attribute :>> responsibility = "Watch the control path from outside it and stop delivery on breach.";
|
|
67
69
|
attribute :>> safetyPartition = "monitor partition, separate MPU region from the control partition";
|
|
68
70
|
|
|
69
71
|
part lcWatchdogChannel : LogicalComponent {
|
|
70
|
-
|
|
72
|
+
@MemoIdentity { :>> providedId = "NDS-LC-006"; } attribute :>> name = "WatchdogChannel";
|
|
71
73
|
attribute :>> componentRole = ComponentRoleKind::channel;
|
|
72
74
|
attribute :>> systemType = SystemTypeKind::software;
|
|
73
75
|
attribute :>> responsibility = "Reset to the safe state when the control loop misses its deadline.";
|
|
@@ -75,7 +77,7 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
|
|
|
75
77
|
attribute :>> diversityBasis = "independent time base from the control partition";
|
|
76
78
|
}
|
|
77
79
|
part lcPressureIntegrityChannel : LogicalComponent {
|
|
78
|
-
|
|
80
|
+
@MemoIdentity { :>> providedId = "NDS-LC-007"; } attribute :>> name = "PressureIntegrityChannel";
|
|
79
81
|
attribute :>> componentRole = ComponentRoleKind::channel;
|
|
80
82
|
attribute :>> systemType = SystemTypeKind::software;
|
|
81
83
|
attribute :>> responsibility = "Cross-check pressure against the commanded rate and stop on divergence.";
|
|
@@ -84,7 +86,7 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
|
|
|
84
86
|
}
|
|
85
87
|
}
|
|
86
88
|
part lcDoseController : LogicalComponent {
|
|
87
|
-
|
|
89
|
+
@MemoIdentity { :>> providedId = "NDS-LC-004"; } attribute :>> name = "DoseController";
|
|
88
90
|
attribute :>> componentRole = ComponentRoleKind::controlElement;
|
|
89
91
|
attribute :>> systemType = SystemTypeKind::software;
|
|
90
92
|
attribute :>> responsibility = "Turn a prescription into rate commands.";
|
|
@@ -92,7 +94,7 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
|
|
|
92
94
|
attribute :>> controlledVariable = "infusion rate";
|
|
93
95
|
}
|
|
94
96
|
part lcTherapyStateStore : LogicalComponent {
|
|
95
|
-
|
|
97
|
+
@MemoIdentity { :>> providedId = "NDS-LC-005"; } attribute :>> name = "TherapyStateStore";
|
|
96
98
|
attribute :>> componentRole = ComponentRoleKind::dataStore;
|
|
97
99
|
attribute :>> systemType = SystemTypeKind::software;
|
|
98
100
|
attribute :>> responsibility = "Hold the active therapy record across power cycles.";
|
|
@@ -101,27 +103,27 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
|
|
|
101
103
|
}
|
|
102
104
|
}
|
|
103
105
|
part subUserInterface : Subsystem {
|
|
104
|
-
|
|
106
|
+
@MemoIdentity { :>> providedId = "NDS-SUB-003"; } attribute :>> name = "UserInterfaceSubsystem";
|
|
105
107
|
attribute :>> componentRole = ComponentRoleKind::userInterface;
|
|
106
108
|
attribute :>> systemType = SystemTypeKind::software;
|
|
107
109
|
attribute :>> responsibility = "Present therapy state to the clinician and accept their input.";
|
|
108
110
|
|
|
109
111
|
part lcDisplayManager : LogicalComponent {
|
|
110
|
-
|
|
112
|
+
@MemoIdentity { :>> providedId = "NDS-LC-008"; } attribute :>> name = "DisplayManager";
|
|
111
113
|
attribute :>> componentRole = ComponentRoleKind::userInterface;
|
|
112
114
|
attribute :>> systemType = SystemTypeKind::software;
|
|
113
115
|
attribute :>> responsibility = "Render therapy state on the main screen.";
|
|
114
116
|
attribute :>> interactionSummary = "read-only status surface, refreshed once per second";
|
|
115
117
|
}
|
|
116
118
|
part lcAlarmAnnunciator : LogicalComponent {
|
|
117
|
-
|
|
119
|
+
@MemoIdentity { :>> providedId = "NDS-LC-009"; } attribute :>> name = "AlarmAnnunciator";
|
|
118
120
|
attribute :>> componentRole = ComponentRoleKind::userInterface;
|
|
119
121
|
attribute :>> systemType = SystemTypeKind::software;
|
|
120
122
|
attribute :>> responsibility = "Raise audible and visible alarms by priority.";
|
|
121
123
|
attribute :>> interactionSummary = "IEC 60601-1-8 alarm signals";
|
|
122
124
|
}
|
|
123
125
|
part lcKeypadHandler : LogicalComponent {
|
|
124
|
-
|
|
126
|
+
@MemoIdentity { :>> providedId = "NDS-LC-010"; } attribute :>> name = "KeypadHandler";
|
|
125
127
|
attribute :>> componentRole = ComponentRoleKind::userInterface;
|
|
126
128
|
attribute :>> systemType = SystemTypeKind::software;
|
|
127
129
|
attribute :>> responsibility = "Debounce and interpret key presses.";
|
|
@@ -129,19 +131,19 @@ package memo_examples_nested_architecture_dsm_architecture_logical_structure {
|
|
|
129
131
|
}
|
|
130
132
|
}
|
|
131
133
|
part subPower : Subsystem {
|
|
132
|
-
|
|
134
|
+
@MemoIdentity { :>> providedId = "NDS-SUB-004"; } attribute :>> name = "PowerSubsystem";
|
|
133
135
|
attribute :>> componentRole = ComponentRoleKind::generic;
|
|
134
136
|
attribute :>> systemType = SystemTypeKind::hardware;
|
|
135
137
|
attribute :>> responsibility = "Supply and monitor power across mains and battery operation.";
|
|
136
138
|
|
|
137
139
|
part lcBatteryManager : LogicalComponent {
|
|
138
|
-
|
|
140
|
+
@MemoIdentity { :>> providedId = "NDS-LC-011"; } attribute :>> name = "BatteryManager";
|
|
139
141
|
attribute :>> componentRole = ComponentRoleKind::generic;
|
|
140
142
|
attribute :>> systemType = SystemTypeKind::hardware;
|
|
141
143
|
attribute :>> responsibility = "Charge, gauge and protect the battery.";
|
|
142
144
|
}
|
|
143
145
|
part lcPowerRailMonitor : LogicalComponent {
|
|
144
|
-
|
|
146
|
+
@MemoIdentity { :>> providedId = "NDS-LC-012"; } attribute :>> name = "PowerRailMonitor";
|
|
145
147
|
attribute :>> componentRole = ComponentRoleKind::channel;
|
|
146
148
|
attribute :>> systemType = SystemTypeKind::hardware;
|
|
147
149
|
attribute :>> responsibility = "Detect rail brownout and request a source switch.";
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Who holds the needs, and where they arise.
|
|
2
|
+
//
|
|
3
|
+
// Both were prose on the Need — `userPopulationReference = "ward nurses,
|
|
4
|
+
// including those wearing corrective lenses"` and an
|
|
5
|
+
// `operationalContextReference` sentence. A user's characteristics belong on
|
|
6
|
+
// the User, where IEC 62366-1's profile is already typed, and a need reaches
|
|
7
|
+
// its user through HeldBy.
|
|
8
|
+
package memo_examples_nested_architecture_dsm_architecture_operational_context {
|
|
9
|
+
private import ScalarValues::*;
|
|
10
|
+
|
|
11
|
+
private import memo_core_enumerations::*;
|
|
12
|
+
private import memo_architecture_operational_context_actors::*;
|
|
13
|
+
private import memo_architecture_operational_context_use_context::*;
|
|
14
|
+
|
|
15
|
+
private import memo_core_common::*;
|
|
16
|
+
private import memo_core_common::MemoIdentity;
|
|
17
|
+
part usrWardNurse : User {
|
|
18
|
+
@MemoIdentity { :>> providedId = "NDS-USR-001"; }
|
|
19
|
+
attribute :>> name = "WardNurse";
|
|
20
|
+
attribute :>> userPopulation = "ward nurses";
|
|
21
|
+
attribute :>> impairmentConsiderations = "some wear corrective lenses; display legibility at bedside distance";
|
|
22
|
+
attribute :>> intendedTraining = "device orientation at ward induction";
|
|
23
|
+
attribute :>> intendedQualification = "registered nurse";
|
|
24
|
+
attribute :>> clinicalRole = "bedside therapy management";
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
part ctxIntraHospitalTransport : UseContext {
|
|
28
|
+
@MemoIdentity { :>> providedId = "NDS-CTX-001"; }
|
|
29
|
+
attribute :>> name = "IntraHospitalTransport";
|
|
30
|
+
attribute :>> careSetting = "inpatient ward and transfer between wards";
|
|
31
|
+
attribute :>> environment = "moving bed, up to four hours away from mains power";
|
|
32
|
+
attribute :>> connectedUse = false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -9,32 +9,34 @@ package memo_examples_nested_architecture_dsm_assurance_requirements_needs {
|
|
|
9
9
|
private import memo_core_relationships::*;
|
|
10
10
|
private import memo_assurance_requirements_needs::*;
|
|
11
11
|
private import memo_examples_nested_architecture_dsm_assurance_requirements::*;
|
|
12
|
+
private import memo_examples_nested_architecture_dsm_architecture_operational_context::*;
|
|
12
13
|
|
|
14
|
+
private import memo_core_common::*;
|
|
15
|
+
private import memo_core_common::MemoIdentity;
|
|
13
16
|
requirement needAccurateTherapy : Need {
|
|
14
|
-
|
|
17
|
+
@MemoIdentity { :>> providedId = "NDS-NEED-001"; } attribute :>> name = "AccurateTherapyDelivery";
|
|
15
18
|
attribute :>> needKind = NeedKind::'stakeholder';
|
|
16
19
|
attribute :>> statement = "Clinicians need the delivered dose to match the prescription closely enough to be clinically safe.";
|
|
17
20
|
attribute :>> priority = "high";
|
|
18
21
|
}
|
|
19
22
|
requirement needProtectionFromHarm : Need {
|
|
20
|
-
|
|
23
|
+
@MemoIdentity { :>> providedId = "NDS-NEED-002"; } attribute :>> name = "ProtectionFromDeliveryFaults";
|
|
21
24
|
attribute :>> needKind = NeedKind::'stakeholder';
|
|
22
25
|
attribute :>> statement = "Patients need delivery to stop before a line fault or air bolus reaches them.";
|
|
23
26
|
attribute :>> priority = "high";
|
|
24
27
|
}
|
|
25
28
|
requirement needUninterruptedTherapy : Need {
|
|
26
|
-
|
|
29
|
+
@MemoIdentity { :>> providedId = "NDS-NEED-003"; } attribute :>> name = "UninterruptedTherapy";
|
|
27
30
|
attribute :>> needKind = NeedKind::operational;
|
|
28
31
|
attribute :>> statement = "Wards need therapy to continue through transport and mains interruptions.";
|
|
29
32
|
attribute :>> priority = "medium";
|
|
30
|
-
|
|
33
|
+
ref :>> useContext = ctxIntraHospitalTransport;
|
|
31
34
|
}
|
|
32
35
|
requirement needLegibleStatus : Need {
|
|
33
|
-
|
|
36
|
+
@MemoIdentity { :>> providedId = "NDS-NEED-004"; } attribute :>> name = "LegibleTherapyStatus";
|
|
34
37
|
attribute :>> needKind = NeedKind::'stakeholder';
|
|
35
38
|
attribute :>> statement = "Clinicians need to read therapy state and alarms correctly from the bedside.";
|
|
36
39
|
attribute :>> priority = "high";
|
|
37
|
-
attribute :>> userPopulationReference = "ward nurses, including those wearing corrective lenses";
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
// Need → Requirement.
|
|
@@ -50,4 +52,7 @@ package memo_examples_nested_architecture_dsm_assurance_requirements_needs {
|
|
|
50
52
|
// (IEC 62304), which is a second, requirement-to-requirement trace axis.
|
|
51
53
|
connection derAlarmFromSystem : DerivesFrom connect sourceDriver ::> reqOcclusionDetection to targetRequirement ::> reqAlarmAnnunciation;
|
|
52
54
|
connection derConfirmationFromSystem : DerivesFrom connect sourceDriver ::> reqDoseAccuracy to targetRequirement ::> reqPrescriptionConfirmation;
|
|
55
|
+
// Whose need this is. The nurse's characteristics are on the User.
|
|
56
|
+
connection heldLegible : HeldBy connect need ::> needLegibleStatus to holder ::> usrWardNurse;
|
|
57
|
+
connection heldAccurate : HeldBy connect need ::> needAccurateTherapy to holder ::> usrWardNurse;
|
|
53
58
|
}
|