@memoarchitect/ontology 0.4.6 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. package/README.md +7 -6
  2. package/examples/connected-patient-monitor/README.md +7 -0
  3. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +70 -0
  4. package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +3 -0
  5. package/examples/connected-patient-monitor/model/viewpoints/connected_patient_monitor_overview.sysml +6 -0
  6. package/examples/embedded-infusion-pump/README.md +7 -0
  7. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +66 -0
  8. package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +3 -0
  9. package/examples/embedded-infusion-pump/model/viewpoints/embedded_infusion_pump_overview.sysml +6 -0
  10. package/examples/extensions/README.md +16 -0
  11. package/examples/extensions/clinical/memo.package.yaml +9 -0
  12. package/examples/extensions/clinical/src/clinical_extension.sysml +3 -0
  13. package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +14 -0
  14. package/examples/extensions/clinical/src/procedures/memo_clinical_procedures.sysml +16 -0
  15. package/examples/extensions/template/memo.package.yaml +9 -0
  16. package/examples/extensions/template/src/extension.sysml +15 -0
  17. package/examples/functional-logical-physical/README.md +7 -0
  18. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +50 -0
  19. package/examples/functional-logical-physical/model/functional_logical_physical.sysml +3 -0
  20. package/examples/functional-logical-physical/model/viewpoints/functional_logical_physical_overview.sysml +6 -0
  21. package/examples/gpca-pump/README.md +26 -0
  22. package/examples/gpca-pump/dhf/documents/DOC-RMP-001.md +1 -1
  23. package/examples/gpca-pump/memo.config.yaml +2 -2
  24. package/examples/gpca-pump/methodology/gpca_profiles.sysml +1 -1
  25. package/examples/gpca-pump/methodology/gpca_scope.sysml +2 -2
  26. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +1 -1
  27. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +10 -10
  28. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +17 -6
  29. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +11 -11
  30. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +35 -22
  31. package/examples/gpca-pump/model/catalog/gpca_context.sysml +25 -6
  32. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +6 -6
  33. package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +29 -15
  34. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +293 -169
  35. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +145 -27
  36. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +1 -1
  37. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +210 -105
  38. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +66 -69
  39. package/examples/gpca-pump/model/catalog/gpca_system.sysml +43 -76
  40. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +73 -70
  41. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +27 -27
  42. package/examples/gpca-pump/model/views/context_system_context_view.sysml +2 -2
  43. package/examples/gpca-pump/model/views/document_architecture_description_view.sysml +2 -2
  44. package/examples/gpca-pump/model/views/document_cyber_assessment_view.sysml +2 -2
  45. package/examples/gpca-pump/model/views/document_hazard_analysis_view.sysml +1 -1
  46. package/examples/gpca-pump/model/views/document_rmf_view.sysml +2 -2
  47. package/examples/gpca-pump/model/views/document_sdd_view.sysml +2 -2
  48. package/examples/gpca-pump/model/views/document_threat_model_view.sysml +1 -1
  49. package/examples/gpca-pump/model/views/document_usability_view.sysml +1 -1
  50. package/examples/gpca-pump/model/views/document_vv_view.sysml +1 -1
  51. package/examples/gpca-pump/model/views/functional_function_allocation_view.sysml +1 -1
  52. package/examples/gpca-pump/model/views/functional_function_browser_view.sysml +1 -1
  53. package/examples/gpca-pump/model/views/logical_device_interconnect_view.sysml +1 -1
  54. package/examples/gpca-pump/model/views/logical_mode_state_view.sysml +1 -1
  55. package/examples/gpca-pump/model/views/logical_system_decomposition_view.sysml +1 -1
  56. package/examples/gpca-pump/model/views/operational_scenario_sequence_view.sysml +1 -1
  57. package/examples/gpca-pump/model/views/operational_use_case_view.sysml +6 -6
  58. package/examples/gpca-pump/model/views/physical_physical_bom_view.sysml +1 -1
  59. package/examples/gpca-pump/model/views/requirements_requirements_trace_view.sysml +1 -1
  60. package/examples/gpca-pump/model/views/risk_risk_chain_view.sysml +2 -2
  61. package/examples/gpca-pump/model/views/software_software_architecture_view.sysml +1 -1
  62. package/examples/gpca-pump/model/views/verification_verification_coverage_view.sysml +1 -1
  63. package/examples/ivd-laboratory-system/README.md +7 -0
  64. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +58 -0
  65. package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +3 -0
  66. package/examples/ivd-laboratory-system/model/viewpoints/ivd_laboratory_system_overview.sysml +6 -0
  67. package/examples/manual-surgical-instrument/README.md +7 -0
  68. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +41 -0
  69. package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +3 -0
  70. package/examples/manual-surgical-instrument/model/viewpoints/manual_surgical_instrument_overview.sysml +6 -0
  71. package/examples/multidimensional-layers/README.md +7 -0
  72. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +51 -0
  73. package/examples/multidimensional-layers/model/multidimensional_layers.sysml +4 -0
  74. package/examples/multidimensional-layers/model/viewpoints/multidimensional_layers_overview.sysml +13 -0
  75. package/examples/reusable-instrument/README.md +7 -0
  76. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +71 -0
  77. package/examples/reusable-instrument/model/reusable_instrument.sysml +4 -0
  78. package/examples/reusable-instrument/model/viewpoints/reusable_instrument_overview.sysml +13 -0
  79. package/examples/software-only-medical-device/README.md +7 -0
  80. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +62 -0
  81. package/examples/software-only-medical-device/model/software_only_medical_device.sysml +4 -0
  82. package/examples/software-only-medical-device/model/viewpoints/software_only_medical_device_overview.sysml +13 -0
  83. package/examples/surgical-closure-workflow/README.md +8 -0
  84. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +151 -0
  85. package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +4 -0
  86. package/examples/surgical-closure-workflow/model/viewpoints/surgical_closure_workflow_overview.sysml +13 -0
  87. package/examples/surgical-robot/README.md +7 -0
  88. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +58 -0
  89. package/examples/surgical-robot/model/surgical_robot.sysml +4 -0
  90. package/examples/surgical-robot/model/viewpoints/surgical_robot_overview.sysml +13 -0
  91. package/examples/sysml-diagram-samples/README.md +32 -0
  92. package/examples/sysml-diagram-samples/memo.package.yaml +5 -0
  93. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/action_flow_view.sysml +22 -4
  94. package/examples/sysml-diagram-samples/model/samples/context_view.sysml +55 -0
  95. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/functional_flow_view.sysml +17 -6
  96. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/interconnection_view.sysml +4 -3
  97. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/operational_behaviour_view.sysml +32 -42
  98. package/examples/sysml-diagram-samples/model/samples/requirements_view.sysml +63 -0
  99. package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +109 -0
  100. package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/tree_view.sysml +3 -3
  101. package/examples/sysml-diagram-samples/model/samples/use_case_view.sysml +81 -0
  102. package/examples/temperature-alarm/README.md +7 -0
  103. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +140 -0
  104. package/examples/temperature-alarm/model/temperature_alarm.sysml +4 -0
  105. package/examples/temperature-alarm/model/viewpoints/temperature_alarm_overview.sysml +13 -0
  106. package/memo.manifest.yaml +12 -4
  107. package/methodologies/default/memo.package.yaml +1 -1
  108. package/methodologies/gpca/memo.package.yaml +4 -4
  109. package/ontology/memo.package.yaml +1 -1
  110. package/ontology/memo.rendering.yaml +37 -0
  111. package/package.json +19 -11
  112. package/profile/memo.package.yaml +3 -3
  113. package/src/architecture/decisions/memo_decisions.sysml +1 -1
  114. package/src/architecture/{behavior → functional/behavior}/memo_behavior.sysml +12 -11
  115. package/src/architecture/{constraints → functional/constraints}/memo_constraints.sysml +2 -2
  116. package/src/architecture/functional/functions/memo_functions.sysml +81 -0
  117. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +46 -0
  118. package/src/architecture/implementation/hardware/electrical/memo_hardware_electrical.sysml +36 -0
  119. package/src/architecture/implementation/hardware/fluidic/memo_hardware_fluidic.sysml +14 -0
  120. package/src/architecture/implementation/hardware/mechanical/memo_hardware_mechanical.sysml +14 -0
  121. package/src/architecture/implementation/hardware/optical/memo_hardware_optical.sysml +11 -0
  122. package/src/architecture/implementation/hardware/sensing/memo_hardware_sensing.sysml +17 -0
  123. package/src/architecture/implementation/hardware/structure/memo_hardware_structure.sysml +12 -0
  124. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +70 -0
  125. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +80 -0
  126. package/src/architecture/implementation/ui/memo_ui.sysml +159 -0
  127. package/src/architecture/logical/interfaces/memo_interfaces.sysml +102 -0
  128. package/src/architecture/logical/structure/memo_logical_structure.sysml +150 -0
  129. package/src/architecture/operational/activities/memo_activities.sysml +86 -0
  130. package/src/architecture/operational/context/actors/memo_actors.sysml +38 -0
  131. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +64 -0
  132. package/src/architecture/operational/context/use_context/memo_use_context.sysml +53 -0
  133. package/src/architecture/operational/scenarios/memo_scenarios.sysml +116 -0
  134. package/src/architecture/operational/structure/memo_operational.sysml +31 -0
  135. package/src/architecture/operational/use_cases/memo_use_cases.sysml +67 -0
  136. package/src/architecture/operational/workflows/memo_workflows.sysml +126 -0
  137. package/src/architecture/realization/deployment/memo_deployment.sysml +90 -0
  138. package/src/architecture/{physical → realization/physical}/memo_physical_architecture.sysml +12 -1
  139. package/src/artifacts/definitions/memo_artifact_definitions.sysml +1 -1
  140. package/src/{architecture → assurance}/cybersecurity/memo_cybersecurity.sysml +14 -10
  141. package/src/assurance/human_factors/memo_human_factors.sysml +50 -0
  142. package/src/{architecture → assurance}/requirements/memo_requirements.sysml +45 -21
  143. package/src/assurance/requirements/needs/memo_needs.sysml +43 -0
  144. package/src/{architecture → assurance/safety_risk}/analysis/memo_fmea.sysml +13 -13
  145. package/src/{architecture/risk → assurance/safety_risk}/memo_arch_risk.sysml +2 -2
  146. package/src/{architecture/risk → assurance/safety_risk}/memo_risk.sysml +25 -16
  147. package/src/assurance/verification_validation/memo_assurance.sysml +49 -0
  148. package/src/compliance/artifacts/memo_artifacts.sysml +1 -1
  149. package/src/compliance/change/memo_change.sysml +2 -2
  150. package/src/compliance/dhf-templates/21cfr820/design-input.md +1 -1
  151. package/src/compliance/dhf-templates/21cfr820/design-validation.md +1 -1
  152. package/src/compliance/dhf-templates/21cfr820/user-needs.md +2 -2
  153. package/src/compliance/dhf-templates/iec-62366/urra.md +1 -1
  154. package/src/compliance/dhf-templates/iso-14971/fmea.md +1 -1
  155. package/src/compliance/dhf-templates/iso-14971/har.md +4 -4
  156. package/src/compliance/dhf-templates/iso-14971/risk-matrix.md +1 -1
  157. package/src/compliance/dhf-templates/iso-14971/rmp.md +1 -1
  158. package/src/compliance/dhf-templates/iso-14971/rmr.md +1 -1
  159. package/src/compliance/iso14971/risk_management_file.sysml +1 -1
  160. package/src/compliance/postmarket/memo_postmarket.sysml +2 -2
  161. package/src/core/common/memo_common.sysml +123 -14
  162. package/src/core/consistency_rules/consistency_rules.sysml +2 -2
  163. package/src/core/dimensions/dimensions.sysml +45 -24
  164. package/src/core/enumerations/memo_enumerations.sysml +11 -16
  165. package/src/core/methodology_scope/methodology_scope.sysml +10 -28
  166. package/src/core/relationships/memo_relationships.sysml +178 -146
  167. package/src/core/stdlib/{collections.sysml → collections/collections.sysml} +1 -1
  168. package/src/core/stdlib/{functions.sysml → functions/functions.sysml} +1 -1
  169. package/src/core/stdlib/{scalars.sysml → scalars/scalars.sysml} +1 -1
  170. package/src/core/stdlib/{time.sysml → time/time.sysml} +1 -1
  171. package/src/core/terminology/terminology.sysml +35 -0
  172. package/src/memo_namespaces.sysml +247 -302
  173. package/src/methodology/{memo_core.sysml → core/memo_core.sysml} +19 -13
  174. package/src/methodology/{memo_gates.sysml → gates/memo_gates.sysml} +1 -1
  175. package/src/methodology/{memo_patterns.sysml → patterns/memo_patterns.sysml} +1 -1
  176. package/src/methodology/{memo_profiles.sysml → profiles/memo_profiles.sysml} +27 -35
  177. package/src/methodology/{memo_workflow.sysml → workflow/memo_workflow.sysml} +1 -1
  178. package/src/rules/closure/closure_rules.sysml +11 -11
  179. package/src/rules/coverage/coverage_rules.sysml +8 -8
  180. package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
  181. package/src/rules/lifecycle/lifecycle_rules.sysml +1 -1
  182. package/src/rules/ontology/ontology_invariants.sysml +133 -0
  183. package/src/rules/quantitative/quantitative_rules.sysml +2 -2
  184. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +189 -0
  185. package/src/viewpoints/clinical/clinical_viewpoint.sysml +0 -1
  186. package/src/viewpoints/context/context_viewpoint.sysml +1 -2
  187. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +1 -2
  188. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +8 -8
  189. package/src/viewpoints/functional/{function_allocation_view.sysml → function_allocation_view/function_allocation_view.sysml} +1 -1
  190. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  191. package/src/viewpoints/functional/{system_functional_tree_view.sysml → system_functional_tree_view/system_functional_tree_view.sysml} +1 -1
  192. package/src/viewpoints/logical/logical_viewpoint.sysml +0 -1
  193. package/src/viewpoints/operational/operational_viewpoint.sysml +1 -2
  194. package/src/viewpoints/operational/{use_case_view.sysml → use_case_view/use_case_view.sysml} +1 -1
  195. package/src/viewpoints/physical/physical_viewpoint.sysml +0 -1
  196. package/src/viewpoints/requirements/{requirements_traceability_view.sysml → requirements_traceability_view/requirements_traceability_view.sysml} +1 -1
  197. package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
  198. package/src/viewpoints/risk/{risk_chain_view.sysml → risk_chain_view/risk_chain_view.sysml} +2 -2
  199. package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
  200. package/src/viewpoints/software/{software_architecture_view.sysml → software_architecture_view/software_architecture_view.sysml} +1 -1
  201. package/src/viewpoints/software/software_viewpoint.sysml +1 -2
  202. package/src/viewpoints/usability/usability_viewpoint.sysml +0 -1
  203. package/src/viewpoints/verification/verification_viewpoint.sysml +0 -1
  204. package/templates/connected-device/memo.package.yaml +5 -0
  205. package/templates/connected-device/src/architecture/system.sysml +5 -0
  206. package/templates/connected-device/src/artifacts/artifacts.sysml +5 -0
  207. package/templates/connected-device/src/assurance/requirements.sysml +7 -0
  208. package/templates/default/memo.package.yaml +5 -0
  209. package/templates/default/src/architecture/system.sysml +7 -0
  210. package/templates/default/src/artifacts/artifacts.sysml +5 -0
  211. package/templates/default/src/assurance/requirements.sysml +8 -0
  212. package/templates/infusion-pump/memo.package.yaml +5 -0
  213. package/templates/infusion-pump/src/architecture/system.sysml +5 -0
  214. package/templates/infusion-pump/src/artifacts/artifacts.sysml +5 -0
  215. package/templates/infusion-pump/src/assurance/requirements.sysml +7 -0
  216. package/templates/monitoring-device/memo.package.yaml +5 -0
  217. package/templates/monitoring-device/src/architecture/system.sysml +5 -0
  218. package/templates/monitoring-device/src/artifacts/artifacts.sysml +5 -0
  219. package/templates/monitoring-device/src/assurance/requirements.sysml +7 -0
  220. package/templates/samd/memo.package.yaml +5 -0
  221. package/templates/samd/src/architecture/system.sysml +5 -0
  222. package/templates/samd/src/artifacts/artifacts.sysml +5 -0
  223. package/templates/samd/src/assurance/requirements.sysml +7 -0
  224. package/examples/gpca-pump/model/samples/README.md +0 -24
  225. package/examples/gpca-pump/model/samples/action_flow_view.viewlayout +0 -9
  226. package/examples/gpca-pump/model/samples/interconnection_view.viewlayout +0 -99
  227. package/profile/archetypes.yaml +0 -36
  228. package/profile/templates/connected-device/starter.sysml +0 -8
  229. package/profile/templates/infusion-pump/starter.sysml +0 -8
  230. package/profile/templates/monitoring-device/starter.sysml +0 -8
  231. package/profile/templates/samd/starter.sysml +0 -8
  232. package/src/architecture/assurance/memo_assurance.sysml +0 -29
  233. package/src/architecture/context/memo_context.sysml +0 -58
  234. package/src/architecture/functions/memo_functions.sysml +0 -30
  235. package/src/architecture/hardware_structure/memo_hardware_structure.sysml +0 -15
  236. package/src/architecture/interfaces/memo_interfaces.sysml +0 -103
  237. package/src/architecture/logical_structure/memo_logical_structure.sysml +0 -10
  238. package/src/architecture/operational/memo_operational.sysml +0 -51
  239. package/src/architecture/software_structure/memo_software_structure.sysml +0 -44
  240. package/src/architecture/system/memo_system_analysis.sysml +0 -54
  241. package/src/artifacts/clinical_safety_report.sysml +0 -12
  242. package/src/artifacts/cybersecurity_assessment_report.sysml +0 -12
  243. package/src/artifacts/design_change_log.sysml +0 -12
  244. package/src/artifacts/design_history_file_index.sysml +0 -12
  245. package/src/artifacts/design_input_plan.sysml +0 -12
  246. package/src/artifacts/design_output_plan.sysml +0 -12
  247. package/src/artifacts/evidence_record.sysml +0 -12
  248. package/src/artifacts/failure_mode_effects_analysis.sysml +0 -12
  249. package/src/artifacts/hazard_analysis_report.sysml +0 -12
  250. package/src/artifacts/labeling_specification.sysml +0 -12
  251. package/src/artifacts/requirements_specification.sysml +0 -12
  252. package/src/artifacts/requirements_traceability_matrix.sysml +0 -12
  253. package/src/artifacts/risk_management_plan.sysml +0 -12
  254. package/src/artifacts/software_design_description.sysml +0 -12
  255. package/src/artifacts/software_development_plan.sysml +0 -12
  256. package/src/artifacts/soup_list.sysml +0 -12
  257. package/src/artifacts/system_architecture_description.sysml +0 -12
  258. package/src/artifacts/test_protocol.sysml +0 -12
  259. package/src/artifacts/test_report.sysml +0 -12
  260. package/src/artifacts/threat_model_report.sysml +0 -12
  261. package/src/artifacts/usability_engineering_report.sysml +0 -12
  262. package/src/medical_device_library.sysml +0 -100
  263. package/template/memo.package.yaml +0 -5
  264. package/template/src/catalog/starter.sysml +0 -12
  265. package/template/src/documents/.gitkeep +0 -1
  266. package/template/src/views/.gitkeep +0 -1
  267. /package/src/methodology/{memo_archetypes.sysml → archetypes/memo_archetypes.sysml} +0 -0
  268. /package/src/methodology/{memo_rules.sysml → rules/memo_rules.sysml} +0 -0
  269. /package/src/methodology/{memo_viewpoints.sysml → viewpoints/memo_viewpoints.sysml} +0 -0
  270. /package/src/viewpoints/clinical/{clinical_evidence_view.sysml → clinical_evidence_view/clinical_evidence_view.sysml} +0 -0
  271. /package/src/viewpoints/context/{system_context_view.sysml → system_context_view/system_context_view.sysml} +0 -0
  272. /package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view.sysml → cybersecurity_assessment_view/cybersecurity_assessment_view.sysml} +0 -0
  273. /package/src/viewpoints/cybersecurity/{threat_model_view.sysml → threat_model_view/threat_model_view.sysml} +0 -0
  274. /package/src/viewpoints/logical/{logical_architecture_view.sysml → logical_architecture_view/logical_architecture_view.sysml} +0 -0
  275. /package/src/viewpoints/physical/{network_topology_view.sysml → network_topology_view/network_topology_view.sysml} +0 -0
  276. /package/src/viewpoints/physical/{physical_bom_view.sysml → physical_bom_view/physical_bom_view.sysml} +0 -0
  277. /package/src/viewpoints/usability/{usability_engineering_view.sysml → usability_engineering_view/usability_engineering_view.sysml} +0 -0
  278. /package/src/viewpoints/verification/{verification_coverage_view.sysml → verification_coverage_view/verification_coverage_view.sysml} +0 -0
@@ -1,9 +1,12 @@
1
1
  package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
2
2
  private import ScalarValues::*;
3
3
 
4
- private import memo_architecture_interfaces::*;
5
- private import memo_architecture_functions::DataDefinition;
4
+ private import memo_architecture_logical_interfaces::*;
5
+ private import memo_architecture_functional_functions::*;
6
+ private import memo_examples_gpca_pump_model_catalog_gpca_architecture::*;
7
+ private import memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems::*;
6
8
  private import memo_core_enumerations::*;
9
+ private import memo_core_dimensions::*;
7
10
  abstract interface def SensorDataInterface :> DataInterface {
8
11
  attribute :>> interfaceKind = InterfaceKind::data;
9
12
  attribute :>> protocolSemantics = "flow, air, occlusion, door, battery, cpu, memory, pump state";
@@ -13,46 +16,41 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
13
16
  attribute :>> interfaceType = "SensorDataInterface";
14
17
  attribute :>> sensorDomain = "physiological and device state";
15
18
  }
16
- part sensorInputInterface : SoftwareInterface {
19
+ interface sensorInputInterface : Interface {
17
20
  attribute :>> id = "LI-005";
18
21
  attribute :>> name = "SensorInputInterface";
19
- attribute :>> arcadiaLayer = ArcadiaLayerKind::logical;
20
22
  attribute :>> interfaceKind = InterfaceKind::data;
21
23
  attribute :>> direction = DirectionKind::input;
22
24
  attribute :>> interactionPattern = "sensor feed";
23
25
  attribute :>> protocolSemantics = "flow, air, occlusion, door, battery, cpu, memory, pump state";
24
26
  }
25
- part actuatorCommandInterface : SoftwareInterface {
27
+ interface actuatorCommandInterface : Interface {
26
28
  attribute :>> id = "LI-006";
27
29
  attribute :>> name = "ActuatorCommandInterface";
28
- attribute :>> arcadiaLayer = ArcadiaLayerKind::logical;
29
30
  attribute :>> interfaceKind = InterfaceKind::control;
30
31
  attribute :>> direction = DirectionKind::output;
31
32
  attribute :>> interactionPattern = "commanded flow and annunciation outputs";
32
33
  attribute :>> protocolSemantics = "pump flow command, buzzer tone select, display content";
33
34
  }
34
- part operatorEntryInterface : SoftwareInterface {
35
+ interface operatorEntryInterface : Interface {
35
36
  attribute :>> id = "LI-007";
36
37
  attribute :>> name = "OperatorEntryInterface";
37
- attribute :>> arcadiaLayer = ArcadiaLayerKind::logical;
38
38
  attribute :>> interfaceKind = InterfaceKind::userInteraction;
39
39
  attribute :>> direction = DirectionKind::input;
40
40
  attribute :>> interactionPattern = "keypad entry with confirmation readback";
41
41
  attribute :>> protocolSemantics = "prescription fields, alarm silence, start/stop commands";
42
42
  }
43
- part eventLogInterface : SoftwareInterface {
43
+ interface eventLogInterface : Interface {
44
44
  attribute :>> id = "LI-008";
45
45
  attribute :>> name = "EventLogInterface";
46
- attribute :>> arcadiaLayer = ArcadiaLayerKind::logical;
47
46
  attribute :>> interfaceKind = InterfaceKind::logging;
48
47
  attribute :>> direction = DirectionKind::output;
49
48
  attribute :>> interactionPattern = "append-only audit records";
50
49
  attribute :>> protocolSemantics = "timestamped therapy, alarm, and configuration events";
51
50
  }
52
- part hwSoftwareBus : DigitalInterface {
51
+ interface hwSoftwareBus : Interface {
53
52
  attribute :>> id = "PI-001";
54
53
  attribute :>> name = "HW_SW_DataBus";
55
- attribute :>> arcadiaLayer = ArcadiaLayerKind::physical;
56
54
  attribute :>> interfaceKind = InterfaceKind::digitalSignal;
57
55
  attribute :>> protocol = "immediate data port mapping";
58
56
  attribute :>> directionality = DirectionKind::bidirectional;
@@ -62,10 +60,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
62
60
  attribute :>> nominalVoltageV = 3.3;
63
61
  attribute :>> nominalCurrentA = 0.02;
64
62
  }
65
- part pumpMotorDrive : DigitalInterface {
63
+ interface pumpMotorDrive : Interface {
66
64
  attribute :>> id = "PI-002";
67
65
  attribute :>> name = "PumpMotorStepDrive";
68
- attribute :>> arcadiaLayer = ArcadiaLayerKind::physical;
69
66
  attribute :>> interfaceKind = InterfaceKind::digitalSignal;
70
67
  attribute :>> protocol = "step/direction pulse train";
71
68
  attribute :>> directionality = DirectionKind::output;
@@ -75,10 +72,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
75
72
  attribute :>> nominalCurrentA = 0.5;
76
73
  attribute :>> signaling = "step/dir with enable interlock";
77
74
  }
78
- part bolusButtonLine : DigitalInterface {
75
+ interface bolusButtonLine : Interface {
79
76
  attribute :>> id = "PI-003";
80
77
  attribute :>> name = "BolusButtonInputLine";
81
- attribute :>> arcadiaLayer = ArcadiaLayerKind::physical;
82
78
  attribute :>> interfaceKind = InterfaceKind::digitalSignal;
83
79
  attribute :>> protocol = "debounced discrete input";
84
80
  attribute :>> directionality = DirectionKind::input;
@@ -87,10 +83,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
87
83
  attribute :>> nominalVoltageV = 3.3;
88
84
  attribute :>> nominalCurrentA = 0.001;
89
85
  }
90
- part occlusionAnalogLine : AnalogInterface {
86
+ interface occlusionAnalogLine : Interface {
91
87
  attribute :>> id = "PI-004";
92
88
  attribute :>> name = "OcclusionPressureAnalogLine";
93
- attribute :>> arcadiaLayer = ArcadiaLayerKind::physical;
94
89
  attribute :>> interfaceKind = InterfaceKind::analogSignal;
95
90
  attribute :>> directionality = DirectionKind::input;
96
91
  attribute :>> electricalStandard = "ratiometric 0.5-4.5V";
@@ -98,10 +93,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
98
93
  attribute :>> nominalCurrentA = 0.01;
99
94
  attribute :>> signalRange = "0 to 30 psi line pressure";
100
95
  }
101
- part batteryMonitorLine : AnalogInterface {
96
+ interface batteryMonitorLine : Interface {
102
97
  attribute :>> id = "PI-005";
103
98
  attribute :>> name = "BatteryVoltageMonitorLine";
104
- attribute :>> arcadiaLayer = ArcadiaLayerKind::physical;
105
99
  attribute :>> interfaceKind = InterfaceKind::power;
106
100
  attribute :>> directionality = DirectionKind::input;
107
101
  attribute :>> electricalStandard = "divided battery rail to ADC";
@@ -111,10 +105,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
111
105
  }
112
106
 
113
107
  // ── System-level interfaces (CriSys Ch.3, I 1-I 11) ─────────
114
- part siDataEntry : Interface {
108
+ interface siDataEntry : Interface {
115
109
  attribute :>> id = "SI-001";
116
110
  attribute :>> name = "DataEntryInterface";
117
- attribute :>> arcadiaLayer = ArcadiaLayerKind::system;
118
111
  attribute :>> interfaceKind = InterfaceKind::userInteraction;
119
112
  attribute :>> direction = DirectionKind::input;
120
113
  attribute :>> protocol = "CriSys I 1, I 2, I 3";
@@ -122,10 +115,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
122
115
  attribute :>> interactionPattern = "clinician enter/edit/save with mode-gated commands";
123
116
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1 Data Entry Interface";
124
117
  }
125
- part siBolusRequest : Interface {
118
+ interface siBolusRequest : Interface {
126
119
  attribute :>> id = "SI-002";
127
120
  attribute :>> name = "BolusRequestInterface";
128
- attribute :>> arcadiaLayer = ArcadiaLayerKind::system;
129
121
  attribute :>> interfaceKind = InterfaceKind::userInteraction;
130
122
  attribute :>> direction = DirectionKind::input;
131
123
  attribute :>> protocol = "CriSys I 4";
@@ -133,10 +125,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
133
125
  attribute :>> interactionPattern = "patient pendant button press";
134
126
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.2 Bolus Request Interface";
135
127
  }
136
- part siDrugFlow : Interface {
128
+ interface siDrugFlow : Interface {
137
129
  attribute :>> id = "SI-003";
138
130
  attribute :>> name = "DrugFlowInterface";
139
- attribute :>> arcadiaLayer = ArcadiaLayerKind::system;
140
131
  attribute :>> interfaceKind = InterfaceKind::fluidic;
141
132
  attribute :>> direction = DirectionKind::output;
142
133
  attribute :>> protocol = "CriSys I 5, I 6";
@@ -144,10 +135,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
144
135
  attribute :>> interactionPattern = "continuous fluid path while infusing";
145
136
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.3 Drug Flow Interface";
146
137
  }
147
- part siNotification : Interface {
138
+ interface siNotification : Interface {
148
139
  attribute :>> id = "SI-004";
149
140
  attribute :>> name = "NotificationInterface";
150
- attribute :>> arcadiaLayer = ArcadiaLayerKind::system;
151
141
  attribute :>> interfaceKind = InterfaceKind::notification;
152
142
  attribute :>> direction = DirectionKind::output;
153
143
  attribute :>> protocol = "CriSys I 7, I 8";
@@ -155,10 +145,9 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
155
145
  attribute :>> interactionPattern = "visual list with per-notification audio annunciation";
156
146
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.4 Notification Interface";
157
147
  }
158
- part siPharmacyDb : Interface {
148
+ interface siPharmacyDb : Interface {
159
149
  attribute :>> id = "SI-005";
160
150
  attribute :>> name = "HospitalPharmacyDatabaseInterface";
161
- attribute :>> arcadiaLayer = ArcadiaLayerKind::system;
162
151
  attribute :>> interfaceKind = InterfaceKind::data;
163
152
  attribute :>> direction = DirectionKind::bidirectional;
164
153
  attribute :>> protocol = "CriSys I 9, I 10, I 11";
@@ -168,7 +157,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
168
157
  }
169
158
 
170
159
  // ── CriSys Ch.3 data dictionary (prog / hd / output families) ─
171
- part ddPatientIDProg : DataDefinition {
160
+ item ddPatientIDProg : InterfaceItem {
161
+ attribute :>> itemKind = InterfaceItemKind::data;
172
162
  attribute :>> id = "DD-005";
173
163
  attribute :>> name = "PatientID_prog";
174
164
  attribute :>> description = "Identifier of the patient in the hospital; provided in the prescription and programmed by the clinician.";
@@ -177,7 +167,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
177
167
  attribute :>> encoding = "String";
178
168
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
179
169
  }
180
- part ddDrugNameProg : DataDefinition {
170
+ item ddDrugNameProg : InterfaceItem {
171
+ attribute :>> itemKind = InterfaceItemKind::data;
181
172
  attribute :>> id = "DD-006";
182
173
  attribute :>> name = "DrugName_prog";
183
174
  attribute :>> description = "Name of the drug prescribed for infusion.";
@@ -186,7 +177,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
186
177
  attribute :>> encoding = "String";
187
178
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
188
179
  }
189
- part ddDrugConcentrationProg : DataDefinition {
180
+ item ddDrugConcentrationProg : InterfaceItem {
181
+ attribute :>> itemKind = InterfaceItemKind::data;
190
182
  attribute :>> id = "DD-007";
191
183
  attribute :>> name = "DrugConcentration_prog";
192
184
  attribute :>> description = "Concentration of the drug in the solution prescribed for infusion.";
@@ -197,7 +189,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
197
189
  attribute :>> encoding = "Positive Integer";
198
190
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
199
191
  }
200
- part ddVTBITotalProg : DataDefinition {
192
+ item ddVTBITotalProg : InterfaceItem {
193
+ attribute :>> itemKind = InterfaceItemKind::data;
201
194
  attribute :>> id = "DD-008";
202
195
  attribute :>> name = "VTBI_total_prog";
203
196
  attribute :>> description = "Maximum total volume of the drug solution that can be infused for the prescription.";
@@ -208,7 +201,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
208
201
  attribute :>> encoding = "Positive Integer";
209
202
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
210
203
  }
211
- part ddDurationTotalProg : DataDefinition {
204
+ item ddDurationTotalProg : InterfaceItem {
205
+ attribute :>> itemKind = InterfaceItemKind::data;
212
206
  attribute :>> id = "DD-009";
213
207
  attribute :>> name = "Duration_total_prog";
214
208
  attribute :>> description = "Prescribed total duration of drug infusion across all delivery modes (BASAL, SQUARE BOLUS, PATIENT BOLUS).";
@@ -219,7 +213,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
219
213
  attribute :>> encoding = "Time";
220
214
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
221
215
  }
222
- part ddFlowRateBasalProg : DataDefinition {
216
+ item ddFlowRateBasalProg : InterfaceItem {
217
+ attribute :>> itemKind = InterfaceItemKind::data;
223
218
  attribute :>> id = "DD-010";
224
219
  attribute :>> name = "FlowRate_basal_prog";
225
220
  attribute :>> description = "Prescribed rate of flow of drug during BASAL delivery mode; default FlowRate_lo_hd.";
@@ -230,7 +225,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
230
225
  attribute :>> encoding = "Positive Integer";
231
226
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
232
227
  }
233
- part ddFlowRateSbolusProg : DataDefinition {
228
+ item ddFlowRateSbolusProg : InterfaceItem {
229
+ attribute :>> itemKind = InterfaceItemKind::data;
234
230
  attribute :>> id = "DD-011";
235
231
  attribute :>> name = "FlowRate_sbolus_prog";
236
232
  attribute :>> description = "Prescribed flow rate of drug during SQUARE bolus delivery.";
@@ -241,7 +237,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
241
237
  attribute :>> encoding = "Positive Integer";
242
238
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
243
239
  }
244
- part ddDurationSbolusProg : DataDefinition {
240
+ item ddDurationSbolusProg : InterfaceItem {
241
+ attribute :>> itemKind = InterfaceItemKind::data;
245
242
  attribute :>> id = "DD-012";
246
243
  attribute :>> name = "Duration_sbolus_prog";
247
244
  attribute :>> description = "Maximum duration of a single uninterrupted square bolus delivery.";
@@ -252,7 +249,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
252
249
  attribute :>> encoding = "Time";
253
250
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
254
251
  }
255
- part ddIntervalSbolusProg : DataDefinition {
252
+ item ddIntervalSbolusProg : InterfaceItem {
253
+ attribute :>> itemKind = InterfaceItemKind::data;
256
254
  attribute :>> id = "DD-013";
257
255
  attribute :>> name = "Interval_sbolus_prog";
258
256
  attribute :>> description = "Minimum interval between two consecutive square bolus initiations; the first square bolus starts Interval_sbolus_prog minutes after infusion initiation.";
@@ -263,7 +261,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
263
261
  attribute :>> encoding = "Positive Integer";
264
262
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
265
263
  }
266
- part ddFlowRatePbolusProg : DataDefinition {
264
+ item ddFlowRatePbolusProg : InterfaceItem {
265
+ attribute :>> itemKind = InterfaceItemKind::data;
267
266
  attribute :>> id = "DD-014";
268
267
  attribute :>> name = "FlowRate_pbolus_prog";
269
268
  attribute :>> description = "Prescribed flow rate of drug during patient bolus delivery.";
@@ -274,7 +273,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
274
273
  attribute :>> encoding = "Positive Integer";
275
274
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
276
275
  }
277
- part ddDurationPbolusProg : DataDefinition {
276
+ item ddDurationPbolusProg : InterfaceItem {
277
+ attribute :>> itemKind = InterfaceItemKind::data;
278
278
  attribute :>> id = "DD-015";
279
279
  attribute :>> name = "Duration_pbolus_prog";
280
280
  attribute :>> description = "Maximum duration of a single uninterrupted patient bolus delivery.";
@@ -285,7 +285,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
285
285
  attribute :>> encoding = "Time";
286
286
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
287
287
  }
288
- part ddLockOutPeriodPbolusProg : DataDefinition {
288
+ item ddLockOutPeriodPbolusProg : InterfaceItem {
289
+ attribute :>> itemKind = InterfaceItemKind::data;
289
290
  attribute :>> id = "DD-016";
290
291
  attribute :>> name = "LockOutPeriod_pbolus_prog";
291
292
  attribute :>> description = "Minimum interval between two consecutive patient bolus initiations (the lockout period), irrespective of interruption or completion.";
@@ -296,7 +297,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
296
297
  attribute :>> encoding = "Positive Integer";
297
298
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
298
299
  }
299
- part ddNumberMaxPbolusProg : DataDefinition {
300
+ item ddNumberMaxPbolusProg : InterfaceItem {
301
+ attribute :>> itemKind = InterfaceItemKind::data;
300
302
  attribute :>> id = "DD-017";
301
303
  attribute :>> name = "NumberMax_pbolus_prog";
302
304
  attribute :>> description = "Maximum total number of patient boluses that may be initiated during Duration_total_prog.";
@@ -307,7 +309,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
307
309
  attribute :>> encoding = "Positive Integer";
308
310
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.1 Prescription Data";
309
311
  }
310
- part ddSystemStartProg : DataDefinition {
312
+ item ddSystemStartProg : InterfaceItem {
313
+ attribute :>> itemKind = InterfaceItemKind::data;
311
314
  attribute :>> id = "DD-018";
312
315
  attribute :>> name = "System_start_prog";
313
316
  attribute :>> description = "Command to start the system.";
@@ -316,7 +319,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
316
319
  attribute :>> encoding = "Boolean event";
317
320
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands";
318
321
  }
319
- part ddSystemStopProg : DataDefinition {
322
+ item ddSystemStopProg : InterfaceItem {
323
+ attribute :>> itemKind = InterfaceItemKind::data;
320
324
  attribute :>> id = "DD-019";
321
325
  attribute :>> name = "System_stop_prog";
322
326
  attribute :>> description = "Command to stop the system.";
@@ -325,7 +329,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
325
329
  attribute :>> encoding = "Boolean event";
326
330
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands";
327
331
  }
328
- part ddInfusionInitiateProg : DataDefinition {
332
+ item ddInfusionInitiateProg : InterfaceItem {
333
+ attribute :>> itemKind = InterfaceItemKind::data;
329
334
  attribute :>> id = "DD-020";
330
335
  attribute :>> name = "Infusion_initiate_prog";
331
336
  attribute :>> description = "Command to initiate infusion of drug.";
@@ -334,7 +339,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
334
339
  attribute :>> encoding = "Boolean event";
335
340
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands";
336
341
  }
337
- part ddInfusionInhibitProg : DataDefinition {
342
+ item ddInfusionInhibitProg : InterfaceItem {
343
+ attribute :>> itemKind = InterfaceItemKind::data;
338
344
  attribute :>> id = "DD-021";
339
345
  attribute :>> name = "Infusion_inhibit_prog";
340
346
  attribute :>> description = "Command to inhibit infusion of drug.";
@@ -343,7 +349,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
343
349
  attribute :>> encoding = "Boolean event";
344
350
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands";
345
351
  }
346
- part ddSystemSaveProg : DataDefinition {
352
+ item ddSystemSaveProg : InterfaceItem {
353
+ attribute :>> itemKind = InterfaceItemKind::data;
347
354
  attribute :>> id = "DD-022";
348
355
  attribute :>> name = "System_save_prog";
349
356
  attribute :>> description = "Command to save the prescription and reservoir initial volume data.";
@@ -352,7 +359,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
352
359
  attribute :>> encoding = "Boolean event";
353
360
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands";
354
361
  }
355
- part ddNotificationCancelProg : DataDefinition {
362
+ item ddNotificationCancelProg : InterfaceItem {
363
+ attribute :>> itemKind = InterfaceItemKind::data;
356
364
  attribute :>> id = "DD-023";
357
365
  attribute :>> name = "Notification_cancel_prog";
358
366
  attribute :>> description = "Command to cancel a selected notification.";
@@ -361,7 +369,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
361
369
  attribute :>> encoding = "Boolean event";
362
370
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands";
363
371
  }
364
- part ddDisableAudioProg : DataDefinition {
372
+ item ddDisableAudioProg : InterfaceItem {
373
+ attribute :>> itemKind = InterfaceItemKind::data;
365
374
  attribute :>> id = "DD-024";
366
375
  attribute :>> name = "Disable_audio_prog";
367
376
  attribute :>> description = "Command to disable audio notifications, permanently or temporarily.";
@@ -370,7 +379,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
370
379
  attribute :>> encoding = "PERM | TEMP | FALSE";
371
380
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands";
372
381
  }
373
- part ddEnableAudioProg : DataDefinition {
382
+ item ddEnableAudioProg : InterfaceItem {
383
+ attribute :>> itemKind = InterfaceItemKind::data;
374
384
  attribute :>> id = "DD-025";
375
385
  attribute :>> name = "Enable_audio_prog";
376
386
  attribute :>> description = "Command to enable audio notifications.";
@@ -379,7 +389,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
379
389
  attribute :>> encoding = "Boolean event";
380
390
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands";
381
391
  }
382
- part ddDataConfigProg : DataDefinition {
392
+ item ddDataConfigProg : InterfaceItem {
393
+ attribute :>> itemKind = InterfaceItemKind::data;
383
394
  attribute :>> id = "DD-026";
384
395
  attribute :>> name = "DataConfig_prog";
385
396
  attribute :>> description = "Command to configure prescription data (printed as 'DataCofig_prog' in the source).";
@@ -388,7 +399,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
388
399
  attribute :>> encoding = "Boolean event";
389
400
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.2 Commands";
390
401
  }
391
- part ddReservoirInitialVolumeProg : DataDefinition {
402
+ item ddReservoirInitialVolumeProg : InterfaceItem {
403
+ attribute :>> itemKind = InterfaceItemKind::data;
392
404
  attribute :>> id = "DD-027";
393
405
  attribute :>> name = "ReservoirInitialVolume_prog";
394
406
  attribute :>> description = "Initial volume of drug in the reservoir at the time of entering the prescription; read from the reservoir label.";
@@ -399,7 +411,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
399
411
  attribute :>> encoding = "Positive Integer";
400
412
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.1.3 Drug Reservoir Data";
401
413
  }
402
- part ddBolusRequestProg : DataDefinition {
414
+ item ddBolusRequestProg : InterfaceItem {
415
+ attribute :>> itemKind = InterfaceItemKind::data;
403
416
  attribute :>> id = "DD-028";
404
417
  attribute :>> name = "BolusRequest_prog";
405
418
  attribute :>> description = "Request by the patient to deliver a patient bolus.";
@@ -408,7 +421,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
408
421
  attribute :>> encoding = "Boolean event";
409
422
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.2 Bolus Request Interface";
410
423
  }
411
- part ddFlowRateOutput : DataDefinition {
424
+ item ddFlowRateOutput : InterfaceItem {
425
+ attribute :>> itemKind = InterfaceItemKind::data;
412
426
  attribute :>> id = "DD-029";
413
427
  attribute :>> name = "FlowRate_output";
414
428
  attribute :>> description = "Flow rate of the drug through the hose delivering the drug, measured every X seconds when the system is in ON mode.";
@@ -419,7 +433,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
419
433
  attribute :>> encoding = "Positive Integer";
420
434
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.3 Drug Flow Interface";
421
435
  }
422
- part ddNotificationVisualOutput : DataDefinition {
436
+ item ddNotificationVisualOutput : InterfaceItem {
437
+ attribute :>> itemKind = InterfaceItemKind::data;
423
438
  attribute :>> id = "DD-030";
424
439
  attribute :>> name = "Notification_Visual_output";
425
440
  attribute :>> description = "Visual display of the messages of all active notifications in the system.";
@@ -428,7 +443,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
428
443
  attribute :>> encoding = "List of String";
429
444
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.4 Notification Interface";
430
445
  }
431
- part ddNotificationAudioOutput : DataDefinition {
446
+ item ddNotificationAudioOutput : InterfaceItem {
447
+ attribute :>> itemKind = InterfaceItemKind::data;
432
448
  attribute :>> id = "DD-031";
433
449
  attribute :>> name = "Notification_Audio_output";
434
450
  attribute :>> description = "Audio output for each active notification, in the same order as Notification_Visual_output.";
@@ -437,7 +453,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
437
453
  attribute :>> encoding = "List of Boolean";
438
454
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.4 Notification Interface";
439
455
  }
440
- part ddDrugNameHd : DataDefinition {
456
+ item ddDrugNameHd : InterfaceItem {
457
+ attribute :>> itemKind = InterfaceItemKind::data;
441
458
  attribute :>> id = "DD-032";
442
459
  attribute :>> name = "DrugName_hd";
443
460
  attribute :>> description = "Name of a drug usable for infusion in the hospital that matches DrugName_prog.";
@@ -446,7 +463,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
446
463
  attribute :>> encoding = "String";
447
464
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
448
465
  }
449
- part ddDrugConcentrationHiHd : DataDefinition {
466
+ item ddDrugConcentrationHiHd : InterfaceItem {
467
+ attribute :>> itemKind = InterfaceItemKind::data;
450
468
  attribute :>> id = "DD-033";
451
469
  attribute :>> name = "DrugConcentration_hi_hd";
452
470
  attribute :>> description = "Maximum concentration of the drug in a solution that can safely be used for infusion for DrugName_hd.";
@@ -457,7 +475,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
457
475
  attribute :>> encoding = "Positive Integer";
458
476
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
459
477
  }
460
- part ddDrugConcentrationLoHd : DataDefinition {
478
+ item ddDrugConcentrationLoHd : InterfaceItem {
479
+ attribute :>> itemKind = InterfaceItemKind::data;
461
480
  attribute :>> id = "DD-034";
462
481
  attribute :>> name = "DrugConcentration_lo_hd";
463
482
  attribute :>> description = "Minimum concentration of the drug in a solution that can safely be used for infusion for DrugName_hd.";
@@ -468,7 +487,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
468
487
  attribute :>> encoding = "Positive Integer";
469
488
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
470
489
  }
471
- part ddVTBIHiHd : DataDefinition {
490
+ item ddVTBIHiHd : InterfaceItem {
491
+ attribute :>> itemKind = InterfaceItemKind::data;
472
492
  attribute :>> id = "DD-035";
473
493
  attribute :>> name = "VTBI_hi_hd";
474
494
  attribute :>> description = "Maximum volume of drug that is safe to be infused for DrugName_hd.";
@@ -479,7 +499,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
479
499
  attribute :>> encoding = "Positive Integer";
480
500
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
481
501
  }
482
- part ddVTBILoHd : DataDefinition {
502
+ item ddVTBILoHd : InterfaceItem {
503
+ attribute :>> itemKind = InterfaceItemKind::data;
483
504
  attribute :>> id = "DD-036";
484
505
  attribute :>> name = "VTBI_lo_hd";
485
506
  attribute :>> description = "Minimum volume of drug that is safe to be infused for DrugName_hd.";
@@ -490,7 +511,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
490
511
  attribute :>> encoding = "Positive Integer";
491
512
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
492
513
  }
493
- part ddFlowRateHiHd : DataDefinition {
514
+ item ddFlowRateHiHd : InterfaceItem {
515
+ attribute :>> itemKind = InterfaceItemKind::data;
494
516
  attribute :>> id = "DD-037";
495
517
  attribute :>> name = "FlowRate_hi_hd";
496
518
  attribute :>> description = "Maximum safe flow rate of the drug for DrugName_hd.";
@@ -501,7 +523,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
501
523
  attribute :>> encoding = "Positive Integer";
502
524
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
503
525
  }
504
- part ddFlowRateLoHd : DataDefinition {
526
+ item ddFlowRateLoHd : InterfaceItem {
527
+ attribute :>> itemKind = InterfaceItemKind::data;
505
528
  attribute :>> id = "DD-038";
506
529
  attribute :>> name = "FlowRate_lo_hd";
507
530
  attribute :>> description = "Minimum safe flow rate of the drug for DrugName_hd.";
@@ -512,7 +535,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
512
535
  attribute :>> encoding = "Positive Integer";
513
536
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
514
537
  }
515
- part ddIntervalPbolusHd : DataDefinition {
538
+ item ddIntervalPbolusHd : InterfaceItem {
539
+ attribute :>> itemKind = InterfaceItemKind::data;
516
540
  attribute :>> id = "DD-039";
517
541
  attribute :>> name = "Interval_pbolus_hd";
518
542
  attribute :>> description = "Minimum safe interval between two consecutive patient bolus initiations for DrugName_hd.";
@@ -523,7 +547,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
523
547
  attribute :>> encoding = "Positive Integer";
524
548
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
525
549
  }
526
- part ddNumberMaxPbolusHd : DataDefinition {
550
+ item ddNumberMaxPbolusHd : InterfaceItem {
551
+ attribute :>> itemKind = InterfaceItemKind::data;
527
552
  attribute :>> id = "DD-040";
528
553
  attribute :>> name = "NumberMax_pbolus_hd";
529
554
  attribute :>> description = "Maximum number of patient bolus initiations safe to be self-administered for DrugName_hd.";
@@ -534,7 +559,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
534
559
  attribute :>> encoding = "Positive Integer";
535
560
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
536
561
  }
537
- part ddFlowRateKvoHd : DataDefinition {
562
+ item ddFlowRateKvoHd : InterfaceItem {
563
+ attribute :>> itemKind = InterfaceItemKind::data;
538
564
  attribute :>> id = "DD-041";
539
565
  attribute :>> name = "FlowRate_kvo_hd";
540
566
  attribute :>> description = "Minimum flow rate of DrugName_hd that should be maintained to keep the vein open (KVO); default 0.1.";
@@ -551,9 +577,11 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
551
577
  attribute :>> id = "CE-001";
552
578
  attribute :>> name = "SensorStatusVectorExchange";
553
579
  attribute :>> exchangeKind = FlowKind::measurement;
554
- attribute :>> sourcePort = "HW-001: GPCA_HW_Sensors";
555
- attribute :>> targetPort = "GPCA_SW.SENSOR_IN (PORT-04)";
556
- attribute :>> allocatedFunctionalExchanges = "LF-001: SensorAcquisitionFlow";
580
+ ref :>> sourceEndpoint = gpcaDeviceSensors;
581
+ attribute :>> sourcePortPath = "HW-001: GPCA_HW_Sensors";
582
+ ref :>> targetEndpoint = portSensorIn;
583
+ attribute :>> targetPortPath = "GPCA_SW.SENSOR_IN (PORT-04)";
584
+ ref :>> allocatedExchanges = lfSensorAcquisition;
557
585
  attribute :>> direction = DirectionKind::input;
558
586
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
559
587
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_Device.aadl";
@@ -562,9 +590,11 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
562
590
  attribute :>> id = "CE-002";
563
591
  attribute :>> name = "FlowCommandExchange";
564
592
  attribute :>> exchangeKind = FlowKind::command;
565
- attribute :>> sourcePort = "GPCA_SW.GPCA_SW_OUT (Commanded_Flow_Rate)";
566
- attribute :>> targetPort = "HW-003: PumpMotorAssembly";
567
- attribute :>> allocatedFunctionalExchanges = "LF-002: FlowCommandFlow";
593
+ ref :>> sourceEndpoint = portGpcaSwOut;
594
+ attribute :>> sourcePortPath = "GPCA_SW.GPCA_SW_OUT (Commanded_Flow_Rate)";
595
+ ref :>> targetEndpoint = pumpMotorAssembly;
596
+ attribute :>> targetPortPath = "HW-003: PumpMotorAssembly";
597
+ ref :>> allocatedExchanges = lfFlowCommand;
568
598
  attribute :>> direction = DirectionKind::output;
569
599
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
570
600
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_Device.aadl";
@@ -573,9 +603,11 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
573
603
  attribute :>> id = "CE-003";
574
604
  attribute :>> name = "AlarmAnnunciationExchange";
575
605
  attribute :>> exchangeKind = FlowKind::alarm;
576
- attribute :>> sourcePort = "GPCA_SW.GPCA_SW_OUT (Notification_Message, Is_Audio_Disabled)";
577
- attribute :>> targetPort = "HW-004: AudibleAlarmAnnunciator / HW-005: OperatorDisplay";
578
- attribute :>> allocatedFunctionalExchanges = "LF-003: AlarmSignalFlow";
606
+ ref :>> sourceEndpoint = portGpcaSwOut;
607
+ attribute :>> sourcePortPath = "GPCA_SW.GPCA_SW_OUT (Notification_Message, Is_Audio_Disabled)";
608
+ ref :>> targetEndpoint = audibleAlarm;
609
+ attribute :>> targetPortPath = "HW-004: AudibleAlarmAnnunciator / HW-005: OperatorDisplay";
610
+ ref :>> allocatedExchanges = lfAlarmSignal;
579
611
  attribute :>> direction = DirectionKind::output;
580
612
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
581
613
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_Device.aadl";
@@ -584,9 +616,11 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
584
616
  attribute :>> id = "CE-004";
585
617
  attribute :>> name = "PrescriptionEntryExchange";
586
618
  attribute :>> exchangeKind = FlowKind::configuration;
587
- attribute :>> sourcePort = "HW-012: OperatorKeypad";
588
- attribute :>> targetPort = "GPCA_SW.PRES_IN / GPCA_SW.OP_CMD_IN (PORT-02, PORT-01)";
589
- attribute :>> allocatedFunctionalExchanges = "LF-004: PrescriptionEntryFlow";
619
+ ref :>> sourceEndpoint = operatorKeypad;
620
+ attribute :>> sourcePortPath = "HW-012: OperatorKeypad";
621
+ ref :>> targetEndpoint = portPresIn;
622
+ attribute :>> targetPortPath = "GPCA_SW.PRES_IN / GPCA_SW.OP_CMD_IN (PORT-02, PORT-01)";
623
+ ref :>> allocatedExchanges = lfPrescriptionEntry;
590
624
  attribute :>> direction = DirectionKind::input;
591
625
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
592
626
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_Device.aadl";
@@ -656,8 +690,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
656
690
  part ceOpCmdToTlm : ComponentExchange {
657
691
  attribute :>> id = "CE-101"; attribute :>> name = "OP_CMDtoTLM";
658
692
  attribute :>> exchangeKind = FlowKind::command;
659
- attribute :>> sourcePort = "OP_CMD_IN";
660
- attribute :>> targetPort = "TLM.OP_CMD_IN";
693
+ ref :>> sourceEndpoint = portOpCmdIn;
694
+ attribute :>> sourcePortPath = "OP_CMD_IN";
695
+ ref :>> targetEndpoint = tlm;
696
+ attribute :>> targetPortPath = "TLM.OP_CMD_IN";
661
697
  attribute :>> direction = DirectionKind::input;
662
698
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
663
699
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -665,8 +701,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
665
701
  part ceConstToTlm : ComponentExchange {
666
702
  attribute :>> id = "CE-102"; attribute :>> name = "CONSTtoTLM";
667
703
  attribute :>> exchangeKind = FlowKind::configuration;
668
- attribute :>> sourcePort = "CONST_IN";
669
- attribute :>> targetPort = "TLM.CONST_IN";
704
+ ref :>> sourceEndpoint = portConstIn;
705
+ attribute :>> sourcePortPath = "CONST_IN";
706
+ ref :>> targetEndpoint = tlm;
707
+ attribute :>> targetPortPath = "TLM.CONST_IN";
670
708
  attribute :>> direction = DirectionKind::input;
671
709
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
672
710
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -674,32 +712,40 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
674
712
  part ceTlmOutToOutput : ComponentExchange {
675
713
  attribute :>> id = "CE-103"; attribute :>> name = "TLM_OUT_toOUTPUT";
676
714
  attribute :>> exchangeKind = FlowKind::status;
677
- attribute :>> sourcePort = "TLM.TLM_MODE_OUT";
678
- attribute :>> targetPort = "OUTPUT.TLM_MODE_IN";
715
+ ref :>> sourceEndpoint = tlm;
716
+ attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
717
+ ref :>> targetEndpoint = outputBus;
718
+ attribute :>> targetPortPath = "OUTPUT.TLM_MODE_IN";
679
719
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
680
720
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
681
721
  }
682
722
  part ceImToSysStat : ComponentExchange {
683
723
  attribute :>> id = "CE-104"; attribute :>> name = "IM_to_SYS_STAT";
684
724
  attribute :>> exchangeKind = FlowKind::status;
685
- attribute :>> sourcePort = "IM.IM_OUT";
686
- attribute :>> targetPort = "SYS_STAT.IM_IN";
725
+ ref :>> sourceEndpoint = infusionMgr;
726
+ attribute :>> sourcePortPath = "IM.IM_OUT";
727
+ ref :>> targetEndpoint = systemStatus;
728
+ attribute :>> targetPortPath = "SYS_STAT.IM_IN";
687
729
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
688
730
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
689
731
  }
690
732
  part ceTlmToSysStat : ComponentExchange {
691
733
  attribute :>> id = "CE-105"; attribute :>> name = "TLM_to_SYS_STAT";
692
734
  attribute :>> exchangeKind = FlowKind::status;
693
- attribute :>> sourcePort = "TLM.TLM_MODE_OUT";
694
- attribute :>> targetPort = "SYS_STAT.TLM_MODE_IN";
735
+ ref :>> sourceEndpoint = tlm;
736
+ attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
737
+ ref :>> targetEndpoint = systemStatus;
738
+ attribute :>> targetPortPath = "SYS_STAT.TLM_MODE_IN";
695
739
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
696
740
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
697
741
  }
698
742
  part ceSensorToSysStat : ComponentExchange {
699
743
  attribute :>> id = "CE-106"; attribute :>> name = "SENSOR_to_SYS_STAT";
700
744
  attribute :>> exchangeKind = FlowKind::measurement;
701
- attribute :>> sourcePort = "SENSOR_IN";
702
- attribute :>> targetPort = "SYS_STAT.SENSOR_IN";
745
+ ref :>> sourceEndpoint = portSensorIn;
746
+ attribute :>> sourcePortPath = "SENSOR_IN";
747
+ ref :>> targetEndpoint = systemStatus;
748
+ attribute :>> targetPortPath = "SYS_STAT.SENSOR_IN";
703
749
  attribute :>> direction = DirectionKind::input;
704
750
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
705
751
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -707,8 +753,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
707
753
  part ceConstToSysStat : ComponentExchange {
708
754
  attribute :>> id = "CE-107"; attribute :>> name = "CONST_to_SYS_STAT";
709
755
  attribute :>> exchangeKind = FlowKind::configuration;
710
- attribute :>> sourcePort = "CONST_IN";
711
- attribute :>> targetPort = "SYS_STAT.CONST_IN";
756
+ ref :>> sourceEndpoint = portConstIn;
757
+ attribute :>> sourcePortPath = "CONST_IN";
758
+ ref :>> targetEndpoint = systemStatus;
759
+ attribute :>> targetPortPath = "SYS_STAT.CONST_IN";
712
760
  attribute :>> direction = DirectionKind::input;
713
761
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
714
762
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -716,48 +764,60 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
716
764
  part ceConfigToSysStat : ComponentExchange {
717
765
  attribute :>> id = "CE-108"; attribute :>> name = "CONFIG_to_SYS_STAT";
718
766
  attribute :>> exchangeKind = FlowKind::configuration;
719
- attribute :>> sourcePort = "CONFIG.CONFIG_OUT";
720
- attribute :>> targetPort = "SYS_STAT.CONFIG_IN";
767
+ ref :>> sourceEndpoint = config;
768
+ attribute :>> sourcePortPath = "CONFIG.CONFIG_OUT";
769
+ ref :>> targetEndpoint = systemStatus;
770
+ attribute :>> targetPortPath = "SYS_STAT.CONFIG_IN";
721
771
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
722
772
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
723
773
  }
724
774
  part ceSysStatOutToOutput : ComponentExchange {
725
775
  attribute :>> id = "CE-109"; attribute :>> name = "SYS_STAT_OUT_toOUTPUT";
726
776
  attribute :>> exchangeKind = FlowKind::status;
727
- attribute :>> sourcePort = "SYS_STAT.SYS_STAT_OUT";
728
- attribute :>> targetPort = "OUTPUT.SYS_STAT_IN";
777
+ ref :>> sourceEndpoint = systemStatus;
778
+ attribute :>> sourcePortPath = "SYS_STAT.SYS_STAT_OUT";
779
+ ref :>> targetEndpoint = outputBus;
780
+ attribute :>> targetPortPath = "OUTPUT.SYS_STAT_IN";
729
781
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
730
782
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
731
783
  }
732
784
  part ceImToAlarm : ComponentExchange {
733
785
  attribute :>> id = "CE-110"; attribute :>> name = "IM_to_ALARM";
734
786
  attribute :>> exchangeKind = FlowKind::status;
735
- attribute :>> sourcePort = "IM.IM_OUT";
736
- attribute :>> targetPort = "ALARM.IM_IN";
787
+ ref :>> sourceEndpoint = infusionMgr;
788
+ attribute :>> sourcePortPath = "IM.IM_OUT";
789
+ ref :>> targetEndpoint = alarm;
790
+ attribute :>> targetPortPath = "ALARM.IM_IN";
737
791
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
738
792
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
739
793
  }
740
794
  part ceTlmToAlarm : ComponentExchange {
741
795
  attribute :>> id = "CE-111"; attribute :>> name = "TLM_to_ALARM";
742
796
  attribute :>> exchangeKind = FlowKind::status;
743
- attribute :>> sourcePort = "TLM.TLM_MODE_OUT";
744
- attribute :>> targetPort = "ALARM.TLM_MODE_IN";
797
+ ref :>> sourceEndpoint = tlm;
798
+ attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
799
+ ref :>> targetEndpoint = alarm;
800
+ attribute :>> targetPortPath = "ALARM.TLM_MODE_IN";
745
801
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
746
802
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
747
803
  }
748
804
  part ceSysMonToAlarm : ComponentExchange {
749
805
  attribute :>> id = "CE-112"; attribute :>> name = "SYS_MON_to_ALARM";
750
806
  attribute :>> exchangeKind = FlowKind::status;
751
- attribute :>> sourcePort = "SYS_MON.SYS_MON_OUT";
752
- attribute :>> targetPort = "ALARM.SYS_MON_IN";
807
+ ref :>> sourceEndpoint = systemMonitor;
808
+ attribute :>> sourcePortPath = "SYS_MON.SYS_MON_OUT";
809
+ ref :>> targetEndpoint = alarm;
810
+ attribute :>> targetPortPath = "ALARM.SYS_MON_IN";
753
811
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
754
812
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
755
813
  }
756
814
  part ceOpCmdToAlarm : ComponentExchange {
757
815
  attribute :>> id = "CE-113"; attribute :>> name = "OP_CMD_to_ALARM";
758
816
  attribute :>> exchangeKind = FlowKind::command;
759
- attribute :>> sourcePort = "OP_CMD_IN";
760
- attribute :>> targetPort = "ALARM.OP_CMD_IN";
817
+ ref :>> sourceEndpoint = portOpCmdIn;
818
+ attribute :>> sourcePortPath = "OP_CMD_IN";
819
+ ref :>> targetEndpoint = alarm;
820
+ attribute :>> targetPortPath = "ALARM.OP_CMD_IN";
761
821
  attribute :>> direction = DirectionKind::input;
762
822
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
763
823
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -765,8 +825,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
765
825
  part ceDbToAlarm : ComponentExchange {
766
826
  attribute :>> id = "CE-114"; attribute :>> name = "DB_to_ALARM";
767
827
  attribute :>> exchangeKind = FlowKind::configuration;
768
- attribute :>> sourcePort = "DB_IN";
769
- attribute :>> targetPort = "ALARM.DB_IN";
828
+ ref :>> sourceEndpoint = portDbIn;
829
+ attribute :>> sourcePortPath = "DB_IN";
830
+ ref :>> targetEndpoint = alarm;
831
+ attribute :>> targetPortPath = "ALARM.DB_IN";
770
832
  attribute :>> direction = DirectionKind::input;
771
833
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
772
834
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -774,8 +836,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
774
836
  part ceSensorToAlarm : ComponentExchange {
775
837
  attribute :>> id = "CE-115"; attribute :>> name = "SENSOR_to_ALARM";
776
838
  attribute :>> exchangeKind = FlowKind::measurement;
777
- attribute :>> sourcePort = "SENSOR_IN";
778
- attribute :>> targetPort = "ALARM.SENSOR_IN";
839
+ ref :>> sourceEndpoint = portSensorIn;
840
+ attribute :>> sourcePortPath = "SENSOR_IN";
841
+ ref :>> targetEndpoint = alarm;
842
+ attribute :>> targetPortPath = "ALARM.SENSOR_IN";
779
843
  attribute :>> direction = DirectionKind::input;
780
844
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
781
845
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -783,8 +847,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
783
847
  part ceConstToAlarm : ComponentExchange {
784
848
  attribute :>> id = "CE-116"; attribute :>> name = "CONST_to_ALARM";
785
849
  attribute :>> exchangeKind = FlowKind::configuration;
786
- attribute :>> sourcePort = "CONST_IN";
787
- attribute :>> targetPort = "ALARM.CONST_IN";
850
+ ref :>> sourceEndpoint = portConstIn;
851
+ attribute :>> sourcePortPath = "CONST_IN";
852
+ ref :>> targetEndpoint = alarm;
853
+ attribute :>> targetPortPath = "ALARM.CONST_IN";
788
854
  attribute :>> direction = DirectionKind::input;
789
855
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
790
856
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -792,40 +858,50 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
792
858
  part ceSysStatToAlarm : ComponentExchange {
793
859
  attribute :>> id = "CE-117"; attribute :>> name = "SYS_STAT_to_ALARM";
794
860
  attribute :>> exchangeKind = FlowKind::status;
795
- attribute :>> sourcePort = "SYS_STAT.SYS_STAT_OUT";
796
- attribute :>> targetPort = "ALARM.SYS_STAT_IN";
861
+ ref :>> sourceEndpoint = systemStatus;
862
+ attribute :>> sourcePortPath = "SYS_STAT.SYS_STAT_OUT";
863
+ ref :>> targetEndpoint = alarm;
864
+ attribute :>> targetPortPath = "ALARM.SYS_STAT_IN";
797
865
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
798
866
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
799
867
  }
800
868
  part ceConfigToAlarm : ComponentExchange {
801
869
  attribute :>> id = "CE-118"; attribute :>> name = "CONFIG_to_ALARM";
802
870
  attribute :>> exchangeKind = FlowKind::configuration;
803
- attribute :>> sourcePort = "CONFIG.CONFIG_OUT";
804
- attribute :>> targetPort = "ALARM.CONFIG_IN";
871
+ ref :>> sourceEndpoint = config;
872
+ attribute :>> sourcePortPath = "CONFIG.CONFIG_OUT";
873
+ ref :>> targetEndpoint = alarm;
874
+ attribute :>> targetPortPath = "ALARM.CONFIG_IN";
805
875
  attribute :>> timingSemantics = "sampled (no timing property in source; AADL default breaks the feedback cycle)";
806
876
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
807
877
  }
808
878
  part ceAlarmOutToOutput : ComponentExchange {
809
879
  attribute :>> id = "CE-119"; attribute :>> name = "ALARM_OUT_toOUTPUT";
810
880
  attribute :>> exchangeKind = FlowKind::alarm;
811
- attribute :>> sourcePort = "ALARM.ALARM_OUT";
812
- attribute :>> targetPort = "OUTPUT.ALARM_IN";
881
+ ref :>> sourceEndpoint = alarm;
882
+ attribute :>> sourcePortPath = "ALARM.ALARM_OUT";
883
+ ref :>> targetEndpoint = outputBus;
884
+ attribute :>> targetPortPath = "OUTPUT.ALARM_IN";
813
885
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
814
886
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
815
887
  }
816
888
  part ceTlmToConfig : ComponentExchange {
817
889
  attribute :>> id = "CE-120"; attribute :>> name = "TLM_to_CONFIG";
818
890
  attribute :>> exchangeKind = FlowKind::status;
819
- attribute :>> sourcePort = "TLM.TLM_MODE_OUT";
820
- attribute :>> targetPort = "CONFIG.TLM_MODE_IN";
891
+ ref :>> sourceEndpoint = tlm;
892
+ attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
893
+ ref :>> targetEndpoint = config;
894
+ attribute :>> targetPortPath = "CONFIG.TLM_MODE_IN";
821
895
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
822
896
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
823
897
  }
824
898
  part cePresToConfig : ComponentExchange {
825
899
  attribute :>> id = "CE-121"; attribute :>> name = "PRES_to_CONFIG";
826
900
  attribute :>> exchangeKind = FlowKind::configuration;
827
- attribute :>> sourcePort = "PRES_IN";
828
- attribute :>> targetPort = "CONFIG.PRES_IN";
901
+ ref :>> sourceEndpoint = portPresIn;
902
+ attribute :>> sourcePortPath = "PRES_IN";
903
+ ref :>> targetEndpoint = config;
904
+ attribute :>> targetPortPath = "CONFIG.PRES_IN";
829
905
  attribute :>> direction = DirectionKind::input;
830
906
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
831
907
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -833,8 +909,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
833
909
  part ceOpCmdToConfig : ComponentExchange {
834
910
  attribute :>> id = "CE-122"; attribute :>> name = "OP_CMD_to_CONFIG";
835
911
  attribute :>> exchangeKind = FlowKind::command;
836
- attribute :>> sourcePort = "OP_CMD_IN";
837
- attribute :>> targetPort = "CONFIG.OP_CMD_IN";
912
+ ref :>> sourceEndpoint = portOpCmdIn;
913
+ attribute :>> sourcePortPath = "OP_CMD_IN";
914
+ ref :>> targetEndpoint = config;
915
+ attribute :>> targetPortPath = "CONFIG.OP_CMD_IN";
838
916
  attribute :>> direction = DirectionKind::input;
839
917
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
840
918
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -842,8 +920,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
842
920
  part ceDbToConfig : ComponentExchange {
843
921
  attribute :>> id = "CE-123"; attribute :>> name = "DB_to_CONFIG";
844
922
  attribute :>> exchangeKind = FlowKind::configuration;
845
- attribute :>> sourcePort = "DB_IN";
846
- attribute :>> targetPort = "CONFIG.DB_IN";
923
+ ref :>> sourceEndpoint = portDbIn;
924
+ attribute :>> sourcePortPath = "DB_IN";
925
+ ref :>> targetEndpoint = config;
926
+ attribute :>> targetPortPath = "CONFIG.DB_IN";
847
927
  attribute :>> direction = DirectionKind::input;
848
928
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
849
929
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -851,8 +931,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
851
931
  part ceConsToConfig : ComponentExchange {
852
932
  attribute :>> id = "CE-124"; attribute :>> name = "CONS_to_CONFIG";
853
933
  attribute :>> exchangeKind = FlowKind::configuration;
854
- attribute :>> sourcePort = "CONST_IN";
855
- attribute :>> targetPort = "CONFIG.CONST_IN";
934
+ ref :>> sourceEndpoint = portConstIn;
935
+ attribute :>> sourcePortPath = "CONST_IN";
936
+ ref :>> targetEndpoint = config;
937
+ attribute :>> targetPortPath = "CONFIG.CONST_IN";
856
938
  attribute :>> direction = DirectionKind::input;
857
939
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
858
940
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -860,32 +942,40 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
860
942
  part ceSysStatToConfig : ComponentExchange {
861
943
  attribute :>> id = "CE-125"; attribute :>> name = "SYS_STAT_to_CONFIG";
862
944
  attribute :>> exchangeKind = FlowKind::status;
863
- attribute :>> sourcePort = "SYS_STAT.SYS_STAT_OUT";
864
- attribute :>> targetPort = "CONFIG.SYS_STAT_IN";
945
+ ref :>> sourceEndpoint = systemStatus;
946
+ attribute :>> sourcePortPath = "SYS_STAT.SYS_STAT_OUT";
947
+ ref :>> targetEndpoint = config;
948
+ attribute :>> targetPortPath = "CONFIG.SYS_STAT_IN";
865
949
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
866
950
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
867
951
  }
868
952
  part ceConfigToOutput : ComponentExchange {
869
953
  attribute :>> id = "CE-126"; attribute :>> name = "CONFIG_toOUTPUT";
870
954
  attribute :>> exchangeKind = FlowKind::configuration;
871
- attribute :>> sourcePort = "CONFIG.CONFIG_OUT";
872
- attribute :>> targetPort = "OUTPUT.CONFIG_IN";
955
+ ref :>> sourceEndpoint = config;
956
+ attribute :>> sourcePortPath = "CONFIG.CONFIG_OUT";
957
+ ref :>> targetEndpoint = outputBus;
958
+ attribute :>> targetPortPath = "OUTPUT.CONFIG_IN";
873
959
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
874
960
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
875
961
  }
876
962
  part ceTlmToIm : ComponentExchange {
877
963
  attribute :>> id = "CE-127"; attribute :>> name = "TLM_to_IM";
878
964
  attribute :>> exchangeKind = FlowKind::status;
879
- attribute :>> sourcePort = "TLM.TLM_MODE_OUT";
880
- attribute :>> targetPort = "IM.TLM_MODE_IN";
965
+ ref :>> sourceEndpoint = tlm;
966
+ attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
967
+ ref :>> targetEndpoint = infusionMgr;
968
+ attribute :>> targetPortPath = "IM.TLM_MODE_IN";
881
969
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
882
970
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
883
971
  }
884
972
  part ceOpCmdToIm : ComponentExchange {
885
973
  attribute :>> id = "CE-128"; attribute :>> name = "OP_CMD_to_IM";
886
974
  attribute :>> exchangeKind = FlowKind::command;
887
- attribute :>> sourcePort = "OP_CMD_IN";
888
- attribute :>> targetPort = "IM.OP_CMD_IN";
975
+ ref :>> sourceEndpoint = portOpCmdIn;
976
+ attribute :>> sourcePortPath = "OP_CMD_IN";
977
+ ref :>> targetEndpoint = infusionMgr;
978
+ attribute :>> targetPortPath = "IM.OP_CMD_IN";
889
979
  attribute :>> direction = DirectionKind::input;
890
980
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
891
981
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -893,8 +983,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
893
983
  part cePatientToIm : ComponentExchange {
894
984
  attribute :>> id = "CE-129"; attribute :>> name = "PATIENT_to_IM";
895
985
  attribute :>> exchangeKind = FlowKind::command;
896
- attribute :>> sourcePort = "PATIENT_IN";
897
- attribute :>> targetPort = "IM.PATIENT_IN";
986
+ ref :>> sourceEndpoint = portPatientIn;
987
+ attribute :>> sourcePortPath = "PATIENT_IN";
988
+ ref :>> targetEndpoint = infusionMgr;
989
+ attribute :>> targetPortPath = "IM.PATIENT_IN";
898
990
  attribute :>> direction = DirectionKind::input;
899
991
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
900
992
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
@@ -902,110 +994,137 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
902
994
  part ceConfigToIm : ComponentExchange {
903
995
  attribute :>> id = "CE-130"; attribute :>> name = "CONFIG_to_IM";
904
996
  attribute :>> exchangeKind = FlowKind::configuration;
905
- attribute :>> sourcePort = "CONFIG.CONFIG_OUT";
906
- attribute :>> targetPort = "IM.CONFIG_IN";
997
+ ref :>> sourceEndpoint = config;
998
+ attribute :>> sourcePortPath = "CONFIG.CONFIG_OUT";
999
+ ref :>> targetEndpoint = infusionMgr;
1000
+ attribute :>> targetPortPath = "IM.CONFIG_IN";
907
1001
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
908
1002
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
909
1003
  }
910
1004
  part ceAlarmToIm : ComponentExchange {
911
1005
  attribute :>> id = "CE-131"; attribute :>> name = "ALARM_to_IM";
912
1006
  attribute :>> exchangeKind = FlowKind::alarm;
913
- attribute :>> sourcePort = "ALARM.ALARM_OUT";
914
- attribute :>> targetPort = "IM.ALARM_IN";
1007
+ ref :>> sourceEndpoint = alarm;
1008
+ attribute :>> sourcePortPath = "ALARM.ALARM_OUT";
1009
+ ref :>> targetEndpoint = infusionMgr;
1010
+ attribute :>> targetPortPath = "IM.ALARM_IN";
915
1011
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
916
1012
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
917
1013
  }
918
1014
  part ceSysStatToIm : ComponentExchange {
919
1015
  attribute :>> id = "CE-132"; attribute :>> name = "SYS_STAT_to_IM";
920
1016
  attribute :>> exchangeKind = FlowKind::status;
921
- attribute :>> sourcePort = "SYS_STAT.SYS_STAT_OUT";
922
- attribute :>> targetPort = "IM.SYS_STAT_IN";
1017
+ ref :>> sourceEndpoint = systemStatus;
1018
+ attribute :>> sourcePortPath = "SYS_STAT.SYS_STAT_OUT";
1019
+ ref :>> targetEndpoint = infusionMgr;
1020
+ attribute :>> targetPortPath = "IM.SYS_STAT_IN";
923
1021
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
924
1022
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
925
1023
  }
926
1024
  part ceImToOutput : ComponentExchange {
927
1025
  attribute :>> id = "CE-133"; attribute :>> name = "IM_toOUTPUT";
928
1026
  attribute :>> exchangeKind = FlowKind::status;
929
- attribute :>> sourcePort = "IM.IM_OUT";
930
- attribute :>> targetPort = "OUTPUT.IM_IN";
1027
+ ref :>> sourceEndpoint = infusionMgr;
1028
+ attribute :>> sourcePortPath = "IM.IM_OUT";
1029
+ ref :>> targetEndpoint = outputBus;
1030
+ attribute :>> targetPortPath = "OUTPUT.IM_IN";
931
1031
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
932
1032
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
933
1033
  }
934
1034
  part ceTlmToSysMon : ComponentExchange {
935
1035
  attribute :>> id = "CE-134"; attribute :>> name = "TLM_to_SYS_MON";
936
1036
  attribute :>> exchangeKind = FlowKind::status;
937
- attribute :>> sourcePort = "TLM.TLM_MODE_OUT";
938
- attribute :>> targetPort = "SYS_MON.TLM_MODE_IN";
1037
+ ref :>> sourceEndpoint = tlm;
1038
+ attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
1039
+ ref :>> targetEndpoint = systemMonitor;
1040
+ attribute :>> targetPortPath = "SYS_MON.TLM_MODE_IN";
939
1041
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
940
1042
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
941
1043
  }
942
1044
  part ceSysMonToOutput : ComponentExchange {
943
1045
  attribute :>> id = "CE-135"; attribute :>> name = "SYS_MON_toOUTPUT";
944
1046
  attribute :>> exchangeKind = FlowKind::status;
945
- attribute :>> sourcePort = "SYS_MON.SYS_MON_OUT";
946
- attribute :>> targetPort = "OUTPUT.SYS_MON_IN";
1047
+ ref :>> sourceEndpoint = systemMonitor;
1048
+ attribute :>> sourcePortPath = "SYS_MON.SYS_MON_OUT";
1049
+ ref :>> targetEndpoint = outputBus;
1050
+ attribute :>> targetPortPath = "OUTPUT.SYS_MON_IN";
947
1051
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
948
1052
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
949
1053
  }
950
1054
  part ceTlmToLog : ComponentExchange {
951
1055
  attribute :>> id = "CE-136"; attribute :>> name = "TLM_to_LOG";
952
1056
  attribute :>> exchangeKind = FlowKind::status;
953
- attribute :>> sourcePort = "TLM.TLM_MODE_OUT";
954
- attribute :>> targetPort = "LOG.TLM_MODE_IN";
1057
+ ref :>> sourceEndpoint = tlm;
1058
+ attribute :>> sourcePortPath = "TLM.TLM_MODE_OUT";
1059
+ ref :>> targetEndpoint = logging;
1060
+ attribute :>> targetPortPath = "LOG.TLM_MODE_IN";
955
1061
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
956
1062
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
957
1063
  }
958
1064
  part ceConfigToLog : ComponentExchange {
959
1065
  attribute :>> id = "CE-137"; attribute :>> name = "CONFIG_to_LOG";
960
1066
  attribute :>> exchangeKind = FlowKind::configuration;
961
- attribute :>> sourcePort = "CONFIG.CONFIG_OUT";
962
- attribute :>> targetPort = "LOG.CONFIG_IN";
1067
+ ref :>> sourceEndpoint = config;
1068
+ attribute :>> sourcePortPath = "CONFIG.CONFIG_OUT";
1069
+ ref :>> targetEndpoint = logging;
1070
+ attribute :>> targetPortPath = "LOG.CONFIG_IN";
963
1071
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
964
1072
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
965
1073
  }
966
1074
  part ceAlarmToLog : ComponentExchange {
967
1075
  attribute :>> id = "CE-138"; attribute :>> name = "ALARM_to_LOG";
968
1076
  attribute :>> exchangeKind = FlowKind::alarm;
969
- attribute :>> sourcePort = "ALARM.ALARM_OUT";
970
- attribute :>> targetPort = "LOG.ALARM_IN";
1077
+ ref :>> sourceEndpoint = alarm;
1078
+ attribute :>> sourcePortPath = "ALARM.ALARM_OUT";
1079
+ ref :>> targetEndpoint = logging;
1080
+ attribute :>> targetPortPath = "LOG.ALARM_IN";
971
1081
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
972
1082
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
973
1083
  }
974
1084
  part ceSysStatToLog : ComponentExchange {
975
1085
  attribute :>> id = "CE-139"; attribute :>> name = "SYS_STAT_to_LOG";
976
1086
  attribute :>> exchangeKind = FlowKind::status;
977
- attribute :>> sourcePort = "SYS_STAT.SYS_STAT_OUT";
978
- attribute :>> targetPort = "LOG.SYS_STAT_IN";
1087
+ ref :>> sourceEndpoint = systemStatus;
1088
+ attribute :>> sourcePortPath = "SYS_STAT.SYS_STAT_OUT";
1089
+ ref :>> targetEndpoint = logging;
1090
+ attribute :>> targetPortPath = "LOG.SYS_STAT_IN";
979
1091
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
980
1092
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
981
1093
  }
982
1094
  part ceImToLog : ComponentExchange {
983
1095
  attribute :>> id = "CE-140"; attribute :>> name = "IM_to_LOG";
984
1096
  attribute :>> exchangeKind = FlowKind::status;
985
- attribute :>> sourcePort = "IM.IM_OUT";
986
- attribute :>> targetPort = "LOG.IM_IN";
1097
+ ref :>> sourceEndpoint = infusionMgr;
1098
+ attribute :>> sourcePortPath = "IM.IM_OUT";
1099
+ ref :>> targetEndpoint = logging;
1100
+ attribute :>> targetPortPath = "LOG.IM_IN";
987
1101
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
988
1102
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
989
1103
  }
990
1104
  part ceLogToOutput : ComponentExchange {
991
1105
  attribute :>> id = "CE-141"; attribute :>> name = "LOG_toOUTPUT";
992
1106
  attribute :>> exchangeKind = FlowKind::audit;
993
- attribute :>> sourcePort = "LOG.LOG_OUT";
994
- attribute :>> targetPort = "OUTPUT.LOG_IN";
1107
+ ref :>> sourceEndpoint = logging;
1108
+ attribute :>> sourcePortPath = "LOG.LOG_OUT";
1109
+ ref :>> targetEndpoint = outputBus;
1110
+ attribute :>> targetPortPath = "OUTPUT.LOG_IN";
995
1111
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
996
1112
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
997
1113
  }
998
1114
  part ceOutputToGpcaOut : ComponentExchange {
999
1115
  attribute :>> id = "CE-142"; attribute :>> name = "OUTPUT_to_GPCA_OUT";
1000
1116
  attribute :>> exchangeKind = FlowKind::status;
1001
- attribute :>> sourcePort = "OUTPUT.GPCA_SW_OUT";
1002
- attribute :>> targetPort = "GPCA_SW_OUT";
1117
+ ref :>> sourceEndpoint = outputBus;
1118
+ attribute :>> sourcePortPath = "OUTPUT.GPCA_SW_OUT";
1119
+ ref :>> targetEndpoint = portGpcaSwOut;
1120
+ attribute :>> targetPortPath = "GPCA_SW_OUT";
1003
1121
  attribute :>> direction = DirectionKind::output;
1004
1122
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
1005
1123
  attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_SW.aadl (GPCA_SW.Impl)";
1006
1124
  }
1007
1125
  // ── Text macros (App. A.3 internal state variables) ─────────
1008
- part ddActualInfusionDurationMacro : DataDefinition {
1126
+ item ddActualInfusionDurationMacro : InterfaceItem {
1127
+ attribute :>> itemKind = InterfaceItemKind::data;
1009
1128
  attribute :>> id = "DD-042";
1010
1129
  attribute :>> name = "Actual_Infusion_Duration_macro";
1011
1130
  attribute :>> description = "Total duration the system has been in ACTIVE mode since infusion was initiated with the current prescription.";
@@ -1014,7 +1133,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
1014
1133
  attribute :>> encoding = "Time";
1015
1134
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros";
1016
1135
  }
1017
- part ddActualVolumeInfusedMacro : DataDefinition {
1136
+ item ddActualVolumeInfusedMacro : InterfaceItem {
1137
+ attribute :>> itemKind = InterfaceItemKind::data;
1018
1138
  attribute :>> id = "DD-043";
1019
1139
  attribute :>> name = "Actual_Volume_Infused_macro";
1020
1140
  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).";
@@ -1023,7 +1143,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
1023
1143
  attribute :>> encoding = "Positive Integer";
1024
1144
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros";
1025
1145
  }
1026
- part ddFlowRateModeMacro : DataDefinition {
1146
+ item ddFlowRateModeMacro : InterfaceItem {
1147
+ attribute :>> itemKind = InterfaceItemKind::data;
1027
1148
  attribute :>> id = "DD-044";
1028
1149
  attribute :>> name = "FlowRate_Mode_macro";
1029
1150
  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).";
@@ -1032,7 +1153,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
1032
1153
  attribute :>> encoding = "Positive Integer";
1033
1154
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros";
1034
1155
  }
1035
- part ddInhibitedInfusionMacro : DataDefinition {
1156
+ item ddInhibitedInfusionMacro : InterfaceItem {
1157
+ attribute :>> itemKind = InterfaceItemKind::data;
1036
1158
  attribute :>> id = "DD-045";
1037
1159
  attribute :>> name = "Inhibited_Infusion_macro";
1038
1160
  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.";
@@ -1041,7 +1163,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
1041
1163
  attribute :>> encoding = "Boolean";
1042
1164
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros";
1043
1165
  }
1044
- part ddInhibitedBolusMacro : DataDefinition {
1166
+ item ddInhibitedBolusMacro : InterfaceItem {
1167
+ attribute :>> itemKind = InterfaceItemKind::data;
1045
1168
  attribute :>> id = "DD-046";
1046
1169
  attribute :>> name = "Inhibited_Bolus_macro";
1047
1170
  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.";
@@ -1050,7 +1173,8 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
1050
1173
  attribute :>> encoding = "Boolean";
1051
1174
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), App. A.3 Text Macros";
1052
1175
  }
1053
- part ddInhibitedPatientBolusMacro : DataDefinition {
1176
+ item ddInhibitedPatientBolusMacro : InterfaceItem {
1177
+ attribute :>> itemKind = InterfaceItemKind::data;
1054
1178
  attribute :>> id = "DD-047";
1055
1179
  attribute :>> name = "Inhibited_PatientBolus_macro";
1056
1180
  attribute :>> description = "TRUE when the notification in effect requires PATIENT BOLUS inhibit ('Inhibit Patient Bolus' column of REQ 59); cleared on cancel or OFF.";