@memoarchitect/ontology 0.13.2 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +51 -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
@@ -2,10 +2,12 @@ package memo_examples_gpca_pump_gpca_interfaces {
2
2
  private import ScalarValues::*;
3
3
 
4
4
  private import memo_architecture_logical_interfaces::*;
5
+ private import memo_architecture_logical_structure::*;
5
6
  private import memo_architecture_realization_physical::*;
6
7
  private import memo_architecture_functional_functions::*;
7
8
  private import memo_core_common::*;
8
9
  private import memo_examples_gpca_pump_gpca_architecture::*;
10
+ private import memo_examples_gpca_pump_gpca_physical::*;
9
11
  private import memo_examples_gpca_pump_gpca_behavior_subsystems::*;
10
12
  private import memo_core_enumerations::*;
11
13
  private import memo_core_dimensions::*;
@@ -19,88 +21,91 @@ package memo_examples_gpca_pump_gpca_interfaces {
19
21
  attribute :>> interfaceType = "SensorDataInterface";
20
22
  attribute :>> sensorDomain = "physiological and device state";
21
23
  }
22
- interface sensorInputInterface : Interface {
24
+ abstract interface sensorInputInterface : LogicalInterface {
23
25
  @MemoIdentity { :>> providedId = "LI-005"; }
24
- attribute :>> name = "SensorInputInterface";
25
26
  attribute :>> interfaceKind = InterfaceKind::data;
26
27
  attribute :>> direction = DirectionKind::input;
27
28
  attribute :>> interactionPattern = "sensor feed";
28
29
  attribute :>> protocolSemantics = "flow, air, occlusion, door, battery, cpu, memory, pump state";
29
30
  }
30
- interface actuatorCommandInterface : Interface {
31
+ abstract interface actuatorCommandInterface : LogicalInterface {
31
32
  @MemoIdentity { :>> providedId = "LI-006"; }
32
- attribute :>> name = "ActuatorCommandInterface";
33
33
  attribute :>> interfaceKind = InterfaceKind::control;
34
34
  attribute :>> direction = DirectionKind::output;
35
35
  attribute :>> interactionPattern = "commanded flow and annunciation outputs";
36
36
  attribute :>> protocolSemantics = "pump flow command, buzzer tone select, display content";
37
37
  }
38
- interface operatorEntryInterface : Interface {
38
+ abstract interface operatorEntryInterface : LogicalInterface {
39
39
  @MemoIdentity { :>> providedId = "LI-007"; }
40
- attribute :>> name = "OperatorEntryInterface";
41
40
  attribute :>> interfaceKind = InterfaceKind::userInteraction;
42
41
  attribute :>> direction = DirectionKind::input;
43
42
  attribute :>> interactionPattern = "keypad entry with confirmation readback";
44
43
  attribute :>> protocolSemantics = "prescription fields, alarm silence, start/stop commands";
45
44
  }
46
- interface eventLogInterface : Interface {
45
+ abstract interface eventLogInterface : LogicalInterface {
47
46
  @MemoIdentity { :>> providedId = "LI-008"; }
48
- attribute :>> name = "EventLogInterface";
49
47
  attribute :>> interfaceKind = InterfaceKind::logging;
50
48
  attribute :>> direction = DirectionKind::output;
51
49
  attribute :>> interactionPattern = "append-only audit records";
52
50
  attribute :>> protocolSemantics = "timestamped therapy, alarm, and configuration events";
53
51
  }
54
- interface hwSoftwareBus : Interface {
55
- @MemoIdentity { :>> providedId = "PI-001"; }
56
- attribute :>> name = "HW_SW_DataBus";
52
+ abstract interface hwSoftwareBus : PhysicalInterface {
53
+ @MemoIdentity { :>> providedId = "PI-001"; :>> label = "HW_SW_DataBus"; }
57
54
  attribute :>> interfaceKind = InterfaceKind::digitalSignal;
55
+ attribute :>> signalingKind = SignalingKind::digital;
56
+ attribute :>> mediumKind = PhysicalMediumKind::electrical;
58
57
  attribute :>> protocol = "immediate data port mapping";
59
- attribute :>> directionality = DirectionKind::inputOutput;
58
+ attribute :>> direction = DirectionKind::inputOutput;
60
59
  attribute :>> bandwidth = "implementation-defined";
61
60
  attribute :>> timingConstraint = "same execution step where required";
62
61
  attribute :>> electricalStandard = "logical/AADL";
63
62
  attribute :>> nominalVoltageV = 3.3;
64
63
  attribute :>> nominalCurrentA = 0.02;
65
64
  }
66
- interface pumpMotorDrive : Interface {
67
- @MemoIdentity { :>> providedId = "PI-002"; }
68
- attribute :>> name = "PumpMotorStepDrive";
65
+ // Wired: the three physical interfaces whose controller-side connector is
66
+ // modelled (gpca_physical). The rest are abstract until their ends are.
67
+ interface pumpMotorDrive : PhysicalInterface connect portMotorDrive to pumpMotorAssembly.portFlowCommandIn {
68
+ @MemoIdentity { :>> providedId = "PI-002"; :>> label = "PumpMotorStepDrive"; }
69
69
  attribute :>> interfaceKind = InterfaceKind::digitalSignal;
70
+ attribute :>> signalingKind = SignalingKind::pulse;
71
+ attribute :>> mediumKind = PhysicalMediumKind::electrical;
70
72
  attribute :>> protocol = "step/direction pulse train";
71
- attribute :>> directionality = DirectionKind::output;
73
+ attribute :>> direction = DirectionKind::output;
72
74
  attribute :>> timingConstraint = "step rate proportional to commanded flow";
73
75
  attribute :>> electricalStandard = "3.3V CMOS";
74
76
  attribute :>> nominalVoltageV = 3.3;
75
77
  attribute :>> nominalCurrentA = 0.5;
76
- attribute :>> signaling = "step/dir with enable interlock";
78
+ attribute :>> protocolSemantics = "step/dir with enable interlock";
77
79
  }
78
- interface bolusButtonLine : Interface {
79
- @MemoIdentity { :>> providedId = "PI-003"; }
80
- attribute :>> name = "BolusButtonInputLine";
80
+ interface bolusButtonLine : PhysicalInterface connect bolusButton.portPendantOut to portPatientPendant {
81
+ @MemoIdentity { :>> providedId = "PI-003"; :>> label = "BolusButtonInputLine"; }
81
82
  attribute :>> interfaceKind = InterfaceKind::digitalSignal;
83
+ attribute :>> signalingKind = SignalingKind::discrete;
84
+ attribute :>> mediumKind = PhysicalMediumKind::electrical;
82
85
  attribute :>> protocol = "debounced discrete input";
83
- attribute :>> directionality = DirectionKind::input;
86
+ attribute :>> direction = DirectionKind::input;
84
87
  attribute :>> timingConstraint = "debounce 50 ms; stuck-high detection after 60 s";
85
88
  attribute :>> electricalStandard = "3.3V CMOS, normally open";
86
89
  attribute :>> nominalVoltageV = 3.3;
87
90
  attribute :>> nominalCurrentA = 0.001;
88
91
  }
89
- interface occlusionAnalogLine : Interface {
90
- @MemoIdentity { :>> providedId = "PI-004"; }
91
- attribute :>> name = "OcclusionPressureAnalogLine";
92
+ interface occlusionAnalogLine : PhysicalInterface connect occlusionSensor.portOcclusionOut to portSensorHarness {
93
+ @MemoIdentity { :>> providedId = "PI-004"; :>> label = "OcclusionPressureAnalogLine"; }
92
94
  attribute :>> interfaceKind = InterfaceKind::analogSignal;
93
- attribute :>> directionality = DirectionKind::input;
95
+ attribute :>> signalingKind = SignalingKind::analog;
96
+ attribute :>> mediumKind = PhysicalMediumKind::electrical;
97
+ attribute :>> direction = DirectionKind::input;
94
98
  attribute :>> electricalStandard = "ratiometric 0.5-4.5V";
95
99
  attribute :>> nominalVoltageV = 5.0;
96
100
  attribute :>> nominalCurrentA = 0.01;
97
101
  attribute :>> signalRange = "0 to 30 psi line pressure";
98
102
  }
99
- interface batteryMonitorLine : Interface {
100
- @MemoIdentity { :>> providedId = "PI-005"; }
101
- attribute :>> name = "BatteryVoltageMonitorLine";
103
+ abstract interface batteryMonitorLine : PhysicalInterface {
104
+ @MemoIdentity { :>> providedId = "PI-005"; :>> label = "BatteryVoltageMonitorLine"; }
102
105
  attribute :>> interfaceKind = InterfaceKind::power;
103
- attribute :>> directionality = DirectionKind::input;
106
+ attribute :>> signalingKind = SignalingKind::analog;
107
+ attribute :>> mediumKind = PhysicalMediumKind::electrical;
108
+ attribute :>> direction = DirectionKind::input;
104
109
  attribute :>> electricalStandard = "divided battery rail to ADC";
105
110
  attribute :>> nominalVoltageV = 12.0;
106
111
  attribute :>> nominalCurrentA = 0.001;
@@ -108,9 +113,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
108
113
  }
109
114
 
110
115
  // ── System-level interfaces (CriSys Ch.3, I 1-I 11) ─────────
111
- interface siDataEntry : Interface {
112
- @MemoIdentity { :>> providedId = "SI-001"; }
113
- attribute :>> name = "DataEntryInterface";
116
+ abstract interface siDataEntry : LogicalInterface {
117
+ @MemoIdentity { :>> providedId = "SI-001"; :>> label = "DataEntryInterface"; }
114
118
  attribute :>> interfaceKind = InterfaceKind::userInteraction;
115
119
  attribute :>> direction = DirectionKind::input;
116
120
  attribute :>> protocol = "CriSys I 1, I 2, I 3";
@@ -118,9 +122,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
118
122
  attribute :>> interactionPattern = "clinician enter/edit/save with mode-gated commands";
119
123
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1 Data Entry Interface"; }
120
124
  }
121
- interface siBolusRequest : Interface {
122
- @MemoIdentity { :>> providedId = "SI-002"; }
123
- attribute :>> name = "BolusRequestInterface";
125
+ abstract interface siBolusRequest : LogicalInterface {
126
+ @MemoIdentity { :>> providedId = "SI-002"; :>> label = "BolusRequestInterface"; }
124
127
  attribute :>> interfaceKind = InterfaceKind::userInteraction;
125
128
  attribute :>> direction = DirectionKind::input;
126
129
  attribute :>> protocol = "CriSys I 4";
@@ -128,9 +131,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
128
131
  attribute :>> interactionPattern = "patient pendant button press";
129
132
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.2 Bolus Request Interface"; }
130
133
  }
131
- interface siDrugFlow : Interface {
132
- @MemoIdentity { :>> providedId = "SI-003"; }
133
- attribute :>> name = "DrugFlowInterface";
134
+ abstract interface siDrugFlow : LogicalInterface {
135
+ @MemoIdentity { :>> providedId = "SI-003"; :>> label = "DrugFlowInterface"; }
134
136
  attribute :>> interfaceKind = InterfaceKind::fluidic;
135
137
  attribute :>> direction = DirectionKind::output;
136
138
  attribute :>> protocol = "CriSys I 5, I 6";
@@ -138,9 +140,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
138
140
  attribute :>> interactionPattern = "continuous fluid path while infusing";
139
141
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.3 Drug Flow Interface"; }
140
142
  }
141
- interface siNotification : Interface {
142
- @MemoIdentity { :>> providedId = "SI-004"; }
143
- attribute :>> name = "NotificationInterface";
143
+ abstract interface siNotification : LogicalInterface {
144
+ @MemoIdentity { :>> providedId = "SI-004"; :>> label = "NotificationInterface"; }
144
145
  attribute :>> interfaceKind = InterfaceKind::notification;
145
146
  attribute :>> direction = DirectionKind::output;
146
147
  attribute :>> protocol = "CriSys I 7, I 8";
@@ -148,9 +149,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
148
149
  attribute :>> interactionPattern = "visual list with per-notification audio annunciation";
149
150
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.4 Notification Interface"; }
150
151
  }
151
- interface siPharmacyDb : Interface {
152
- @MemoIdentity { :>> providedId = "SI-005"; }
153
- attribute :>> name = "HospitalPharmacyDatabaseInterface";
152
+ abstract interface siPharmacyDb : LogicalInterface {
153
+ @MemoIdentity { :>> providedId = "SI-005"; :>> label = "HospitalPharmacyDatabaseInterface"; }
154
154
  attribute :>> interfaceKind = InterfaceKind::data;
155
155
  attribute :>> direction = DirectionKind::inputOutput;
156
156
  attribute :>> protocol = "CriSys I 9, I 10, I 11";
@@ -162,9 +162,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
162
162
  // ── CriSys Ch.3 data dictionary (prog / hd / output families) ─
163
163
  item ddPatientIDProg : InterfaceItem {
164
164
  attribute :>> itemKind = InterfaceItemKind::data;
165
- @MemoIdentity { :>> providedId = "DD-005"; }
166
- attribute :>> name = "PatientID_prog";
167
- attribute :>> description = "Identifier of the patient in the hospital; provided in the prescription and programmed by the clinician.";
165
+ @MemoIdentity { :>> providedId = "DD-005"; :>> label = "PatientID_prog"; }
166
+ doc /* Identifier of the patient in the hospital; provided in the prescription and programmed by the clinician. */
168
167
  attribute :>> semantics = "Cannot be empty; alphanumeric without space.";
169
168
  attribute :>> unit = "NA";
170
169
  attribute :>> encoding = "String";
@@ -172,9 +171,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
172
171
  }
173
172
  item ddDrugNameProg : InterfaceItem {
174
173
  attribute :>> itemKind = InterfaceItemKind::data;
175
- @MemoIdentity { :>> providedId = "DD-006"; }
176
- attribute :>> name = "DrugName_prog";
177
- attribute :>> description = "Name of the drug prescribed for infusion.";
174
+ @MemoIdentity { :>> providedId = "DD-006"; :>> label = "DrugName_prog"; }
175
+ doc /* Name of the drug prescribed for infusion. */
178
176
  attribute :>> semantics = "Cannot be empty; entered value must match DrugName_hd in the hospital pharmacy database.";
179
177
  attribute :>> unit = "NA";
180
178
  attribute :>> encoding = "String";
@@ -182,9 +180,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
182
180
  }
183
181
  item ddDrugConcentrationProg : InterfaceItem {
184
182
  attribute :>> itemKind = InterfaceItemKind::data;
185
- @MemoIdentity { :>> providedId = "DD-007"; }
186
- attribute :>> name = "DrugConcentration_prog";
187
- attribute :>> description = "Concentration of the drug in the solution prescribed for infusion.";
183
+ @MemoIdentity { :>> providedId = "DD-007"; :>> label = "DrugConcentration_prog"; }
184
+ doc /* Concentration of the drug in the solution prescribed for infusion. */
188
185
  attribute :>> semantics = "Must be between DrugConcentration_lo_hd and DrugConcentration_hi_hd for DrugName_prog in the hospital database.";
189
186
  attribute :>> unit = "mg/ml";
190
187
  attribute :>> minValue = "0";
@@ -194,9 +191,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
194
191
  }
195
192
  item ddVTBITotalProg : InterfaceItem {
196
193
  attribute :>> itemKind = InterfaceItemKind::data;
197
- @MemoIdentity { :>> providedId = "DD-008"; }
198
- attribute :>> name = "VTBI_total_prog";
199
- attribute :>> description = "Maximum total volume of the drug solution that can be infused for the prescription.";
194
+ @MemoIdentity { :>> providedId = "DD-008"; :>> label = "VTBI_total_prog"; }
195
+ doc /* Maximum total volume of the drug solution that can be infused for the prescription. */
200
196
  attribute :>> semantics = "Must be between VTBI_lo_hd and VTBI_hi_hd for DrugName_prog in the hospital database.";
201
197
  attribute :>> unit = "ml/hr";
202
198
  attribute :>> minValue = "0";
@@ -206,9 +202,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
206
202
  }
207
203
  item ddDurationTotalProg : InterfaceItem {
208
204
  attribute :>> itemKind = InterfaceItemKind::data;
209
- @MemoIdentity { :>> providedId = "DD-009"; }
210
- attribute :>> name = "Duration_total_prog";
211
- attribute :>> description = "Prescribed total duration of drug infusion across all delivery modes (BASAL, SQUARE BOLUS, PATIENT BOLUS).";
205
+ @MemoIdentity { :>> providedId = "DD-009"; :>> label = "Duration_total_prog"; }
206
+ doc /* Prescribed total duration of drug infusion across all delivery modes (BASAL, SQUARE BOLUS, PATIENT BOLUS). */
212
207
  attribute :>> semantics = "Cannot be empty; should be >= 0.";
213
208
  attribute :>> unit = "minutes";
214
209
  attribute :>> minValue = "0";
@@ -218,9 +213,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
218
213
  }
219
214
  item ddFlowRateBasalProg : InterfaceItem {
220
215
  attribute :>> itemKind = InterfaceItemKind::data;
221
- @MemoIdentity { :>> providedId = "DD-010"; }
222
- attribute :>> name = "FlowRate_basal_prog";
223
- attribute :>> description = "Prescribed rate of flow of drug during BASAL delivery mode; default FlowRate_lo_hd.";
216
+ @MemoIdentity { :>> providedId = "DD-010"; :>> label = "FlowRate_basal_prog"; }
217
+ doc /* Prescribed rate of flow of drug during BASAL delivery mode; default FlowRate_lo_hd. */
224
218
  attribute :>> semantics = "Between FlowRate_lo_hd and FlowRate_hi_hd for DrugName_prog; should be < VTBI_total_prog / Duration_total_prog.";
225
219
  attribute :>> unit = "ml/hr";
226
220
  attribute :>> minValue = "0";
@@ -230,9 +224,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
230
224
  }
231
225
  item ddFlowRateSbolusProg : InterfaceItem {
232
226
  attribute :>> itemKind = InterfaceItemKind::data;
233
- @MemoIdentity { :>> providedId = "DD-011"; }
234
- attribute :>> name = "FlowRate_sbolus_prog";
235
- attribute :>> description = "Prescribed flow rate of drug during SQUARE bolus delivery.";
227
+ @MemoIdentity { :>> providedId = "DD-011"; :>> label = "FlowRate_sbolus_prog"; }
228
+ doc /* Prescribed flow rate of drug during SQUARE bolus delivery. */
236
229
  attribute :>> semantics = ">= 0; if Duration_sbolus_prog or Interval_sbolus_prog > 0, must be between FlowRate_lo_hd and FlowRate_hi_hd.";
237
230
  attribute :>> unit = "ml/hr";
238
231
  attribute :>> minValue = "0";
@@ -242,9 +235,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
242
235
  }
243
236
  item ddDurationSbolusProg : InterfaceItem {
244
237
  attribute :>> itemKind = InterfaceItemKind::data;
245
- @MemoIdentity { :>> providedId = "DD-012"; }
246
- attribute :>> name = "Duration_sbolus_prog";
247
- attribute :>> description = "Maximum duration of a single uninterrupted square bolus delivery.";
238
+ @MemoIdentity { :>> providedId = "DD-012"; :>> label = "Duration_sbolus_prog"; }
239
+ doc /* Maximum duration of a single uninterrupted square bolus delivery. */
248
240
  attribute :>> semantics = ">= 0; if FlowRate_sbolus_prog or Interval_sbolus_prog > 0, must be < Interval_sbolus_prog and Duration_total_prog.";
249
241
  attribute :>> unit = "minutes";
250
242
  attribute :>> minValue = "0";
@@ -254,9 +246,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
254
246
  }
255
247
  item ddIntervalSbolusProg : InterfaceItem {
256
248
  attribute :>> itemKind = InterfaceItemKind::data;
257
- @MemoIdentity { :>> providedId = "DD-013"; }
258
- attribute :>> name = "Interval_sbolus_prog";
259
- attribute :>> description = "Minimum interval between two consecutive square bolus initiations; the first square bolus starts Interval_sbolus_prog minutes after infusion initiation.";
249
+ @MemoIdentity { :>> providedId = "DD-013"; :>> label = "Interval_sbolus_prog"; }
250
+ doc /* Minimum interval between two consecutive square bolus initiations; the first square bolus starts Interval_sbolus_prog minutes after infusion initiation. */
260
251
  attribute :>> semantics = ">= 0; if FlowRate_sbolus_prog or Duration_sbolus_prog > 0, must be > Duration_sbolus_prog.";
261
252
  attribute :>> unit = "minutes";
262
253
  attribute :>> minValue = "0";
@@ -266,9 +257,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
266
257
  }
267
258
  item ddFlowRatePbolusProg : InterfaceItem {
268
259
  attribute :>> itemKind = InterfaceItemKind::data;
269
- @MemoIdentity { :>> providedId = "DD-014"; }
270
- attribute :>> name = "FlowRate_pbolus_prog";
271
- attribute :>> description = "Prescribed flow rate of drug during patient bolus delivery.";
260
+ @MemoIdentity { :>> providedId = "DD-014"; :>> label = "FlowRate_pbolus_prog"; }
261
+ doc /* Prescribed flow rate of drug during patient bolus delivery. */
272
262
  attribute :>> semantics = ">= 0; if Duration_pbolus_prog or LockOutPeriod_pbolus_prog > 0, must be between FlowRate_lo_hd and FlowRate_hi_hd.";
273
263
  attribute :>> unit = "ml/hr";
274
264
  attribute :>> minValue = "0";
@@ -278,9 +268,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
278
268
  }
279
269
  item ddDurationPbolusProg : InterfaceItem {
280
270
  attribute :>> itemKind = InterfaceItemKind::data;
281
- @MemoIdentity { :>> providedId = "DD-015"; }
282
- attribute :>> name = "Duration_pbolus_prog";
283
- attribute :>> description = "Maximum duration of a single uninterrupted patient bolus delivery.";
271
+ @MemoIdentity { :>> providedId = "DD-015"; :>> label = "Duration_pbolus_prog"; }
272
+ doc /* Maximum duration of a single uninterrupted patient bolus delivery. */
284
273
  attribute :>> semantics = ">= 0; if FlowRate_pbolus_prog or LockOutPeriod_pbolus_prog > 0, must be < LockOutPeriod_pbolus_prog and Duration_total_prog.";
285
274
  attribute :>> unit = "minutes";
286
275
  attribute :>> minValue = "0";
@@ -290,9 +279,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
290
279
  }
291
280
  item ddLockOutPeriodPbolusProg : InterfaceItem {
292
281
  attribute :>> itemKind = InterfaceItemKind::data;
293
- @MemoIdentity { :>> providedId = "DD-016"; }
294
- attribute :>> name = "LockOutPeriod_pbolus_prog";
295
- attribute :>> description = "Minimum interval between two consecutive patient bolus initiations (the lockout period), irrespective of interruption or completion.";
282
+ @MemoIdentity { :>> providedId = "DD-016"; :>> label = "LockOutPeriod_pbolus_prog"; }
283
+ doc /* Minimum interval between two consecutive patient bolus initiations (the lockout period), irrespective of interruption or completion. */
296
284
  attribute :>> semantics = ">= 0; if FlowRate_pbolus_prog or Duration_pbolus_prog > 0, must be > Duration_pbolus_prog.";
297
285
  attribute :>> unit = "minutes";
298
286
  attribute :>> minValue = "0";
@@ -302,9 +290,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
302
290
  }
303
291
  item ddNumberMaxPbolusProg : InterfaceItem {
304
292
  attribute :>> itemKind = InterfaceItemKind::data;
305
- @MemoIdentity { :>> providedId = "DD-017"; }
306
- attribute :>> name = "NumberMax_pbolus_prog";
307
- attribute :>> description = "Maximum total number of patient boluses that may be initiated during Duration_total_prog.";
293
+ @MemoIdentity { :>> providedId = "DD-017"; :>> label = "NumberMax_pbolus_prog"; }
294
+ doc /* Maximum total number of patient boluses that may be initiated during Duration_total_prog. */
308
295
  attribute :>> semantics = ">= 0; must be <= NumberMax_pbolus_hd for DrugName_prog in the hospital database.";
309
296
  attribute :>> unit = "per hour";
310
297
  attribute :>> minValue = "0";
@@ -314,9 +301,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
314
301
  }
315
302
  item ddSystemStartProg : InterfaceItem {
316
303
  attribute :>> itemKind = InterfaceItemKind::data;
317
- @MemoIdentity { :>> providedId = "DD-018"; }
318
- attribute :>> name = "System_start_prog";
319
- attribute :>> description = "Command to start the system.";
304
+ @MemoIdentity { :>> providedId = "DD-018"; :>> label = "System_start_prog"; }
305
+ doc /* Command to start the system. */
320
306
  attribute :>> semantics = "Can be commanded only if the system is in OFF mode.";
321
307
  attribute :>> unit = "NA";
322
308
  attribute :>> encoding = "Boolean event";
@@ -324,9 +310,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
324
310
  }
325
311
  item ddSystemStopProg : InterfaceItem {
326
312
  attribute :>> itemKind = InterfaceItemKind::data;
327
- @MemoIdentity { :>> providedId = "DD-019"; }
328
- attribute :>> name = "System_stop_prog";
329
- attribute :>> description = "Command to stop the system.";
313
+ @MemoIdentity { :>> providedId = "DD-019"; :>> label = "System_stop_prog"; }
314
+ doc /* Command to stop the system. */
330
315
  attribute :>> semantics = "Can be commanded only if the system is in ON mode.";
331
316
  attribute :>> unit = "NA";
332
317
  attribute :>> encoding = "Boolean event";
@@ -334,9 +319,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
334
319
  }
335
320
  item ddInfusionInitiateProg : InterfaceItem {
336
321
  attribute :>> itemKind = InterfaceItemKind::data;
337
- @MemoIdentity { :>> providedId = "DD-020"; }
338
- attribute :>> name = "Infusion_initiate_prog";
339
- attribute :>> description = "Command to initiate infusion of drug.";
322
+ @MemoIdentity { :>> providedId = "DD-020"; :>> label = "Infusion_initiate_prog"; }
323
+ doc /* Command to initiate infusion of drug. */
340
324
  attribute :>> semantics = "Can be commanded only if the system is in ON mode.";
341
325
  attribute :>> unit = "NA";
342
326
  attribute :>> encoding = "Boolean event";
@@ -344,9 +328,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
344
328
  }
345
329
  item ddInfusionInhibitProg : InterfaceItem {
346
330
  attribute :>> itemKind = InterfaceItemKind::data;
347
- @MemoIdentity { :>> providedId = "DD-021"; }
348
- attribute :>> name = "Infusion_inhibit_prog";
349
- attribute :>> description = "Command to inhibit infusion of drug.";
331
+ @MemoIdentity { :>> providedId = "DD-021"; :>> label = "Infusion_inhibit_prog"; }
332
+ doc /* Command to inhibit infusion of drug. */
350
333
  attribute :>> semantics = "Can be commanded only if the system is in ON mode.";
351
334
  attribute :>> unit = "NA";
352
335
  attribute :>> encoding = "Boolean event";
@@ -354,9 +337,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
354
337
  }
355
338
  item ddSystemSaveProg : InterfaceItem {
356
339
  attribute :>> itemKind = InterfaceItemKind::data;
357
- @MemoIdentity { :>> providedId = "DD-022"; }
358
- attribute :>> name = "System_save_prog";
359
- attribute :>> description = "Command to save the prescription and reservoir initial volume data.";
340
+ @MemoIdentity { :>> providedId = "DD-022"; :>> label = "System_save_prog"; }
341
+ doc /* Command to save the prescription and reservoir initial volume data. */
360
342
  attribute :>> semantics = "Can be commanded only if the system is in ON mode.";
361
343
  attribute :>> unit = "NA";
362
344
  attribute :>> encoding = "Boolean event";
@@ -364,9 +346,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
364
346
  }
365
347
  item ddNotificationCancelProg : InterfaceItem {
366
348
  attribute :>> itemKind = InterfaceItemKind::data;
367
- @MemoIdentity { :>> providedId = "DD-023"; }
368
- attribute :>> name = "Notification_cancel_prog";
369
- attribute :>> description = "Command to cancel a selected notification.";
349
+ @MemoIdentity { :>> providedId = "DD-023"; :>> label = "Notification_cancel_prog"; }
350
+ doc /* Command to cancel a selected notification. */
370
351
  attribute :>> semantics = "Can be commanded only in ON mode and if a notification is selected.";
371
352
  attribute :>> unit = "NA";
372
353
  attribute :>> encoding = "Boolean event";
@@ -374,9 +355,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
374
355
  }
375
356
  item ddDisableAudioProg : InterfaceItem {
376
357
  attribute :>> itemKind = InterfaceItemKind::data;
377
- @MemoIdentity { :>> providedId = "DD-024"; }
378
- attribute :>> name = "Disable_audio_prog";
379
- attribute :>> description = "Command to disable audio notifications, permanently or temporarily.";
358
+ @MemoIdentity { :>> providedId = "DD-024"; :>> label = "Disable_audio_prog"; }
359
+ doc /* Command to disable audio notifications, permanently or temporarily. */
380
360
  attribute :>> semantics = "Default FALSE.";
381
361
  attribute :>> unit = "NA";
382
362
  attribute :>> encoding = "PERM | TEMP | FALSE";
@@ -384,9 +364,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
384
364
  }
385
365
  item ddEnableAudioProg : InterfaceItem {
386
366
  attribute :>> itemKind = InterfaceItemKind::data;
387
- @MemoIdentity { :>> providedId = "DD-025"; }
388
- attribute :>> name = "Enable_audio_prog";
389
- attribute :>> description = "Command to enable audio notifications.";
367
+ @MemoIdentity { :>> providedId = "DD-025"; :>> label = "Enable_audio_prog"; }
368
+ doc /* Command to enable audio notifications. */
390
369
  attribute :>> semantics = "Can be commanded only if audio is disabled.";
391
370
  attribute :>> unit = "NA";
392
371
  attribute :>> encoding = "Boolean event";
@@ -394,9 +373,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
394
373
  }
395
374
  item ddDataConfigProg : InterfaceItem {
396
375
  attribute :>> itemKind = InterfaceItemKind::data;
397
- @MemoIdentity { :>> providedId = "DD-026"; }
398
- attribute :>> name = "DataConfig_prog";
399
- attribute :>> description = "Command to configure prescription data (printed as 'DataCofig_prog' in the source).";
376
+ @MemoIdentity { :>> providedId = "DD-026"; :>> label = "DataConfig_prog"; }
377
+ doc /* Command to configure prescription data (printed as 'DataCofig_prog' in the source). */
400
378
  attribute :>> semantics = "Can be commanded only if the system is in ON mode.";
401
379
  attribute :>> unit = "NA";
402
380
  attribute :>> encoding = "Boolean event";
@@ -404,9 +382,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
404
382
  }
405
383
  item ddReservoirInitialVolumeProg : InterfaceItem {
406
384
  attribute :>> itemKind = InterfaceItemKind::data;
407
- @MemoIdentity { :>> providedId = "DD-027"; }
408
- attribute :>> name = "ReservoirInitialVolume_prog";
409
- attribute :>> description = "Initial volume of drug in the reservoir at the time of entering the prescription; read from the reservoir label.";
385
+ @MemoIdentity { :>> providedId = "DD-027"; :>> label = "ReservoirInitialVolume_prog"; }
386
+ doc /* Initial volume of drug in the reservoir at the time of entering the prescription; read from the reservoir label. */
410
387
  attribute :>> semantics = "Mandatory; shall be >= X ml (threshold left unspecified in the source draft).";
411
388
  attribute :>> unit = "ml";
412
389
  attribute :>> minValue = "0";
@@ -416,9 +393,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
416
393
  }
417
394
  item ddBolusRequestProg : InterfaceItem {
418
395
  attribute :>> itemKind = InterfaceItemKind::data;
419
- @MemoIdentity { :>> providedId = "DD-028"; }
420
- attribute :>> name = "BolusRequest_prog";
421
- attribute :>> description = "Request by the patient to deliver a patient bolus.";
396
+ @MemoIdentity { :>> providedId = "DD-028"; :>> label = "BolusRequest_prog"; }
397
+ doc /* Request by the patient to deliver a patient bolus. */
422
398
  attribute :>> semantics = "Can be commanded only if the system is in ACTIVE mode.";
423
399
  attribute :>> unit = "NA";
424
400
  attribute :>> encoding = "Boolean event";
@@ -426,9 +402,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
426
402
  }
427
403
  item ddFlowRateOutput : InterfaceItem {
428
404
  attribute :>> itemKind = InterfaceItemKind::data;
429
- @MemoIdentity { :>> providedId = "DD-029"; }
430
- attribute :>> name = "FlowRate_output";
431
- attribute :>> description = "Flow rate of the drug through the hose delivering the drug, measured every X seconds when the system is in ON mode.";
405
+ @MemoIdentity { :>> providedId = "DD-029"; :>> label = "FlowRate_output"; }
406
+ doc /* Flow rate of the drug through the hose delivering the drug, measured every X seconds when the system is in ON mode. */
432
407
  attribute :>> semantics = "None stated.";
433
408
  attribute :>> unit = "ml/hr";
434
409
  attribute :>> minValue = "0";
@@ -438,9 +413,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
438
413
  }
439
414
  item ddNotificationVisualOutput : InterfaceItem {
440
415
  attribute :>> itemKind = InterfaceItemKind::data;
441
- @MemoIdentity { :>> providedId = "DD-030"; }
442
- attribute :>> name = "Notification_Visual_output";
443
- attribute :>> description = "Visual display of the messages of all active notifications in the system.";
416
+ @MemoIdentity { :>> providedId = "DD-030"; :>> label = "Notification_Visual_output"; }
417
+ doc /* Visual display of the messages of all active notifications in the system. */
444
418
  attribute :>> semantics = "Messages displayed only when the system is in ON mode.";
445
419
  attribute :>> unit = "NA";
446
420
  attribute :>> encoding = "List of String";
@@ -448,9 +422,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
448
422
  }
449
423
  item ddNotificationAudioOutput : InterfaceItem {
450
424
  attribute :>> itemKind = InterfaceItemKind::data;
451
- @MemoIdentity { :>> providedId = "DD-031"; }
452
- attribute :>> name = "Notification_Audio_output";
453
- attribute :>> description = "Audio output for each active notification, in the same order as Notification_Visual_output.";
425
+ @MemoIdentity { :>> providedId = "DD-031"; :>> label = "Notification_Audio_output"; }
426
+ doc /* Audio output for each active notification, in the same order as Notification_Visual_output. */
454
427
  attribute :>> semantics = "Audio output possible only when the system is in ON mode.";
455
428
  attribute :>> unit = "NA";
456
429
  attribute :>> encoding = "List of Boolean";
@@ -458,9 +431,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
458
431
  }
459
432
  item ddDrugNameHd : InterfaceItem {
460
433
  attribute :>> itemKind = InterfaceItemKind::data;
461
- @MemoIdentity { :>> providedId = "DD-032"; }
462
- attribute :>> name = "DrugName_hd";
463
- attribute :>> description = "Name of a drug usable for infusion in the hospital that matches DrugName_prog.";
434
+ @MemoIdentity { :>> providedId = "DD-032"; :>> label = "DrugName_hd"; }
435
+ doc /* Name of a drug usable for infusion in the hospital that matches DrugName_prog. */
464
436
  attribute :>> semantics = "None stated.";
465
437
  attribute :>> unit = "NA";
466
438
  attribute :>> encoding = "String";
@@ -468,9 +440,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
468
440
  }
469
441
  item ddDrugConcentrationHiHd : InterfaceItem {
470
442
  attribute :>> itemKind = InterfaceItemKind::data;
471
- @MemoIdentity { :>> providedId = "DD-033"; }
472
- attribute :>> name = "DrugConcentration_hi_hd";
473
- attribute :>> description = "Maximum concentration of the drug in a solution that can safely be used for infusion for DrugName_hd.";
443
+ @MemoIdentity { :>> providedId = "DD-033"; :>> label = "DrugConcentration_hi_hd"; }
444
+ doc /* Maximum concentration of the drug in a solution that can safely be used for infusion for DrugName_hd. */
474
445
  attribute :>> semantics = "None stated.";
475
446
  attribute :>> unit = "mg/ml";
476
447
  attribute :>> minValue = "0";
@@ -480,9 +451,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
480
451
  }
481
452
  item ddDrugConcentrationLoHd : InterfaceItem {
482
453
  attribute :>> itemKind = InterfaceItemKind::data;
483
- @MemoIdentity { :>> providedId = "DD-034"; }
484
- attribute :>> name = "DrugConcentration_lo_hd";
485
- attribute :>> description = "Minimum concentration of the drug in a solution that can safely be used for infusion for DrugName_hd.";
454
+ @MemoIdentity { :>> providedId = "DD-034"; :>> label = "DrugConcentration_lo_hd"; }
455
+ doc /* Minimum concentration of the drug in a solution that can safely be used for infusion for DrugName_hd. */
486
456
  attribute :>> semantics = "None stated.";
487
457
  attribute :>> unit = "mg/ml";
488
458
  attribute :>> minValue = "0";
@@ -492,9 +462,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
492
462
  }
493
463
  item ddVTBIHiHd : InterfaceItem {
494
464
  attribute :>> itemKind = InterfaceItemKind::data;
495
- @MemoIdentity { :>> providedId = "DD-035"; }
496
- attribute :>> name = "VTBI_hi_hd";
497
- attribute :>> description = "Maximum volume of drug that is safe to be infused for DrugName_hd.";
465
+ @MemoIdentity { :>> providedId = "DD-035"; :>> label = "VTBI_hi_hd"; }
466
+ doc /* Maximum volume of drug that is safe to be infused for DrugName_hd. */
498
467
  attribute :>> semantics = "None stated.";
499
468
  attribute :>> unit = "ml/hr";
500
469
  attribute :>> minValue = "0";
@@ -504,9 +473,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
504
473
  }
505
474
  item ddVTBILoHd : InterfaceItem {
506
475
  attribute :>> itemKind = InterfaceItemKind::data;
507
- @MemoIdentity { :>> providedId = "DD-036"; }
508
- attribute :>> name = "VTBI_lo_hd";
509
- attribute :>> description = "Minimum volume of drug that is safe to be infused for DrugName_hd.";
476
+ @MemoIdentity { :>> providedId = "DD-036"; :>> label = "VTBI_lo_hd"; }
477
+ doc /* Minimum volume of drug that is safe to be infused for DrugName_hd. */
510
478
  attribute :>> semantics = "Mandatory.";
511
479
  attribute :>> unit = "ml/hr";
512
480
  attribute :>> minValue = "0";
@@ -516,9 +484,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
516
484
  }
517
485
  item ddFlowRateHiHd : InterfaceItem {
518
486
  attribute :>> itemKind = InterfaceItemKind::data;
519
- @MemoIdentity { :>> providedId = "DD-037"; }
520
- attribute :>> name = "FlowRate_hi_hd";
521
- attribute :>> description = "Maximum safe flow rate of the drug for DrugName_hd.";
487
+ @MemoIdentity { :>> providedId = "DD-037"; :>> label = "FlowRate_hi_hd"; }
488
+ doc /* Maximum safe flow rate of the drug for DrugName_hd. */
522
489
  attribute :>> semantics = "Mandatory.";
523
490
  attribute :>> unit = "ml/hr";
524
491
  attribute :>> minValue = "0";
@@ -528,9 +495,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
528
495
  }
529
496
  item ddFlowRateLoHd : InterfaceItem {
530
497
  attribute :>> itemKind = InterfaceItemKind::data;
531
- @MemoIdentity { :>> providedId = "DD-038"; }
532
- attribute :>> name = "FlowRate_lo_hd";
533
- attribute :>> description = "Minimum safe flow rate of the drug for DrugName_hd.";
498
+ @MemoIdentity { :>> providedId = "DD-038"; :>> label = "FlowRate_lo_hd"; }
499
+ doc /* Minimum safe flow rate of the drug for DrugName_hd. */
534
500
  attribute :>> semantics = "Mandatory.";
535
501
  attribute :>> unit = "ml/hr";
536
502
  attribute :>> minValue = "0";
@@ -540,9 +506,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
540
506
  }
541
507
  item ddIntervalPbolusHd : InterfaceItem {
542
508
  attribute :>> itemKind = InterfaceItemKind::data;
543
- @MemoIdentity { :>> providedId = "DD-039"; }
544
- attribute :>> name = "Interval_pbolus_hd";
545
- attribute :>> description = "Minimum safe interval between two consecutive patient bolus initiations for DrugName_hd.";
509
+ @MemoIdentity { :>> providedId = "DD-039"; :>> label = "Interval_pbolus_hd"; }
510
+ doc /* Minimum safe interval between two consecutive patient bolus initiations for DrugName_hd. */
546
511
  attribute :>> semantics = "Mandatory.";
547
512
  attribute :>> unit = "minutes";
548
513
  attribute :>> minValue = "0";
@@ -552,9 +517,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
552
517
  }
553
518
  item ddNumberMaxPbolusHd : InterfaceItem {
554
519
  attribute :>> itemKind = InterfaceItemKind::data;
555
- @MemoIdentity { :>> providedId = "DD-040"; }
556
- attribute :>> name = "NumberMax_pbolus_hd";
557
- attribute :>> description = "Maximum number of patient bolus initiations safe to be self-administered for DrugName_hd.";
520
+ @MemoIdentity { :>> providedId = "DD-040"; :>> label = "NumberMax_pbolus_hd"; }
521
+ doc /* Maximum number of patient bolus initiations safe to be self-administered for DrugName_hd. */
558
522
  attribute :>> semantics = "Mandatory.";
559
523
  attribute :>> unit = "per hr";
560
524
  attribute :>> minValue = "0";
@@ -564,9 +528,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
564
528
  }
565
529
  item ddFlowRateKvoHd : InterfaceItem {
566
530
  attribute :>> itemKind = InterfaceItemKind::data;
567
- @MemoIdentity { :>> providedId = "DD-041"; }
568
- attribute :>> name = "FlowRate_kvo_hd";
569
- attribute :>> description = "Minimum flow rate of DrugName_hd that should be maintained to keep the vein open (KVO); default 0.1.";
531
+ @MemoIdentity { :>> providedId = "DD-041"; :>> label = "FlowRate_kvo_hd"; }
532
+ doc /* Minimum flow rate of DrugName_hd that should be maintained to keep the vein open (KVO); default 0.1. */
570
533
  attribute :>> semantics = "Mandatory.";
571
534
  attribute :>> unit = "ml/hr";
572
535
  attribute :>> minValue = "0";
@@ -579,46 +542,43 @@ package memo_examples_gpca_pump_gpca_interfaces {
579
542
  // These four exchanges summarize requirements-derived physical design
580
543
  // intent. They are not the named port connections in GPCA_Device.aadl;
581
544
  // the exact AADL feature topology is authored below and in gpca_trace.
582
- part exSensorVector : ComponentExchange {
583
- @MemoIdentity { :>> providedId = "CE-001"; }
584
- attribute :>> name = "SensorStatusVectorExchange";
545
+ //
546
+ // Which functional exchange each one realizes is NOT written here. It is
547
+ // the `allocate lf... to ex...` line in gpca_trace, which is the one
548
+ // authority for the mapping.
549
+ //
550
+ // Their component ends are ports: SENSOR_OUT on the sensor subsystem,
551
+ // which the AADL declares, and one boundary port each on the keypad,
552
+ // pump motor and buzzer, which the AADL does not model and this design
553
+ // extension declares for the exchange that needs it.
554
+ interface exSensorVector : ComponentExchange
555
+ connect gpcaDevice.gpcaDeviceSensors.snsSensorOut to gpcaSoftware.portSensorIn {
556
+ @MemoIdentity { :>> providedId = "CE-001"; :>> label = "SensorStatusVectorExchange"; }
585
557
  attribute :>> exchangeKind = FlowKind::measurement;
586
- ref :>> sourceEndpoint = gpcaDevice.gpcaDeviceSensors;
587
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.portSensorIn;
588
- ref :>> allocatedExchanges = lfSensorAcquisition;
589
558
  attribute :>> direction = DirectionKind::input;
590
559
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
591
560
  @MemoIdentity { :>> sourceReference = "MEMO design extension allocated from LF-001; not a GPCA_Device.aadl connection"; }
592
561
  }
593
- part exFlowCommand : ComponentExchange {
594
- @MemoIdentity { :>> providedId = "CE-002"; }
595
- attribute :>> name = "FlowCommandExchange";
562
+ interface exFlowCommand : ComponentExchange
563
+ connect gpcaSoftware.portGpcaSwOut to pumpMotorAssembly.portFlowCommandIn {
564
+ @MemoIdentity { :>> providedId = "CE-002"; :>> label = "FlowCommandExchange"; }
596
565
  attribute :>> exchangeKind = FlowKind::command;
597
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portGpcaSwOut;
598
- ref :>> targetEndpoint = pumpMotorAssembly;
599
- ref :>> allocatedExchanges = lfFlowCommand;
600
566
  attribute :>> direction = DirectionKind::output;
601
567
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
602
568
  @MemoIdentity { :>> sourceReference = "MEMO design extension allocated from LF-002; not a GPCA_Device.aadl connection"; }
603
569
  }
604
- part exAlarmAnnunciation : ComponentExchange {
605
- @MemoIdentity { :>> providedId = "CE-003"; }
606
- attribute :>> name = "AlarmAnnunciationExchange";
570
+ interface exAlarmAnnunciation : ComponentExchange
571
+ connect gpcaSoftware.portGpcaSwOut to audibleAlarm.portAlarmIn {
572
+ @MemoIdentity { :>> providedId = "CE-003"; :>> label = "AlarmAnnunciationExchange"; }
607
573
  attribute :>> exchangeKind = FlowKind::alarm;
608
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portGpcaSwOut;
609
- ref :>> targetEndpoint = audibleAlarm;
610
- ref :>> allocatedExchanges = lfAlarmSignal;
611
574
  attribute :>> direction = DirectionKind::output;
612
575
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
613
576
  @MemoIdentity { :>> sourceReference = "MEMO design extension allocated from LF-003; not a GPCA_Device.aadl connection"; }
614
577
  }
615
- part exPrescriptionEntry : ComponentExchange {
616
- @MemoIdentity { :>> providedId = "CE-004"; }
617
- attribute :>> name = "PrescriptionEntryExchange";
578
+ interface exPrescriptionEntry : ComponentExchange
579
+ connect operatorKeypad.portPrescriptionOut to gpcaSoftware.portPresIn {
580
+ @MemoIdentity { :>> providedId = "CE-004"; :>> label = "PrescriptionEntryExchange"; }
618
581
  attribute :>> exchangeKind = FlowKind::configuration;
619
- ref :>> sourceEndpoint = operatorKeypad;
620
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.portPresIn;
621
- ref :>> allocatedExchanges = lfPrescriptionEntry;
622
582
  attribute :>> direction = DirectionKind::input;
623
583
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
624
584
  @MemoIdentity { :>> sourceReference = "MEMO design extension allocated from LF-004; not a GPCA_Device.aadl connection"; }
@@ -646,366 +606,311 @@ package memo_examples_gpca_pump_gpca_interfaces {
646
606
  // OUTPUT
647
607
  // SYS_MON
648
608
  // SYS_STAT
649
- // ── GPCA_SW.Impl inter-component connections (AADL, 1:1) ────
650
- // ALARM_to_IM immediate is the same-step alarm-response
651
- // mechanism the formal properties rely on.
652
- part ceOpCmdToTlm : ComponentExchange {
653
- @MemoIdentity { :>> providedId = "CE-101"; } attribute :>> name = "OP_CMDtoTLM";
654
- attribute :>> exchangeKind = FlowKind::command;
655
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portOpCmdIn;
656
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmOpCmdIn;
657
- attribute :>> direction = DirectionKind::input;
658
- attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
659
- @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
660
- }
661
- part ceConstToTlm : ComponentExchange {
662
- @MemoIdentity { :>> providedId = "CE-102"; } attribute :>> name = "CONSTtoTLM";
663
- attribute :>> exchangeKind = FlowKind::configuration;
664
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portConstIn;
665
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmConstIn;
666
- attribute :>> direction = DirectionKind::input;
667
- attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
668
- @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
669
- }
670
- part ceTlmOutToOutput : ComponentExchange {
671
- @MemoIdentity { :>> providedId = "CE-103"; } attribute :>> name = "TLM_OUT_toOUTPUT";
609
+ // ── GPCA_SW.Impl connections (AADL, 1:1) ────────────────────
610
+ // A connection between two subcomponents is an interface. One from a
611
+ // GPCA_SW boundary port into a subcomponent is a `binding`: immediate,
612
+ // with nothing between the two ports, so they are one feature seen from
613
+ // both sides (see memo_interfaces.sysml). ALARM_to_IM immediate is the
614
+ // same-step alarm-response mechanism the formal properties rely on.
615
+ binding ceOpCmdToTlm bind gpcaSoftware.portOpCmdIn = gpcaSoftware.tlm.portTlmOpCmdIn {
616
+ @MemoIdentity { :>> providedId = "CE-101"; :>> label = "OP_CMDtoTLM"; }
617
+ attribute exchangeKind : FlowKind = FlowKind::command;
618
+ attribute direction : DirectionKind = DirectionKind::input;
619
+ attribute timingSemantics : String = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
620
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
621
+ }
622
+ binding ceConstToTlm bind gpcaSoftware.portConstIn = gpcaSoftware.tlm.portTlmConstIn {
623
+ @MemoIdentity { :>> providedId = "CE-102"; :>> label = "CONSTtoTLM"; }
624
+ attribute exchangeKind : FlowKind = FlowKind::configuration;
625
+ attribute direction : DirectionKind = DirectionKind::input;
626
+ attribute timingSemantics : String = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
627
+ @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
628
+ }
629
+ interface ceTlmOutToOutput : ComponentExchange
630
+ connect gpcaSoftware.tlm.portTlmTlmModeOut to gpcaSoftware.outputBus.portOutputTlmModeIn {
631
+ @MemoIdentity { :>> providedId = "CE-103"; :>> label = "TLM_OUT_toOUTPUT"; }
672
632
  attribute :>> exchangeKind = FlowKind::status;
673
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
674
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputTlmModeIn;
675
633
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
676
634
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
677
635
  }
678
- part ceImToSysStat : ComponentExchange {
679
- @MemoIdentity { :>> providedId = "CE-104"; } attribute :>> name = "IM_to_SYS_STAT";
636
+ interface ceImToSysStat : ComponentExchange
637
+ connect gpcaSoftware.infusionMgr.portImImOut to gpcaSoftware.systemStatus.portSysStatImIn {
638
+ @MemoIdentity { :>> providedId = "CE-104"; :>> label = "IM_to_SYS_STAT"; }
680
639
  attribute :>> exchangeKind = FlowKind::status;
681
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImImOut;
682
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatImIn;
683
640
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
684
641
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
685
642
  }
686
- part ceTlmToSysStat : ComponentExchange {
687
- @MemoIdentity { :>> providedId = "CE-105"; } attribute :>> name = "TLM_to_SYS_STAT";
643
+ interface ceTlmToSysStat : ComponentExchange
644
+ connect gpcaSoftware.tlm.portTlmTlmModeOut to gpcaSoftware.systemStatus.portSysStatTlmModeIn {
645
+ @MemoIdentity { :>> providedId = "CE-105"; :>> label = "TLM_to_SYS_STAT"; }
688
646
  attribute :>> exchangeKind = FlowKind::status;
689
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
690
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatTlmModeIn;
691
647
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
692
648
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
693
649
  }
694
- part ceSensorToSysStat : ComponentExchange {
695
- @MemoIdentity { :>> providedId = "CE-106"; } attribute :>> name = "SENSOR_to_SYS_STAT";
696
- attribute :>> exchangeKind = FlowKind::measurement;
697
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portSensorIn;
698
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSensorIn;
699
- attribute :>> direction = DirectionKind::input;
700
- attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
650
+ binding ceSensorToSysStat bind gpcaSoftware.portSensorIn = gpcaSoftware.systemStatus.portSysStatSensorIn {
651
+ @MemoIdentity { :>> providedId = "CE-106"; :>> label = "SENSOR_to_SYS_STAT"; }
652
+ attribute exchangeKind : FlowKind = FlowKind::measurement;
653
+ attribute direction : DirectionKind = DirectionKind::input;
654
+ attribute timingSemantics : String = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
701
655
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
702
656
  }
703
- part ceConstToSysStat : ComponentExchange {
704
- @MemoIdentity { :>> providedId = "CE-107"; } attribute :>> name = "CONST_to_SYS_STAT";
705
- attribute :>> exchangeKind = FlowKind::configuration;
706
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portConstIn;
707
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatConstIn;
708
- attribute :>> direction = DirectionKind::input;
709
- attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
657
+ binding ceConstToSysStat bind gpcaSoftware.portConstIn = gpcaSoftware.systemStatus.portSysStatConstIn {
658
+ @MemoIdentity { :>> providedId = "CE-107"; :>> label = "CONST_to_SYS_STAT"; }
659
+ attribute exchangeKind : FlowKind = FlowKind::configuration;
660
+ attribute direction : DirectionKind = DirectionKind::input;
661
+ attribute timingSemantics : String = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
710
662
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
711
663
  }
712
- part ceConfigToSysStat : ComponentExchange {
713
- @MemoIdentity { :>> providedId = "CE-108"; } attribute :>> name = "CONFIG_to_SYS_STAT";
664
+ interface ceConfigToSysStat : ComponentExchange
665
+ connect gpcaSoftware.config.portConfigConfigOut to gpcaSoftware.systemStatus.portSysStatConfigIn {
666
+ @MemoIdentity { :>> providedId = "CE-108"; :>> label = "CONFIG_to_SYS_STAT"; }
714
667
  attribute :>> exchangeKind = FlowKind::configuration;
715
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
716
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatConfigIn;
717
668
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
718
669
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
719
670
  }
720
- part ceSysStatOutToOutput : ComponentExchange {
721
- @MemoIdentity { :>> providedId = "CE-109"; } attribute :>> name = "SYS_STAT_OUT_toOUTPUT";
671
+ interface ceSysStatOutToOutput : ComponentExchange
672
+ connect gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaSoftware.outputBus.portOutputSysStatIn {
673
+ @MemoIdentity { :>> providedId = "CE-109"; :>> label = "SYS_STAT_OUT_toOUTPUT"; }
722
674
  attribute :>> exchangeKind = FlowKind::status;
723
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
724
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputSysStatIn;
725
675
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
726
676
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
727
677
  }
728
- part ceImToAlarm : ComponentExchange {
729
- @MemoIdentity { :>> providedId = "CE-110"; } attribute :>> name = "IM_to_ALARM";
678
+ interface ceImToAlarm : ComponentExchange
679
+ connect gpcaSoftware.infusionMgr.portImImOut to gpcaSoftware.alarm.portAlarmImIn {
680
+ @MemoIdentity { :>> providedId = "CE-110"; :>> label = "IM_to_ALARM"; }
730
681
  attribute :>> exchangeKind = FlowKind::status;
731
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImImOut;
732
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmImIn;
733
682
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
734
683
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
735
684
  }
736
- part ceTlmToAlarm : ComponentExchange {
737
- @MemoIdentity { :>> providedId = "CE-111"; } attribute :>> name = "TLM_to_ALARM";
685
+ interface ceTlmToAlarm : ComponentExchange
686
+ connect gpcaSoftware.tlm.portTlmTlmModeOut to gpcaSoftware.alarm.portAlarmTlmModeIn {
687
+ @MemoIdentity { :>> providedId = "CE-111"; :>> label = "TLM_to_ALARM"; }
738
688
  attribute :>> exchangeKind = FlowKind::status;
739
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
740
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmTlmModeIn;
741
689
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
742
690
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
743
691
  }
744
- part ceSysMonToAlarm : ComponentExchange {
745
- @MemoIdentity { :>> providedId = "CE-112"; } attribute :>> name = "SYS_MON_to_ALARM";
692
+ interface ceSysMonToAlarm : ComponentExchange
693
+ connect gpcaSoftware.systemMonitor.portSysMonSysMonOut to gpcaSoftware.alarm.portAlarmSysMonIn {
694
+ @MemoIdentity { :>> providedId = "CE-112"; :>> label = "SYS_MON_to_ALARM"; }
746
695
  attribute :>> exchangeKind = FlowKind::status;
747
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemMonitor.portSysMonSysMonOut;
748
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmSysMonIn;
749
696
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
750
697
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
751
698
  }
752
- part ceOpCmdToAlarm : ComponentExchange {
753
- @MemoIdentity { :>> providedId = "CE-113"; } attribute :>> name = "OP_CMD_to_ALARM";
754
- attribute :>> exchangeKind = FlowKind::command;
755
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portOpCmdIn;
756
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmOpCmdIn;
757
- attribute :>> direction = DirectionKind::input;
758
- attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
699
+ binding ceOpCmdToAlarm bind gpcaSoftware.portOpCmdIn = gpcaSoftware.alarm.portAlarmOpCmdIn {
700
+ @MemoIdentity { :>> providedId = "CE-113"; :>> label = "OP_CMD_to_ALARM"; }
701
+ attribute exchangeKind : FlowKind = FlowKind::command;
702
+ attribute direction : DirectionKind = DirectionKind::input;
703
+ attribute timingSemantics : String = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
759
704
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
760
705
  }
761
- part ceDbToAlarm : ComponentExchange {
762
- @MemoIdentity { :>> providedId = "CE-114"; } attribute :>> name = "DB_to_ALARM";
763
- attribute :>> exchangeKind = FlowKind::configuration;
764
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portDbIn;
765
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmDbIn;
766
- attribute :>> direction = DirectionKind::input;
767
- attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
706
+ binding ceDbToAlarm bind gpcaSoftware.portDbIn = gpcaSoftware.alarm.portAlarmDbIn {
707
+ @MemoIdentity { :>> providedId = "CE-114"; :>> label = "DB_to_ALARM"; }
708
+ attribute exchangeKind : FlowKind = FlowKind::configuration;
709
+ attribute direction : DirectionKind = DirectionKind::input;
710
+ attribute timingSemantics : String = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
768
711
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
769
712
  }
770
- part ceSensorToAlarm : ComponentExchange {
771
- @MemoIdentity { :>> providedId = "CE-115"; } attribute :>> name = "SENSOR_to_ALARM";
772
- attribute :>> exchangeKind = FlowKind::measurement;
773
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portSensorIn;
774
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmSensorIn;
775
- attribute :>> direction = DirectionKind::input;
776
- attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
713
+ binding ceSensorToAlarm bind gpcaSoftware.portSensorIn = gpcaSoftware.alarm.portAlarmSensorIn {
714
+ @MemoIdentity { :>> providedId = "CE-115"; :>> label = "SENSOR_to_ALARM"; }
715
+ attribute exchangeKind : FlowKind = FlowKind::measurement;
716
+ attribute direction : DirectionKind = DirectionKind::input;
717
+ attribute timingSemantics : String = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
777
718
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
778
719
  }
779
- part ceConstToAlarm : ComponentExchange {
780
- @MemoIdentity { :>> providedId = "CE-116"; } attribute :>> name = "CONST_to_ALARM";
781
- attribute :>> exchangeKind = FlowKind::configuration;
782
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portConstIn;
783
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmConstIn;
784
- attribute :>> direction = DirectionKind::input;
785
- attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
720
+ binding ceConstToAlarm bind gpcaSoftware.portConstIn = gpcaSoftware.alarm.portAlarmConstIn {
721
+ @MemoIdentity { :>> providedId = "CE-116"; :>> label = "CONST_to_ALARM"; }
722
+ attribute exchangeKind : FlowKind = FlowKind::configuration;
723
+ attribute direction : DirectionKind = DirectionKind::input;
724
+ attribute timingSemantics : String = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
786
725
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
787
726
  }
788
- part ceSysStatToAlarm : ComponentExchange {
789
- @MemoIdentity { :>> providedId = "CE-117"; } attribute :>> name = "SYS_STAT_to_ALARM";
727
+ interface ceSysStatToAlarm : ComponentExchange
728
+ connect gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaSoftware.alarm.portAlarmSysStatIn {
729
+ @MemoIdentity { :>> providedId = "CE-117"; :>> label = "SYS_STAT_to_ALARM"; }
790
730
  attribute :>> exchangeKind = FlowKind::status;
791
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
792
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmSysStatIn;
793
731
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
794
732
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
795
733
  }
796
- part ceConfigToAlarm : ComponentExchange {
797
- @MemoIdentity { :>> providedId = "CE-118"; } attribute :>> name = "CONFIG_to_ALARM";
734
+ interface ceConfigToAlarm : ComponentExchange
735
+ connect gpcaSoftware.config.portConfigConfigOut to gpcaSoftware.alarm.portAlarmConfigIn {
736
+ @MemoIdentity { :>> providedId = "CE-118"; :>> label = "CONFIG_to_ALARM"; }
798
737
  attribute :>> exchangeKind = FlowKind::configuration;
799
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
800
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmConfigIn;
801
738
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
802
739
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
803
740
  }
804
- part ceAlarmOutToOutput : ComponentExchange {
805
- @MemoIdentity { :>> providedId = "CE-119"; } attribute :>> name = "ALARM_OUT_toOUTPUT";
741
+ interface ceAlarmOutToOutput : ComponentExchange
742
+ connect gpcaSoftware.alarm.portAlarmAlarmOut to gpcaSoftware.outputBus.portOutputAlarmIn {
743
+ @MemoIdentity { :>> providedId = "CE-119"; :>> label = "ALARM_OUT_toOUTPUT"; }
806
744
  attribute :>> exchangeKind = FlowKind::alarm;
807
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut;
808
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputAlarmIn;
809
745
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
810
746
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
811
747
  }
812
- part ceTlmToConfig : ComponentExchange {
813
- @MemoIdentity { :>> providedId = "CE-120"; } attribute :>> name = "TLM_to_CONFIG";
748
+ interface ceTlmToConfig : ComponentExchange
749
+ connect gpcaSoftware.tlm.portTlmTlmModeOut to gpcaSoftware.config.portConfigTlmModeIn {
750
+ @MemoIdentity { :>> providedId = "CE-120"; :>> label = "TLM_to_CONFIG"; }
814
751
  attribute :>> exchangeKind = FlowKind::status;
815
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
816
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigTlmModeIn;
817
752
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
818
753
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
819
754
  }
820
- part cePresToConfig : ComponentExchange {
821
- @MemoIdentity { :>> providedId = "CE-121"; } attribute :>> name = "PRES_to_CONFIG";
822
- attribute :>> exchangeKind = FlowKind::configuration;
823
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portPresIn;
824
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigPresIn;
825
- attribute :>> direction = DirectionKind::input;
826
- attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
755
+ binding cePresToConfig bind gpcaSoftware.portPresIn = gpcaSoftware.config.portConfigPresIn {
756
+ @MemoIdentity { :>> providedId = "CE-121"; :>> label = "PRES_to_CONFIG"; }
757
+ attribute exchangeKind : FlowKind = FlowKind::configuration;
758
+ attribute direction : DirectionKind = DirectionKind::input;
759
+ attribute timingSemantics : String = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
827
760
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
828
761
  }
829
- part ceOpCmdToConfig : ComponentExchange {
830
- @MemoIdentity { :>> providedId = "CE-122"; } attribute :>> name = "OP_CMD_to_CONFIG";
831
- attribute :>> exchangeKind = FlowKind::command;
832
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portOpCmdIn;
833
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigOpCmdIn;
834
- attribute :>> direction = DirectionKind::input;
835
- attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
762
+ binding ceOpCmdToConfig bind gpcaSoftware.portOpCmdIn = gpcaSoftware.config.portConfigOpCmdIn {
763
+ @MemoIdentity { :>> providedId = "CE-122"; :>> label = "OP_CMD_to_CONFIG"; }
764
+ attribute exchangeKind : FlowKind = FlowKind::command;
765
+ attribute direction : DirectionKind = DirectionKind::input;
766
+ attribute timingSemantics : String = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
836
767
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
837
768
  }
838
- part ceDbToConfig : ComponentExchange {
839
- @MemoIdentity { :>> providedId = "CE-123"; } attribute :>> name = "DB_to_CONFIG";
840
- attribute :>> exchangeKind = FlowKind::configuration;
841
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portDbIn;
842
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigDbIn;
843
- attribute :>> direction = DirectionKind::input;
844
- attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
769
+ binding ceDbToConfig bind gpcaSoftware.portDbIn = gpcaSoftware.config.portConfigDbIn {
770
+ @MemoIdentity { :>> providedId = "CE-123"; :>> label = "DB_to_CONFIG"; }
771
+ attribute exchangeKind : FlowKind = FlowKind::configuration;
772
+ attribute direction : DirectionKind = DirectionKind::input;
773
+ attribute timingSemantics : String = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
845
774
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
846
775
  }
847
- part ceConsToConfig : ComponentExchange {
848
- @MemoIdentity { :>> providedId = "CE-124"; } attribute :>> name = "CONS_to_CONFIG";
849
- attribute :>> exchangeKind = FlowKind::configuration;
850
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portConstIn;
851
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConstIn;
852
- attribute :>> direction = DirectionKind::input;
853
- attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
776
+ binding ceConsToConfig bind gpcaSoftware.portConstIn = gpcaSoftware.config.portConfigConstIn {
777
+ @MemoIdentity { :>> providedId = "CE-124"; :>> label = "CONS_to_CONFIG"; }
778
+ attribute exchangeKind : FlowKind = FlowKind::configuration;
779
+ attribute direction : DirectionKind = DirectionKind::input;
780
+ attribute timingSemantics : String = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
854
781
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
855
782
  }
856
- part ceSysStatToConfig : ComponentExchange {
857
- @MemoIdentity { :>> providedId = "CE-125"; } attribute :>> name = "SYS_STAT_to_CONFIG";
783
+ interface ceSysStatToConfig : ComponentExchange
784
+ connect gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaSoftware.config.portConfigSysStatIn {
785
+ @MemoIdentity { :>> providedId = "CE-125"; :>> label = "SYS_STAT_to_CONFIG"; }
858
786
  attribute :>> exchangeKind = FlowKind::status;
859
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
860
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.config.portConfigSysStatIn;
861
787
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
862
788
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
863
789
  }
864
- part ceConfigToOutput : ComponentExchange {
865
- @MemoIdentity { :>> providedId = "CE-126"; } attribute :>> name = "CONFIG_toOUTPUT";
790
+ interface ceConfigToOutput : ComponentExchange
791
+ connect gpcaSoftware.config.portConfigConfigOut to gpcaSoftware.outputBus.portOutputConfigIn {
792
+ @MemoIdentity { :>> providedId = "CE-126"; :>> label = "CONFIG_toOUTPUT"; }
866
793
  attribute :>> exchangeKind = FlowKind::configuration;
867
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
868
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputConfigIn;
869
794
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
870
795
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
871
796
  }
872
- part ceTlmToIm : ComponentExchange {
873
- @MemoIdentity { :>> providedId = "CE-127"; } attribute :>> name = "TLM_to_IM";
797
+ interface ceTlmToIm : ComponentExchange
798
+ connect gpcaSoftware.tlm.portTlmTlmModeOut to gpcaSoftware.infusionMgr.portImTlmModeIn {
799
+ @MemoIdentity { :>> providedId = "CE-127"; :>> label = "TLM_to_IM"; }
874
800
  attribute :>> exchangeKind = FlowKind::status;
875
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
876
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImTlmModeIn;
877
801
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
878
802
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
879
803
  }
880
- part ceOpCmdToIm : ComponentExchange {
881
- @MemoIdentity { :>> providedId = "CE-128"; } attribute :>> name = "OP_CMD_to_IM";
882
- attribute :>> exchangeKind = FlowKind::command;
883
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portOpCmdIn;
884
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImOpCmdIn;
885
- attribute :>> direction = DirectionKind::input;
886
- attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
804
+ binding ceOpCmdToIm bind gpcaSoftware.portOpCmdIn = gpcaSoftware.infusionMgr.portImOpCmdIn {
805
+ @MemoIdentity { :>> providedId = "CE-128"; :>> label = "OP_CMD_to_IM"; }
806
+ attribute exchangeKind : FlowKind = FlowKind::command;
807
+ attribute direction : DirectionKind = DirectionKind::input;
808
+ attribute timingSemantics : String = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
887
809
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
888
810
  }
889
- part cePatientToIm : ComponentExchange {
890
- @MemoIdentity { :>> providedId = "CE-129"; } attribute :>> name = "PATIENT_to_IM";
891
- attribute :>> exchangeKind = FlowKind::command;
892
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.portPatientIn;
893
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImPatientIn;
894
- attribute :>> direction = DirectionKind::input;
895
- attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
811
+ binding cePatientToIm bind gpcaSoftware.portPatientIn = gpcaSoftware.infusionMgr.portImPatientIn {
812
+ @MemoIdentity { :>> providedId = "CE-129"; :>> label = "PATIENT_to_IM"; }
813
+ attribute exchangeKind : FlowKind = FlowKind::command;
814
+ attribute direction : DirectionKind = DirectionKind::input;
815
+ attribute timingSemantics : String = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
896
816
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
897
817
  }
898
- part ceConfigToIm : ComponentExchange {
899
- @MemoIdentity { :>> providedId = "CE-130"; } attribute :>> name = "CONFIG_to_IM";
818
+ interface ceConfigToIm : ComponentExchange
819
+ connect gpcaSoftware.config.portConfigConfigOut to gpcaSoftware.infusionMgr.portImConfigIn {
820
+ @MemoIdentity { :>> providedId = "CE-130"; :>> label = "CONFIG_to_IM"; }
900
821
  attribute :>> exchangeKind = FlowKind::configuration;
901
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
902
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImConfigIn;
903
822
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
904
823
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
905
824
  }
906
- part ceAlarmToIm : ComponentExchange {
907
- @MemoIdentity { :>> providedId = "CE-131"; } attribute :>> name = "ALARM_to_IM";
825
+ interface ceAlarmToIm : ComponentExchange
826
+ connect gpcaSoftware.alarm.portAlarmAlarmOut to gpcaSoftware.infusionMgr.portImAlarmIn {
827
+ @MemoIdentity { :>> providedId = "CE-131"; :>> label = "ALARM_to_IM"; }
908
828
  attribute :>> exchangeKind = FlowKind::alarm;
909
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut;
910
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImAlarmIn;
911
829
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
912
830
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
913
831
  }
914
- part ceSysStatToIm : ComponentExchange {
915
- @MemoIdentity { :>> providedId = "CE-132"; } attribute :>> name = "SYS_STAT_to_IM";
832
+ interface ceSysStatToIm : ComponentExchange
833
+ connect gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaSoftware.infusionMgr.portImSysStatIn {
834
+ @MemoIdentity { :>> providedId = "CE-132"; :>> label = "SYS_STAT_to_IM"; }
916
835
  attribute :>> exchangeKind = FlowKind::status;
917
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
918
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImSysStatIn;
919
836
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
920
837
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
921
838
  }
922
- part ceImToOutput : ComponentExchange {
923
- @MemoIdentity { :>> providedId = "CE-133"; } attribute :>> name = "IM_toOUTPUT";
839
+ interface ceImToOutput : ComponentExchange
840
+ connect gpcaSoftware.infusionMgr.portImImOut to gpcaSoftware.outputBus.portOutputImIn {
841
+ @MemoIdentity { :>> providedId = "CE-133"; :>> label = "IM_toOUTPUT"; }
924
842
  attribute :>> exchangeKind = FlowKind::status;
925
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImImOut;
926
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputImIn;
927
843
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
928
844
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
929
845
  }
930
- part ceTlmToSysMon : ComponentExchange {
931
- @MemoIdentity { :>> providedId = "CE-134"; } attribute :>> name = "TLM_to_SYS_MON";
846
+ interface ceTlmToSysMon : ComponentExchange
847
+ connect gpcaSoftware.tlm.portTlmTlmModeOut to gpcaSoftware.systemMonitor.portSysMonTlmModeIn {
848
+ @MemoIdentity { :>> providedId = "CE-134"; :>> label = "TLM_to_SYS_MON"; }
932
849
  attribute :>> exchangeKind = FlowKind::status;
933
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
934
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.systemMonitor.portSysMonTlmModeIn;
935
850
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
936
851
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
937
852
  }
938
- part ceSysMonToOutput : ComponentExchange {
939
- @MemoIdentity { :>> providedId = "CE-135"; } attribute :>> name = "SYS_MON_toOUTPUT";
853
+ interface ceSysMonToOutput : ComponentExchange
854
+ connect gpcaSoftware.systemMonitor.portSysMonSysMonOut to gpcaSoftware.outputBus.portOutputSysMonIn {
855
+ @MemoIdentity { :>> providedId = "CE-135"; :>> label = "SYS_MON_toOUTPUT"; }
940
856
  attribute :>> exchangeKind = FlowKind::status;
941
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemMonitor.portSysMonSysMonOut;
942
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputSysMonIn;
943
857
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
944
858
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
945
859
  }
946
- part ceTlmToLog : ComponentExchange {
947
- @MemoIdentity { :>> providedId = "CE-136"; } attribute :>> name = "TLM_to_LOG";
860
+ interface ceTlmToLog : ComponentExchange
861
+ connect gpcaSoftware.tlm.portTlmTlmModeOut to gpcaSoftware.logging.portLogTlmModeIn {
862
+ @MemoIdentity { :>> providedId = "CE-136"; :>> label = "TLM_to_LOG"; }
948
863
  attribute :>> exchangeKind = FlowKind::status;
949
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut;
950
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogTlmModeIn;
951
864
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
952
865
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
953
866
  }
954
- part ceConfigToLog : ComponentExchange {
955
- @MemoIdentity { :>> providedId = "CE-137"; } attribute :>> name = "CONFIG_to_LOG";
867
+ interface ceConfigToLog : ComponentExchange
868
+ connect gpcaSoftware.config.portConfigConfigOut to gpcaSoftware.logging.portLogConfigIn {
869
+ @MemoIdentity { :>> providedId = "CE-137"; :>> label = "CONFIG_to_LOG"; }
956
870
  attribute :>> exchangeKind = FlowKind::configuration;
957
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.config.portConfigConfigOut;
958
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogConfigIn;
959
871
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
960
872
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
961
873
  }
962
- part ceAlarmToLog : ComponentExchange {
963
- @MemoIdentity { :>> providedId = "CE-138"; } attribute :>> name = "ALARM_to_LOG";
874
+ interface ceAlarmToLog : ComponentExchange
875
+ connect gpcaSoftware.alarm.portAlarmAlarmOut to gpcaSoftware.logging.portLogAlarmIn {
876
+ @MemoIdentity { :>> providedId = "CE-138"; :>> label = "ALARM_to_LOG"; }
964
877
  attribute :>> exchangeKind = FlowKind::alarm;
965
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut;
966
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogAlarmIn;
967
878
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
968
879
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
969
880
  }
970
- part ceSysStatToLog : ComponentExchange {
971
- @MemoIdentity { :>> providedId = "CE-139"; } attribute :>> name = "SYS_STAT_to_LOG";
881
+ interface ceSysStatToLog : ComponentExchange
882
+ connect gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaSoftware.logging.portLogSysStatIn {
883
+ @MemoIdentity { :>> providedId = "CE-139"; :>> label = "SYS_STAT_to_LOG"; }
972
884
  attribute :>> exchangeKind = FlowKind::status;
973
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut;
974
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogSysStatIn;
975
885
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
976
886
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
977
887
  }
978
- part ceImToLog : ComponentExchange {
979
- @MemoIdentity { :>> providedId = "CE-140"; } attribute :>> name = "IM_to_LOG";
888
+ interface ceImToLog : ComponentExchange
889
+ connect gpcaSoftware.infusionMgr.portImImOut to gpcaSoftware.logging.portLogImIn {
890
+ @MemoIdentity { :>> providedId = "CE-140"; :>> label = "IM_to_LOG"; }
980
891
  attribute :>> exchangeKind = FlowKind::status;
981
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.infusionMgr.portImImOut;
982
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.logging.portLogImIn;
983
892
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
984
893
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
985
894
  }
986
- part ceLogToOutput : ComponentExchange {
987
- @MemoIdentity { :>> providedId = "CE-141"; } attribute :>> name = "LOG_toOUTPUT";
895
+ interface ceLogToOutput : ComponentExchange
896
+ connect gpcaSoftware.logging.portLogLogOut to gpcaSoftware.outputBus.portOutputLogIn {
897
+ @MemoIdentity { :>> providedId = "CE-141"; :>> label = "LOG_toOUTPUT"; }
988
898
  attribute :>> exchangeKind = FlowKind::audit;
989
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.logging.portLogLogOut;
990
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputLogIn;
991
899
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
992
900
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
993
901
  }
994
- part ceOutputToGpcaOut : ComponentExchange {
995
- @MemoIdentity { :>> providedId = "CE-142"; } attribute :>> name = "OUTPUT_to_GPCA_OUT";
996
- attribute :>> exchangeKind = FlowKind::status;
997
- ref :>> sourceEndpoint = gpcaDevice.gpcaSoftware.outputBus.portOutputGpcaSwOut;
998
- ref :>> targetEndpoint = gpcaDevice.gpcaSoftware.portGpcaSwOut;
999
- attribute :>> direction = DirectionKind::output;
1000
- attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
902
+ binding ceOutputToGpcaOut bind gpcaSoftware.outputBus.portOutputGpcaSwOut = gpcaSoftware.portGpcaSwOut {
903
+ @MemoIdentity { :>> providedId = "CE-142"; :>> label = "OUTPUT_to_GPCA_OUT"; }
904
+ attribute exchangeKind : FlowKind = FlowKind::status;
905
+ attribute direction : DirectionKind = DirectionKind::output;
906
+ attribute timingSemantics : String = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1001
907
  @MemoIdentity { :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)"; }
1002
908
  }
1003
909
  // ── Text macros (App. A.3 internal state variables) ─────────
1004
910
  item ddActualInfusionDurationMacro : InterfaceItem {
1005
911
  attribute :>> itemKind = InterfaceItemKind::data;
1006
- @MemoIdentity { :>> providedId = "DD-042"; }
1007
- attribute :>> name = "Actual_Infusion_Duration_macro";
1008
- attribute :>> description = "Total duration the system has been in ACTIVE mode since infusion was initiated with the current prescription.";
912
+ @MemoIdentity { :>> providedId = "DD-042"; :>> label = "Actual_Infusion_Duration_macro"; }
913
+ doc /* Total duration the system has been in ACTIVE mode since infusion was initiated with the current prescription. */
1009
914
  attribute :>> semantics = "Internal variable; reset to 0 every time infusion is initiated with a new prescription (REQ 12/13).";
1010
915
  attribute :>> unit = "minutes";
1011
916
  attribute :>> encoding = "Time";
@@ -1013,9 +918,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
1013
918
  }
1014
919
  item ddActualVolumeInfusedMacro : InterfaceItem {
1015
920
  attribute :>> itemKind = InterfaceItemKind::data;
1016
- @MemoIdentity { :>> providedId = "DD-043"; }
1017
- attribute :>> name = "Actual_Volume_Infused_macro";
1018
- attribute :>> description = "Total volume of drug infused during Actual_Infusion_Duration_macro; drives the infusion-complete condition (REQ 28) and over-infusion VTBI (REQ 20).";
921
+ @MemoIdentity { :>> providedId = "DD-043"; :>> label = "Actual_Volume_Infused_macro"; }
922
+ doc /* Total volume of drug infused during Actual_Infusion_Duration_macro; drives the infusion-complete condition (REQ 28) and over-infusion VTBI (REQ 20). */
1019
923
  attribute :>> semantics = "Internal variable; default 0; reset to 0 on infusion initiation.";
1020
924
  attribute :>> unit = "ml/hr";
1021
925
  attribute :>> encoding = "Positive Integer";
@@ -1023,9 +927,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
1023
927
  }
1024
928
  item ddFlowRateModeMacro : InterfaceItem {
1025
929
  attribute :>> itemKind = InterfaceItemKind::data;
1026
- @MemoIdentity { :>> providedId = "DD-044"; }
1027
- attribute :>> name = "FlowRate_Mode_macro";
1028
- attribute :>> description = "Programmed flow rate of the current mode: FlowRate_kvo_hd in PAUSED, FlowRate_basal_prog in BASAL, FlowRate_sbolus_prog in SQUARE BOLUS, FlowRate_pbolus_prog in PATIENT BOLUS (§4.1.5).";
930
+ @MemoIdentity { :>> providedId = "DD-044"; :>> label = "FlowRate_Mode_macro"; }
931
+ doc /* Programmed flow rate of the current mode: FlowRate_kvo_hd in PAUSED, FlowRate_basal_prog in BASAL, FlowRate_sbolus_prog in SQUARE BOLUS, FlowRate_pbolus_prog in PATIENT BOLUS (§4.1.5). */
1029
932
  attribute :>> semantics = "Internal variable; set by the system when entering the respective mode.";
1030
933
  attribute :>> unit = "ml/hr";
1031
934
  attribute :>> encoding = "Positive Integer";
@@ -1033,9 +936,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
1033
936
  }
1034
937
  item ddInhibitedInfusionMacro : InterfaceItem {
1035
938
  attribute :>> itemKind = InterfaceItemKind::data;
1036
- @MemoIdentity { :>> providedId = "DD-045"; }
1037
- attribute :>> name = "Inhibited_Infusion_macro";
1038
- attribute :>> description = "TRUE when the notification in effect requires all infusion to be inhibited ('Inhibit Infusion' column of REQ 59); FALSE when that notification is cancelled or the system transitions to OFF.";
939
+ @MemoIdentity { :>> providedId = "DD-045"; :>> label = "Inhibited_Infusion_macro"; }
940
+ doc /* TRUE when the notification in effect requires all infusion to be inhibited ('Inhibit Infusion' column of REQ 59); FALSE when that notification is cancelled or the system transitions to OFF. */
1039
941
  attribute :>> semantics = "Internal variable set per the REQ 59 action table; drives REQ 30/37 transitions.";
1040
942
  attribute :>> unit = "-";
1041
943
  attribute :>> encoding = "Boolean";
@@ -1043,9 +945,8 @@ package memo_examples_gpca_pump_gpca_interfaces {
1043
945
  }
1044
946
  item ddInhibitedBolusMacro : InterfaceItem {
1045
947
  attribute :>> itemKind = InterfaceItemKind::data;
1046
- @MemoIdentity { :>> providedId = "DD-046"; }
1047
- attribute :>> name = "Inhibited_Bolus_macro";
1048
- attribute :>> description = "TRUE when the notification in effect requires square boluses to be inhibited ('Inhibit Square Bolus' column of REQ 59); cleared on cancel or OFF.";
948
+ @MemoIdentity { :>> providedId = "DD-046"; :>> label = "Inhibited_Bolus_macro"; }
949
+ doc /* TRUE when the notification in effect requires square boluses to be inhibited ('Inhibit Square Bolus' column of REQ 59); cleared on cancel or OFF. */
1049
950
  attribute :>> semantics = "Internal variable set per the REQ 59 action table; drives REQ 31/34/39 guards.";
1050
951
  attribute :>> unit = "-";
1051
952
  attribute :>> encoding = "Boolean";
@@ -1053,81 +954,59 @@ package memo_examples_gpca_pump_gpca_interfaces {
1053
954
  }
1054
955
  item ddInhibitedPatientBolusMacro : InterfaceItem {
1055
956
  attribute :>> itemKind = InterfaceItemKind::data;
1056
- @MemoIdentity { :>> providedId = "DD-047"; }
1057
- attribute :>> name = "Inhibited_PatientBolus_macro";
1058
- attribute :>> description = "TRUE when the notification in effect requires PATIENT BOLUS inhibit ('Inhibit Patient Bolus' column of REQ 59); cleared on cancel or OFF.";
957
+ @MemoIdentity { :>> providedId = "DD-047"; :>> label = "Inhibited_PatientBolus_macro"; }
958
+ doc /* TRUE when the notification in effect requires PATIENT BOLUS inhibit ('Inhibit Patient Bolus' column of REQ 59); cleared on cancel or OFF. */
1059
959
  attribute :>> semantics = "Internal variable set per the REQ 59 action table; drives REQ 25/35/36/38 guards.";
1060
960
  attribute :>> unit = "-";
1061
961
  attribute :>> encoding = "Boolean";
1062
962
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros"; }
1063
963
  }
1064
964
 
1065
- // ── The exchanges as FLOWS (Track A3) ────────────────────────────
1066
- // The flow is the edge; the ComponentExchange part above it carries the
1067
- // budget and assurance attributes. Each flow is NAMED with its exchange,
1068
- // and that shared identifier IS the binding between the two halves —
1069
- // `relationships["ceOpCmdToTlm"]` and `elements["ceOpCmdToTlm"]` are one
1070
- // statement, checked by CR-ONT-076. A named flow needs the grammar to
1071
- // accept a name at all, which is why this could not land before the
1072
- // productions did.
965
+ // ── What moves over each exchange ────────────────────────────────
966
+ // Each interface above is the connection between two ports; the flow
967
+ // here is what crosses it, between the same two ports, named for its
968
+ // exchange with a `Flow` suffix (`ceTlmOutToOutput` the interface,
969
+ // `ceTlmOutToOutputFlow` the transfer). CR-ONT-076 asks that every
970
+ // exchange carries one, and compares the ends, not the names.
1073
971
  //
1074
- // The ends are the PORTS, not the components — the port-level topology the
1075
- // *PortPath strings used to approximate. gpca_trace.sysml keeps the
1076
- // component-level dependencies; AADL distinguishes the two granularities
1077
- // and so does this.
972
+ // The ends are the PORTS, not the components — the port-level topology
973
+ // AADL declares. gpca_trace.sysml keeps the component-level dependencies;
974
+ // AADL distinguishes the two granularities and so does this.
1078
975
  //
1079
- // Two spellings, because AADL's two connection kinds are two different
1080
- // things. A `flow` transports an item between components and runs `out` to
1081
- // `in`. A `bind` is a DELEGATION between a boundary port and the interior
1082
- // it stands for: `in` to `in`, or `out` to `out`, because nothing travels —
1083
- // the two features are the same feature. SysML v2 keeps them apart the same
1084
- // way (training ch. 13 and ch. 12), and the 15 delegations recorded below
1085
- // are the ones gpca_trace.sysml therefore cannot restate at component
1086
- // granularity.
1087
- flow of InterfaceItem from gpcaDevice.gpcaDeviceSensors to gpcaDevice.gpcaSoftware.portSensorIn;
1088
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.portGpcaSwOut to pumpMotorAssembly;
1089
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.portGpcaSwOut to audibleAlarm;
1090
- flow of InterfaceItem from operatorKeypad to gpcaDevice.gpcaSoftware.portPresIn;
1091
- bind gpcaDevice.gpcaSoftware.portOpCmdIn = gpcaDevice.gpcaSoftware.tlm.portTlmOpCmdIn;
1092
- bind gpcaDevice.gpcaSoftware.portConstIn = gpcaDevice.gpcaSoftware.tlm.portTlmConstIn;
1093
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.outputBus.portOutputTlmModeIn;
1094
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.infusionMgr.portImImOut to gpcaDevice.gpcaSoftware.systemStatus.portSysStatImIn;
1095
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.systemStatus.portSysStatTlmModeIn;
1096
- bind gpcaDevice.gpcaSoftware.portSensorIn = gpcaDevice.gpcaSoftware.systemStatus.portSysStatSensorIn;
1097
- bind gpcaDevice.gpcaSoftware.portConstIn = gpcaDevice.gpcaSoftware.systemStatus.portSysStatConstIn;
1098
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.config.portConfigConfigOut to gpcaDevice.gpcaSoftware.systemStatus.portSysStatConfigIn;
1099
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaDevice.gpcaSoftware.outputBus.portOutputSysStatIn;
1100
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.infusionMgr.portImImOut to gpcaDevice.gpcaSoftware.alarm.portAlarmImIn;
1101
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.alarm.portAlarmTlmModeIn;
1102
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemMonitor.portSysMonSysMonOut to gpcaDevice.gpcaSoftware.alarm.portAlarmSysMonIn;
1103
- bind gpcaDevice.gpcaSoftware.portOpCmdIn = gpcaDevice.gpcaSoftware.alarm.portAlarmOpCmdIn;
1104
- bind gpcaDevice.gpcaSoftware.portDbIn = gpcaDevice.gpcaSoftware.alarm.portAlarmDbIn;
1105
- bind gpcaDevice.gpcaSoftware.portSensorIn = gpcaDevice.gpcaSoftware.alarm.portAlarmSensorIn;
1106
- bind gpcaDevice.gpcaSoftware.portConstIn = gpcaDevice.gpcaSoftware.alarm.portAlarmConstIn;
1107
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaDevice.gpcaSoftware.alarm.portAlarmSysStatIn;
1108
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.config.portConfigConfigOut to gpcaDevice.gpcaSoftware.alarm.portAlarmConfigIn;
1109
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut to gpcaDevice.gpcaSoftware.outputBus.portOutputAlarmIn;
1110
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.config.portConfigTlmModeIn;
1111
- bind gpcaDevice.gpcaSoftware.portPresIn = gpcaDevice.gpcaSoftware.config.portConfigPresIn;
1112
- bind gpcaDevice.gpcaSoftware.portOpCmdIn = gpcaDevice.gpcaSoftware.config.portConfigOpCmdIn;
1113
- bind gpcaDevice.gpcaSoftware.portDbIn = gpcaDevice.gpcaSoftware.config.portConfigDbIn;
1114
- bind gpcaDevice.gpcaSoftware.portConstIn = gpcaDevice.gpcaSoftware.config.portConfigConstIn;
1115
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaDevice.gpcaSoftware.config.portConfigSysStatIn;
1116
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.config.portConfigConfigOut to gpcaDevice.gpcaSoftware.outputBus.portOutputConfigIn;
1117
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.infusionMgr.portImTlmModeIn;
1118
- bind gpcaDevice.gpcaSoftware.portOpCmdIn = gpcaDevice.gpcaSoftware.infusionMgr.portImOpCmdIn;
1119
- bind gpcaDevice.gpcaSoftware.portPatientIn = gpcaDevice.gpcaSoftware.infusionMgr.portImPatientIn;
1120
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.config.portConfigConfigOut to gpcaDevice.gpcaSoftware.infusionMgr.portImConfigIn;
1121
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut to gpcaDevice.gpcaSoftware.infusionMgr.portImAlarmIn;
1122
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaDevice.gpcaSoftware.infusionMgr.portImSysStatIn;
1123
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.infusionMgr.portImImOut to gpcaDevice.gpcaSoftware.outputBus.portOutputImIn;
1124
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.systemMonitor.portSysMonTlmModeIn;
1125
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemMonitor.portSysMonSysMonOut to gpcaDevice.gpcaSoftware.outputBus.portOutputSysMonIn;
1126
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.tlm.portTlmTlmModeOut to gpcaDevice.gpcaSoftware.logging.portLogTlmModeIn;
1127
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.config.portConfigConfigOut to gpcaDevice.gpcaSoftware.logging.portLogConfigIn;
1128
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.alarm.portAlarmAlarmOut to gpcaDevice.gpcaSoftware.logging.portLogAlarmIn;
1129
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaDevice.gpcaSoftware.logging.portLogSysStatIn;
1130
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.infusionMgr.portImImOut to gpcaDevice.gpcaSoftware.logging.portLogImIn;
1131
- flow of InterfaceItem from gpcaDevice.gpcaSoftware.logging.portLogLogOut to gpcaDevice.gpcaSoftware.outputBus.portOutputLogIn;
1132
- bind gpcaDevice.gpcaSoftware.outputBus.portOutputGpcaSwOut = gpcaDevice.gpcaSoftware.portGpcaSwOut;
976
+ // The 15 GPCA_SW.Impl connections from a GPCA_SW boundary port into a
977
+ // subcomponent's port are not here. They are `binding`s, declared with
978
+ // the exchanges above: each is `immediate (same-step delivery)` with no
979
+ // delay, queue or budget of its own, so the boundary port IS the inner
980
+ // port seen from outside and nothing travels between them.
981
+ flow exSensorVectorFlow of InterfaceItem from gpcaDevice.gpcaDeviceSensors.snsSensorOut to gpcaSoftware.portSensorIn;
982
+ flow exFlowCommandFlow of InterfaceItem from gpcaSoftware.portGpcaSwOut to pumpMotorAssembly.portFlowCommandIn;
983
+ flow exAlarmAnnunciationFlow of InterfaceItem from gpcaSoftware.portGpcaSwOut to audibleAlarm.portAlarmIn;
984
+ flow exPrescriptionEntryFlow of InterfaceItem from operatorKeypad.portPrescriptionOut to gpcaSoftware.portPresIn;
985
+ flow ceTlmOutToOutputFlow of InterfaceItem from gpcaSoftware.tlm.portTlmTlmModeOut to gpcaSoftware.outputBus.portOutputTlmModeIn;
986
+ flow ceImToSysStatFlow of InterfaceItem from gpcaSoftware.infusionMgr.portImImOut to gpcaSoftware.systemStatus.portSysStatImIn;
987
+ flow ceTlmToSysStatFlow of InterfaceItem from gpcaSoftware.tlm.portTlmTlmModeOut to gpcaSoftware.systemStatus.portSysStatTlmModeIn;
988
+ flow ceConfigToSysStatFlow of InterfaceItem from gpcaSoftware.config.portConfigConfigOut to gpcaSoftware.systemStatus.portSysStatConfigIn;
989
+ flow ceSysStatOutToOutputFlow of InterfaceItem from gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaSoftware.outputBus.portOutputSysStatIn;
990
+ flow ceImToAlarmFlow of InterfaceItem from gpcaSoftware.infusionMgr.portImImOut to gpcaSoftware.alarm.portAlarmImIn;
991
+ flow ceTlmToAlarmFlow of InterfaceItem from gpcaSoftware.tlm.portTlmTlmModeOut to gpcaSoftware.alarm.portAlarmTlmModeIn;
992
+ flow ceSysMonToAlarmFlow of InterfaceItem from gpcaSoftware.systemMonitor.portSysMonSysMonOut to gpcaSoftware.alarm.portAlarmSysMonIn;
993
+ flow ceSysStatToAlarmFlow of InterfaceItem from gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaSoftware.alarm.portAlarmSysStatIn;
994
+ flow ceConfigToAlarmFlow of InterfaceItem from gpcaSoftware.config.portConfigConfigOut to gpcaSoftware.alarm.portAlarmConfigIn;
995
+ flow ceAlarmOutToOutputFlow of InterfaceItem from gpcaSoftware.alarm.portAlarmAlarmOut to gpcaSoftware.outputBus.portOutputAlarmIn;
996
+ flow ceTlmToConfigFlow of InterfaceItem from gpcaSoftware.tlm.portTlmTlmModeOut to gpcaSoftware.config.portConfigTlmModeIn;
997
+ flow ceSysStatToConfigFlow of InterfaceItem from gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaSoftware.config.portConfigSysStatIn;
998
+ flow ceConfigToOutputFlow of InterfaceItem from gpcaSoftware.config.portConfigConfigOut to gpcaSoftware.outputBus.portOutputConfigIn;
999
+ flow ceTlmToImFlow of InterfaceItem from gpcaSoftware.tlm.portTlmTlmModeOut to gpcaSoftware.infusionMgr.portImTlmModeIn;
1000
+ flow ceConfigToImFlow of InterfaceItem from gpcaSoftware.config.portConfigConfigOut to gpcaSoftware.infusionMgr.portImConfigIn;
1001
+ flow ceAlarmToImFlow of InterfaceItem from gpcaSoftware.alarm.portAlarmAlarmOut to gpcaSoftware.infusionMgr.portImAlarmIn;
1002
+ flow ceSysStatToImFlow of InterfaceItem from gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaSoftware.infusionMgr.portImSysStatIn;
1003
+ flow ceImToOutputFlow of InterfaceItem from gpcaSoftware.infusionMgr.portImImOut to gpcaSoftware.outputBus.portOutputImIn;
1004
+ flow ceTlmToSysMonFlow of InterfaceItem from gpcaSoftware.tlm.portTlmTlmModeOut to gpcaSoftware.systemMonitor.portSysMonTlmModeIn;
1005
+ flow ceSysMonToOutputFlow of InterfaceItem from gpcaSoftware.systemMonitor.portSysMonSysMonOut to gpcaSoftware.outputBus.portOutputSysMonIn;
1006
+ flow ceTlmToLogFlow of InterfaceItem from gpcaSoftware.tlm.portTlmTlmModeOut to gpcaSoftware.logging.portLogTlmModeIn;
1007
+ flow ceConfigToLogFlow of InterfaceItem from gpcaSoftware.config.portConfigConfigOut to gpcaSoftware.logging.portLogConfigIn;
1008
+ flow ceAlarmToLogFlow of InterfaceItem from gpcaSoftware.alarm.portAlarmAlarmOut to gpcaSoftware.logging.portLogAlarmIn;
1009
+ flow ceSysStatToLogFlow of InterfaceItem from gpcaSoftware.systemStatus.portSysStatSysStatOut to gpcaSoftware.logging.portLogSysStatIn;
1010
+ flow ceImToLogFlow of InterfaceItem from gpcaSoftware.infusionMgr.portImImOut to gpcaSoftware.logging.portLogImIn;
1011
+ flow ceLogToOutputFlow of InterfaceItem from gpcaSoftware.logging.portLogLogOut to gpcaSoftware.outputBus.portOutputLogIn;
1133
1012
  }