@memoarchitect/ontology 0.6.5 → 0.8.22
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/model/catalog/connected_patient_monitor.sysml +1 -1
- package/examples/connected-patient-monitor/model/catalog/project.sysml +24 -0
- package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/connected-patient-monitor/model/{viewpoints → catalog/viewpoints/unassigned/views}/connected_patient_monitor_overview.sysml +1 -1
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +7 -5
- package/examples/embedded-infusion-pump/model/catalog/project.sysml +24 -0
- package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/embedded-infusion-pump/model/{viewpoints → catalog/viewpoints/unassigned/views}/embedded_infusion_pump_overview.sysml +1 -1
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
- package/examples/functional-logical-physical/model/catalog/project.sysml +24 -0
- package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/functional-logical-physical/model/{viewpoints → catalog/viewpoints/unassigned/views}/functional_logical_physical_overview.sysml +1 -1
- package/examples/gpca-pump/methodology/gpca_methodology.sysml +7 -8
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +89 -11
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +19 -9
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +342 -100
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +27 -13
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +329 -272
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +57 -16
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +12 -8
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +14 -10
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +1 -15
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +181 -264
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +95 -60
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -11
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +102 -101
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +47 -30
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +301 -354
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +116 -36
- package/examples/gpca-pump/model/catalog/project.sysml +26 -0
- package/examples/gpca-pump/model/catalog/viewpoints/context/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/context/views}/context_system_context_view.sysml +4 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/cybersecurity_cybersecurity_view.sysml +4 -4
- package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_cyber_assessment_view.sysml +4 -4
- package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_threat_model_view.sysml +5 -5
- package/examples/gpca-pump/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_allocation_view.sysml +2 -2
- package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_browser_view.sysml +3 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/behavior_action_flow_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/document_architecture_description_view.sysml +8 -8
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_device_interconnect_view.sysml +5 -5
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_logical_architecture_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_mode_state_view.sysml +4 -4
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_system_decomposition_view.sysml +3 -3
- package/examples/gpca-pump/model/catalog/viewpoints/operational/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_scenario_sequence_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_use_case_view.sysml +4 -4
- package/examples/gpca-pump/model/catalog/viewpoints/physical/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/physical/views}/physical_physical_bom_view.sysml +2 -2
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/document_dhf_index_view.sysml +8 -8
- package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/requirements_requirements_trace_view.sysml +2 -2
- package/examples/gpca-pump/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_hazard_analysis_view.sysml +8 -5
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_rmf_view.sysml +7 -5
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_fmea_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_risk_chain_view.sysml +3 -3
- package/examples/gpca-pump/model/catalog/viewpoints/software/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/document_sdd_view.sysml +4 -4
- package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/software_software_architecture_view.sysml +5 -5
- package/examples/gpca-pump/model/catalog/viewpoints/usability/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/usability/views}/document_usability_view.sysml +8 -6
- package/examples/gpca-pump/model/catalog/viewpoints/verification/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/document_vv_view.sysml +7 -5
- package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/verification_verification_coverage_view.sysml +3 -3
- package/examples/ivd-laboratory-system/model/catalog/project.sysml +24 -0
- package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/ivd-laboratory-system/model/{viewpoints → catalog/viewpoints/unassigned/views}/ivd_laboratory_system_overview.sysml +1 -1
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +4 -2
- package/examples/manual-surgical-instrument/model/catalog/project.sysml +24 -0
- package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/manual-surgical-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/manual_surgical_instrument_overview.sysml +1 -1
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
- package/examples/multidimensional-layers/model/catalog/project.sysml +24 -0
- package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/multidimensional-layers/model/{viewpoints → catalog/viewpoints/unassigned/views}/multidimensional_layers_overview.sysml +1 -1
- package/examples/nested-architecture-dsm/README.md +49 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +179 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +165 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +53 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +89 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +113 -0
- package/examples/nested-architecture-dsm/model/catalog/project.sysml +28 -0
- package/examples/nested-architecture-dsm/model/catalog/traces.sysml +48 -0
- package/examples/reusable-instrument/model/catalog/project.sysml +24 -0
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +11 -8
- package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/reusable-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/reusable_instrument_overview.sysml +1 -1
- package/examples/ros-mobile-robot/README.md +40 -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 +13 -0
- package/examples/software-only-medical-device/model/catalog/project.sysml +28 -0
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -5
- package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/software-only-medical-device/model/{viewpoints → catalog/viewpoints/unassigned/views}/software_only_medical_device_overview.sysml +1 -1
- package/examples/surgical-closure-workflow/model/catalog/project.sysml +24 -0
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +57 -57
- package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/surgical-closure-workflow/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_closure_workflow_overview.sysml +1 -1
- package/examples/surgical-robot/model/catalog/project.sysml +24 -0
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +6 -4
- package/examples/surgical-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/surgical-robot/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_robot_overview.sysml +1 -1
- package/examples/sysml-diagram-samples/README.md +7 -0
- package/examples/sysml-diagram-samples/dhf/documents/DOC-HAR-001.md +11 -0
- package/examples/sysml-diagram-samples/memo.package.yaml +11 -5
- package/examples/sysml-diagram-samples/model/catalog/project.sysml +33 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/action_flow_view.sysml +23 -20
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/context_view.sysml +11 -11
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +47 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +143 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +87 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +94 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +109 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +13 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/requirements_view.sysml +6 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +33 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +80 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +48 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/use_case_view.sysml +15 -9
- package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +93 -0
- package/examples/temperature-alarm/model/catalog/project.sysml +24 -0
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +29 -21
- package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/temperature-alarm/model/{viewpoints → catalog/viewpoints/unassigned/views}/temperature_alarm_overview.sysml +1 -1
- package/examples/ui-screen-regions/README.md +117 -0
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +84 -0
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +212 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +61 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/drugSelectorRegion/drug-selector-expanded-2.4.1.png +0 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/mainScreenLayout/main-screen-2.4.1.png +0 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/settingsScreenLayout/settings-screen-2.4.1.png +0 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +51 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +27 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +27 -0
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +59 -0
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +25 -0
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +178 -0
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +93 -0
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +75 -0
- package/examples/ui-screen-regions/model/catalog/project.sysml +45 -0
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/traces.sysml +179 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +62 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +62 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +62 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +57 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +52 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +54 -0
- package/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/clinical/memo.package.yaml +18 -0
- package/extensions/clinical/src/methodology/clinical_methodology.sysml +22 -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/memo.package.yaml +17 -0
- package/extensions/template/src/extension.sysml +37 -0
- package/memo.manifest.yaml +15 -2
- package/methodologies/default/memo.package.yaml +19 -9
- package/methodologies/gpca/memo.package.yaml +18 -9
- package/ontology/memo.package.yaml +23 -8
- package/package.json +6 -6
- package/profile/memo.package.yaml +18 -9
- package/src/architecture/decisions/memo_decisions.sysml +28 -0
- package/src/architecture/functional/behavior/memo_behavior.sysml +50 -22
- package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
- package/src/architecture/functional/functions/memo_functions.sysml +93 -43
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -24
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +52 -12
- package/src/architecture/implementation/ui/memo_ui.sysml +276 -53
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +64 -13
- package/src/architecture/logical/structure/memo_logical_structure.sysml +92 -35
- package/src/architecture/operational/activities/memo_activities.sysml +10 -4
- package/src/architecture/operational/context/actors/memo_actors.sysml +5 -8
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +13 -30
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -16
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +57 -23
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -26
- package/src/architecture/operational/workflows/memo_workflows.sysml +28 -15
- package/src/architecture/realization/deployment/memo_deployment.sysml +111 -16
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +27 -2
- package/src/artifacts/configuration_management/memo_configuration_management.sysml +35 -0
- package/src/artifacts/core/memo_controlled_artifacts.sysml +35 -0
- package/src/artifacts/documents/risk_management/memo_risk_management.sysml +12 -0
- 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/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-input.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-output.md +5 -5
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-review.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-validation.md +2 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-verification.md +2 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/dhf-index.md +2 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/transfer-plan.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/user-needs.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-plan.md +3 -3
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-report.md +4 -4
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/incident-response.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/postmarket-surveillance.md +3 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/security-arch.md +2 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/threat-model.md +4 -4
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/vuln-assessment.md +4 -3
- package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/detailed-design.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/integration-test.md +3 -3
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sad.md +6 -5
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sbom.md +3 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sdp.md +5 -4
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/soup.md +4 -2
- package/src/artifacts/templates/dhf/iec-62304/srs.md +172 -0
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sw-traceability.md +3 -3
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/system-test.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/summative-eval.md +1 -1
- package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +93 -0
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ue-plan.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/urra.md +3 -3
- package/src/artifacts/templates/dhf/iso-14971/fmea.md +116 -0
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/har.md +3 -3
- package/src/{compliance/dhf-templates → 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 +39 -20
- package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
- package/src/assurance/requirements/memo_requirements.sysml +5 -2
- 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 +78 -7
- package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +27 -0
- package/src/assurance/verification_validation/clinical_evaluation/memo_clinical_evaluation.sysml +11 -0
- package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
- package/src/core/annotations/memo_annotations.sysml +96 -0
- package/src/core/common/memo_common.sysml +140 -18
- package/src/core/consistency_rules/consistency_rules.sysml +7 -0
- package/src/core/dimensions/dimensions.sysml +17 -1
- package/src/core/enumerations/memo_enumerations.sysml +101 -20
- package/src/core/methodology_scope/methodology_scope.sysml +7 -15
- package/src/core/relationships/memo_relationships.sysml +199 -194
- package/src/memo_namespaces.sysml +127 -67
- package/src/methodology/core/memo_core.sysml +69 -2
- package/src/methodology/profiles/memo_profiles.sysml +31 -41
- package/src/methodology/workflow/memo_workflow.sysml +7 -2
- package/src/rules/closure/closure_rules.sysml +104 -31
- package/src/rules/coverage/coverage_rules.sysml +4 -256
- package/src/rules/crosslayer/cross_layer_rules.sysml +6 -15
- package/src/rules/lifecycle/lifecycle_rules.sysml +4 -39
- package/src/rules/ontology/ontology_invariants.sysml +243 -74
- package/src/rules/quantitative/quantitative_rules.sysml +8 -8
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +10 -3
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -2
- package/src/viewpoints/clinical/{clinical_evidence_view → views/clinical_evidence_view}/clinical_evidence_view.sysml +2 -2
- package/src/viewpoints/context/context_viewpoint.sysml +4 -2
- package/src/viewpoints/context/{system_context_view → views/system_context_view}/system_context_view.sysml +2 -2
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -2
- package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view → views/cybersecurity_assessment_view}/cybersecurity_assessment_view.sysml +2 -2
- package/src/viewpoints/cybersecurity/{threat_model_view → views/threat_model_view}/threat_model_view.sysml +2 -2
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +5 -0
- package/src/viewpoints/functional/functional_viewpoint.sysml +4 -2
- package/src/viewpoints/functional/{function_allocation_view → views/function_allocation_view}/function_allocation_view.sysml +3 -3
- package/src/viewpoints/functional/{system_functional_tree_view → views/system_functional_tree_view}/system_functional_tree_view.sysml +3 -3
- package/src/viewpoints/logical/logical_viewpoint.sysml +3 -1
- package/src/viewpoints/logical/{logical_architecture_view → views/logical_architecture_view}/logical_architecture_view.sysml +2 -2
- package/src/viewpoints/operational/operational_viewpoint.sysml +4 -2
- package/src/viewpoints/operational/{use_case_view → views/use_case_view}/use_case_view.sysml +3 -3
- package/src/viewpoints/physical/physical_viewpoint.sysml +3 -1
- package/src/viewpoints/physical/{network_topology_view → views/network_topology_view}/network_topology_view.sysml +2 -2
- package/src/viewpoints/physical/{physical_bom_view → views/physical_bom_view}/physical_bom_view.sysml +2 -2
- package/src/viewpoints/rendering/memo_rendering.sysml +354 -0
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +3 -1
- package/src/viewpoints/requirements/{requirements_traceability_view → views/requirements_traceability_view}/requirements_traceability_view.sysml +2 -2
- package/src/viewpoints/risk/risk_viewpoint.sysml +3 -1
- package/src/viewpoints/risk/{risk_chain_view → views/risk_chain_view}/risk_chain_view.sysml +2 -2
- package/src/viewpoints/software/software_viewpoint.sysml +3 -1
- package/src/viewpoints/software/{software_architecture_view → views/software_architecture_view}/software_architecture_view.sysml +2 -2
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +28 -0
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +23 -0
- package/src/viewpoints/usability/usability_viewpoint.sysml +3 -1
- package/src/viewpoints/usability/{usability_engineering_view → views/usability_engineering_view}/usability_engineering_view.sysml +2 -2
- package/src/viewpoints/verification/verification_viewpoint.sysml +4 -2
- package/src/viewpoints/verification/{verification_coverage_view → views/verification_coverage_view}/verification_coverage_view.sysml +3 -3
- package/templates/connected-device/memo.package.yaml +11 -5
- package/templates/connected-device/model/catalog/project.sysml +28 -0
- package/templates/connected-device/syside.toml +1 -1
- package/templates/default/memo.package.yaml +11 -5
- package/templates/default/model/catalog/project.sysml +28 -0
- package/templates/default/syside.toml +1 -1
- package/templates/infusion-pump/memo.package.yaml +11 -5
- package/templates/infusion-pump/model/catalog/project.sysml +28 -0
- package/templates/infusion-pump/syside.toml +1 -1
- package/templates/monitoring-device/memo.package.yaml +11 -5
- package/templates/monitoring-device/model/catalog/project.sysml +28 -0
- package/templates/monitoring-device/syside.toml +1 -1
- package/templates/samd/memo.package.yaml +11 -5
- package/templates/samd/model/catalog/project.sysml +28 -0
- package/templates/samd/syside.toml +1 -1
- package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +0 -3
- package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +0 -3
- package/examples/extensions/README.md +0 -16
- package/examples/extensions/clinical/memo.package.yaml +0 -9
- package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -14
- package/examples/extensions/template/memo.package.yaml +0 -9
- package/examples/extensions/template/src/extension.sysml +0 -15
- package/examples/functional-logical-physical/model/functional_logical_physical.sysml +0 -3
- package/examples/gpca-pump/memo.config.yaml +0 -9
- package/examples/gpca-pump/methodology/gpca_scope.sysml +0 -25
- package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +0 -3
- package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +0 -3
- package/examples/multidimensional-layers/model/multidimensional_layers.sysml +0 -4
- package/examples/reusable-instrument/model/reusable_instrument.sysml +0 -4
- package/examples/software-only-medical-device/model/software_only_medical_device.sysml +0 -4
- package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +0 -4
- package/examples/surgical-robot/model/surgical_robot.sysml +0 -4
- package/examples/sysml-diagram-samples/model/samples/functional_flow_view.sysml +0 -164
- package/examples/sysml-diagram-samples/model/samples/interconnection_view.sysml +0 -94
- package/examples/sysml-diagram-samples/model/samples/operational_behaviour_view.sysml +0 -135
- package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +0 -109
- package/examples/sysml-diagram-samples/model/samples/tree_view.sysml +0 -56
- package/examples/temperature-alarm/model/temperature_alarm.sysml +0 -4
- package/ontology/memo.rendering.yaml +0 -84
- package/src/compliance/artifacts/memo_artifacts.sysml +0 -12
- package/src/compliance/change/memo_change.sysml +0 -17
- package/src/compliance/dhf-templates/iec-62304/srs.md +0 -138
- package/src/compliance/dhf-templates/iec-62366/task-analysis.md +0 -57
- package/src/compliance/dhf-templates/iso-14971/fmea.md +0 -93
- package/src/compliance/document_views/memo_document_views.sysml +0 -7
- package/src/compliance/iso14971/risk_management_file.sysml +0 -16
- package/src/compliance/postmarket/memo_postmarket.sysml +0 -16
- /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
- /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/change-record.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/change-control.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/formative-eval.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ui-spec.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/use-spec.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/fta.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-benefit.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-matrix.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmr.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/approval-block.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/document-control-header.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/references-section.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/revision-history-table.md +0 -0
- /package/templates/connected-device/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/connected-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/connected-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/default/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/default/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/default/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/infusion-pump/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/infusion-pump/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/infusion-pump/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/monitoring-device/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/monitoring-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/monitoring-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/samd/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/samd/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/samd/{src → model/catalog}/assurance/requirements.sysml +0 -0
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_gpca_pump_gpca_behavior_modes {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
4
|
private import memo_architecture_functional_behavior::*;
|
|
5
5
|
private import memo_core_enumerations::*;
|
|
6
|
+
private import memo_core_common::*;
|
|
7
|
+
private import memo_examples_gpca_pump_gpca_system::*;
|
|
8
|
+
private import memo_examples_gpca_pump_gpca_architecture::*;
|
|
6
9
|
|
|
7
10
|
// ═════════════════════════════════════════════════════════════
|
|
8
11
|
// GPCA mode machine per CriSys Ch.4 Fig 4.1 mode hierarchy:
|
|
@@ -26,281 +29,331 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
|
|
|
26
29
|
attribute :>> executionSemantics = "single-step synchronous; sub-modes inherit all parent-mode requirements";
|
|
27
30
|
attribute fidelityScope = "Requirements-derived therapy mode hierarchy; partial abstraction of CITE-009, not a state-for-state Stateflow transcription";
|
|
28
31
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1 Fig 4.1; CITE-009: CriSys PCA Pump Software Model";
|
|
29
|
-
}
|
|
30
32
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
// ── Mode states (Fig 4.1) ───────────────────────────
|
|
34
|
+
state modeOFF : MemoState {
|
|
35
|
+
attribute :>> id = "MODE-000";
|
|
36
|
+
attribute :>> stateKind = StateKind::mode;
|
|
34
37
|
attribute :>> name = "OFF";
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
attribute :>> modeKind = "top (default)";
|
|
39
|
+
attribute :>> description = "No functionality; the GPCA is turned off. FlowRate_output = 0 (REQ 6).";
|
|
40
|
+
attribute :>> entryCondition = "System_stop_prog commanded while ON (REQ 5); default mode";
|
|
41
|
+
attribute :>> exitCondition = "System_start_prog commanded (REQ 4)";
|
|
39
42
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.2";
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
state modeON : MemoState {
|
|
46
|
+
attribute :>> id = "MODE-001";
|
|
47
|
+
attribute :>> stateKind = StateKind::mode;
|
|
43
48
|
attribute :>> name = "ON";
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
49
|
+
attribute :>> modeKind = "operational parent";
|
|
50
|
+
attribute :>> description = "Topmost operational mode: prescription configuration (REQ 8), infusion initiation gating (REQ 7, 9), notification (REQ 10) and logging (REQ 11) are available.";
|
|
51
|
+
attribute :>> entryCondition = "System_start_prog from OFF; A.4 variables set to defaults (REQ 4)";
|
|
52
|
+
attribute :>> exitCondition = "System_stop_prog: stop infusion, cancel all notifications (REQ 5)";
|
|
48
53
|
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3";
|
|
49
|
-
}
|
|
50
|
-
state modeIDLE : ModeState {
|
|
51
|
-
attribute :>> id = "MODE-002";
|
|
52
|
-
attribute :>> name = "ON.IDLE";
|
|
53
|
-
attribute :>> modeKind = "idle";
|
|
54
|
-
attribute :>> description = "Default sub-mode on entry to ON; no infusion, FlowRate_output = 0 (REQ 14); prescription set-up happens here. 'IDLE Time' actions after Max_IDLE_Duration_const (REQ 15).";
|
|
55
|
-
attribute :>> entryCondition = "OFF -> ON transition (REQ 4); infusion complete (REQ 28); PAUSED inhibit (REQ 47)";
|
|
56
|
-
attribute :>> exitCondition = "confirmed second Infusion_initiate_prog (REQ 12/13)";
|
|
57
|
-
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.4";
|
|
58
|
-
}
|
|
59
|
-
state modeTHERAPY : ModeState {
|
|
60
|
-
attribute :>> id = "MODE-003";
|
|
61
|
-
attribute :>> name = "ON.THERAPY";
|
|
62
|
-
attribute :>> modeKind = "therapy parent";
|
|
63
|
-
attribute :>> description = "Parent of all drug-delivering sub-modes. Delivers FlowRate_Mode_macro within Tolerance_Max_const (REQ 16); monitors under-infusion (REQ 17), low reservoir (REQ 18), over-infusion, VTBI, air, reverse delivery, empty reservoir (REQ 19-23).";
|
|
64
|
-
attribute :>> entryCondition = "infusion initiated (REQ 12/13)";
|
|
65
|
-
attribute :>> exitCondition = "infusion complete to IDLE (REQ 28); manual stop from PAUSED (REQ 47); system stop (REQ 5)";
|
|
66
|
-
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5";
|
|
67
|
-
}
|
|
68
|
-
state modePAUSED : ModeState {
|
|
69
|
-
attribute :>> id = "MODE-004";
|
|
70
|
-
attribute :>> name = "ON.THERAPY.PAUSED";
|
|
71
|
-
attribute :>> modeKind = "paused (KVO delivery)";
|
|
72
|
-
attribute :>> description = "Infusion paused by notification actions or manual inhibit. FlowRate_Mode_macro = FlowRate_kvo_hd — keep-vein-open flow within Tolerance_Max_const, NOT zero (REQ 43). 'PAUSED Time' actions after Max_PAUSED_Duration_const (REQ 44). Infusion_initiate_prog while Inhibited_Infusion_macro = TRUE causes no transition (REQ 45).";
|
|
73
|
-
attribute :>> entryCondition = "REQ 19-23 alarm transitions, REQ 29 manual inhibit, REQ 30 all-inhibited, REQ 37-39 sub-mode inhibits, REQ 13 initiate-while-inhibited";
|
|
74
|
-
attribute :>> exitCondition = "Infusion_initiate_prog with Inhibited_Infusion_macro = FALSE (REQ 46); Infusion_inhibit_prog to IDLE (REQ 47)";
|
|
75
|
-
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.10 (REQ 43-47)";
|
|
76
|
-
}
|
|
77
|
-
state modeACTIVE : ModeState {
|
|
78
|
-
attribute :>> id = "MODE-005";
|
|
79
|
-
attribute :>> name = "ON.THERAPY.ACTIVE";
|
|
80
|
-
attribute :>> modeKind = "active parent";
|
|
81
|
-
attribute :>> description = "Actual infusion through BASAL, SQUARE BOLUS or PATIENT BOLUS. Only mode where a patient bolus may be requested (REQ 25). Square boluses are scheduled automatically every Interval_sbolus_prog for Duration_sbolus_prog (REQ 24). Actual_Infusion_Duration_macro accumulates here.";
|
|
82
|
-
attribute :>> entryCondition = "infusion initiated (REQ 12) or resumed (REQ 46)";
|
|
83
|
-
attribute :>> exitCondition = "infusion complete (REQ 28); PAUSED via REQ 29/30/37-39";
|
|
84
|
-
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6";
|
|
85
|
-
}
|
|
86
|
-
state modeBASAL : ModeState {
|
|
87
|
-
attribute :>> id = "MODE-006";
|
|
88
|
-
attribute :>> name = "ON.THERAPY.ACTIVE.BASAL";
|
|
89
|
-
attribute :>> modeKind = "active-basal";
|
|
90
|
-
attribute :>> description = "Constant-rate delivery at FlowRate_basal_prog within Tolerance_Max_const (REQ 40). FlowRate_Mode_macro = FlowRate_basal_prog.";
|
|
91
|
-
attribute :>> entryCondition = "infusion initiated/resumed (REQ 12/46); square bolus ended (REQ 34); patient bolus ended (REQ 35)";
|
|
92
|
-
attribute :>> exitCondition = "scheduled square bolus (REQ 31); patient bolus granted (REQ 32); Inhibited_Infusion_macro (REQ 37)";
|
|
93
|
-
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.7";
|
|
94
|
-
}
|
|
95
|
-
state modeSQUARE : ModeState {
|
|
96
|
-
attribute :>> id = "MODE-007";
|
|
97
|
-
attribute :>> name = "ON.THERAPY.ACTIVE.SQUARE_BOLUS";
|
|
98
|
-
attribute :>> modeKind = "active-square-bolus (auto-scheduled)";
|
|
99
|
-
attribute :>> description = "Prescribed extra delivery at FlowRate_sbolus_prog within Tolerance_Max_const (REQ 41). Auto-initiates at the prescribed frequency and ends after the prescribed duration — no external trigger (§4.1.8, REQ 24). FlowRate_Mode_macro = FlowRate_sbolus_prog.";
|
|
100
|
-
attribute :>> entryCondition = "scheduled start per REQ 24 with REQ 31 guards; patient bolus end with square scheduled (REQ 36)";
|
|
101
|
-
attribute :>> exitCondition = "scheduled end or Inhibited_Bolus_macro (REQ 34); patient bolus granted (REQ 33); inhibits (REQ 39)";
|
|
102
|
-
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.8";
|
|
103
|
-
}
|
|
104
|
-
state modePBOLUS : ModeState {
|
|
105
|
-
attribute :>> id = "MODE-008";
|
|
106
|
-
attribute :>> name = "ON.THERAPY.ACTIVE.PATIENT_BOLUS";
|
|
107
|
-
attribute :>> modeKind = "active-patient-bolus";
|
|
108
|
-
attribute :>> description = "Patient-requested delivery at FlowRate_pbolus_prog within Tolerance_Max_const (REQ 42). Granted only when no REQ 25 ignore condition holds. FlowRate_Mode_macro = FlowRate_pbolus_prog.";
|
|
109
|
-
attribute :>> entryCondition = "BolusRequest_prog with no REQ 25 ignore condition (REQ 32/33)";
|
|
110
|
-
attribute :>> exitCondition = "Inhibited_PatientBolus_macro or duration >= Duration_pbolus_prog (REQ 35/36); inhibits (REQ 38)";
|
|
111
|
-
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.9";
|
|
112
|
-
}
|
|
113
54
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
55
|
+
state modeIDLE : MemoState {
|
|
56
|
+
attribute :>> id = "MODE-002";
|
|
57
|
+
attribute :>> stateKind = StateKind::mode;
|
|
58
|
+
attribute :>> name = "ON.IDLE";
|
|
59
|
+
attribute :>> modeKind = "idle";
|
|
60
|
+
attribute :>> description = "Default sub-mode on entry to ON; no infusion, FlowRate_output = 0 (REQ 14); prescription set-up happens here. 'IDLE Time' actions after Max_IDLE_Duration_const (REQ 15).";
|
|
61
|
+
attribute :>> entryCondition = "OFF -> ON transition (REQ 4); infusion complete (REQ 28); PAUSED inhibit (REQ 47)";
|
|
62
|
+
attribute :>> exitCondition = "confirmed second Infusion_initiate_prog (REQ 12/13)";
|
|
63
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.4";
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
state modeTHERAPY : MemoState {
|
|
67
|
+
attribute :>> id = "MODE-003";
|
|
68
|
+
attribute :>> stateKind = StateKind::mode;
|
|
69
|
+
attribute :>> name = "ON.THERAPY";
|
|
70
|
+
attribute :>> modeKind = "therapy parent";
|
|
71
|
+
attribute :>> description = "Parent of all drug-delivering sub-modes. Delivers FlowRate_Mode_macro within Tolerance_Max_const (REQ 16); monitors under-infusion (REQ 17), low reservoir (REQ 18), over-infusion, VTBI, air, reverse delivery, empty reservoir (REQ 19-23).";
|
|
72
|
+
attribute :>> entryCondition = "infusion initiated (REQ 12/13)";
|
|
73
|
+
attribute :>> exitCondition = "infusion complete to IDLE (REQ 28); manual stop from PAUSED (REQ 47); system stop (REQ 5)";
|
|
74
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5";
|
|
75
|
+
|
|
76
|
+
state modePAUSED : MemoState {
|
|
77
|
+
attribute :>> id = "MODE-004";
|
|
78
|
+
attribute :>> stateKind = StateKind::mode;
|
|
79
|
+
attribute :>> name = "ON.THERAPY.PAUSED";
|
|
80
|
+
attribute :>> modeKind = "paused (KVO delivery)";
|
|
81
|
+
attribute :>> description = "Infusion paused by notification actions or manual inhibit. FlowRate_Mode_macro = FlowRate_kvo_hd — keep-vein-open flow within Tolerance_Max_const, NOT zero (REQ 43). 'PAUSED Time' actions after Max_PAUSED_Duration_const (REQ 44). Infusion_initiate_prog while Inhibited_Infusion_macro = TRUE causes no transition (REQ 45).";
|
|
82
|
+
attribute :>> entryCondition = "REQ 19-23 alarm transitions, REQ 29 manual inhibit, REQ 30 all-inhibited, REQ 37-39 sub-mode inhibits, REQ 13 initiate-while-inhibited";
|
|
83
|
+
attribute :>> exitCondition = "Infusion_initiate_prog with Inhibited_Infusion_macro = FALSE (REQ 46); Infusion_inhibit_prog to IDLE (REQ 47)";
|
|
84
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.10 (REQ 43-47)";
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
state modeACTIVE : MemoState {
|
|
88
|
+
attribute :>> id = "MODE-005";
|
|
89
|
+
attribute :>> stateKind = StateKind::mode;
|
|
90
|
+
attribute :>> name = "ON.THERAPY.ACTIVE";
|
|
91
|
+
attribute :>> modeKind = "active parent";
|
|
92
|
+
attribute :>> description = "Actual infusion through BASAL, SQUARE BOLUS or PATIENT BOLUS. Only mode where a patient bolus may be requested (REQ 25). Square boluses are scheduled automatically every Interval_sbolus_prog for Duration_sbolus_prog (REQ 24). Actual_Infusion_Duration_macro accumulates here.";
|
|
93
|
+
attribute :>> entryCondition = "infusion initiated (REQ 12) or resumed (REQ 46)";
|
|
94
|
+
attribute :>> exitCondition = "infusion complete (REQ 28); PAUSED via REQ 29/30/37-39";
|
|
95
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6";
|
|
96
|
+
|
|
97
|
+
state modeBASAL : MemoState {
|
|
98
|
+
attribute :>> id = "MODE-006";
|
|
99
|
+
attribute :>> stateKind = StateKind::mode;
|
|
100
|
+
attribute :>> name = "ON.THERAPY.ACTIVE.BASAL";
|
|
101
|
+
attribute :>> modeKind = "active-basal";
|
|
102
|
+
attribute :>> description = "Constant-rate delivery at FlowRate_basal_prog within Tolerance_Max_const (REQ 40). FlowRate_Mode_macro = FlowRate_basal_prog.";
|
|
103
|
+
attribute :>> entryCondition = "infusion initiated/resumed (REQ 12/46); square bolus ended (REQ 34); patient bolus ended (REQ 35)";
|
|
104
|
+
attribute :>> exitCondition = "scheduled square bolus (REQ 31); patient bolus granted (REQ 32); Inhibited_Infusion_macro (REQ 37)";
|
|
105
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.7";
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
state modeSQUARE : MemoState {
|
|
109
|
+
attribute :>> id = "MODE-007";
|
|
110
|
+
attribute :>> stateKind = StateKind::mode;
|
|
111
|
+
attribute :>> name = "ON.THERAPY.ACTIVE.SQUARE_BOLUS";
|
|
112
|
+
attribute :>> modeKind = "active-square-bolus (auto-scheduled)";
|
|
113
|
+
attribute :>> description = "Prescribed extra delivery at FlowRate_sbolus_prog within Tolerance_Max_const (REQ 41). Auto-initiates at the prescribed frequency and ends after the prescribed duration — no external trigger (§4.1.8, REQ 24). FlowRate_Mode_macro = FlowRate_sbolus_prog.";
|
|
114
|
+
attribute :>> entryCondition = "scheduled start per REQ 24 with REQ 31 guards; patient bolus end with square scheduled (REQ 36)";
|
|
115
|
+
attribute :>> exitCondition = "scheduled end or Inhibited_Bolus_macro (REQ 34); patient bolus granted (REQ 33); inhibits (REQ 39)";
|
|
116
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.8";
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
state modePBOLUS : MemoState {
|
|
120
|
+
attribute :>> id = "MODE-008";
|
|
121
|
+
attribute :>> stateKind = StateKind::mode;
|
|
122
|
+
attribute :>> name = "ON.THERAPY.ACTIVE.PATIENT_BOLUS";
|
|
123
|
+
attribute :>> modeKind = "active-patient-bolus";
|
|
124
|
+
attribute :>> description = "Patient-requested delivery at FlowRate_pbolus_prog within Tolerance_Max_const (REQ 42). Granted only when no REQ 25 ignore condition holds. FlowRate_Mode_macro = FlowRate_pbolus_prog.";
|
|
125
|
+
attribute :>> entryCondition = "BolusRequest_prog with no REQ 25 ignore condition (REQ 32/33)";
|
|
126
|
+
attribute :>> exitCondition = "Inhibited_PatientBolus_macro or duration >= Duration_pbolus_prog (REQ 35/36); inhibits (REQ 38)";
|
|
127
|
+
attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.9";
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// ── Mode transitions (CriSys §4.1, 1:1 with source REQs) ──
|
|
134
|
+
transition trSystemStart first modeOFF then modeON.modeIDLE {
|
|
135
|
+
@TransitionRecord {
|
|
136
|
+
:>> id = "TR-001";
|
|
137
|
+
:>> name = "SystemStartToIdle";
|
|
138
|
+
:>> trigger = "System_start_prog commanded";
|
|
139
|
+
:>> guardSummary = "none in source (MEMO extension REQ-X-02 additionally gates therapy on POST)";
|
|
140
|
+
:>> effectSummary = "A.4 variables set to default values (REQ 4)";
|
|
141
|
+
:>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.1.2 (REQ 4)";
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
transition trSystemStop first modeON then modeOFF {
|
|
145
|
+
@TransitionRecord {
|
|
146
|
+
:>> id = "TR-002";
|
|
147
|
+
:>> name = "SystemStopToOff";
|
|
148
|
+
:>> trigger = "System_stop_prog commanded";
|
|
149
|
+
:>> guardSummary = "none — allowed from any ON sub-mode";
|
|
150
|
+
:>> effectSummary = "stop infusion, cancel all notifications (REQ 5)";
|
|
151
|
+
:>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.1.2 (REQ 5)";
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
transition trStartTherapy first modeON.modeIDLE then modeON.modeTHERAPY.modeACTIVE.modeBASAL {
|
|
155
|
+
@TransitionRecord {
|
|
156
|
+
:>> id = "TR-003";
|
|
157
|
+
:>> name = "ConfirmedInitiateToBasal";
|
|
158
|
+
:>> trigger = "second Infusion_initiate_prog (confirmation per REQ 9)";
|
|
159
|
+
:>> guardSummary = "Inhibited_Infusion_macro = FALSE; saved prescription available (REQ 7)";
|
|
160
|
+
:>> effectSummary = "Actual_Infusion_Duration_macro = 0; Actual_Volume_Infused_macro = 0 (REQ 12)";
|
|
161
|
+
:>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3.2 (REQ 12)";
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
transition trInitiateWhileInhibited first modeON.modeIDLE then modeON.modeTHERAPY.modePAUSED {
|
|
165
|
+
@TransitionRecord {
|
|
166
|
+
:>> id = "TR-004";
|
|
167
|
+
:>> name = "ConfirmedInitiateWhileInhibitedToPaused";
|
|
168
|
+
:>> trigger = "second Infusion_initiate_prog (confirmation per REQ 9)";
|
|
169
|
+
:>> guardSummary = "Inhibited_Infusion_macro = TRUE";
|
|
170
|
+
:>> effectSummary = "macros reset; 'Infusion Inhibited' actions per REQ 59 (REQ 13)";
|
|
171
|
+
:>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3.2 (REQ 13)";
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
transition trAlarmPause first modeON.modeTHERAPY then modeON.modeTHERAPY.modePAUSED {
|
|
175
|
+
@TransitionRecord {
|
|
176
|
+
:>> id = "TR-005";
|
|
177
|
+
:>> name = "TherapyAlarmToPausedKvo";
|
|
178
|
+
:>> trigger = "over-infusion flow rate (REQ 19), over-infusion VTBI (REQ 20), air embolism (REQ 21), reverse delivery (REQ 22), or empty reservoir (REQ 23) condition";
|
|
179
|
+
:>> guardSummary = "none — unconditional from any THERAPY sub-mode";
|
|
180
|
+
:>> effectSummary = "REQ 59 actions for the notification; PAUSED delivers FlowRate_kvo_hd keep-vein-open flow (REQ 43), not zero";
|
|
181
|
+
:>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 19-23)";
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
transition trInfusionComplete first modeON.modeTHERAPY.modeACTIVE then modeON.modeIDLE {
|
|
185
|
+
@TransitionRecord {
|
|
186
|
+
:>> id = "TR-006";
|
|
187
|
+
:>> name = "InfusionCompleteToIdle";
|
|
188
|
+
:>> trigger = "Actual_Infusion_Duration_macro >= Duration_total_prog OR Actual_Volume_Infused_macro >= VTBI_total_prog";
|
|
189
|
+
:>> guardSummary = "none";
|
|
190
|
+
:>> effectSummary = "'Infusion Complete' actions per REQ 59; completion record in operational log (REQ 79)";
|
|
191
|
+
:>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 28)";
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
transition trManualInhibit first modeON.modeTHERAPY.modeACTIVE then modeON.modeTHERAPY.modePAUSED {
|
|
195
|
+
@TransitionRecord {
|
|
196
|
+
:>> id = "TR-007";
|
|
197
|
+
:>> name = "ManualInhibitToPaused";
|
|
198
|
+
:>> trigger = "Infusion_inhibit_prog commanded";
|
|
199
|
+
:>> guardSummary = "none";
|
|
200
|
+
:>> effectSummary = "'Infusion Manually Inhibited' actions per REQ 59";
|
|
201
|
+
:>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 29)";
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
transition trAllInhibited first modeON.modeTHERAPY.modeACTIVE then modeON.modeTHERAPY.modePAUSED {
|
|
205
|
+
@TransitionRecord {
|
|
206
|
+
:>> id = "TR-008";
|
|
207
|
+
:>> name = "AllInhibitedToPaused";
|
|
208
|
+
:>> trigger = "Inhibited_Infusion_macro AND Inhibited_Bolus_macro AND Inhibited_PatientBolus_macro all TRUE";
|
|
209
|
+
:>> guardSummary = "none";
|
|
210
|
+
:>> effectSummary = "therapy paused at KVO flow";
|
|
211
|
+
:>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 30)";
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
transition trSquareBolus first modeON.modeTHERAPY.modeACTIVE.modeBASAL then modeON.modeTHERAPY.modeACTIVE.modeSQUARE {
|
|
215
|
+
@TransitionRecord {
|
|
216
|
+
:>> id = "TR-009";
|
|
217
|
+
:>> name = "ScheduledSquareBolusStart";
|
|
218
|
+
:>> trigger = "scheduled SQUARE BOLUS start — auto-initiates every Interval_sbolus_prog for Duration_sbolus_prog during Duration_total_prog (REQ 24); no external trigger";
|
|
219
|
+
:>> guardSummary = "Inhibited_Bolus_macro = FALSE AND Inhibited_Infusion_macro = FALSE AND (no BolusRequest_prog OR a REQ 25 ignore condition holds)";
|
|
220
|
+
:>> effectSummary = "FlowRate_Mode_macro = FlowRate_sbolus_prog";
|
|
221
|
+
:>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 31) and §4.1.6.1 (REQ 24)";
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
transition trPatientBolus first modeON.modeTHERAPY.modeACTIVE.modeBASAL then modeON.modeTHERAPY.modeACTIVE.modePBOLUS {
|
|
225
|
+
@TransitionRecord {
|
|
226
|
+
:>> id = "TR-010";
|
|
227
|
+
:>> name = "BasalToPatientBolus";
|
|
228
|
+
:>> trigger = "BolusRequest_prog";
|
|
229
|
+
:>> guardSummary = "none of the REQ 25 ignore conditions hold (inhibits, lockout, bolus count, already in PATIENT BOLUS)";
|
|
230
|
+
:>> effectSummary = "FlowRate_Mode_macro = FlowRate_pbolus_prog";
|
|
231
|
+
:>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 32)";
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
transition trSquareToPatientBolus first modeON.modeTHERAPY.modeACTIVE.modeSQUARE then modeON.modeTHERAPY.modeACTIVE.modePBOLUS {
|
|
235
|
+
@TransitionRecord {
|
|
236
|
+
:>> id = "TR-011";
|
|
237
|
+
:>> name = "SquareBolusToPatientBolus";
|
|
238
|
+
:>> trigger = "BolusRequest_prog";
|
|
239
|
+
:>> guardSummary = "none of the REQ 25 ignore conditions hold";
|
|
240
|
+
:>> effectSummary = "patient bolus interrupts the square bolus; FlowRate_Mode_macro = FlowRate_pbolus_prog";
|
|
241
|
+
:>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 33)";
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
transition trSquareToBasal first modeON.modeTHERAPY.modeACTIVE.modeSQUARE then modeON.modeTHERAPY.modeACTIVE.modeBASAL {
|
|
245
|
+
@TransitionRecord {
|
|
246
|
+
:>> id = "TR-012";
|
|
247
|
+
:>> name = "SquareBolusEndToBasal";
|
|
248
|
+
:>> trigger = "Inhibited_Bolus_macro = TRUE or scheduled square bolus end (REQ 24)";
|
|
249
|
+
:>> guardSummary = "Inhibited_Infusion_macro = FALSE AND (no BolusRequest_prog OR a REQ 25 ignore condition holds)";
|
|
250
|
+
:>> effectSummary = "FlowRate_Mode_macro = FlowRate_basal_prog";
|
|
251
|
+
:>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 34)";
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
transition trPatientBolusToBasal first modeON.modeTHERAPY.modeACTIVE.modePBOLUS then modeON.modeTHERAPY.modeACTIVE.modeBASAL {
|
|
255
|
+
@TransitionRecord {
|
|
256
|
+
:>> id = "TR-013";
|
|
257
|
+
:>> name = "PatientBolusEndToBasal";
|
|
258
|
+
:>> trigger = "Inhibited_PatientBolus_macro = TRUE or patient-bolus duration >= Duration_pbolus_prog";
|
|
259
|
+
:>> guardSummary = "Inhibited_Infusion_macro = FALSE AND (no square bolus scheduled in progress OR (square bolus scheduled AND Inhibited_Bolus_macro = TRUE))";
|
|
260
|
+
:>> effectSummary = "patient bolus delivery stopped; FlowRate_Mode_macro = FlowRate_basal_prog";
|
|
261
|
+
:>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 35)";
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
transition trPatientBolusToSquare first modeON.modeTHERAPY.modeACTIVE.modePBOLUS then modeON.modeTHERAPY.modeACTIVE.modeSQUARE {
|
|
265
|
+
@TransitionRecord {
|
|
266
|
+
:>> id = "TR-014";
|
|
267
|
+
:>> name = "PatientBolusEndToSquareBolus";
|
|
268
|
+
:>> trigger = "Inhibited_PatientBolus_macro = TRUE or patient-bolus duration >= Duration_pbolus_prog";
|
|
269
|
+
:>> guardSummary = "Inhibited_Infusion_macro = FALSE AND a square bolus is scheduled to be in progress AND Inhibited_Bolus_macro = FALSE";
|
|
270
|
+
:>> effectSummary = "patient bolus delivery stopped; scheduled square bolus resumes";
|
|
271
|
+
:>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 36)";
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
transition trBasalInhibit first modeON.modeTHERAPY.modeACTIVE.modeBASAL then modeON.modeTHERAPY.modePAUSED {
|
|
275
|
+
@TransitionRecord {
|
|
276
|
+
:>> id = "TR-015";
|
|
277
|
+
:>> name = "BasalInhibitToPaused";
|
|
278
|
+
:>> trigger = "Inhibited_Infusion_macro = TRUE";
|
|
279
|
+
:>> guardSummary = "none";
|
|
280
|
+
:>> effectSummary = "therapy paused at KVO flow";
|
|
281
|
+
:>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 37)";
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
transition trPatientBolusInhibit first modeON.modeTHERAPY.modeACTIVE.modePBOLUS then modeON.modeTHERAPY.modePAUSED {
|
|
285
|
+
@TransitionRecord {
|
|
286
|
+
:>> id = "TR-016";
|
|
287
|
+
:>> name = "PatientBolusInhibitToPaused";
|
|
288
|
+
:>> trigger = "Inhibited_PatientBolus_macro = TRUE AND Inhibited_Infusion_macro = TRUE";
|
|
289
|
+
:>> guardSummary = "none";
|
|
290
|
+
:>> effectSummary = "therapy paused at KVO flow";
|
|
291
|
+
:>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 38)";
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
transition trSquareInhibit first modeON.modeTHERAPY.modeACTIVE.modeSQUARE then modeON.modeTHERAPY.modePAUSED {
|
|
295
|
+
@TransitionRecord {
|
|
296
|
+
:>> id = "TR-017";
|
|
297
|
+
:>> name = "SquareBolusInhibitToPaused";
|
|
298
|
+
:>> trigger = "Inhibited_Bolus_macro = TRUE AND Inhibited_Infusion_macro = TRUE";
|
|
299
|
+
:>> guardSummary = "none";
|
|
300
|
+
:>> effectSummary = "therapy paused at KVO flow";
|
|
301
|
+
:>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 39)";
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
transition trResume first modeON.modeTHERAPY.modePAUSED then modeON.modeTHERAPY.modeACTIVE.modeBASAL {
|
|
305
|
+
@TransitionRecord {
|
|
306
|
+
:>> id = "TR-018";
|
|
307
|
+
:>> name = "PausedResumeToBasal";
|
|
308
|
+
:>> trigger = "Infusion_initiate_prog";
|
|
309
|
+
:>> guardSummary = "Inhibited_Infusion_macro = FALSE (while TRUE, no transition occurs — REQ 45)";
|
|
310
|
+
:>> effectSummary = "basal flow re-established";
|
|
311
|
+
:>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.10.2 (REQ 46)";
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
transition trPausedStop first modeON.modeTHERAPY.modePAUSED then modeON.modeIDLE {
|
|
315
|
+
@TransitionRecord {
|
|
316
|
+
:>> id = "TR-019";
|
|
317
|
+
:>> name = "PausedInhibitToIdle";
|
|
318
|
+
:>> trigger = "Infusion_inhibit_prog commanded";
|
|
319
|
+
:>> guardSummary = "none";
|
|
320
|
+
:>> effectSummary = "'Infusion Stopped Manually' actions per REQ 59";
|
|
321
|
+
:>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.10.2 (REQ 47)";
|
|
322
|
+
}
|
|
323
|
+
}
|
|
294
324
|
}
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
attribute :>>
|
|
325
|
+
|
|
326
|
+
// ── Mode-conditioned configurations ─────────────────────────
|
|
327
|
+
// AADL modes and ARCADIA configurations select the live arrangement, not
|
|
328
|
+
// merely a label on a state. The variation point is the single choice;
|
|
329
|
+
// each variant binds that choice to the corresponding GPCA therapy mode.
|
|
330
|
+
// The individual configurations remain ordinary model elements, so their
|
|
331
|
+
// active mode is navigable as well as visible in the choice-point edge.
|
|
332
|
+
part basalConfiguration : ModeConfiguration {
|
|
333
|
+
attribute :>> id = "CFG-001";
|
|
334
|
+
attribute :>> name = "BasalTherapyConfiguration";
|
|
335
|
+
ref :>> activeMode = topLevelModeMachine.modeON.modeTHERAPY.modeACTIVE.modeBASAL;
|
|
336
|
+
}
|
|
337
|
+
part squareBolusConfiguration : ModeConfiguration {
|
|
338
|
+
attribute :>> id = "CFG-002";
|
|
339
|
+
attribute :>> name = "SquareBolusConfiguration";
|
|
340
|
+
ref :>> activeMode = topLevelModeMachine.modeON.modeTHERAPY.modeACTIVE.modeSQUARE;
|
|
341
|
+
}
|
|
342
|
+
part patientBolusConfiguration : ModeConfiguration {
|
|
343
|
+
attribute :>> id = "CFG-003";
|
|
344
|
+
attribute :>> name = "PatientBolusConfiguration";
|
|
345
|
+
ref :>> activeMode = topLevelModeMachine.modeON.modeTHERAPY.modeACTIVE.modePBOLUS;
|
|
346
|
+
}
|
|
347
|
+
part pausedConfiguration : ModeConfiguration {
|
|
348
|
+
attribute :>> id = "CFG-004";
|
|
349
|
+
attribute :>> name = "PausedKvoConfiguration";
|
|
350
|
+
ref :>> activeMode = topLevelModeMachine.modeON.modeTHERAPY.modePAUSED;
|
|
351
|
+
}
|
|
352
|
+
variation part activeTherapyConfiguration : ModeConfiguration[1] {
|
|
353
|
+
variant basalConfiguration;
|
|
354
|
+
variant squareBolusConfiguration;
|
|
355
|
+
variant patientBolusConfiguration;
|
|
356
|
+
variant pausedConfiguration;
|
|
304
357
|
}
|
|
305
358
|
|
|
306
359
|
// ── Behavior properties and timing constraints ──────────────
|
|
@@ -342,7 +395,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
|
|
|
342
395
|
attribute :>> constraintKind = TimingConstraintKind::latency;
|
|
343
396
|
attribute :>> minMs = "0";
|
|
344
397
|
attribute :>> maxMs = "20";
|
|
345
|
-
|
|
398
|
+
ref :>> referenceElement = fcAlarmStop;
|
|
346
399
|
attribute :>> verificationMethod = VerificationMethodKind::modelChecking;
|
|
347
400
|
attribute :>> sourceReference = "MEMO extension — illustrative wall-clock budget; the source specifies synchronous same-step (immediate) semantics with no timing figures";
|
|
348
401
|
}
|
|
@@ -352,7 +405,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
|
|
|
352
405
|
attribute :>> constraintKind = TimingConstraintKind::latency;
|
|
353
406
|
attribute :>> minMs = "0";
|
|
354
407
|
attribute :>> maxMs = "100";
|
|
355
|
-
|
|
408
|
+
ref :>> referenceElement = fcPatientBolus;
|
|
356
409
|
attribute :>> verificationMethod = VerificationMethodKind::test;
|
|
357
410
|
attribute :>> sourceReference = "MEMO extension — illustrative wall-clock budget; not specified by the source";
|
|
358
411
|
}
|
|
@@ -362,7 +415,11 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
|
|
|
362
415
|
attribute :>> constraintKind = TimingConstraintKind::deadline;
|
|
363
416
|
attribute :>> minMs = "40";
|
|
364
417
|
attribute :>> maxMs = "60";
|
|
365
|
-
|
|
418
|
+
// The deadline is a claim about the element that kicks the watchdog, so
|
|
419
|
+
// the reference is the software module, not the requirement it supports.
|
|
420
|
+
// `referenceElement` is a MemoPart; a requirement is a requirement def
|
|
421
|
+
// and does not conform to it — that link is REQ-X-08's own trace.
|
|
422
|
+
ref :>> referenceElement = gpcaDevice.gpcaSoftware.systemMonitor;
|
|
366
423
|
attribute :>> verificationMethod = VerificationMethodKind::test;
|
|
367
424
|
attribute :>> sourceReference = "MEMO extension — supports extension requirement REQ-X-08; watchdog not specified by the source";
|
|
368
425
|
}
|