@memoarchitect/ontology 0.13.2 → 0.15.1

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.
Files changed (315) hide show
  1. package/README.md +5 -3
  2. package/examples/connected-patient-monitor/memo.identity.yaml +34 -0
  3. package/examples/connected-patient-monitor/memo.package.yaml +3 -1
  4. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +17 -12
  5. package/examples/connected-patient-monitor/model/{catalog → methodology}/project.sysml +4 -5
  6. package/examples/embedded-infusion-pump/memo.package.yaml +3 -1
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +6 -6
  8. package/examples/embedded-infusion-pump/model/{catalog → methodology}/project.sysml +4 -5
  9. package/examples/functional-logical-physical/memo.identity.yaml +28 -0
  10. package/examples/functional-logical-physical/memo.package.yaml +3 -1
  11. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
  12. package/examples/functional-logical-physical/model/{catalog → methodology}/project.sysml +4 -5
  13. package/examples/gpca-pump/analysis/Samples/01-model-overview.ipynb +40 -139
  14. package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +38 -290
  15. package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +47 -217
  16. package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +50 -191
  17. package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +42 -181
  18. package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +40 -164
  19. package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +51 -172
  20. package/examples/gpca-pump/analysis/Samples/README.md +15 -9
  21. package/examples/gpca-pump/analysis/memo_model.py +243 -0
  22. package/examples/gpca-pump/memo.identity.yaml +521 -26
  23. package/examples/gpca-pump/memo.package.yaml +3 -1
  24. package/examples/gpca-pump/methodology/gpca_profiles.sysml +56 -47
  25. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +51 -78
  26. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +359 -357
  27. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +9 -9
  28. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +56 -69
  29. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +44 -59
  30. package/examples/gpca-pump/model/catalog/gpca_context.sysml +23 -35
  31. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +33 -40
  32. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +62 -63
  33. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +362 -483
  34. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +45 -70
  35. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -12
  36. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +173 -169
  37. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +139 -225
  38. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +43 -47
  39. package/examples/gpca-pump/model/catalog/gpca_system.sysml +68 -65
  40. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +147 -116
  41. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +65 -90
  42. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +4 -6
  43. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +4 -6
  44. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +4 -6
  45. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +4 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +2 -4
  47. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +7 -6
  48. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +4 -6
  49. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -6
  50. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
  51. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +4 -6
  52. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +4 -6
  53. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +3 -5
  54. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +3 -5
  55. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +4 -6
  56. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +2 -4
  57. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +3 -5
  58. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +2 -4
  59. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +4 -6
  60. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -6
  61. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
  62. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +4 -6
  63. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +4 -6
  64. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
  65. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -6
  66. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +3 -5
  67. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
  68. package/examples/gpca-pump/model/{catalog → methodology}/project.sysml +8 -6
  69. package/examples/ivd-laboratory-system/memo.package.yaml +3 -1
  70. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +12 -9
  71. package/examples/ivd-laboratory-system/model/{catalog → methodology}/project.sysml +4 -5
  72. package/examples/manual-surgical-instrument/memo.package.yaml +3 -1
  73. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +2 -6
  74. package/examples/manual-surgical-instrument/model/{catalog → methodology}/project.sysml +4 -5
  75. package/examples/multidimensional-layers/memo.package.yaml +3 -1
  76. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +2 -4
  77. package/examples/multidimensional-layers/model/{catalog → methodology}/project.sysml +4 -5
  78. package/examples/nested-architecture-dsm/memo.identity.yaml +93 -0
  79. package/examples/nested-architecture-dsm/memo.package.yaml +3 -1
  80. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +30 -30
  81. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +28 -28
  82. package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +2 -4
  83. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +4 -4
  84. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +7 -7
  85. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +8 -8
  86. package/examples/nested-architecture-dsm/model/{catalog → methodology}/project.sysml +4 -5
  87. package/examples/reusable-instrument/memo.package.yaml +3 -1
  88. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -7
  89. package/examples/reusable-instrument/model/{catalog → methodology}/project.sysml +4 -5
  90. package/examples/robot-cell-family/README.md +34 -0
  91. package/examples/robot-cell-family/memo.identity.yaml +142 -0
  92. package/examples/robot-cell-family/memo.package.yaml +7 -0
  93. package/examples/robot-cell-family/model/methodology/project.sysml +30 -0
  94. package/examples/robot-cell-family/model/shared/shared.sysml +53 -0
  95. package/examples/robot-cell-family/model/sos/chains.sysml +36 -0
  96. package/examples/robot-cell-family/model/sos/icds.sysml +29 -0
  97. package/examples/robot-cell-family/model/sos/sos.sysml +31 -0
  98. package/examples/robot-cell-family/model/sos/use_cases.sysml +25 -0
  99. package/examples/robot-cell-family/model/systems/manipulation/manipulation_system.sysml +35 -0
  100. package/examples/robot-cell-family/model/systems/navigation/navigation_system.sysml +46 -0
  101. package/examples/robot-cell-family/model/systems/perception/perception_system.sysml +37 -0
  102. package/examples/robot-platform/memo.package.yaml +3 -0
  103. package/examples/robot-platform/model/platform.sysml +15 -0
  104. package/examples/ros-mobile-robot/README.md +5 -4
  105. package/examples/ros-mobile-robot/memo.identity.yaml +94 -0
  106. package/examples/ros-mobile-robot/memo.package.yaml +3 -1
  107. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +26 -29
  108. package/examples/ros-mobile-robot/model/{catalog → methodology}/project.sysml +8 -14
  109. package/examples/software-only-medical-device/memo.package.yaml +3 -1
  110. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +9 -10
  111. package/examples/software-only-medical-device/model/{catalog → methodology}/project.sysml +8 -9
  112. package/examples/surgical-closure-workflow/memo.package.yaml +3 -1
  113. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +23 -26
  114. package/examples/surgical-closure-workflow/model/{catalog → methodology}/project.sysml +7 -5
  115. package/examples/surgical-robot/memo.package.yaml +3 -1
  116. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +14 -12
  117. package/examples/surgical-robot/model/{catalog → methodology}/project.sysml +4 -5
  118. package/examples/sysml-diagram-samples/README.md +1 -0
  119. package/examples/sysml-diagram-samples/memo.identity.yaml +459 -0
  120. package/examples/sysml-diagram-samples/memo.package.yaml +3 -1
  121. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +10 -20
  122. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +5 -5
  123. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/browser_view.sysml +10 -13
  124. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +11 -7
  125. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/diagram_samples.sysml +63 -8
  126. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/drill_down_view.sysml +88 -0
  127. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +25 -25
  128. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/grid_view.sysml +6 -6
  129. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +15 -17
  130. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +21 -21
  131. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/package_view.sysml +7 -7
  132. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +5 -5
  133. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/sequence_view.sysml +14 -14
  134. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +16 -17
  135. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +9 -9
  136. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +7 -14
  137. package/examples/sysml-diagram-samples/model/{catalog → methodology}/project.sysml +5 -5
  138. package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +1 -1
  139. package/examples/temperature-alarm/memo.identity.yaml +6 -0
  140. package/examples/temperature-alarm/memo.package.yaml +3 -1
  141. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +43 -21
  142. package/examples/temperature-alarm/model/{catalog → methodology}/project.sysml +4 -5
  143. package/examples/ui-screen-regions/memo.identity.yaml +33 -0
  144. package/examples/ui-screen-regions/memo.package.yaml +3 -1
  145. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +12 -12
  146. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +18 -18
  147. package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +6 -6
  148. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +3 -3
  149. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +1 -1
  150. package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +1 -1
  151. package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +10 -10
  152. package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +1 -1
  153. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +12 -12
  154. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +15 -15
  155. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +6 -6
  156. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -2
  157. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
  158. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
  159. package/examples/ui-screen-regions/model/{catalog → methodology}/project.sysml +4 -5
  160. package/extensions/README.md +65 -16
  161. package/extensions/aadl/memo.package.yaml +1 -1
  162. package/extensions/aadl/src/aadl_extension.sysml +5 -2
  163. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +29 -50
  164. package/extensions/clinical/memo.package.yaml +1 -1
  165. package/extensions/clinical/src/clinical_extension.sysml +2 -0
  166. package/extensions/cloud/memo.package.yaml +1 -1
  167. package/extensions/container/memo.package.yaml +1 -1
  168. package/extensions/messaging/memo.package.yaml +1 -1
  169. package/extensions/messaging/src/messaging_extension.sysml +2 -2
  170. package/extensions/ros/memo.package.yaml +1 -1
  171. package/extensions/ros/src/ros_extension.sysml +25 -24
  172. package/extensions/template/memo.package.yaml +1 -1
  173. package/extensions/template/model/extension.sysml +25 -0
  174. package/memo.manifest.yaml +1 -7
  175. package/methodologies/default/memo.package.yaml +1 -1
  176. package/methodologies/gpca/memo.package.yaml +1 -1
  177. package/ontology/memo.package.yaml +1 -1
  178. package/package.json +6 -4
  179. package/profile/memo.package.yaml +1 -1
  180. package/src/architecture/decisions/memo_decisions.sysml +9 -2
  181. package/src/architecture/functional/behavior/memo_behavior.sysml +27 -7
  182. package/src/architecture/functional/functions/memo_functions.sysml +45 -31
  183. package/src/architecture/functional/memo_architecture_functional.sysml +14 -0
  184. package/src/architecture/implementation/memo_architecture_implementation.sysml +21 -0
  185. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +7 -0
  186. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +58 -17
  187. package/src/architecture/implementation/ui/memo_ui.sysml +1 -1
  188. package/src/architecture/logical/interfaces/memo_interfaces.sysml +67 -58
  189. package/src/architecture/logical/memo_architecture_logical.sysml +13 -0
  190. package/src/architecture/logical/structure/memo_logical_structure.sysml +27 -8
  191. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +4 -1
  192. package/src/architecture/operational/memo_architecture_operational.sysml +19 -0
  193. package/src/architecture/operational/scenarios/memo_scenarios.sysml +9 -8
  194. package/src/architecture/operational/structure/memo_operational.sysml +5 -2
  195. package/src/architecture/operational/use_cases/memo_use_cases.sysml +16 -8
  196. package/src/architecture/realization/deployment/memo_deployment.sysml +30 -10
  197. package/src/architecture/realization/memo_architecture_realization.sysml +13 -0
  198. package/src/architecture/realization/physical/memo_physical_architecture.sysml +61 -0
  199. package/src/architecture/variability/memo_variability.sysml +87 -0
  200. package/src/artifacts/configuration_management/memo_configuration_management.sysml +95 -3
  201. package/src/artifacts/core/memo_controlled_artifacts.sysml +4 -2
  202. package/src/artifacts/standards/cfr_21_820.sysml +12 -24
  203. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +13 -20
  204. package/src/artifacts/standards/iec_60601_1.sysml +16 -32
  205. package/src/artifacts/standards/iec_60601_1_2.sysml +5 -10
  206. package/src/artifacts/standards/iec_60812.sysml +4 -8
  207. package/src/artifacts/standards/iec_62304.sysml +607 -47
  208. package/src/artifacts/standards/iec_62366_1.sysml +12 -24
  209. package/src/artifacts/standards/iec_81001_5_1.sysml +8 -16
  210. package/src/artifacts/standards/iso_13485.sysml +12 -24
  211. package/src/artifacts/standards/iso_14971.sysml +118 -20
  212. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +3 -6
  213. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +14 -4
  214. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +1 -2
  215. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +1 -2
  216. package/src/artifacts/templates/dhf/iec-62304/sad.md +1 -2
  217. package/src/artifacts/templates/dhf/iec-62304/sbom.md +1 -2
  218. package/src/artifacts/templates/dhf/iec-62304/sdp.md +1 -2
  219. package/src/artifacts/templates/dhf/iec-62304/soup.md +3 -5
  220. package/src/artifacts/templates/dhf/system/sad.md +1 -1
  221. package/src/artifacts/templates/dhf/system/standards-checklist.md +2 -2
  222. package/src/artifacts/templates/dhf/system/standards-traceability.md +1 -1
  223. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +339 -13
  224. package/src/assurance/human_factors/memo_human_factors.sysml +6 -2
  225. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +7 -3
  226. package/src/assurance/safety_risk/memo_risk.sysml +39 -1
  227. package/src/core/common/memo_common.sysml +61 -68
  228. package/src/core/enumerations/memo_enumerations.sysml +93 -9
  229. package/src/core/relationships/memo_relationships.sysml +17 -11
  230. package/src/core/relationships/memo_workspace_membership.sysml +284 -0
  231. package/src/core/semantics/semantics.sysml +58 -0
  232. package/src/core/terminology/terminology.sysml +7 -0
  233. package/src/memo_namespaces.sysml +6 -0
  234. package/src/methodology/archetypes/memo_archetypes.sysml +8 -16
  235. package/src/methodology/core/memo_core.sysml +85 -29
  236. package/src/methodology/profiles/memo_profiles.sysml +217 -61
  237. package/src/methodology/workflow/memo_workflow.sysml +28 -0
  238. package/src/rules/closure/closure_rules.sysml +250 -4
  239. package/src/rules/crosslayer/cross_layer_rules.sysml +11 -0
  240. package/src/rules/ontology/ontology_invariants.sysml +288 -48
  241. package/src/rules/quantitative/quantitative_rules.sysml +4 -0
  242. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +28 -28
  243. package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
  244. package/src/viewpoints/context/context_viewpoint.sysml +2 -3
  245. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +3 -5
  246. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -3
  247. package/src/viewpoints/definitions/memo_view_layout.sysml +150 -0
  248. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +0 -4
  249. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  250. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -4
  251. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -4
  252. package/src/viewpoints/logical/logical_viewpoint.sysml +2 -3
  253. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +2 -4
  254. package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
  255. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +3 -5
  256. package/src/viewpoints/physical/physical_viewpoint.sysml +2 -3
  257. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +2 -4
  258. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +2 -4
  259. package/src/viewpoints/rendering/memo_rendering.sysml +50 -98
  260. package/src/viewpoints/requirements/requirements_viewpoint.sysml +2 -3
  261. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +2 -4
  262. package/src/viewpoints/risk/risk_viewpoint.sysml +2 -3
  263. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +2 -4
  264. package/src/viewpoints/software/software_viewpoint.sysml +2 -3
  265. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +3 -5
  266. package/src/viewpoints/stakeholders_concerns/memo_stakeholders_concerns.sysml +11 -29
  267. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
  268. package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +1 -1
  269. package/src/viewpoints/usability/usability_viewpoint.sysml +2 -3
  270. package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
  271. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -4
  272. package/stage1/syside-67f92dc96ba75cd05b5c8d13.ids.gz +0 -0
  273. package/stage1/syside-67f92dc96ba75cd05b5c8d13.json.gz +0 -0
  274. package/templates/default/memo.package.yaml +6 -1
  275. package/templates/default/model/catalog/architecture/system.sysml +7 -3
  276. package/templates/default/model/{catalog → methodology}/project.sysml +3 -4
  277. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +0 -47
  278. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +0 -94
  279. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +0 -13
  280. package/examples/ui-screen-regions/model/catalog/relationships.sysml +0 -8
  281. package/extensions/aadl/src/methodology/aadl_methodology.sysml +0 -19
  282. package/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -24
  283. package/extensions/cloud/src/methodology/cloud_methodology.sysml +0 -19
  284. package/extensions/container/src/methodology/container_methodology.sysml +0 -19
  285. package/extensions/messaging/src/methodology/messaging_methodology.sysml +0 -19
  286. package/extensions/ros/src/methodology/ros_methodology.sysml +0 -27
  287. package/extensions/template/src/extension.sysml +0 -39
  288. package/templates/connected-device/memo.package.yaml +0 -13
  289. package/templates/connected-device/model/catalog/architecture/system.sysml +0 -5
  290. package/templates/connected-device/model/catalog/artifacts/catalog.sysml +0 -5
  291. package/templates/connected-device/model/catalog/assurance/requirements.sysml +0 -7
  292. package/templates/connected-device/model/catalog/project.sysml +0 -30
  293. package/templates/connected-device/package.json +0 -8
  294. package/templates/connected-device/syside.toml +0 -13
  295. package/templates/infusion-pump/memo.package.yaml +0 -13
  296. package/templates/infusion-pump/model/catalog/architecture/system.sysml +0 -5
  297. package/templates/infusion-pump/model/catalog/artifacts/catalog.sysml +0 -5
  298. package/templates/infusion-pump/model/catalog/assurance/requirements.sysml +0 -7
  299. package/templates/infusion-pump/model/catalog/project.sysml +0 -30
  300. package/templates/infusion-pump/package.json +0 -8
  301. package/templates/infusion-pump/syside.toml +0 -13
  302. package/templates/monitoring-device/memo.package.yaml +0 -13
  303. package/templates/monitoring-device/model/catalog/architecture/system.sysml +0 -5
  304. package/templates/monitoring-device/model/catalog/artifacts/catalog.sysml +0 -5
  305. package/templates/monitoring-device/model/catalog/assurance/requirements.sysml +0 -7
  306. package/templates/monitoring-device/model/catalog/project.sysml +0 -30
  307. package/templates/monitoring-device/package.json +0 -8
  308. package/templates/monitoring-device/syside.toml +0 -13
  309. package/templates/samd/memo.package.yaml +0 -13
  310. package/templates/samd/model/catalog/architecture/system.sysml +0 -5
  311. package/templates/samd/model/catalog/artifacts/catalog.sysml +0 -5
  312. package/templates/samd/model/catalog/assurance/requirements.sysml +0 -7
  313. package/templates/samd/model/catalog/project.sysml +0 -30
  314. package/templates/samd/package.json +0 -8
  315. package/templates/samd/syside.toml +0 -13
@@ -28,202 +28,204 @@ package memo_examples_gpca_pump_gpca_requirements {
28
28
  // ── Stakeholder needs ───────────────────────────────────────
29
29
  requirement needSafeTherapy : Need {
30
30
  attribute :>> needKind = NeedKind::'stakeholder';
31
- @MemoIdentity { :>> providedId = "NEED-001"; } attribute :>> name = "SafePatientControlledTherapy";
31
+ @MemoIdentity { :>> providedId = "NEED-001"; :>> label = "SafePatientControlledTherapy"; }
32
32
  attribute :>> statement = "The device shall support safe patient controlled analgesic infusion therapy.";
33
33
  attribute :>> priority = "high";
34
34
  }
35
35
  requirement needEffectiveAnalgesia : Need {
36
36
  attribute :>> needKind = NeedKind::'stakeholder';
37
- @MemoIdentity { :>> providedId = "NEED-002"; } attribute :>> name = "EffectivePainManagement";
37
+ @MemoIdentity { :>> providedId = "NEED-002"; :>> label = "EffectivePainManagement"; }
38
38
  attribute :>> statement = "The device shall deliver the prescribed basal and bolus doses accurately so the patient receives effective analgesia.";
39
39
  attribute :>> priority = "high";
40
40
  }
41
+ // --8<-- [start:need]
41
42
  requirement needTimelyAlarms : Need {
42
43
  attribute :>> needKind = NeedKind::'stakeholder';
43
- @MemoIdentity { :>> providedId = "NEED-003"; } attribute :>> name = "TimelyAlarmNotification";
44
+ @MemoIdentity { :>> providedId = "NEED-003"; :>> label = "TimelyAlarmNotification"; }
44
45
  attribute :>> statement = "Clinicians shall be notified promptly and unambiguously of any condition that interrupts or endangers therapy.";
45
46
  attribute :>> priority = "high";
47
+ // --8<-- [end:need]
46
48
  }
47
49
  requirement needAuditableRecord : Need {
48
50
  attribute :>> needKind = NeedKind::'stakeholder';
49
- @MemoIdentity { :>> providedId = "NEED-004"; } attribute :>> name = "AuditableTherapyRecord";
51
+ @MemoIdentity { :>> providedId = "NEED-004"; :>> label = "AuditableTherapyRecord"; }
50
52
  attribute :>> statement = "All delivered doses, alarms, and prescription changes shall be reviewable after the fact.";
51
53
  attribute :>> priority = "medium";
52
54
  }
53
55
 
54
56
  // ── System constants (CriSys App. A.4; I 8; Ch.5) ───────────
55
57
  part constMaxRateofFlowChange : SystemConstant {
56
- @MemoIdentity { :>> providedId = "CONST-01"; } attribute :>> name = "Max_Rateof_Flow_Change";
58
+ @MemoIdentity { :>> providedId = "CONST-01"; :>> label = "Max_Rateof_Flow_Change"; }
57
59
  attribute :>> symbol = "Max_Rateof_Flow_Change_const";
58
- attribute :>> description = "Maximum rate of change of flow of drug in the hose.";
60
+ doc /* Maximum rate of change of flow of drug in the hose. */
59
61
  attribute :>> unit = "ml/sec2"; attribute :>> valueType = "Numeric";
60
62
  attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
61
63
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
62
64
  }
63
65
  part constMaxModeChangeDuration : SystemConstant {
64
- @MemoIdentity { :>> providedId = "CONST-02"; } attribute :>> name = "Max_Mode_Change_Duration";
66
+ @MemoIdentity { :>> providedId = "CONST-02"; :>> label = "Max_Mode_Change_Duration"; }
65
67
  attribute :>> symbol = "Max_Mode_Change_Duration_const";
66
- attribute :>> description = "Maximum time to be taken for mode transition.";
68
+ doc /* Maximum time to be taken for mode transition. */
67
69
  attribute :>> unit = "sec"; attribute :>> valueType = "Time";
68
70
  attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
69
71
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
70
72
  }
71
73
  part constConfigWarningDuration : SystemConstant {
72
- @MemoIdentity { :>> providedId = "CONST-03"; } attribute :>> name = "Config_Warning_Duration";
74
+ @MemoIdentity { :>> providedId = "CONST-03"; :>> label = "Config_Warning_Duration"; }
73
75
  attribute :>> symbol = "Config_Warning_Duration_const";
74
- attribute :>> description = "Recommended duration of prescription values configuration.";
76
+ doc /* Recommended duration of prescription values configuration. */
75
77
  attribute :>> unit = "sec"; attribute :>> valueType = "Time";
76
78
  attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
77
79
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
78
80
  }
79
81
  part constMaxConfigDuration : SystemConstant {
80
- @MemoIdentity { :>> providedId = "CONST-04"; } attribute :>> name = "Max_Config_Duration";
82
+ @MemoIdentity { :>> providedId = "CONST-04"; :>> label = "Max_Config_Duration"; }
81
83
  attribute :>> symbol = "Max_Config_Duration_const";
82
- attribute :>> description = "Maximum time allowed for configuration.";
84
+ doc /* Maximum time allowed for configuration. */
83
85
  attribute :>> unit = "sec"; attribute :>> valueType = "Time";
84
86
  attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
85
87
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
86
88
  }
87
89
  part constMaxIdleDuration : SystemConstant {
88
- @MemoIdentity { :>> providedId = "CONST-05"; } attribute :>> name = "Max_IDLE_Duration";
90
+ @MemoIdentity { :>> providedId = "CONST-05"; :>> label = "Max_IDLE_Duration"; }
89
91
  attribute :>> symbol = "Max_IDLE_Duration_const";
90
- attribute :>> description = "Maximum duration the system is allowed to be in IDLE mode continuously.";
92
+ doc /* Maximum duration the system is allowed to be in IDLE mode continuously. */
91
93
  attribute :>> unit = "sec"; attribute :>> valueType = "Time";
92
94
  attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
93
95
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
94
96
  }
95
97
  part constMaxDurationUnderInfusion : SystemConstant {
96
- @MemoIdentity { :>> providedId = "CONST-06"; } attribute :>> name = "Max_Duration_UnderInfusion";
98
+ @MemoIdentity { :>> providedId = "CONST-06"; :>> label = "Max_Duration_UnderInfusion"; }
97
99
  attribute :>> symbol = "Max_Duration_UnderInfusion_const";
98
- attribute :>> description = "Maximum cumulative duration the system can infuse below the respective mode's flow rate minus Tolerance_Min_const in any delta time interval.";
100
+ doc /* Maximum cumulative duration the system can infuse below the respective mode's flow rate minus Tolerance_Min_const in any delta time interval. */
99
101
  attribute :>> unit = "sec"; attribute :>> valueType = "Time";
100
102
  attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
101
103
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
102
104
  }
103
105
  part constMaxDurationOverInfusion : SystemConstant {
104
- @MemoIdentity { :>> providedId = "CONST-07"; } attribute :>> name = "Max_Duration_OverInfusion";
106
+ @MemoIdentity { :>> providedId = "CONST-07"; :>> label = "Max_Duration_OverInfusion"; }
105
107
  attribute :>> symbol = "Max_Duration_OverInfusion_const";
106
- attribute :>> description = "Maximum cumulative duration the system can infuse above the respective mode's flow rate plus Tolerance_Min_const in any delta time interval.";
108
+ doc /* Maximum cumulative duration the system can infuse above the respective mode's flow rate plus Tolerance_Min_const in any delta time interval. */
107
109
  attribute :>> unit = "sec"; attribute :>> valueType = "Time";
108
110
  attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
109
111
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
110
112
  }
111
113
  part constLowReservoir : SystemConstant {
112
- @MemoIdentity { :>> providedId = "CONST-08"; } attribute :>> name = "Low_Reservoir";
114
+ @MemoIdentity { :>> providedId = "CONST-08"; :>> label = "Low_Reservoir"; }
113
115
  attribute :>> symbol = "Low_Reservoir_const";
114
- attribute :>> description = "Volume in the drug reservoir that needs notification for Low Reservoir.";
116
+ doc /* Volume in the drug reservoir that needs notification for Low Reservoir. */
115
117
  attribute :>> unit = "ml"; attribute :>> valueType = "Numeric";
116
118
  attribute :>> constantValue = ""; attribute :>> valueCondition = "should be greater than Empty_Reservoir_const";
117
119
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
118
120
  }
119
121
  part constEmptyReservoir : SystemConstant {
120
- @MemoIdentity { :>> providedId = "CONST-09"; } attribute :>> name = "Empty_Reservoir";
122
+ @MemoIdentity { :>> providedId = "CONST-09"; :>> label = "Empty_Reservoir"; }
121
123
  attribute :>> symbol = "Empty_Reservoir_const";
122
- attribute :>> description = "Volume in the drug reservoir that needs notification for Empty Reservoir.";
124
+ doc /* Volume in the drug reservoir that needs notification for Empty Reservoir. */
123
125
  attribute :>> unit = "ml"; attribute :>> valueType = "Numeric";
124
126
  attribute :>> constantValue = ""; attribute :>> valueCondition = "should be greater than FlowRate_kvo_hd (as written in the source)";
125
127
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
126
128
  }
127
129
  part constSingleAirBubbleVolume : SystemConstant {
128
- @MemoIdentity { :>> providedId = "CONST-10"; } attribute :>> name = "Single_AirBubble_Volume";
130
+ @MemoIdentity { :>> providedId = "CONST-10"; :>> label = "Single_AirBubble_Volume"; }
129
131
  attribute :>> symbol = "Single_AirBubble_Volume_const";
130
- attribute :>> description = "Maximum volume of a single air bubble that is safe to be infused.";
132
+ doc /* Maximum volume of a single air bubble that is safe to be infused. */
131
133
  attribute :>> unit = "ml"; attribute :>> valueType = "Numeric";
132
134
  attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
133
135
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
134
136
  }
135
137
  part constCumulativeAirBubbleVolume : SystemConstant {
136
- @MemoIdentity { :>> providedId = "CONST-11"; } attribute :>> name = "Cumulative_AirBubble_Volume";
138
+ @MemoIdentity { :>> providedId = "CONST-11"; :>> label = "Cumulative_AirBubble_Volume"; }
137
139
  attribute :>> symbol = "Cumulative_AirBubble_Volume_const";
138
- attribute :>> description = "Maximum volume of air bubbles cumulatively in a delta time interval that is safe to be infused.";
140
+ doc /* Maximum volume of air bubbles cumulatively in a delta time interval that is safe to be infused. */
139
141
  attribute :>> unit = "ml"; attribute :>> valueType = "Numeric";
140
142
  attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
141
143
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
142
144
  }
143
145
  part constRevDeliveryContinuousDuration : SystemConstant {
144
- @MemoIdentity { :>> providedId = "CONST-12"; } attribute :>> name = "Rev_Delivery_Continuous_Duration";
146
+ @MemoIdentity { :>> providedId = "CONST-12"; :>> label = "Rev_Delivery_Continuous_Duration"; }
145
147
  attribute :>> symbol = "Rev_Delivery_Continuous_Duration_const";
146
- attribute :>> description = "Maximum duration the system is acceptable to be in reverse delivery continuously.";
148
+ doc /* Maximum duration the system is acceptable to be in reverse delivery continuously. */
147
149
  attribute :>> unit = "minutes"; attribute :>> valueType = "Time";
148
150
  attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
149
151
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
150
152
  }
151
153
  part constRevDeliveryCumulativeDuration : SystemConstant {
152
- @MemoIdentity { :>> providedId = "CONST-13"; } attribute :>> name = "Rev_Delivery_Cumulative_Duration";
154
+ @MemoIdentity { :>> providedId = "CONST-13"; :>> label = "Rev_Delivery_Cumulative_Duration"; }
153
155
  attribute :>> symbol = "Rev_Delivery_Cumulative_Duration_const";
154
- attribute :>> description = "Maximum duration the system is acceptable to be in reverse delivery cumulatively in a delta time interval.";
156
+ doc /* Maximum duration the system is acceptable to be in reverse delivery cumulatively in a delta time interval. */
155
157
  attribute :>> unit = "minutes"; attribute :>> valueType = "Time";
156
158
  attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
157
159
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
158
160
  }
159
161
  part constMaxPausedDuration : SystemConstant {
160
- @MemoIdentity { :>> providedId = "CONST-14"; } attribute :>> name = "Max_PAUSED_Duration";
162
+ @MemoIdentity { :>> providedId = "CONST-14"; :>> label = "Max_PAUSED_Duration"; }
161
163
  attribute :>> symbol = "Max_PAUSED_Duration_const";
162
- attribute :>> description = "Maximum duration the system is allowed to be in PAUSED mode continuously.";
164
+ doc /* Maximum duration the system is allowed to be in PAUSED mode continuously. */
163
165
  attribute :>> unit = "sec"; attribute :>> valueType = "Time";
164
166
  attribute :>> constantValue = ""; attribute :>> valueCondition = "value left open by the source";
165
167
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
166
168
  }
167
169
  part constToleranceMax : SystemConstant {
168
- @MemoIdentity { :>> providedId = "CONST-15"; } attribute :>> name = "Tolerance_Max";
170
+ @MemoIdentity { :>> providedId = "CONST-15"; :>> label = "Tolerance_Max"; }
169
171
  attribute :>> symbol = "Tolerance_Max_const";
170
- attribute :>> description = "Maximum acceptable variation in flow rate in any mode, specified as a percentage of the respective mode's flow rate.";
172
+ doc /* Maximum acceptable variation in flow rate in any mode, specified as a percentage of the respective mode's flow rate. */
171
173
  attribute :>> unit = "%"; attribute :>> valueType = "Positive Integer";
172
174
  attribute :>> constantValue = "20 %"; attribute :>> valueCondition = "";
173
175
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
174
176
  }
175
177
  part constToleranceMin : SystemConstant {
176
- @MemoIdentity { :>> providedId = "CONST-16"; } attribute :>> name = "Tolerance_Min";
178
+ @MemoIdentity { :>> providedId = "CONST-16"; :>> label = "Tolerance_Min"; }
177
179
  attribute :>> symbol = "Tolerance_Min_const";
178
- attribute :>> description = "Tolerance in flow rate variation that is acceptable for a certain duration of time (Max_Duration_OverInfusion_const, Max_Duration_UnderInfusion_const); computed like Tolerance_Max_const.";
180
+ doc /* Tolerance in flow rate variation that is acceptable for a certain duration of time (Max_Duration_OverInfusion_const, Max_Duration_UnderInfusion_const); computed like Tolerance_Max_const. */
179
181
  attribute :>> unit = "%"; attribute :>> valueType = "Positive Integer";
180
182
  attribute :>> constantValue = "5 %"; attribute :>> valueCondition = "";
181
183
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
182
184
  }
183
185
  part constAudioLevel : SystemConstant {
184
- @MemoIdentity { :>> providedId = "CONST-17"; } attribute :>> name = "Audio_level";
186
+ @MemoIdentity { :>> providedId = "CONST-17"; :>> label = "Audio_level"; }
185
187
  attribute :>> symbol = "Audio_level_const";
186
- attribute :>> description = "Acceptable level of sound for audio notification. Interface spec I 8 states 50 db for 2 seconds per notification; the App. A.4 value cell is inconsistent in the source (lists '5 %').";
188
+ doc /* Acceptable level of sound for audio notification. Interface spec I 8 states 50 db for 2 seconds per notification; the App. A.4 value cell is inconsistent in the source (lists '5 %'). */
187
189
  attribute :>> unit = "decibels"; attribute :>> valueType = "Positive Integer";
188
190
  attribute :>> constantValue = "50 db for 2 seconds per notification"; attribute :>> valueCondition = "";
189
191
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.4 (I 8) and App. A.4"; }
190
192
  }
191
193
  part constAudioEnableDuration : SystemConstant {
192
- @MemoIdentity { :>> providedId = "CONST-18"; } attribute :>> name = "Audio_Enable_Duration";
194
+ @MemoIdentity { :>> providedId = "CONST-18"; :>> label = "Audio_Enable_Duration"; }
193
195
  attribute :>> symbol = "Audio_Enable_Duration_const";
194
- attribute :>> description = "Audio notification temporary silencing duration.";
196
+ doc /* Audio notification temporary silencing duration. */
195
197
  attribute :>> unit = "minutes"; attribute :>> valueType = "Positive Integer";
196
198
  attribute :>> constantValue = "30"; attribute :>> valueCondition = "";
197
199
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
198
200
  }
199
201
  part constLogInterval : SystemConstant {
200
- @MemoIdentity { :>> providedId = "CONST-19"; } attribute :>> name = "Log_Interval";
202
+ @MemoIdentity { :>> providedId = "CONST-19"; :>> label = "Log_Interval"; }
201
203
  attribute :>> symbol = "Log_Interval_const";
202
- attribute :>> description = "Interval at which operational information should be recorded.";
204
+ doc /* Interval at which operational information should be recorded. */
203
205
  attribute :>> unit = "minutes"; attribute :>> valueType = "Positive Integer";
204
206
  attribute :>> constantValue = "5"; attribute :>> valueCondition = "";
205
207
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.4"; }
206
208
  }
207
209
  part constErrorLogRetention : SystemConstant {
208
- @MemoIdentity { :>> providedId = "CONST-20"; } attribute :>> name = "Error_Log_Retention";
210
+ @MemoIdentity { :>> providedId = "CONST-20"; :>> label = "Error_Log_Retention"; }
209
211
  attribute :>> symbol = "Error_Log_Retention";
210
- attribute :>> description = "Duration for which the most recent error log data shall persist (REQ 85).";
212
+ doc /* Duration for which the most recent error log data shall persist (REQ 85). */
211
213
  attribute :>> unit = "days"; attribute :>> valueType = "Time";
212
214
  attribute :>> constantValue = "30"; attribute :>> valueCondition = "";
213
215
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §5.1 (REQ 85)"; }
214
216
  }
215
217
  part constOperationalLogRetention : SystemConstant {
216
- @MemoIdentity { :>> providedId = "CONST-21"; } attribute :>> name = "Operational_Log_Retention";
218
+ @MemoIdentity { :>> providedId = "CONST-21"; :>> label = "Operational_Log_Retention"; }
217
219
  attribute :>> symbol = "Operational_Log_Retention";
218
- attribute :>> description = "Duration for which the most recent operational log data shall persist (REQ 85).";
220
+ doc /* Duration for which the most recent operational log data shall persist (REQ 85). */
219
221
  attribute :>> unit = "days"; attribute :>> valueType = "Time";
220
222
  attribute :>> constantValue = "15"; attribute :>> valueCondition = "";
221
223
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §5.1 (REQ 85)"; }
222
224
  }
223
225
  part constPrescriptionPersistDuration : SystemConstant {
224
- @MemoIdentity { :>> providedId = "CONST-22"; } attribute :>> name = "Prescription_Persist_Duration";
226
+ @MemoIdentity { :>> providedId = "CONST-22"; :>> label = "Prescription_Persist_Duration"; }
225
227
  attribute :>> symbol = "Prescription_Persist_Duration";
226
- attribute :>> description = "Duration for which the last saved prescription data shall persist (REQ 86).";
228
+ doc /* Duration for which the last saved prescription data shall persist (REQ 86). */
227
229
  attribute :>> unit = "days"; attribute :>> valueType = "Time";
228
230
  attribute :>> constantValue = "15"; attribute :>> valueCondition = "";
229
231
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §5.1 (REQ 86)"; }
@@ -236,7 +238,7 @@ package memo_examples_gpca_pump_gpca_requirements {
236
238
  // restriction: Inhibit All Infusion > Inhibit Square Bolus >
237
239
  // Inhibit Patient Bolus.
238
240
  part notifLowReservoir : NotificationSpec {
239
- @MemoIdentity { :>> providedId = "NOTIF-01"; } attribute :>> name = "Low_Reservoir";
241
+ @MemoIdentity { :>> providedId = "NOTIF-01"; :>> label = "Low_Reservoir"; }
240
242
  attribute :>> priority = NotificationPriorityKind::high;
241
243
  attribute :>> visualNotification = true; attribute :>> audioNotification = false;
242
244
  attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = true;
@@ -244,7 +246,7 @@ package memo_examples_gpca_pump_gpca_requirements {
244
246
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
245
247
  }
246
248
  part notifEmptyReservoir : NotificationSpec {
247
- @MemoIdentity { :>> providedId = "NOTIF-02"; } attribute :>> name = "Empty_Reservoir";
249
+ @MemoIdentity { :>> providedId = "NOTIF-02"; :>> label = "Empty_Reservoir"; }
248
250
  attribute :>> priority = NotificationPriorityKind::high;
249
251
  attribute :>> visualNotification = true; attribute :>> audioNotification = true;
250
252
  attribute :>> inhibitInfusion = true; attribute :>> inhibitSquareBolus = true;
@@ -252,7 +254,7 @@ package memo_examples_gpca_pump_gpca_requirements {
252
254
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
253
255
  }
254
256
  part notifAirEmbolism : NotificationSpec {
255
- @MemoIdentity { :>> providedId = "NOTIF-03"; } attribute :>> name = "Air_embolism";
257
+ @MemoIdentity { :>> providedId = "NOTIF-03"; :>> label = "Air_embolism"; }
256
258
  attribute :>> priority = NotificationPriorityKind::high;
257
259
  attribute :>> visualNotification = true; attribute :>> audioNotification = true;
258
260
  attribute :>> inhibitInfusion = true; attribute :>> inhibitSquareBolus = true;
@@ -260,7 +262,7 @@ package memo_examples_gpca_pump_gpca_requirements {
260
262
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
261
263
  }
262
264
  part notifReverseDelivery : NotificationSpec {
263
- @MemoIdentity { :>> providedId = "NOTIF-04"; } attribute :>> name = "Reverse_Delivery";
265
+ @MemoIdentity { :>> providedId = "NOTIF-04"; :>> label = "Reverse_Delivery"; }
264
266
  attribute :>> priority = NotificationPriorityKind::high;
265
267
  attribute :>> visualNotification = true; attribute :>> audioNotification = true;
266
268
  attribute :>> inhibitInfusion = true; attribute :>> inhibitSquareBolus = true;
@@ -268,7 +270,7 @@ package memo_examples_gpca_pump_gpca_requirements {
268
270
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
269
271
  }
270
272
  part notifOverInfusionFlowRate : NotificationSpec {
271
- @MemoIdentity { :>> providedId = "NOTIF-05"; } attribute :>> name = "Over_Infusion_FlowRate";
273
+ @MemoIdentity { :>> providedId = "NOTIF-05"; :>> label = "Over_Infusion_FlowRate"; }
272
274
  attribute :>> priority = NotificationPriorityKind::high;
273
275
  attribute :>> visualNotification = true; attribute :>> audioNotification = true;
274
276
  attribute :>> inhibitInfusion = true; attribute :>> inhibitSquareBolus = true;
@@ -276,7 +278,7 @@ package memo_examples_gpca_pump_gpca_requirements {
276
278
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
277
279
  }
278
280
  part notifOverInfusionVtbi : NotificationSpec {
279
- @MemoIdentity { :>> providedId = "NOTIF-06"; } attribute :>> name = "Over_Infusion_VTBI";
281
+ @MemoIdentity { :>> providedId = "NOTIF-06"; :>> label = "Over_Infusion_VTBI"; }
280
282
  attribute :>> priority = NotificationPriorityKind::high;
281
283
  attribute :>> visualNotification = true; attribute :>> audioNotification = true;
282
284
  attribute :>> inhibitInfusion = true; attribute :>> inhibitSquareBolus = true;
@@ -284,7 +286,7 @@ package memo_examples_gpca_pump_gpca_requirements {
284
286
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
285
287
  }
286
288
  part notifBolusExceeded : NotificationSpec {
287
- @MemoIdentity { :>> providedId = "NOTIF-07"; } attribute :>> name = "Bolus_Exceeded";
289
+ @MemoIdentity { :>> providedId = "NOTIF-07"; :>> label = "Bolus_Exceeded"; }
288
290
  attribute :>> priority = NotificationPriorityKind::medium;
289
291
  attribute :>> visualNotification = true; attribute :>> audioNotification = true;
290
292
  attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
@@ -292,7 +294,7 @@ package memo_examples_gpca_pump_gpca_requirements {
292
294
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
293
295
  }
294
296
  part notifInfusionInhibited : NotificationSpec {
295
- @MemoIdentity { :>> providedId = "NOTIF-08"; } attribute :>> name = "Infusion_Inhibited";
297
+ @MemoIdentity { :>> providedId = "NOTIF-08"; :>> label = "Infusion_Inhibited"; }
296
298
  attribute :>> priority = NotificationPriorityKind::medium;
297
299
  attribute :>> visualNotification = true; attribute :>> audioNotification = true;
298
300
  attribute :>> inhibitInfusion = true; attribute :>> inhibitSquareBolus = false;
@@ -300,7 +302,7 @@ package memo_examples_gpca_pump_gpca_requirements {
300
302
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
301
303
  }
302
304
  part notifInfusionManuallyInhibited : NotificationSpec {
303
- @MemoIdentity { :>> providedId = "NOTIF-09"; } attribute :>> name = "Infusion_Manually_Inhibited";
305
+ @MemoIdentity { :>> providedId = "NOTIF-09"; :>> label = "Infusion_Manually_Inhibited"; }
304
306
  attribute :>> priority = NotificationPriorityKind::medium;
305
307
  attribute :>> visualNotification = true; attribute :>> audioNotification = true;
306
308
  attribute :>> inhibitInfusion = true; attribute :>> inhibitSquareBolus = false;
@@ -308,7 +310,7 @@ package memo_examples_gpca_pump_gpca_requirements {
308
310
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
309
311
  }
310
312
  part notifInfusionStoppedManually : NotificationSpec {
311
- @MemoIdentity { :>> providedId = "NOTIF-10"; } attribute :>> name = "Infusion_Stopped_Manually";
313
+ @MemoIdentity { :>> providedId = "NOTIF-10"; :>> label = "Infusion_Stopped_Manually"; }
312
314
  attribute :>> priority = NotificationPriorityKind::medium;
313
315
  attribute :>> visualNotification = true; attribute :>> audioNotification = true;
314
316
  attribute :>> inhibitInfusion = true; attribute :>> inhibitSquareBolus = false;
@@ -316,7 +318,7 @@ package memo_examples_gpca_pump_gpca_requirements {
316
318
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
317
319
  }
318
320
  part notifUnderInfusionFlowRate : NotificationSpec {
319
- @MemoIdentity { :>> providedId = "NOTIF-11"; } attribute :>> name = "Under_Infusion_FlowRate";
321
+ @MemoIdentity { :>> providedId = "NOTIF-11"; :>> label = "Under_Infusion_FlowRate"; }
320
322
  attribute :>> priority = NotificationPriorityKind::medium;
321
323
  attribute :>> visualNotification = true; attribute :>> audioNotification = false;
322
324
  attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
@@ -324,7 +326,7 @@ package memo_examples_gpca_pump_gpca_requirements {
324
326
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
325
327
  }
326
328
  part notifUnderInfusionVtbi : NotificationSpec {
327
- @MemoIdentity { :>> providedId = "NOTIF-12"; } attribute :>> name = "Under_Infusion_VTBI";
329
+ @MemoIdentity { :>> providedId = "NOTIF-12"; :>> label = "Under_Infusion_VTBI"; }
328
330
  attribute :>> priority = NotificationPriorityKind::medium;
329
331
  attribute :>> visualNotification = true; attribute :>> audioNotification = false;
330
332
  attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
@@ -332,7 +334,7 @@ package memo_examples_gpca_pump_gpca_requirements {
332
334
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
333
335
  }
334
336
  part notifInfusionComplete : NotificationSpec {
335
- @MemoIdentity { :>> providedId = "NOTIF-13"; } attribute :>> name = "Infusion_Complete";
337
+ @MemoIdentity { :>> providedId = "NOTIF-13"; :>> label = "Infusion_Complete"; }
336
338
  attribute :>> priority = NotificationPriorityKind::low;
337
339
  attribute :>> visualNotification = true; attribute :>> audioNotification = true;
338
340
  attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
@@ -340,7 +342,7 @@ package memo_examples_gpca_pump_gpca_requirements {
340
342
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
341
343
  }
342
344
  part notifFrequentBolusRequests : NotificationSpec {
343
- @MemoIdentity { :>> providedId = "NOTIF-14"; } attribute :>> name = "Frequent_Bolus_Requests";
345
+ @MemoIdentity { :>> providedId = "NOTIF-14"; :>> label = "Frequent_Bolus_Requests"; }
344
346
  attribute :>> priority = NotificationPriorityKind::low;
345
347
  attribute :>> visualNotification = true; attribute :>> audioNotification = false;
346
348
  attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
@@ -348,7 +350,7 @@ package memo_examples_gpca_pump_gpca_requirements {
348
350
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
349
351
  }
350
352
  part notifIdleTime : NotificationSpec {
351
- @MemoIdentity { :>> providedId = "NOTIF-15"; } attribute :>> name = "IDLE_Time";
353
+ @MemoIdentity { :>> providedId = "NOTIF-15"; :>> label = "IDLE_Time"; }
352
354
  attribute :>> priority = NotificationPriorityKind::low;
353
355
  attribute :>> visualNotification = true; attribute :>> audioNotification = true;
354
356
  attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
@@ -356,7 +358,7 @@ package memo_examples_gpca_pump_gpca_requirements {
356
358
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
357
359
  }
358
360
  part notifPausedTime : NotificationSpec {
359
- @MemoIdentity { :>> providedId = "NOTIF-16"; } attribute :>> name = "PAUSED_Time";
361
+ @MemoIdentity { :>> providedId = "NOTIF-16"; :>> label = "PAUSED_Time"; }
360
362
  attribute :>> priority = NotificationPriorityKind::low;
361
363
  attribute :>> visualNotification = true; attribute :>> audioNotification = true;
362
364
  attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
@@ -364,7 +366,7 @@ package memo_examples_gpca_pump_gpca_requirements {
364
366
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
365
367
  }
366
368
  part notifConfigTime : NotificationSpec {
367
- @MemoIdentity { :>> providedId = "NOTIF-17"; } attribute :>> name = "Config_Time";
369
+ @MemoIdentity { :>> providedId = "NOTIF-17"; :>> label = "Config_Time"; }
368
370
  attribute :>> priority = NotificationPriorityKind::low;
369
371
  attribute :>> visualNotification = true; attribute :>> audioNotification = true;
370
372
  attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
@@ -372,7 +374,7 @@ package memo_examples_gpca_pump_gpca_requirements {
372
374
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
373
375
  }
374
376
  part notifValidationFailed : NotificationSpec {
375
- @MemoIdentity { :>> providedId = "NOTIF-18"; } attribute :>> name = "Validation_Failed";
377
+ @MemoIdentity { :>> providedId = "NOTIF-18"; :>> label = "Validation_Failed"; }
376
378
  attribute :>> priority = NotificationPriorityKind::low;
377
379
  attribute :>> visualNotification = true; attribute :>> audioNotification = true;
378
380
  attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
@@ -380,8 +382,8 @@ package memo_examples_gpca_pump_gpca_requirements {
380
382
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
381
383
  }
382
384
  part notifDrugSafeValueNotPresent : NotificationSpec {
383
- @MemoIdentity { :>> providedId = "NOTIF-19"; } attribute :>> name = "Drug_safe_value_not_present";
384
- attribute :>> description = "Raised with the missing field names appended.";
385
+ @MemoIdentity { :>> providedId = "NOTIF-19"; :>> label = "Drug_safe_value_not_present"; }
386
+ doc /* Raised with the missing field names appended. */
385
387
  attribute :>> priority = NotificationPriorityKind::low;
386
388
  attribute :>> visualNotification = true; attribute :>> audioNotification = false;
387
389
  attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
@@ -389,7 +391,7 @@ package memo_examples_gpca_pump_gpca_requirements {
389
391
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 REQ 59 table"; }
390
392
  }
391
393
  part notifDrugDatabaseNotReachable : NotificationSpec {
392
- @MemoIdentity { :>> providedId = "NOTIF-20"; } attribute :>> name = "Drug_database_not_reachable";
394
+ @MemoIdentity { :>> providedId = "NOTIF-20"; :>> label = "Drug_database_not_reachable"; }
393
395
  attribute :>> priority = NotificationPriorityKind::low;
394
396
  attribute :>> visualNotification = true; attribute :>> audioNotification = true;
395
397
  attribute :>> inhibitInfusion = false; attribute :>> inhibitSquareBolus = false;
@@ -400,7 +402,7 @@ package memo_examples_gpca_pump_gpca_requirements {
400
402
  // ═════ CriSys system requirements — §4.1.1 GPCA System ══════
401
403
  requirement reqCs01 : Requirement {
402
404
  attribute :>> requirementType = RequirementTypeKind::system;
403
- @MemoIdentity { :>> providedId = "REQ-CS-01"; } attribute :>> name = "SingleActiveMode";
405
+ @MemoIdentity { :>> providedId = "REQ-CS-01"; :>> label = "SingleActiveMode"; }
404
406
  attribute :>> statement = "The system shall always be in only one of the following modes: OFF (default mode), IDLE, PAUSED, BASAL, SQUARE BOLUS or PATIENT BOLUS.";
405
407
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
406
408
  attribute :>> concernKind = ConcernKind::safety;
@@ -411,7 +413,7 @@ package memo_examples_gpca_pump_gpca_requirements {
411
413
  }
412
414
  requirement reqCs02 : Requirement {
413
415
  attribute :>> requirementType = RequirementTypeKind::system;
414
- @MemoIdentity { :>> providedId = "REQ-CS-02"; } attribute :>> name = "ModeChangeDurationWithoutFlowChange";
416
+ @MemoIdentity { :>> providedId = "REQ-CS-02"; :>> label = "ModeChangeDurationWithoutFlowChange"; }
415
417
  attribute :>> statement = "If there are mode transitions without change in flow rates between the two modes, the system shall transition within Max_Mode_Change_Duration_const.";
416
418
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
417
419
  attribute :>> concernKind = ConcernKind::performance;
@@ -422,7 +424,7 @@ package memo_examples_gpca_pump_gpca_requirements {
422
424
  }
423
425
  requirement reqCs03 : Requirement {
424
426
  attribute :>> requirementType = RequirementTypeKind::system;
425
- @MemoIdentity { :>> providedId = "REQ-CS-03"; } attribute :>> name = "ModeChangeFlowRamp";
427
+ @MemoIdentity { :>> providedId = "REQ-CS-03"; :>> label = "ModeChangeFlowRamp"; }
426
428
  attribute :>> statement = "If there are mode transitions with change in flow rates between the two modes, the system shall change from the current mode flow rate to the new mode flow rate at a rate not more than Max_Rateof_Flow_Change_const or within Max_Mode_Change_Duration_const, whichever achieves the new desired flow rate the quickest.";
427
429
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
428
430
  attribute :>> concernKind = ConcernKind::performance;
@@ -433,7 +435,7 @@ package memo_examples_gpca_pump_gpca_requirements {
433
435
  }
434
436
  requirement reqCs04 : Requirement {
435
437
  attribute :>> requirementType = RequirementTypeKind::system;
436
- @MemoIdentity { :>> providedId = "REQ-CS-04"; } attribute :>> name = "OffToIdleOnSystemStart";
438
+ @MemoIdentity { :>> providedId = "REQ-CS-04"; :>> label = "OffToIdleOnSystemStart"; }
437
439
  attribute :>> statement = "The system shall transition from OFF mode to ON > IDLE mode when System_start_prog is commanded. At this transition, the variables in App. A.4 shall be set to their default values.";
438
440
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
439
441
  attribute :>> concernKind = ConcernKind::safety;
@@ -444,7 +446,7 @@ package memo_examples_gpca_pump_gpca_requirements {
444
446
  }
445
447
  requirement reqCs05 : Requirement {
446
448
  attribute :>> requirementType = RequirementTypeKind::system;
447
- @MemoIdentity { :>> providedId = "REQ-CS-05"; } attribute :>> name = "OnToOffOnSystemStop";
449
+ @MemoIdentity { :>> providedId = "REQ-CS-05"; :>> label = "OnToOffOnSystemStop"; }
448
450
  attribute :>> statement = "While in ON mode, when System_stop_prog is commanded, the system shall stop infusion, cancel all notifications and transition to OFF mode.";
449
451
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
450
452
  attribute :>> concernKind = ConcernKind::safety;
@@ -457,7 +459,7 @@ package memo_examples_gpca_pump_gpca_requirements {
457
459
  // ── §4.1.2 OFF mode ─────────────────────────────────────────
458
460
  requirement reqCs06 : Requirement {
459
461
  attribute :>> requirementType = RequirementTypeKind::system;
460
- @MemoIdentity { :>> providedId = "REQ-CS-06"; } attribute :>> name = "OffModeNoDelivery";
462
+ @MemoIdentity { :>> providedId = "REQ-CS-06"; :>> label = "OffModeNoDelivery"; }
461
463
  attribute :>> statement = "While in OFF mode, the system shall not deliver any drug.";
462
464
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
463
465
  attribute :>> concernKind = ConcernKind::safety;
@@ -470,7 +472,7 @@ package memo_examples_gpca_pump_gpca_requirements {
470
472
  // ── §4.1.3 ON mode ──────────────────────────────────────────
471
473
  requirement reqCs07 : Requirement {
472
474
  attribute :>> requirementType = RequirementTypeKind::system;
473
- @MemoIdentity { :>> providedId = "REQ-CS-07"; } attribute :>> name = "InfusionRequiresSavedPrescription";
475
+ @MemoIdentity { :>> providedId = "REQ-CS-07"; :>> label = "InfusionRequiresSavedPrescription"; }
474
476
  attribute :>> statement = "While in ON mode, the system shall allow initiation of infusion only when a saved prescription is available.";
475
477
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
476
478
  attribute :>> concernKind = ConcernKind::safety;
@@ -481,7 +483,7 @@ package memo_examples_gpca_pump_gpca_requirements {
481
483
  }
482
484
  requirement reqCs08 : Requirement {
483
485
  attribute :>> requirementType = RequirementTypeKind::system;
484
- @MemoIdentity { :>> providedId = "REQ-CS-08"; } attribute :>> name = "AllowDataConfigurationInOn";
486
+ @MemoIdentity { :>> providedId = "REQ-CS-08"; :>> label = "AllowDataConfigurationInOn"; }
485
487
  attribute :>> statement = "While in ON mode, the system shall allow configuring (DataConfig_prog) new or saved prescription data and reservoir initial volume, as described in the Data Configuration Requirements (§4.2).";
486
488
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
487
489
  attribute :>> concernKind = ConcernKind::usability;
@@ -492,7 +494,7 @@ package memo_examples_gpca_pump_gpca_requirements {
492
494
  }
493
495
  requirement reqCs09 : Requirement {
494
496
  attribute :>> requirementType = RequirementTypeKind::system;
495
- @MemoIdentity { :>> providedId = "REQ-CS-09"; } attribute :>> name = "PrescriptionDisplayAndConfirm";
497
+ @MemoIdentity { :>> providedId = "REQ-CS-09"; :>> label = "PrescriptionDisplayAndConfirm"; }
496
498
  attribute :>> statement = "While in ON mode, if Infusion_initiate_prog, the system shall display the saved prescription values and allow the clinician to confirm the prescription with another Infusion_initiate_prog.";
497
499
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
498
500
  attribute :>> concernKind = ConcernKind::usability;
@@ -503,7 +505,7 @@ package memo_examples_gpca_pump_gpca_requirements {
503
505
  }
504
506
  requirement reqCs10 : Requirement {
505
507
  attribute :>> requirementType = RequirementTypeKind::system;
506
- @MemoIdentity { :>> providedId = "REQ-CS-10"; } attribute :>> name = "AllowNotificationsInOn";
508
+ @MemoIdentity { :>> providedId = "REQ-CS-10"; :>> label = "AllowNotificationsInOn"; }
507
509
  attribute :>> statement = "While in ON mode, the system shall allow visual and audio notification as described in §4.3.";
508
510
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
509
511
  attribute :>> concernKind = ConcernKind::safety;
@@ -514,7 +516,7 @@ package memo_examples_gpca_pump_gpca_requirements {
514
516
  }
515
517
  requirement reqCs11 : Requirement {
516
518
  attribute :>> requirementType = RequirementTypeKind::system;
517
- @MemoIdentity { :>> providedId = "REQ-CS-11"; } attribute :>> name = "AllowLoggingInOn";
519
+ @MemoIdentity { :>> providedId = "REQ-CS-11"; :>> label = "AllowLoggingInOn"; }
518
520
  attribute :>> statement = "While in ON mode, the system shall allow logging as described in §4.4.";
519
521
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
520
522
  attribute :>> concernKind = ConcernKind::regulatory;
@@ -525,7 +527,7 @@ package memo_examples_gpca_pump_gpca_requirements {
525
527
  }
526
528
  requirement reqCs12 : Requirement {
527
529
  attribute :>> requirementType = RequirementTypeKind::system;
528
- @MemoIdentity { :>> providedId = "REQ-CS-12"; } attribute :>> name = "ConfirmedInitiateStartsBasal";
530
+ @MemoIdentity { :>> providedId = "REQ-CS-12"; :>> label = "ConfirmedInitiateStartsBasal"; }
529
531
  attribute :>> statement = "While in ON mode, when the second Infusion_initiate_prog is commanded as per REQ 9 and Inhibited_Infusion_macro = FALSE, the system shall reset Actual_Infusion_Duration_macro = 0 and Actual_Volume_Infused_macro = 0 and shall transition to ON > THERAPY > ACTIVE > BASAL mode.";
530
532
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
531
533
  attribute :>> concernKind = ConcernKind::safety;
@@ -536,7 +538,7 @@ package memo_examples_gpca_pump_gpca_requirements {
536
538
  }
537
539
  requirement reqCs13 : Requirement {
538
540
  attribute :>> requirementType = RequirementTypeKind::system;
539
- @MemoIdentity { :>> providedId = "REQ-CS-13"; } attribute :>> name = "ConfirmedInitiateWhileInhibitedPauses";
541
+ @MemoIdentity { :>> providedId = "REQ-CS-13"; :>> label = "ConfirmedInitiateWhileInhibitedPauses"; }
540
542
  attribute :>> statement = "While in ON mode, when the second Infusion_initiate_prog is commanded as per REQ 9 and Inhibited_Infusion_macro = TRUE, the system shall reset Actual_Infusion_Duration_macro = 0 and Actual_Volume_Infused_macro = 0, shall transition to ON > THERAPY > PAUSED mode and perform actions as described in REQ 59 for 'Infusion Inhibited'.";
541
543
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
542
544
  attribute :>> concernKind = ConcernKind::safety;
@@ -549,7 +551,7 @@ package memo_examples_gpca_pump_gpca_requirements {
549
551
  // ── §4.1.4 ON > IDLE mode ───────────────────────────────────
550
552
  requirement reqCs14 : Requirement {
551
553
  attribute :>> requirementType = RequirementTypeKind::system;
552
- @MemoIdentity { :>> providedId = "REQ-CS-14"; } attribute :>> name = "IdleModeNoDelivery";
554
+ @MemoIdentity { :>> providedId = "REQ-CS-14"; :>> label = "IdleModeNoDelivery"; }
553
555
  attribute :>> statement = "While in IDLE mode, the system shall not deliver any drug.";
554
556
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
555
557
  attribute :>> concernKind = ConcernKind::safety;
@@ -560,7 +562,7 @@ package memo_examples_gpca_pump_gpca_requirements {
560
562
  }
561
563
  requirement reqCs15 : Requirement {
562
564
  attribute :>> requirementType = RequirementTypeKind::system;
563
- @MemoIdentity { :>> providedId = "REQ-CS-15"; } attribute :>> name = "IdleTimeNotification";
565
+ @MemoIdentity { :>> providedId = "REQ-CS-15"; :>> label = "IdleTimeNotification"; }
564
566
  attribute :>> statement = "While in IDLE mode for more than Max_IDLE_Duration_const, the system shall take actions as defined in REQ 59 for 'IDLE Time'.";
565
567
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
566
568
  attribute :>> concernKind = ConcernKind::safety;
@@ -573,7 +575,7 @@ package memo_examples_gpca_pump_gpca_requirements {
573
575
  // ── §4.1.5 ON > THERAPY mode ────────────────────────────────
574
576
  requirement reqCs16 : Requirement {
575
577
  attribute :>> requirementType = RequirementTypeKind::system;
576
- @MemoIdentity { :>> providedId = "REQ-CS-16"; } attribute :>> name = "TherapyDeliveryWithinTolerance";
578
+ @MemoIdentity { :>> providedId = "REQ-CS-16"; :>> label = "TherapyDeliveryWithinTolerance"; }
577
579
  attribute :>> statement = "While in THERAPY mode, the system shall deliver the drug as per the respective sub-mode's programmed flow rate, FlowRate_Mode_macro, within a tolerance of Tolerance_Max_const.";
578
580
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
579
581
  attribute :>> concernKind = ConcernKind::safety;
@@ -584,7 +586,7 @@ package memo_examples_gpca_pump_gpca_requirements {
584
586
  }
585
587
  requirement reqCs17 : Requirement {
586
588
  attribute :>> requirementType = RequirementTypeKind::system;
587
- @MemoIdentity { :>> providedId = "REQ-CS-17"; } attribute :>> name = "UnderInfusionFlowRateNotification";
589
+ @MemoIdentity { :>> providedId = "REQ-CS-17"; :>> label = "UnderInfusionFlowRateNotification"; }
588
590
  attribute :>> statement = "While in THERAPY mode, the system shall take actions as defined in REQ 59 for 'Under Infusion FlowRate' if the output flow rate falls below the mode flow rate beyond the tolerance windows.";
589
591
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
590
592
  attribute :>> concernKind = ConcernKind::safety;
@@ -595,7 +597,7 @@ package memo_examples_gpca_pump_gpca_requirements {
595
597
  }
596
598
  requirement reqCs18 : Requirement {
597
599
  attribute :>> requirementType = RequirementTypeKind::system;
598
- @MemoIdentity { :>> providedId = "REQ-CS-18"; } attribute :>> name = "LowReservoirNotification";
600
+ @MemoIdentity { :>> providedId = "REQ-CS-18"; :>> label = "LowReservoirNotification"; }
599
601
  attribute :>> statement = "While in THERAPY mode, when the current volume of drug in the reservoir is less than Low_Reservoir_const, the system shall perform the actions defined in REQ 59 for 'Low Reservoir'.";
600
602
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
601
603
  attribute :>> concernKind = ConcernKind::safety;
@@ -606,7 +608,7 @@ package memo_examples_gpca_pump_gpca_requirements {
606
608
  }
607
609
  requirement reqCs19 : Requirement {
608
610
  attribute :>> requirementType = RequirementTypeKind::system;
609
- @MemoIdentity { :>> providedId = "REQ-CS-19"; } attribute :>> name = "OverInfusionFlowRatePause";
611
+ @MemoIdentity { :>> providedId = "REQ-CS-19"; :>> label = "OverInfusionFlowRatePause"; }
610
612
  attribute :>> statement = "While in THERAPY mode, the system shall transition to PAUSED mode and perform the actions described in REQ 59 for 'Over Infusion FlowRate' if the output flow rate exceeds the mode flow rate beyond the tolerance windows.";
611
613
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
612
614
  attribute :>> concernKind = ConcernKind::safety;
@@ -617,7 +619,7 @@ package memo_examples_gpca_pump_gpca_requirements {
617
619
  }
618
620
  requirement reqCs20 : Requirement {
619
621
  attribute :>> requirementType = RequirementTypeKind::system;
620
- @MemoIdentity { :>> providedId = "REQ-CS-20"; } attribute :>> name = "OverInfusionVtbiPause";
622
+ @MemoIdentity { :>> providedId = "REQ-CS-20"; :>> label = "OverInfusionVtbiPause"; }
621
623
  attribute :>> statement = "While in THERAPY mode, the system shall transition to PAUSED mode and take the actions described in REQ 59 for 'Over Infusion VTBI' if the actual volume infused exceeds the drug-database maximum VTBI.";
622
624
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
623
625
  attribute :>> concernKind = ConcernKind::safety;
@@ -628,7 +630,7 @@ package memo_examples_gpca_pump_gpca_requirements {
628
630
  }
629
631
  requirement reqCs21 : Requirement {
630
632
  attribute :>> requirementType = RequirementTypeKind::system;
631
- @MemoIdentity { :>> providedId = "REQ-CS-21"; } attribute :>> name = "AirEmbolismPause";
633
+ @MemoIdentity { :>> providedId = "REQ-CS-21"; :>> label = "AirEmbolismPause"; }
632
634
  attribute :>> statement = "While in THERAPY mode, the system shall transition to PAUSED mode and perform the actions defined in REQ 59 for 'Air embolism' if an air bubble of a volume larger than Single_AirBubble_Volume_const flows through the hose, or the sum of volume of all air bubbles flowing through the hose exceeds Cumulative_AirBubble_Volume_const for the same time interval defined for Cumulative_AirBubble_Volume_const.";
633
635
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
634
636
  attribute :>> concernKind = ConcernKind::safety;
@@ -639,7 +641,7 @@ package memo_examples_gpca_pump_gpca_requirements {
639
641
  }
640
642
  requirement reqCs22 : Requirement {
641
643
  attribute :>> requirementType = RequirementTypeKind::system;
642
- @MemoIdentity { :>> providedId = "REQ-CS-22"; } attribute :>> name = "ReverseDeliveryPause";
644
+ @MemoIdentity { :>> providedId = "REQ-CS-22"; :>> label = "ReverseDeliveryPause"; }
643
645
  attribute :>> statement = "While in THERAPY mode, the system shall transition to PAUSED mode and perform actions defined in REQ 59 for 'Reverse Delivery' if there is continuous reverse delivery for more than Rev_Delivery_Continuous_Duration_const, or the cumulative time of all reverse delivery episodes exceeds Rev_Delivery_Cumulative_Duration_const.";
644
646
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
645
647
  attribute :>> concernKind = ConcernKind::safety;
@@ -650,7 +652,7 @@ package memo_examples_gpca_pump_gpca_requirements {
650
652
  }
651
653
  requirement reqCs23 : Requirement {
652
654
  attribute :>> requirementType = RequirementTypeKind::system;
653
- @MemoIdentity { :>> providedId = "REQ-CS-23"; } attribute :>> name = "EmptyReservoirPause";
655
+ @MemoIdentity { :>> providedId = "REQ-CS-23"; :>> label = "EmptyReservoirPause"; }
654
656
  attribute :>> statement = "While in THERAPY mode and if the volume of drug in the reservoir is less than Empty_Reservoir_const, the system shall transition to PAUSED mode and perform actions as listed in REQ 59 for 'Empty Reservoir'.";
655
657
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
656
658
  attribute :>> concernKind = ConcernKind::safety;
@@ -663,7 +665,7 @@ package memo_examples_gpca_pump_gpca_requirements {
663
665
  // ── §4.1.6 ON > THERAPY > ACTIVE mode ───────────────────────
664
666
  requirement reqCs24 : Requirement {
665
667
  attribute :>> requirementType = RequirementTypeKind::system;
666
- @MemoIdentity { :>> providedId = "REQ-CS-24"; } attribute :>> name = "SquareBolusAutoSchedule";
668
+ @MemoIdentity { :>> providedId = "REQ-CS-24"; :>> label = "SquareBolusAutoSchedule"; }
667
669
  attribute :>> statement = "While in ACTIVE mode, the system shall schedule to start a SQUARE BOLUS every Interval_sbolus_prog and end after Duration_sbolus_prog during the Duration_total_prog.";
668
670
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
669
671
  attribute :>> concernKind = ConcernKind::safety;
@@ -674,7 +676,7 @@ package memo_examples_gpca_pump_gpca_requirements {
674
676
  }
675
677
  requirement reqCs25 : Requirement {
676
678
  attribute :>> requirementType = RequirementTypeKind::system;
677
- @MemoIdentity { :>> providedId = "REQ-CS-25"; } attribute :>> name = "IgnorePatientBolusRequestConditions";
679
+ @MemoIdentity { :>> providedId = "REQ-CS-25"; :>> label = "IgnorePatientBolusRequestConditions"; }
678
680
  attribute :>> statement = "While in ACTIVE mode, when BolusRequest_prog, the system shall ignore the patient bolus request (BolusRequest_prog = FALSE) if: (1) Inhibited_Infusion_macro = TRUE, OR (2) Inhibited_PatientBolus_macro = TRUE, OR (3) the interval between the most recent PATIENT BOLUS mode end time and the current BolusRequest_prog time violates LockOutPeriod_pbolus_prog, OR (4) the total number of delivered patient boluses for the current prescription violates the programmed maximum number of patient boluses, OR (5) the system is currently in PATIENT BOLUS mode.";
679
681
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
680
682
  attribute :>> concernKind = ConcernKind::safety;
@@ -685,7 +687,7 @@ package memo_examples_gpca_pump_gpca_requirements {
685
687
  }
686
688
  requirement reqCs26 : Requirement {
687
689
  attribute :>> requirementType = RequirementTypeKind::system;
688
- @MemoIdentity { :>> providedId = "REQ-CS-26"; } attribute :>> name = "FrequentBolusRequestsNotification";
690
+ @MemoIdentity { :>> providedId = "REQ-CS-26"; :>> label = "FrequentBolusRequestsNotification"; }
689
691
  attribute :>> statement = "While in ACTIVE mode, the system shall perform the actions described in REQ 59 for 'Frequent Bolus Requests' if the condition described in REQ 25.3 or REQ 25.5 occurs.";
690
692
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
691
693
  attribute :>> concernKind = ConcernKind::safety;
@@ -696,7 +698,7 @@ package memo_examples_gpca_pump_gpca_requirements {
696
698
  }
697
699
  requirement reqCs27 : Requirement {
698
700
  attribute :>> requirementType = RequirementTypeKind::system;
699
- @MemoIdentity { :>> providedId = "REQ-CS-27"; } attribute :>> name = "BolusExceededNotification";
701
+ @MemoIdentity { :>> providedId = "REQ-CS-27"; :>> label = "BolusExceededNotification"; }
700
702
  attribute :>> statement = "While in ACTIVE mode, the system shall perform the actions described in REQ 59 for 'Bolus Exceeded' if the condition described in REQ 25.4 occurs.";
701
703
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
702
704
  attribute :>> concernKind = ConcernKind::safety;
@@ -707,7 +709,7 @@ package memo_examples_gpca_pump_gpca_requirements {
707
709
  }
708
710
  requirement reqCs28 : Requirement {
709
711
  attribute :>> requirementType = RequirementTypeKind::system;
710
- @MemoIdentity { :>> providedId = "REQ-CS-28"; } attribute :>> name = "InfusionCompleteToIdle";
712
+ @MemoIdentity { :>> providedId = "REQ-CS-28"; :>> label = "InfusionCompleteToIdle"; }
711
713
  attribute :>> statement = "While in ACTIVE mode, the system shall transition to IDLE and perform actions described in REQ 59 for 'Infusion Complete' if the actual duration of infusion is greater than or equal to the programmed prescription total duration, or the total volume infused is greater than or equal to the programmed prescription maximum VTBI.";
712
714
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
713
715
  attribute :>> concernKind = ConcernKind::safety;
@@ -718,7 +720,7 @@ package memo_examples_gpca_pump_gpca_requirements {
718
720
  }
719
721
  requirement reqCs29 : Requirement {
720
722
  attribute :>> requirementType = RequirementTypeKind::system;
721
- @MemoIdentity { :>> providedId = "REQ-CS-29"; } attribute :>> name = "ManualInhibitToPaused";
723
+ @MemoIdentity { :>> providedId = "REQ-CS-29"; :>> label = "ManualInhibitToPaused"; }
722
724
  attribute :>> statement = "While in ACTIVE mode, when Infusion_inhibit_prog, the system shall transition to PAUSED mode and perform actions described in REQ 59 for 'Infusion Manually Inhibited'.";
723
725
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
724
726
  attribute :>> concernKind = ConcernKind::safety;
@@ -729,7 +731,7 @@ package memo_examples_gpca_pump_gpca_requirements {
729
731
  }
730
732
  requirement reqCs30 : Requirement {
731
733
  attribute :>> requirementType = RequirementTypeKind::system;
732
- @MemoIdentity { :>> providedId = "REQ-CS-30"; } attribute :>> name = "AllInhibitedToPaused";
734
+ @MemoIdentity { :>> providedId = "REQ-CS-30"; :>> label = "AllInhibitedToPaused"; }
733
735
  attribute :>> statement = "While in ACTIVE mode, when Inhibited_Infusion_macro = TRUE, Inhibited_Bolus_macro = TRUE and Inhibited_PatientBolus_macro = TRUE, the system shall transition to PAUSED mode.";
734
736
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
735
737
  attribute :>> concernKind = ConcernKind::safety;
@@ -740,7 +742,7 @@ package memo_examples_gpca_pump_gpca_requirements {
740
742
  }
741
743
  requirement reqCs31 : Requirement {
742
744
  attribute :>> requirementType = RequirementTypeKind::system;
743
- @MemoIdentity { :>> providedId = "REQ-CS-31"; } attribute :>> name = "BasalToSquareBolus";
745
+ @MemoIdentity { :>> providedId = "REQ-CS-31"; :>> label = "BasalToSquareBolus"; }
744
746
  attribute :>> statement = "While in BASAL mode, when SQUARE BOLUS is initiated as described in REQ 24, the system shall transition to SQUARE BOLUS mode if (1) Inhibited_Bolus_macro = FALSE, AND (2) Inhibited_Infusion_macro = FALSE, AND (3) either there is no BolusRequest_prog, or there is a BolusRequest_prog and at least one of the conditions listed in REQ 25 is true.";
745
747
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
746
748
  attribute :>> concernKind = ConcernKind::safety;
@@ -751,7 +753,7 @@ package memo_examples_gpca_pump_gpca_requirements {
751
753
  }
752
754
  requirement reqCs32 : Requirement {
753
755
  attribute :>> requirementType = RequirementTypeKind::system;
754
- @MemoIdentity { :>> providedId = "REQ-CS-32"; } attribute :>> name = "BasalToPatientBolus";
756
+ @MemoIdentity { :>> providedId = "REQ-CS-32"; :>> label = "BasalToPatientBolus"; }
755
757
  attribute :>> statement = "While in BASAL mode, the system shall transition to PATIENT BOLUS mode when BolusRequest_prog and none of the conditions listed in REQ 25 are true.";
756
758
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
757
759
  attribute :>> concernKind = ConcernKind::safety;
@@ -762,7 +764,7 @@ package memo_examples_gpca_pump_gpca_requirements {
762
764
  }
763
765
  requirement reqCs33 : Requirement {
764
766
  attribute :>> requirementType = RequirementTypeKind::system;
765
- @MemoIdentity { :>> providedId = "REQ-CS-33"; } attribute :>> name = "SquareBolusToPatientBolus";
767
+ @MemoIdentity { :>> providedId = "REQ-CS-33"; :>> label = "SquareBolusToPatientBolus"; }
766
768
  attribute :>> statement = "While in SQUARE BOLUS mode, the system shall transition to PATIENT BOLUS mode if BolusRequest_prog and none of the conditions listed in REQ 25 are true.";
767
769
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
768
770
  attribute :>> concernKind = ConcernKind::safety;
@@ -773,7 +775,7 @@ package memo_examples_gpca_pump_gpca_requirements {
773
775
  }
774
776
  requirement reqCs34 : Requirement {
775
777
  attribute :>> requirementType = RequirementTypeKind::system;
776
- @MemoIdentity { :>> providedId = "REQ-CS-34"; } attribute :>> name = "SquareBolusToBasal";
778
+ @MemoIdentity { :>> providedId = "REQ-CS-34"; :>> label = "SquareBolusToBasal"; }
777
779
  attribute :>> statement = "While in SQUARE BOLUS mode, if Inhibited_Bolus_macro = TRUE or the SQUARE BOLUS is scheduled to end (as described in REQ 24), the system shall transition to BASAL mode if (1) Inhibited_Infusion_macro = FALSE, AND (2) there is no BolusRequest_prog, or BolusRequest_prog and at least one of the conditions listed in REQ 25 is true.";
778
780
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
779
781
  attribute :>> concernKind = ConcernKind::safety;
@@ -784,7 +786,7 @@ package memo_examples_gpca_pump_gpca_requirements {
784
786
  }
785
787
  requirement reqCs35 : Requirement {
786
788
  attribute :>> requirementType = RequirementTypeKind::system;
787
- @MemoIdentity { :>> providedId = "REQ-CS-35"; } attribute :>> name = "PatientBolusToBasal";
789
+ @MemoIdentity { :>> providedId = "REQ-CS-35"; :>> label = "PatientBolusToBasal"; }
788
790
  attribute :>> statement = "While in PATIENT BOLUS mode, when Inhibited_PatientBolus_macro = TRUE or the total duration in the current PATIENT BOLUS mode is greater than or equal to Duration_pbolus_prog, the system shall stop the PATIENT BOLUS delivery and transition to BASAL mode if (1) Inhibited_Infusion_macro = FALSE, AND (2) no SQUARE BOLUS is scheduled to be in progress at the time of transition, OR (3) a SQUARE BOLUS is scheduled to be in progress at the time of transition and Inhibited_Bolus_macro = TRUE.";
789
791
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
790
792
  attribute :>> concernKind = ConcernKind::safety;
@@ -795,7 +797,7 @@ package memo_examples_gpca_pump_gpca_requirements {
795
797
  }
796
798
  requirement reqCs36 : Requirement {
797
799
  attribute :>> requirementType = RequirementTypeKind::system;
798
- @MemoIdentity { :>> providedId = "REQ-CS-36"; } attribute :>> name = "PatientBolusToSquareBolus";
800
+ @MemoIdentity { :>> providedId = "REQ-CS-36"; :>> label = "PatientBolusToSquareBolus"; }
799
801
  attribute :>> statement = "While in PATIENT BOLUS mode, when Inhibited_PatientBolus_macro = TRUE or the total duration in the current PATIENT BOLUS mode is greater than or equal to Duration_pbolus_prog, the system shall stop the PATIENT BOLUS delivery and transition to SQUARE BOLUS mode if (1) Inhibited_Infusion_macro = FALSE, AND (2) a SQUARE BOLUS is scheduled to be in progress at the time of transition, AND (3) Inhibited_Bolus_macro = FALSE.";
800
802
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
801
803
  attribute :>> concernKind = ConcernKind::safety;
@@ -806,7 +808,7 @@ package memo_examples_gpca_pump_gpca_requirements {
806
808
  }
807
809
  requirement reqCs37 : Requirement {
808
810
  attribute :>> requirementType = RequirementTypeKind::system;
809
- @MemoIdentity { :>> providedId = "REQ-CS-37"; } attribute :>> name = "BasalToPauseOnInhibit";
811
+ @MemoIdentity { :>> providedId = "REQ-CS-37"; :>> label = "BasalToPauseOnInhibit"; }
810
812
  attribute :>> statement = "While in BASAL mode, if Inhibited_Infusion_macro = TRUE, the system shall transition to PAUSE mode.";
811
813
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
812
814
  attribute :>> concernKind = ConcernKind::safety;
@@ -817,7 +819,7 @@ package memo_examples_gpca_pump_gpca_requirements {
817
819
  }
818
820
  requirement reqCs38 : Requirement {
819
821
  attribute :>> requirementType = RequirementTypeKind::system;
820
- @MemoIdentity { :>> providedId = "REQ-CS-38"; } attribute :>> name = "PatientBolusToPauseOnInhibit";
822
+ @MemoIdentity { :>> providedId = "REQ-CS-38"; :>> label = "PatientBolusToPauseOnInhibit"; }
821
823
  attribute :>> statement = "While in PATIENT BOLUS mode, the system shall transition to PAUSE mode if Inhibited_PatientBolus_macro = TRUE and Inhibited_Infusion_macro = TRUE.";
822
824
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
823
825
  attribute :>> concernKind = ConcernKind::safety;
@@ -828,7 +830,7 @@ package memo_examples_gpca_pump_gpca_requirements {
828
830
  }
829
831
  requirement reqCs39 : Requirement {
830
832
  attribute :>> requirementType = RequirementTypeKind::system;
831
- @MemoIdentity { :>> providedId = "REQ-CS-39"; } attribute :>> name = "SquareBolusToPauseOnInhibit";
833
+ @MemoIdentity { :>> providedId = "REQ-CS-39"; :>> label = "SquareBolusToPauseOnInhibit"; }
832
834
  attribute :>> statement = "While in SQUARE BOLUS mode, the system shall transition to PAUSE mode if Inhibited_Bolus_macro = TRUE and Inhibited_Infusion_macro = TRUE.";
833
835
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
834
836
  attribute :>> concernKind = ConcernKind::safety;
@@ -841,7 +843,7 @@ package memo_examples_gpca_pump_gpca_requirements {
841
843
  // ── §4.1.7–4.1.9 BASAL / SQUARE BOLUS / PATIENT BOLUS ───────
842
844
  requirement reqCs40 : Requirement {
843
845
  attribute :>> requirementType = RequirementTypeKind::system;
844
- @MemoIdentity { :>> providedId = "REQ-CS-40"; } attribute :>> name = "BasalDeliveryRate";
846
+ @MemoIdentity { :>> providedId = "REQ-CS-40"; :>> label = "BasalDeliveryRate"; }
845
847
  attribute :>> statement = "While in BASAL mode, the system shall deliver the drug at a flow rate FlowRate_basal_prog with a variation up to Tolerance_Max_const.";
846
848
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
847
849
  attribute :>> concernKind = ConcernKind::safety;
@@ -852,7 +854,7 @@ package memo_examples_gpca_pump_gpca_requirements {
852
854
  }
853
855
  requirement reqCs41 : Requirement {
854
856
  attribute :>> requirementType = RequirementTypeKind::system;
855
- @MemoIdentity { :>> providedId = "REQ-CS-41"; } attribute :>> name = "SquareBolusDeliveryRate";
857
+ @MemoIdentity { :>> providedId = "REQ-CS-41"; :>> label = "SquareBolusDeliveryRate"; }
856
858
  attribute :>> statement = "While in SQUARE BOLUS mode, the system shall deliver the drug at a flow rate FlowRate_sbolus_prog with a variation up to Tolerance_Max_const.";
857
859
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
858
860
  attribute :>> concernKind = ConcernKind::safety;
@@ -863,7 +865,7 @@ package memo_examples_gpca_pump_gpca_requirements {
863
865
  }
864
866
  requirement reqCs42 : Requirement {
865
867
  attribute :>> requirementType = RequirementTypeKind::system;
866
- @MemoIdentity { :>> providedId = "REQ-CS-42"; } attribute :>> name = "PatientBolusDeliveryRate";
868
+ @MemoIdentity { :>> providedId = "REQ-CS-42"; :>> label = "PatientBolusDeliveryRate"; }
867
869
  attribute :>> statement = "While in PATIENT BOLUS mode, the system shall deliver the drug at a flow rate FlowRate_pbolus_prog with a variation up to Tolerance_Max_const.";
868
870
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
869
871
  attribute :>> concernKind = ConcernKind::safety;
@@ -876,7 +878,7 @@ package memo_examples_gpca_pump_gpca_requirements {
876
878
  // ── §4.1.10 ON > THERAPY > PAUSED mode ──────────────────────
877
879
  requirement reqCs43 : Requirement {
878
880
  attribute :>> requirementType = RequirementTypeKind::system;
879
- @MemoIdentity { :>> providedId = "REQ-CS-43"; } attribute :>> name = "PausedKvoDelivery";
881
+ @MemoIdentity { :>> providedId = "REQ-CS-43"; :>> label = "PausedKvoDelivery"; }
880
882
  attribute :>> statement = "While in PAUSED mode, the system shall allow drug infusion at a flow rate FlowRate_kvo_hd with a variation up to Tolerance_Max_const, to keep the vein open when infusion is paused.";
881
883
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
882
884
  attribute :>> concernKind = ConcernKind::safety;
@@ -887,7 +889,7 @@ package memo_examples_gpca_pump_gpca_requirements {
887
889
  }
888
890
  requirement reqCs44 : Requirement {
889
891
  attribute :>> requirementType = RequirementTypeKind::system;
890
- @MemoIdentity { :>> providedId = "REQ-CS-44"; } attribute :>> name = "PausedTimeNotification";
892
+ @MemoIdentity { :>> providedId = "REQ-CS-44"; :>> label = "PausedTimeNotification"; }
891
893
  attribute :>> statement = "While in PAUSED mode for more than Max_PAUSED_Duration_const, the system shall perform actions as described in REQ 59 for 'PAUSED Time'.";
892
894
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
893
895
  attribute :>> concernKind = ConcernKind::safety;
@@ -898,7 +900,7 @@ package memo_examples_gpca_pump_gpca_requirements {
898
900
  }
899
901
  requirement reqCs45 : Requirement {
900
902
  attribute :>> requirementType = RequirementTypeKind::system;
901
- @MemoIdentity { :>> providedId = "REQ-CS-45"; } attribute :>> name = "PausedInitiateWhileInhibitedNoTransition";
903
+ @MemoIdentity { :>> providedId = "REQ-CS-45"; :>> label = "PausedInitiateWhileInhibitedNoTransition"; }
902
904
  attribute :>> statement = "While in PAUSED mode, when Infusion_initiate_prog and Inhibited_Infusion_macro = TRUE, the system shall not perform any transition.";
903
905
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
904
906
  attribute :>> concernKind = ConcernKind::safety;
@@ -909,7 +911,7 @@ package memo_examples_gpca_pump_gpca_requirements {
909
911
  }
910
912
  requirement reqCs46 : Requirement {
911
913
  attribute :>> requirementType = RequirementTypeKind::system;
912
- @MemoIdentity { :>> providedId = "REQ-CS-46"; } attribute :>> name = "PausedResumeToBasal";
914
+ @MemoIdentity { :>> providedId = "REQ-CS-46"; :>> label = "PausedResumeToBasal"; }
913
915
  attribute :>> statement = "While in PAUSED mode, when Infusion_initiate_prog and Inhibited_Infusion_macro = FALSE, the system shall transition to ON > THERAPY > ACTIVE > BASAL mode.";
914
916
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
915
917
  attribute :>> concernKind = ConcernKind::safety;
@@ -920,7 +922,7 @@ package memo_examples_gpca_pump_gpca_requirements {
920
922
  }
921
923
  requirement reqCs47 : Requirement {
922
924
  attribute :>> requirementType = RequirementTypeKind::system;
923
- @MemoIdentity { :>> providedId = "REQ-CS-47"; } attribute :>> name = "PausedInhibitToIdle";
925
+ @MemoIdentity { :>> providedId = "REQ-CS-47"; :>> label = "PausedInhibitToIdle"; }
924
926
  attribute :>> statement = "While in PAUSED mode, when Infusion_inhibit_prog, the system shall transition to ON > IDLE mode and perform actions as described in REQ 59 for 'Infusion Stopped Manually'.";
925
927
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
926
928
  attribute :>> concernKind = ConcernKind::safety;
@@ -933,7 +935,7 @@ package memo_examples_gpca_pump_gpca_requirements {
933
935
  // ═════ §4.2 Data Configuration Requirements ═════════════════
934
936
  requirement reqCs48 : Requirement {
935
937
  attribute :>> requirementType = RequirementTypeKind::system;
936
- @MemoIdentity { :>> providedId = "REQ-CS-48"; } attribute :>> name = "DisplaySavedPrescriptionOnConfig";
938
+ @MemoIdentity { :>> providedId = "REQ-CS-48"; :>> label = "DisplaySavedPrescriptionOnConfig"; }
937
939
  attribute :>> statement = "When in ON mode, if DataConfig_prog as described in REQ 8, the system shall display the saved prescription and reservoir initial volume values or their default values (if there are no saved prescription and reservoir initial volume values) in the order listed in §3.1.1 and §3.1.3.";
938
940
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
939
941
  attribute :>> concernKind = ConcernKind::usability;
@@ -944,7 +946,7 @@ package memo_examples_gpca_pump_gpca_requirements {
944
946
  }
945
947
  requirement reqCs49 : Requirement {
946
948
  attribute :>> requirementType = RequirementTypeKind::system;
947
- @MemoIdentity { :>> providedId = "REQ-CS-49"; } attribute :>> name = "EditValuesOneAtATime";
949
+ @MemoIdentity { :>> providedId = "REQ-CS-49"; :>> label = "EditValuesOneAtATime"; }
948
950
  attribute :>> statement = "When the prescription and reservoir initial volume data are displayed as described in REQ 48, the system shall allow editing the values one at a time in the order they are displayed.";
949
951
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
950
952
  attribute :>> concernKind = ConcernKind::usability;
@@ -955,7 +957,7 @@ package memo_examples_gpca_pump_gpca_requirements {
955
957
  }
956
958
  requirement reqCs50 : Requirement {
957
959
  attribute :>> requirementType = RequirementTypeKind::system;
958
- @MemoIdentity { :>> providedId = "REQ-CS-50"; } attribute :>> name = "AllowInitiateWithNewValues";
960
+ @MemoIdentity { :>> providedId = "REQ-CS-50"; :>> label = "AllowInitiateWithNewValues"; }
959
961
  attribute :>> statement = "When the values are modified as described in REQ 49, the system shall allow infusion initiation with the new set of values (Infusion_initiate_prog).";
960
962
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
961
963
  attribute :>> concernKind = ConcernKind::usability;
@@ -966,7 +968,7 @@ package memo_examples_gpca_pump_gpca_requirements {
966
968
  }
967
969
  requirement reqCs51 : Requirement {
968
970
  attribute :>> requirementType = RequirementTypeKind::system;
969
- @MemoIdentity { :>> providedId = "REQ-CS-51"; } attribute :>> name = "ValidateValuesOnInitiate";
971
+ @MemoIdentity { :>> providedId = "REQ-CS-51"; :>> label = "ValidateValuesOnInitiate"; }
970
972
  attribute :>> statement = "When Infusion_initiate_prog as described in REQ 50, the system shall validate if all the values are consistent with the conditions specified in their respective Type Condition fields in §3.1.1 and §3.1.3.";
971
973
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
972
974
  attribute :>> concernKind = ConcernKind::safety;
@@ -977,7 +979,7 @@ package memo_examples_gpca_pump_gpca_requirements {
977
979
  }
978
980
  requirement reqCs52 : Requirement {
979
981
  attribute :>> requirementType = RequirementTypeKind::system;
980
- @MemoIdentity { :>> providedId = "REQ-CS-52"; } attribute :>> name = "DrugDatabaseNotReachable";
982
+ @MemoIdentity { :>> providedId = "REQ-CS-52"; :>> label = "DrugDatabaseNotReachable"; }
981
983
  attribute :>> statement = "When the system is validating data as described in REQ 51, if the system is unable to access the drug database safe values, the system shall not save the values and perform actions as described in REQ 59 for 'Drug database not reachable'.";
982
984
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
983
985
  attribute :>> concernKind = ConcernKind::safety;
@@ -988,7 +990,7 @@ package memo_examples_gpca_pump_gpca_requirements {
988
990
  }
989
991
  requirement reqCs53 : Requirement {
990
992
  attribute :>> requirementType = RequirementTypeKind::system;
991
- @MemoIdentity { :>> providedId = "REQ-CS-53"; } attribute :>> name = "DrugSafeValueNotPresent";
993
+ @MemoIdentity { :>> providedId = "REQ-CS-53"; :>> label = "DrugSafeValueNotPresent"; }
992
994
  attribute :>> statement = "When the system is validating data as described in REQ 51, if any of the drug database safe values listed in §3.5 is not present, the system shall not perform the validation with respect to that missing field, perform actions as described in REQ 59 for 'Drug safe value not present' and continue validation.";
993
995
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
994
996
  attribute :>> concernKind = ConcernKind::safety;
@@ -999,7 +1001,7 @@ package memo_examples_gpca_pump_gpca_requirements {
999
1001
  }
1000
1002
  requirement reqCs54 : Requirement {
1001
1003
  attribute :>> requirementType = RequirementTypeKind::system;
1002
- @MemoIdentity { :>> providedId = "REQ-CS-54"; } attribute :>> name = "SaveValidatedPrescription";
1004
+ @MemoIdentity { :>> providedId = "REQ-CS-54"; :>> label = "SaveValidatedPrescription"; }
1003
1005
  attribute :>> statement = "If there are no notifications from REQ 51 and REQ 52, the system shall save the prescription values, clear all the notifications previously generated by REQ 51, REQ 52 and REQ 53 if any, and allow initiate infusion with the new values as described in REQ 9.";
1004
1006
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1005
1007
  attribute :>> concernKind = ConcernKind::safety;
@@ -1010,7 +1012,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1010
1012
  }
1011
1013
  requirement reqCs55 : Requirement {
1012
1014
  attribute :>> requirementType = RequirementTypeKind::system;
1013
- @MemoIdentity { :>> providedId = "REQ-CS-55"; } attribute :>> name = "RejectInvalidPrescription";
1015
+ @MemoIdentity { :>> providedId = "REQ-CS-55"; :>> label = "RejectInvalidPrescription"; }
1014
1016
  attribute :>> statement = "If REQ 51 or REQ 52 had generated a notification, the system shall not save the prescription values, allow the clinician to edit the values of the fields as described in REQ 49 and then repeat steps from REQ 50 until all validations are passed as described in REQ 54.";
1015
1017
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1016
1018
  attribute :>> concernKind = ConcernKind::safety;
@@ -1021,7 +1023,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1021
1023
  }
1022
1024
  requirement reqCs56 : Requirement {
1023
1025
  attribute :>> requirementType = RequirementTypeKind::system;
1024
- @MemoIdentity { :>> providedId = "REQ-CS-56"; } attribute :>> name = "RemainInModeDuringConfig";
1026
+ @MemoIdentity { :>> providedId = "REQ-CS-56"; :>> label = "RemainInModeDuringConfig"; }
1025
1027
  attribute :>> statement = "While data configuration is in progress, the system shall remain in its current mode with the currently active prescription values, until infusion is initiated with the new prescription values as described in REQ 54.";
1026
1028
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1027
1029
  attribute :>> concernKind = ConcernKind::safety;
@@ -1032,7 +1034,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1032
1034
  }
1033
1035
  requirement reqCs57 : Requirement {
1034
1036
  attribute :>> requirementType = RequirementTypeKind::system;
1035
- @MemoIdentity { :>> providedId = "REQ-CS-57"; } attribute :>> name = "ConfigWarningNotification";
1037
+ @MemoIdentity { :>> providedId = "REQ-CS-57"; :>> label = "ConfigWarningNotification"; }
1036
1038
  attribute :>> statement = "When the clinician has attempted to configure the data for more than Config_Warning_Duration_const continuously, the system shall perform actions as described in REQ 59 for 'Config Time'.";
1037
1039
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1038
1040
  attribute :>> concernKind = ConcernKind::usability;
@@ -1043,7 +1045,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1043
1045
  }
1044
1046
  requirement reqCs58 : Requirement {
1045
1047
  attribute :>> requirementType = RequirementTypeKind::system;
1046
- @MemoIdentity { :>> providedId = "REQ-CS-58"; } attribute :>> name = "MaxConfigDurationClears";
1048
+ @MemoIdentity { :>> providedId = "REQ-CS-58"; :>> label = "MaxConfigDurationClears"; }
1047
1049
  attribute :>> statement = "When the clinician has attempted to configure the data for more than Max_Config_Duration_const continuously, the system shall clear all unsaved prescription values and shall perform actions as described in REQ 59 for 'Unsaved Configuration Cleared'.";
1048
1050
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1049
1051
  attribute :>> concernKind = ConcernKind::usability;
@@ -1056,7 +1058,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1056
1058
  // ═════ §4.3 Notification Requirements ═══════════════════════
1057
1059
  requirement reqCs59 : Requirement {
1058
1060
  attribute :>> requirementType = RequirementTypeKind::system;
1059
- @MemoIdentity { :>> providedId = "REQ-CS-59"; } attribute :>> name = "NotificationActionTable";
1061
+ @MemoIdentity { :>> providedId = "REQ-CS-59"; :>> label = "NotificationActionTable"; }
1060
1062
  attribute :>> statement = "The system shall perform all the actions listed in the notification action table for the respective notification. The table defines, for each of the 20 notifications, its priority (High/Med/Low) and the actions Visual, Audio, Inhibit Infusion, Inhibit Square Bolus, Inhibit Patient Bolus, and Stop Bolus. Notification requirements have higher precedence over all other requirements in the system.";
1061
1063
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1062
1064
  attribute :>> concernKind = ConcernKind::safety;
@@ -1067,7 +1069,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1067
1069
  }
1068
1070
  requirement reqCs60 : Requirement {
1069
1071
  attribute :>> requirementType = RequirementTypeKind::system;
1070
- @MemoIdentity { :>> providedId = "REQ-CS-60"; } attribute :>> name = "HighestPriorityActionsFirst";
1072
+ @MemoIdentity { :>> providedId = "REQ-CS-60"; :>> label = "HighestPriorityActionsFirst"; }
1071
1073
  attribute :>> statement = "When more than one notification having different priorities occurs at the same time, the system shall take actions listed for the highest priority notification.";
1072
1074
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1073
1075
  attribute :>> concernKind = ConcernKind::safety;
@@ -1078,7 +1080,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1078
1080
  }
1079
1081
  requirement reqCs61 : Requirement {
1080
1082
  attribute :>> requirementType = RequirementTypeKind::system;
1081
- @MemoIdentity { :>> providedId = "REQ-CS-61"; } attribute :>> name = "MostRestrictiveSamePriority";
1083
+ @MemoIdentity { :>> providedId = "REQ-CS-61"; :>> label = "MostRestrictiveSamePriority"; }
1082
1084
  attribute :>> statement = "When more than one notification having same priorities and different set of actions occurs at the same time, the system shall take actions listed for the most restrictive notification.";
1083
1085
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1084
1086
  attribute :>> concernKind = ConcernKind::safety;
@@ -1089,7 +1091,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1089
1091
  }
1090
1092
  requirement reqCs62 : Requirement {
1091
1093
  attribute :>> requirementType = RequirementTypeKind::system;
1092
- @MemoIdentity { :>> providedId = "REQ-CS-62"; } attribute :>> name = "MostRestrictiveTieBreak";
1094
+ @MemoIdentity { :>> providedId = "REQ-CS-62"; :>> label = "MostRestrictiveTieBreak"; }
1093
1095
  attribute :>> statement = "When more than one notification having same priorities and same set of actions occurs at the same time, the system will take actions for the notification that has the most restrictive actions as listed in REQ 59.";
1094
1096
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1095
1097
  attribute :>> concernKind = ConcernKind::safety;
@@ -1100,7 +1102,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1100
1102
  }
1101
1103
  requirement reqCs63 : Requirement {
1102
1104
  attribute :>> requirementType = RequirementTypeKind::system;
1103
- @MemoIdentity { :>> providedId = "REQ-CS-63"; } attribute :>> name = "EscalateToMoreRestrictive";
1105
+ @MemoIdentity { :>> providedId = "REQ-CS-63"; :>> label = "EscalateToMoreRestrictive"; }
1104
1106
  attribute :>> statement = "While a low priority or less restrictive notification is in effect and a higher priority or more restrictive same-priority notification occurs, the system shall take actions for the high priority or more restrictive notification as listed in REQ 59.";
1105
1107
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1106
1108
  attribute :>> concernKind = ConcernKind::safety;
@@ -1111,7 +1113,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1111
1113
  }
1112
1114
  requirement reqCs64 : Requirement {
1113
1115
  attribute :>> requirementType = RequirementTypeKind::system;
1114
- @MemoIdentity { :>> providedId = "REQ-CS-64"; } attribute :>> name = "LowPriorityListedOnly";
1116
+ @MemoIdentity { :>> providedId = "REQ-CS-64"; :>> label = "LowPriorityListedOnly"; }
1115
1117
  attribute :>> statement = "While a high priority notification is in effect and a low priority notification occurs, the system shall only add the notification to the active notification list and shall not take any other actions for the low priority notification.";
1116
1118
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1117
1119
  attribute :>> concernKind = ConcernKind::safety;
@@ -1122,7 +1124,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1122
1124
  }
1123
1125
  requirement reqCs65 : Requirement {
1124
1126
  attribute :>> requirementType = RequirementTypeKind::system;
1125
- @MemoIdentity { :>> providedId = "REQ-CS-65"; } attribute :>> name = "CancelNotificationsOneAtATime";
1127
+ @MemoIdentity { :>> providedId = "REQ-CS-65"; :>> label = "CancelNotificationsOneAtATime"; }
1126
1128
  attribute :>> statement = "The system shall allow the clinician to cancel the active notifications, starting from the first in the list, one at a time (Notification_cancel_prog).";
1127
1129
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1128
1130
  attribute :>> concernKind = ConcernKind::usability;
@@ -1133,7 +1135,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1133
1135
  }
1134
1136
  requirement reqCs66 : Requirement {
1135
1137
  attribute :>> requirementType = RequirementTypeKind::system;
1136
- @MemoIdentity { :>> providedId = "REQ-CS-66"; } attribute :>> name = "CancelClearsRestrictions";
1138
+ @MemoIdentity { :>> providedId = "REQ-CS-66"; :>> label = "CancelClearsRestrictions"; }
1137
1139
  attribute :>> statement = "When Notification_cancel_prog for a notification, the system shall cancel and clear the restrictions for that notification: Inhibited_Infusion_macro = FALSE, Inhibited_Bolus_macro = FALSE, Inhibited_PatientBolus_macro = FALSE, and cancel and clear the corresponding audio notification.";
1138
1140
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1139
1141
  attribute :>> concernKind = ConcernKind::safety;
@@ -1144,7 +1146,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1144
1146
  }
1145
1147
  requirement reqCs67 : Requirement {
1146
1148
  attribute :>> requirementType = RequirementTypeKind::system;
1147
- @MemoIdentity { :>> providedId = "REQ-CS-67"; } attribute :>> name = "NextNotificationAfterCancel";
1149
+ @MemoIdentity { :>> providedId = "REQ-CS-67"; :>> label = "NextNotificationAfterCancel"; }
1148
1150
  attribute :>> statement = "When Notification_cancel_prog for a notification, the system takes actions for the next active notification in order of priority and descending order of occurrence.";
1149
1151
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1150
1152
  attribute :>> concernKind = ConcernKind::safety;
@@ -1157,7 +1159,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1157
1159
  // ── §4.3.1 Visual notification ──────────────────────────────
1158
1160
  requirement reqCs68 : Requirement {
1159
1161
  attribute :>> requirementType = RequirementTypeKind::system;
1160
- @MemoIdentity { :>> providedId = "REQ-CS-68"; } attribute :>> name = "DisplayActiveNotificationsOrdered";
1162
+ @MemoIdentity { :>> providedId = "REQ-CS-68"; :>> label = "DisplayActiveNotificationsOrdered"; }
1161
1163
  attribute :>> statement = "The system shall display all active notifications in order of priority and descending order of occurrence (Notification_Visual_output).";
1162
1164
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1163
1165
  attribute :>> concernKind = ConcernKind::usability;
@@ -1168,7 +1170,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1168
1170
  }
1169
1171
  requirement reqCs69 : Requirement {
1170
1172
  attribute :>> requirementType = RequirementTypeKind::system;
1171
- @MemoIdentity { :>> providedId = "REQ-CS-69"; } attribute :>> name = "DisplayNotificationNameAndTime";
1173
+ @MemoIdentity { :>> providedId = "REQ-CS-69"; :>> label = "DisplayNotificationNameAndTime"; }
1172
1174
  attribute :>> statement = "The system shall display the name of all the active notifications and the time of the occurrence.";
1173
1175
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1174
1176
  attribute :>> concernKind = ConcernKind::usability;
@@ -1179,7 +1181,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1179
1181
  }
1180
1182
  requirement reqCs70 : Requirement {
1181
1183
  attribute :>> requirementType = RequirementTypeKind::system;
1182
- @MemoIdentity { :>> providedId = "REQ-CS-70"; } attribute :>> name = "DisplaySimultaneousNotifications";
1184
+ @MemoIdentity { :>> providedId = "REQ-CS-70"; :>> label = "DisplaySimultaneousNotifications"; }
1183
1185
  attribute :>> statement = "When more than one notification occurs at the same time, the system shall display all the notifications as per REQ 68.";
1184
1186
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1185
1187
  attribute :>> concernKind = ConcernKind::usability;
@@ -1190,7 +1192,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1190
1192
  }
1191
1193
  requirement reqCs71 : Requirement {
1192
1194
  attribute :>> requirementType = RequirementTypeKind::system;
1193
- @MemoIdentity { :>> providedId = "REQ-CS-71"; } attribute :>> name = "RemoveCancelledNotificationFromList";
1195
+ @MemoIdentity { :>> providedId = "REQ-CS-71"; :>> label = "RemoveCancelledNotificationFromList"; }
1194
1196
  attribute :>> statement = "When Notification_cancel_prog for a notification, the system shall remove the notification from the list and shall display the list of remaining notifications.";
1195
1197
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1196
1198
  attribute :>> concernKind = ConcernKind::usability;
@@ -1203,7 +1205,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1203
1205
  // ── §4.3.2 Audio notification ───────────────────────────────
1204
1206
  requirement reqCs72 : Requirement {
1205
1207
  attribute :>> requirementType = RequirementTypeKind::system;
1206
- @MemoIdentity { :>> providedId = "REQ-CS-72"; } attribute :>> name = "AudibleSoundPerNotification";
1208
+ @MemoIdentity { :>> providedId = "REQ-CS-72"; :>> label = "AudibleSoundPerNotification"; }
1207
1209
  attribute :>> statement = "When each notification occurs that requires an audio alarm as listed in REQ 59, the system shall produce a single audible sound of Audio_level_const, unless the audio is disabled or silenced.";
1208
1210
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1209
1211
  attribute :>> concernKind = ConcernKind::safety;
@@ -1214,7 +1216,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1214
1216
  }
1215
1217
  requirement reqCs73 : Requirement {
1216
1218
  attribute :>> requirementType = RequirementTypeKind::system;
1217
- @MemoIdentity { :>> providedId = "REQ-CS-73"; } attribute :>> name = "AudioDisableSilenceEnable";
1219
+ @MemoIdentity { :>> providedId = "REQ-CS-73"; :>> label = "AudioDisableSilenceEnable"; }
1218
1220
  attribute :>> statement = "The system shall allow the clinician to disable audible alarm, silence the alarm temporarily and enable a disabled or silenced alarm.";
1219
1221
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1220
1222
  attribute :>> concernKind = ConcernKind::usability;
@@ -1225,7 +1227,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1225
1227
  }
1226
1228
  requirement reqCs74 : Requirement {
1227
1229
  attribute :>> requirementType = RequirementTypeKind::system;
1228
- @MemoIdentity { :>> providedId = "REQ-CS-74"; } attribute :>> name = "NoAudioWhileDisabled";
1230
+ @MemoIdentity { :>> providedId = "REQ-CS-74"; :>> label = "NoAudioWhileDisabled"; }
1229
1231
  attribute :>> statement = "If Disable_audio_prog = 'PERM' or 'TEMP', the system shall not produce audible alarm until it is enabled (Disable_audio_prog = FALSE).";
1230
1232
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1231
1233
  attribute :>> concernKind = ConcernKind::usability;
@@ -1236,7 +1238,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1236
1238
  }
1237
1239
  requirement reqCs75 : Requirement {
1238
1240
  attribute :>> requirementType = RequirementTypeKind::system;
1239
- @MemoIdentity { :>> providedId = "REQ-CS-75"; } attribute :>> name = "TempSilenceAutoReenable";
1241
+ @MemoIdentity { :>> providedId = "REQ-CS-75"; :>> label = "TempSilenceAutoReenable"; }
1240
1242
  attribute :>> statement = "If Disable_audio_prog = 'TEMP', the system shall automatically enable it (Disable_audio_prog = FALSE) after Audio_Enable_Duration_const minutes.";
1241
1243
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1242
1244
  attribute :>> concernKind = ConcernKind::safety;
@@ -1247,7 +1249,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1247
1249
  }
1248
1250
  requirement reqCs76 : Requirement {
1249
1251
  attribute :>> requirementType = RequirementTypeKind::system;
1250
- @MemoIdentity { :>> providedId = "REQ-CS-76"; } attribute :>> name = "ReannunciateLongActiveNotifications";
1252
+ @MemoIdentity { :>> providedId = "REQ-CS-76"; :>> label = "ReannunciateLongActiveNotifications"; }
1251
1253
  attribute :>> statement = "For every notification with audio alarm that is active for more than Audio_Enable_Duration_const minutes, the system shall produce audible sound as described in REQ 72.";
1252
1254
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1253
1255
  attribute :>> concernKind = ConcernKind::safety;
@@ -1260,7 +1262,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1260
1262
  // ═════ §4.4 Log Requirements ════════════════════════════════
1261
1263
  requirement reqCs77 : Requirement {
1262
1264
  attribute :>> requirementType = RequirementTypeKind::system;
1263
- @MemoIdentity { :>> providedId = "REQ-CS-77"; } attribute :>> name = "LogWhileOn";
1265
+ @MemoIdentity { :>> providedId = "REQ-CS-77"; :>> label = "LogWhileOn"; }
1264
1266
  attribute :>> statement = "The system shall log all the operational and error data when the system is in ON mode.";
1265
1267
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1266
1268
  attribute :>> concernKind = ConcernKind::regulatory;
@@ -1271,7 +1273,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1271
1273
  }
1272
1274
  requirement reqCs78 : Requirement {
1273
1275
  attribute :>> requirementType = RequirementTypeKind::system;
1274
- @MemoIdentity { :>> providedId = "REQ-CS-78"; } attribute :>> name = "OperationalLogContent";
1276
+ @MemoIdentity { :>> providedId = "REQ-CS-78"; :>> label = "OperationalLogContent"; }
1275
1277
  attribute :>> statement = "While in ON mode, every Log_Interval_const minutes or when a mode transition occurs, the system shall record the following information in an 'Operational log': (1) date in dd/MM/yy format, (2) time in HH:MM:SS GMT, (3) Patient ID, (4) prescription information, (5) current mode of the system, (6) current flow rate of the system.";
1276
1278
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1277
1279
  attribute :>> concernKind = ConcernKind::regulatory;
@@ -1282,7 +1284,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1282
1284
  }
1283
1285
  requirement reqCs79 : Requirement {
1284
1286
  attribute :>> requirementType = RequirementTypeKind::system;
1285
- @MemoIdentity { :>> providedId = "REQ-CS-79"; } attribute :>> name = "InfusionCompleteLogContent";
1287
+ @MemoIdentity { :>> providedId = "REQ-CS-79"; :>> label = "InfusionCompleteLogContent"; }
1286
1288
  attribute :>> statement = "When infusion is completed as per REQ 28, the system shall record the following information in addition to the information listed in REQ 78 in the 'Operational log': (1) total volume infused for that prescription, (2) total duration of infusion for that prescription (total duration in ACTIVE mode).";
1287
1289
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1288
1290
  attribute :>> concernKind = ConcernKind::regulatory;
@@ -1293,7 +1295,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1293
1295
  }
1294
1296
  requirement reqCs80 : Requirement {
1295
1297
  attribute :>> requirementType = RequirementTypeKind::system;
1296
- @MemoIdentity { :>> providedId = "REQ-CS-80"; } attribute :>> name = "ErrorLogContent";
1298
+ @MemoIdentity { :>> providedId = "REQ-CS-80"; :>> label = "ErrorLogContent"; }
1297
1299
  attribute :>> statement = "When any notification condition listed in REQ 59 occurs, the system shall record the following information in an error log: (1) date in dd/MM/yy format, (2) time in HH:MM:SS GMT, (3) notification description, (4) current mode of the system, (5) remaining drug volume.";
1298
1300
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1299
1301
  attribute :>> concernKind = ConcernKind::regulatory;
@@ -1304,7 +1306,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1304
1306
  }
1305
1307
  requirement reqCs81 : Requirement {
1306
1308
  attribute :>> requirementType = RequirementTypeKind::system;
1307
- @MemoIdentity { :>> providedId = "REQ-CS-81"; } attribute :>> name = "NotificationCancelLogContent";
1309
+ @MemoIdentity { :>> providedId = "REQ-CS-81"; :>> label = "NotificationCancelLogContent"; }
1308
1310
  attribute :>> statement = "When a notification is cancelled as described in REQ 66, the system shall record the following information in the 'Operational log': (1) date in dd/MM/yy format, (2) time in HH:MM:SS GMT, (3) description of the notification cancelled.";
1309
1311
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1310
1312
  attribute :>> concernKind = ConcernKind::regulatory;
@@ -1317,7 +1319,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1317
1319
  // ═════ §4.5 Security Requirements ═══════════════════════════
1318
1320
  requirement reqCs82 : Requirement {
1319
1321
  attribute :>> requirementType = RequirementTypeKind::system;
1320
- @MemoIdentity { :>> providedId = "REQ-CS-82"; } attribute :>> name = "AuthorizedCliniciansOnly";
1322
+ @MemoIdentity { :>> providedId = "REQ-CS-82"; :>> label = "AuthorizedCliniciansOnly"; }
1321
1323
  attribute :>> statement = "The system shall allow only authorized clinicians to configure the system.";
1322
1324
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1323
1325
  attribute :>> concernKind = ConcernKind::cybersecurity;
@@ -1330,7 +1332,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1330
1332
  // ═════ Ch.5 Non-Behavioral Requirements ═════════════════════
1331
1333
  requirement reqCs83 : Requirement {
1332
1334
  attribute :>> requirementType = RequirementTypeKind::system;
1333
- @MemoIdentity { :>> providedId = "REQ-CS-83"; } attribute :>> name = "DropResistance";
1335
+ @MemoIdentity { :>> providedId = "REQ-CS-83"; :>> label = "DropResistance"; }
1334
1336
  attribute :>> statement = "The system shall be unbreakable if it is dropped on a laminate floor from y m of height with no additional force than gravity.";
1335
1337
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1336
1338
  attribute :>> concernKind = ConcernKind::reliability;
@@ -1341,7 +1343,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1341
1343
  }
1342
1344
  requirement reqCs84 : Requirement {
1343
1345
  attribute :>> requirementType = RequirementTypeKind::system;
1344
- @MemoIdentity { :>> providedId = "REQ-CS-84"; } attribute :>> name = "WaterResistance";
1346
+ @MemoIdentity { :>> providedId = "REQ-CS-84"; :>> label = "WaterResistance"; }
1345
1347
  attribute :>> statement = "The system shall be waterproof to non-acidic liquid of less than x ml on any side of the pump for a maximum of 2 hours.";
1346
1348
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1347
1349
  attribute :>> concernKind = ConcernKind::reliability;
@@ -1352,7 +1354,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1352
1354
  }
1353
1355
  requirement reqCs85 : Requirement {
1354
1356
  attribute :>> requirementType = RequirementTypeKind::system;
1355
- @MemoIdentity { :>> providedId = "REQ-CS-85"; } attribute :>> name = "LogRetention";
1357
+ @MemoIdentity { :>> providedId = "REQ-CS-85"; :>> label = "LogRetention"; }
1356
1358
  attribute :>> statement = "The system shall persist the most recent 30 days of error log data and 15 days of operational log data.";
1357
1359
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1358
1360
  attribute :>> concernKind = ConcernKind::regulatory;
@@ -1363,7 +1365,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1363
1365
  }
1364
1366
  requirement reqCs86 : Requirement {
1365
1367
  attribute :>> requirementType = RequirementTypeKind::system;
1366
- @MemoIdentity { :>> providedId = "REQ-CS-86"; } attribute :>> name = "PrescriptionRetention";
1368
+ @MemoIdentity { :>> providedId = "REQ-CS-86"; :>> label = "PrescriptionRetention"; }
1367
1369
  attribute :>> statement = "The system shall persist the last saved prescription data for 15 days.";
1368
1370
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
1369
1371
  attribute :>> concernKind = ConcernKind::regulatory;
@@ -1380,7 +1382,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1380
1382
  // them from the REQ-CS family.
1381
1383
  requirement reqDrugLibraryLimits : Requirement {
1382
1384
  attribute :>> requirementType = RequirementTypeKind::system;
1383
- @MemoIdentity { :>> providedId = "REQ-X-01"; } attribute :>> name = "PrescriptionWithinDrugLibraryLimits";
1385
+ @MemoIdentity { :>> providedId = "REQ-X-01"; :>> label = "PrescriptionWithinDrugLibraryLimits"; }
1384
1386
  attribute :>> statement = "When a prescription parameter is entered, the system shall reject values outside drug-library hard limits and shall require explicit confirmation for values outside soft limits.";
1385
1387
  attribute :>> sourceKind = RequirementSourceKind::extension;
1386
1388
  attribute :>> concernKind = ConcernKind::safety;
@@ -1399,7 +1401,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1399
1401
  }
1400
1402
  requirement reqPost : Requirement {
1401
1403
  attribute :>> requirementType = RequirementTypeKind::system;
1402
- @MemoIdentity { :>> providedId = "REQ-X-02"; } attribute :>> name = "PowerOnSelfTest";
1404
+ @MemoIdentity { :>> providedId = "REQ-X-02"; :>> label = "PowerOnSelfTest"; }
1403
1405
  attribute :>> statement = "On power-up, the system shall complete a self test of CPU, memory, watchdog, and safety sensors before permitting therapy, and shall remain locked out of therapy if any check fails.";
1404
1406
  attribute :>> sourceKind = RequirementSourceKind::extension;
1405
1407
  attribute :>> concernKind = ConcernKind::safety;
@@ -1418,7 +1420,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1418
1420
  }
1419
1421
  requirement reqPowerLossRetention : Requirement {
1420
1422
  attribute :>> requirementType = RequirementTypeKind::system;
1421
- @MemoIdentity { :>> providedId = "REQ-X-03"; } attribute :>> name = "PrescriptionRetainedAcrossPowerLoss";
1423
+ @MemoIdentity { :>> providedId = "REQ-X-03"; :>> label = "PrescriptionRetainedAcrossPowerLoss"; }
1422
1424
  attribute :>> statement = "If all power is lost, the system shall retain the confirmed prescription and event log, and on power restoration shall resume therapy only after clinician confirmation.";
1423
1425
  attribute :>> sourceKind = RequirementSourceKind::extension;
1424
1426
  attribute :>> concernKind = ConcernKind::safety;
@@ -1437,7 +1439,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1437
1439
  }
1438
1440
  requirement reqOcclusion : Requirement {
1439
1441
  attribute :>> requirementType = RequirementTypeKind::software;
1440
- @MemoIdentity { :>> providedId = "REQ-X-04"; } attribute :>> name = "OcclusionDetectionAndAlarm";
1442
+ @MemoIdentity { :>> providedId = "REQ-X-04"; :>> label = "OcclusionDetectionAndAlarm"; }
1441
1443
  attribute :>> statement = "When downstream line pressure exceeds the occlusion threshold, the system shall pause infusion and raise a High-priority notification.";
1442
1444
  attribute :>> sourceKind = RequirementSourceKind::extension;
1443
1445
  attribute :>> concernKind = ConcernKind::safety;
@@ -1452,7 +1454,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1452
1454
  }
1453
1455
  requirement reqDoorOpen : Requirement {
1454
1456
  attribute :>> requirementType = RequirementTypeKind::software;
1455
- @MemoIdentity { :>> providedId = "REQ-X-05"; } attribute :>> name = "DoorOpenPreventsDelivery";
1457
+ @MemoIdentity { :>> providedId = "REQ-X-05"; :>> label = "DoorOpenPreventsDelivery"; }
1456
1458
  attribute :>> statement = "While the reservoir door is open or unlatched, the system shall not deliver drug and shall raise a Medium-priority notification if therapy was active.";
1457
1459
  attribute :>> sourceKind = RequirementSourceKind::extension;
1458
1460
  attribute :>> concernKind = ConcernKind::safety;
@@ -1472,7 +1474,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1472
1474
  }
1473
1475
  requirement reqMaxHourlyDose : Requirement {
1474
1476
  attribute :>> requirementType = RequirementTypeKind::software;
1475
- @MemoIdentity { :>> providedId = "REQ-X-06"; } attribute :>> name = "MaximumHourlyDoseEnforcement";
1477
+ @MemoIdentity { :>> providedId = "REQ-X-06"; :>> label = "MaximumHourlyDoseEnforcement"; }
1476
1478
  attribute :>> statement = "The system shall not deliver more than the prescribed maximum drug volume in any sliding one-hour window, counting basal, patient bolus, and square bolus contributions.";
1477
1479
  attribute :>> sourceKind = RequirementSourceKind::extension;
1478
1480
  attribute :>> concernKind = ConcernKind::safety;
@@ -1487,7 +1489,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1487
1489
  }
1488
1490
  requirement reqEventLogging : Requirement {
1489
1491
  attribute :>> requirementType = RequirementTypeKind::software;
1490
- @MemoIdentity { :>> providedId = "REQ-X-07"; } attribute :>> name = "TamperEvidentTherapyLog";
1492
+ @MemoIdentity { :>> providedId = "REQ-X-07"; :>> label = "TamperEvidentTherapyLog"; }
1491
1493
  attribute :>> statement = "The system shall record therapy events in a timestamped, tamper-evident event log such that any modification of recorded entries is detectable.";
1492
1494
  attribute :>> sourceKind = RequirementSourceKind::extension;
1493
1495
  attribute :>> concernKind = ConcernKind::regulatory;
@@ -1502,7 +1504,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1502
1504
  }
1503
1505
  requirement reqWatchdogSafeState : Requirement {
1504
1506
  attribute :>> requirementType = RequirementTypeKind::software;
1505
- @MemoIdentity { :>> providedId = "REQ-X-08"; } attribute :>> name = "WatchdogForcesSafeState";
1507
+ @MemoIdentity { :>> providedId = "REQ-X-08"; :>> label = "WatchdogForcesSafeState"; }
1506
1508
  attribute :>> statement = "If the software fails to service the hardware watchdog within its timeout, the system shall force pump output to zero flow and raise a continuous audible alarm.";
1507
1509
  attribute :>> sourceKind = RequirementSourceKind::extension;
1508
1510
  attribute :>> concernKind = ConcernKind::safety;
@@ -1522,7 +1524,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1522
1524
  }
1523
1525
  requirement reqStuckButton : Requirement {
1524
1526
  attribute :>> requirementType = RequirementTypeKind::software;
1525
- @MemoIdentity { :>> providedId = "REQ-X-09"; } attribute :>> name = "StuckBolusButtonDetection";
1527
+ @MemoIdentity { :>> providedId = "REQ-X-09"; :>> label = "StuckBolusButtonDetection"; }
1526
1528
  attribute :>> statement = "If the patient bolus button remains asserted for more than 60 seconds, the system shall treat the input as failed, ignore it, and raise a Medium-priority notification.";
1527
1529
  attribute :>> sourceKind = RequirementSourceKind::extension;
1528
1530
  attribute :>> concernKind = ConcernKind::safety;
@@ -1537,7 +1539,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1537
1539
  }
1538
1540
  requirement reqFlowCrossCheck : Requirement {
1539
1541
  attribute :>> requirementType = RequirementTypeKind::software;
1540
- @MemoIdentity { :>> providedId = "REQ-X-10"; } attribute :>> name = "CommandedVsMeasuredFlowCrossCheck";
1542
+ @MemoIdentity { :>> providedId = "REQ-X-10"; :>> label = "CommandedVsMeasuredFlowCrossCheck"; }
1541
1543
  attribute :>> statement = "The system shall compare measured delivered flow against commanded flow using an independent flow sensor, and shall raise a High-priority notification and pause infusion when the deviation exceeds Tolerance_Min_const for more than Max_Duration_OverInfusion_const.";
1542
1544
  attribute :>> sourceKind = RequirementSourceKind::extension;
1543
1545
  attribute :>> concernKind = ConcernKind::safety;
@@ -1552,7 +1554,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1552
1554
  }
1553
1555
  requirement reqPumpAccuracy : Requirement {
1554
1556
  attribute :>> requirementType = RequirementTypeKind::hardware;
1555
- @MemoIdentity { :>> providedId = "REQ-X-11"; } attribute :>> name = "DeliveryAccuracy";
1557
+ @MemoIdentity { :>> providedId = "REQ-X-11"; :>> label = "DeliveryAccuracy"; }
1556
1558
  attribute :>> statement = "The pump mechanism shall deliver programmed volumes with an accuracy of plus or minus Tolerance_Min_const (5 percent) over the full rate range, so that the system-level flow tolerances of REQ-CS-16 are achievable.";
1557
1559
  attribute :>> sourceKind = RequirementSourceKind::extension;
1558
1560
  attribute :>> concernKind = ConcernKind::performance;
@@ -1565,15 +1567,17 @@ package memo_examples_gpca_pump_gpca_requirements {
1565
1567
  @MemoIdentity { :>> sourceReference = "MEMO extension — mechanism-level accuracy budget derived from App. A.4 Tolerance_Min_const"; }
1566
1568
  attribute :>> electricalSafetyRelevant = false;
1567
1569
  }
1570
+ // --8<-- [start:requirement]
1568
1571
  requirement reqAlarmLoudness : Requirement {
1569
1572
  attribute :>> requirementType = RequirementTypeKind::hardware;
1570
- @MemoIdentity { :>> providedId = "REQ-X-12"; } attribute :>> name = "AlarmSoundPressureLevel";
1573
+ @MemoIdentity { :>> providedId = "REQ-X-12"; :>> label = "AlarmSoundPressureLevel"; }
1571
1574
  attribute :>> statement = "The audible annunciator shall produce notification tones at the sound level defined by Audio_level_const (50 db for 2 seconds per interface spec I 8), distinguishable by priority.";
1572
1575
  attribute :>> sourceKind = RequirementSourceKind::extension;
1573
1576
  attribute :>> concernKind = ConcernKind::usability;
1574
1577
  attribute :>> status = ElementStatusKind::approved;
1575
1578
  attribute :>> acceptanceCriteria = "Calibrated SPL measurement meets Audio_level_const for each priority tone.";
1576
1579
  attribute :>> subjectDescription = "AudibleAlarmAnnunciator";
1580
+ // --8<-- [end:requirement]
1577
1581
  attribute :>> actorDescription = "clinician";
1578
1582
  attribute :>> assumptionSummary = "ward ambient noise per IEC 60601-1-8 baseline";
1579
1583
  attribute :>> guaranteeSummary = "alarms audible at the ward station";
@@ -1582,7 +1586,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1582
1586
  }
1583
1587
  requirement reqBatteryBackup : Requirement {
1584
1588
  attribute :>> requirementType = RequirementTypeKind::hardware;
1585
- @MemoIdentity { :>> providedId = "REQ-X-13"; } attribute :>> name = "BatteryBackupDuration";
1589
+ @MemoIdentity { :>> providedId = "REQ-X-13"; :>> label = "BatteryBackupDuration"; }
1586
1590
  attribute :>> statement = "The battery shall sustain nominal therapy and alarm annunciation for at least 4 hours after loss of mains power.";
1587
1591
  attribute :>> sourceKind = RequirementSourceKind::extension;
1588
1592
  attribute :>> concernKind = ConcernKind::reliability;
@@ -1597,7 +1601,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1597
1601
  }
1598
1602
  requirement reqFreeFlowPrevention : Requirement {
1599
1603
  attribute :>> requirementType = RequirementTypeKind::hardware;
1600
- @MemoIdentity { :>> providedId = "REQ-X-14"; } attribute :>> name = "MechanicalFreeFlowPrevention";
1604
+ @MemoIdentity { :>> providedId = "REQ-X-14"; :>> label = "MechanicalFreeFlowPrevention"; }
1601
1605
  attribute :>> statement = "The fluid path shall include a mechanical anti-free-flow valve that blocks gravity flow whenever the administration set is disengaged from the pumping mechanism.";
1602
1606
  attribute :>> sourceKind = RequirementSourceKind::extension;
1603
1607
  attribute :>> concernKind = ConcernKind::safety;