@startuml Vitals participant TD as TD participant SW as SW participant UI as UI actor USER as US 'Possible actions and interaction types ' External on CANBus ' TD -> SW: MSG: Message ' SW -> TD: MSG: Message ' Internal to the application ' XX -> YY: CMD: Command ' XX -> XX: ACT: Action ' External on OS/FS ' SW -> Script: ACT: Command ' Script -> OS: CMD: Command ' Script -> SW: MSG: Message ' OS -> Script: MSG: Message ' US -> UI: User actions are: ' ASK: Display a ' ENT: User enters a value or string ' TCH: User touches a button (RadioButton, CheckBox, ...) ' SCL: User scrolls a flip-able area == Vitals Sequence and Interval Schedule == US -> UI: TCH: Create Rx: Select Vitals Interval (Ex. 15 min) US -> UI: TCH: Validate and Confirm Rx UI -> SW: ACT: Start Timer SW -> SW: ACT: calculate time until next 15-min mark note left: e.g. if time is 10:07 → delay = 8 minutes SW -> UI: ACT: Update UI on current progress until next interval ... Time passes ... loop QTimer - Every 15 minutes group Interval Timeout SW --> SW: ... end end note right: Action runs at 10:15, 10:30, 10:45, etc... == Interval Timeout == SW -> UI: ACT: Notify UI timer interval timeout group Vitals (Automatic) UI --> UI: ... end US --> UI: ⟲: Wait For BP Cuff to get measurement note left: e.g. Requested at 10:15.\nMeasurement wait time may be range from 0-2 min. ... Time passes ... alt Accepted group Vitals_Data UI --> UI: ... end UI -> UI: ACT: Populate all UI fields with Vitals Data UI -> US: ACT: Display last read measurement date/time \ \n\t Animiate vitals heart icon \ \n\t Log Vitals note left: e.g. Log time may be at 10:15-10:17 else #Pink Rejected UI -> US: ACT: Prompt vitals popup \ \n\t Notify User displaying rejection reason group Vitals (Popup) UI --> UI: ... end end == Vitals (Automatic) == UI -> SW: ACT: Request Vitals SW -> TD: MSG: [x63: #0] Request Vitals TD -> SW: MSG: [x64: #2] \ \n\tResponse: \ \n\t(U32) mAccepted\ \n\t(U32) mReason SW -> UI: ACT: Vitals Response == Vitals (Popup) == US -> UI: TCH: Press Vitals Headerbar icon button\tor \ \nACT: Failed check for integrated blood pressure cuff group Manual US -> UI: ENT: Enter Vitals data \ \n\t-Systolic \ \n\t-Diastolic \ \n\t-HeartRate US -> UI: TCH: Press Confirm UI -> UI: ACT: Populate all UI fields with Vitals Data UI -> US: ACT: Display last recorded measurement date/time \ \n\t Animiate vitals heart icon \ \n\t Log Vitals end group Automatic US -> UI: TCH: Press Measure Vitals group Vitals (Automatic) UI --> UI: ... alt Accepted UI -> UI: ACT: Close Popup else #Pink Rejected UI -> US: ACT: Notify User displaying rejection reason end end end !include common_puml/Vitals_Data.puml @enduml