From 7cf5510401d3b553548f38c060c5ccaa7df98899 Mon Sep 17 00:00:00 2001 From: Raika Furude Date: Sat, 1 Nov 2025 15:19:24 -0400 Subject: [PATCH] updated with real triage methodology --- .../__pycache__/triage_engine.cpython-39.pyc | Bin 0 -> 14539 bytes vitallink/backend/server.py | 97 +- vitallink/backend/triage_engine.py | 723 +++++++ vitallink/logs/all_pids.txt | 4 - vitallink/logs/backend.log | 1807 ++++++++++++++--- vitallink/logs/backend.pid | 1 - vitallink/logs/dashboard.log | 2 +- vitallink/logs/dashboard.pid | 1 - vitallink/logs/kiosk.pid | 1 - vitallink/logs/wristbands.pid | 1 - .../wristband_simulator.cpython-39.pyc | Bin 13535 -> 13559 bytes vitallink/simulator/wristband_simulator.py | 6 +- 12 files changed, 2326 insertions(+), 317 deletions(-) create mode 100644 vitallink/backend/__pycache__/triage_engine.cpython-39.pyc create mode 100644 vitallink/backend/triage_engine.py delete mode 100644 vitallink/logs/all_pids.txt delete mode 100644 vitallink/logs/backend.pid delete mode 100644 vitallink/logs/dashboard.pid delete mode 100644 vitallink/logs/kiosk.pid delete mode 100644 vitallink/logs/wristbands.pid diff --git a/vitallink/backend/__pycache__/triage_engine.cpython-39.pyc b/vitallink/backend/__pycache__/triage_engine.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8b81e456531decf9f1994a9eb53ace8413155a68 GIT binary patch literal 14539 zcmcIrS!^81dG2d^4$cgRhbU3k_G&MUEm6CY?A?{MyQC;eqAgJ}N$t@-#?7fFIpkbh z-6M$|Dn2B`=OSw-Fk-J9NJbJzIsIVdAwU8nL4pKup7Ij(Ll7Vj0sUkkh+)gSt9*Y| zch8Wb)`{&5(SO(R*U?q~T}7u*$SL^!%PVH>i8)3256blZsCFEW_g9*tFvV7w%Cx%L zP;FJEv|iU5x~+?}Q8yYXJJm34vyrybqAXRF#2CSG6}a{+I43+jj$Bi}(KM{Ydn-#CwE2$_}u{*yHSpC5=7Fo_Zr??*{fkcQ-4K zDl2>5QofBjiyq#GviFZFJtc=wa(Gk87)p+8DtQ_u&-9kuP(*J>qw$Zi-c~wbND;OeL!_ho)G&HEX)b+-ufB ztUy_OvR7-=>JCpnmipeH`E5YVC>uHf17N0{2{V;S(`mSsN|>uu8ZFkTQ#xO%yxwu@ zQBAs1VXZ2P2hLBuJaxYEOl9iA)a==*naS6}epz(1^2)^Q%=FCJupkSLRVL0)&CZ8K znLS>axj1`a;{08O@4(0c+?zYH+-kT-8cyv9`tOMSJmOWCTdn$$s?+xTR?|Ilg=nD; zx;lJnuA4cs;8a)LCOaZYs^SV_8*8ue47wk{T+6F1HLWh2Y#hY&Hoi*WD1jz{X9+L@H2IB>6Zj;+ z5*|hQ%*6PAio_2l$7RV6CdQW*>Gxz@qD+o&&?;^0Cy*yF3@}q3;RU>Tkw8Cz5I5YzAQZbujV{hiPR-5`hAn!H@}iHz z+@*_0lYv5+jr*|kvQ{<-2j-_PTuN}oh=ZGpM3)jR?xP1SDH2o5iKb^jYb0cE;d5~W0&ayBSdAp~nq)p9r} z$qxnr+coa^Exs0)lN?bMoKzSE@fT1~HZ#Vu#<<+^qEhFNWKu~zNWA&wTf z>-fv)G1%eMA%`K>iM2uNkmG*GqmiRYIm|&P!JvDs3XOnnt%bVlGHP3N7FerMgY*@n z-|Jg;9cI;TTl)R4DcB?+R_T08t^U7wJTBKfs{-)FMT<6FYH1_GUvaA*aq%*vr z00HM>xm?j@P>{VrhKRN5uQeCZCnUb$Kd+nt&)1v<*LOYJsJ7b7HXRST%CXHVw2aH` z{PJ4c<-Ut0X*GiarpSGZ)iA#22F2AHYr1Q3-X5qm8l7gV+G@0+vw*}NkVhn%$B8y> z0mSm?vO;RaHQW@_PAcN9<82~uoK#4qh_s1x+RnIH*C0cTWkf!g`<>^?V-x;~`y zc0u%2Kwm{xyrr^!R)TTXALRzvAaW&lz|D`sJVd=T{RUZD$TX?(=OC%P;L*trC=&X- zE54waL52=i8XB$XhdHr06ZwoHSpUBNCPc(Bmd|F>13) zRq>C~q#q~ocs9VgvZDCvingk>UyaiGsv*(_%2QFfiFCRror!R=EozlTZ7!;%bl<9h z)l-9~CYRmns#RNr#$Jn-t>%Hgttxc7&=8sHgTlU=SBb~@EDF5c0E(VhbN4kZ_pYYr-qDQQ+nQ-= zDEmn;BJ`Ko>#?4u4`08N=&on|PV}rFrQ`LZbi96X8tW%k=*adfyaB1O(DAKi z%TLy;ob6dDQkc9T@(J~x_Vn@qU0@wY2ViGsH)Or5r(m9@N)t~r;;9wQxOK}kFN*} zV+)2AVVLOS%K{^{83VaAXfcBx{#4YPRDvWB5avnM-sSFC6aD&3;+QG?~8_%t^Ti0q1y3?L0 z2iYVWWXmaQ|Sd{C*6J+t`VWL*F4_a@6hIw}qdgzqoAyg^-*i#?=DOdXm|yA5+z zGWQnZ6>Q$6V8P~sf{E+P8Ycn^3-NkDc(~qHx*k|^{mLc`QZOD3q-X|sd_?U&!%?2z zyVRn1MzmmWj|_OAyYkSsCZk@13rMF5`-nu&l@;_VIYT0CM=Qj7oobwS>RCn%9a0#T+NB zDxOWh9CG7$ymtX&#Vge=+l{D(>87Dn(=OC2-ZGbUbIiDvW+`UgOd)F0N9r`H%d_+? zUBqAv)CfhpZ6A4-yJfOImcL1OMf4Dllw}330pb$1S1%G!(kTfwO_Oq^4=~ zL163^2IW7o9noLJKL5=hgHcI=nOZv5fcc~4r#F25(5%n1Dqhu9R1?1dR`tSbl&rdN;Hp#eE9ALXU?g^6qVWlAUDX7Le;Fjwcyv4-g9QGf z(l(crFM&vIL+-AtcQk&;*H$2fnZ_VzZyR?MX0X&Pxah!v)Ld8BwRQcA%AFMd95b&& zPTn@}D13Gu;kIWLKIt_>ecsWor`OZ0u$uC2 z%RV9fG*(PT_&(b9M6Yq;^L$*dt{4B{7FRn8V)WEAwn0 z@b)8=_=p^#Yy}Omu@rScxCWcHO!hHs`v<~53Er$Q$GjLr*lmZbHm^}|2=Sk4i@P$M z1K+}HH9-MM+c29%BO)uZHXb~7zP9KdCf^$NCZSuf3>jo2jC%%yo?M6Ek?BSQ&Ib7d zkW((d0y~uuxchpi2Db%HMLvozh#7@h3eJdlNmz_0R}qs7v&qExM?h{iTr(K@@Ozlc zDrC~On$hfDiyU+1#c}=^P^031e<@6fkV)`9QYeRc&0CF)XX`3LWb_5_ImE}rEE4RT zb=o!76DqKp@Sj}9NuWhNPsaluAKxJ5vGlEP(r@FX2h0@`ugCCsj{~eLpV$k7MZK+n zDd2+K1p5$~T~S^}eDrlq$O?ViJ`n3xJPIW&Q7`$pm#=BB!?Y8k8-{7B-n#1YvKDG% zPlsx|N1_W;EO(MLJvmD+!Y)$&3%x19^Sy#;Ov<22NRuF3AI{1s&6z+%j7(h^^&c(fdbrri(5{%^xBp&fo>cG#IJ7XQ*V!C)1{3QC$I)ZpravXQexvto9cmv0twj%i!n$m3!GqD#N?eF7JfJYe~ z-yoeD76169(3FvwVE>%&z_Cuq>2MNJ6*CJ)dIo&vXfk5Cz-Q54I9!3vUk5`~dKgLs z)Hp@jghCDrgtQFGtq|o(bxqcDI8;HXqSgSHRp7QE#0gg)0=>Bwj$E3ZntFA5ZXR(% ziV2-YZ0X|693P@iiG0c#PNc-=30x-dG6At`6!fxl6g8F{Xp^@nd#^-1AS{ChwGg{o z+)OWjhYF7(X-YAp=QTss#Gk2Z_srZN;xe!u@RSgP>8;6Ys3Xe)PYLa`cQZz23yz`Z zRPm=}km~k;e(nW(-h-IRdd~+7eMVkH{G&9{q|j%_k$`LmbMicceGHpfy{&;&wJQqW zPbI!CG=$C!Xb3}U2&nf|u#;CT!(G43R#M`1}os8+;Q)5=xcpd;|Cc8Doeqd zQL*CKeb_c~*XcMg*>!%2@S-;GFa^~xQD$&I%KM_P40b9Tj7Ahf{JcpMc|41mZP4U- z3t*oA2H*qKK@=*egW?KM0fVs$_@a`~gffS{mtq+^AjEPy(rb5dSQ#ZNzI)B@ifB&6 zF^vu3t4IWgAJ~FK0&PPRXFwEFXvWtG5FJXQ7^GNjWp;Y*BbB+=E?kl+l29^`LZ@mLV#tW+LkNS*O+u8yoFytbhHs5x*`$XW`g6igwgqgJuzJ{l@Aae zF{7PLLh80DW8VKyQ>bs50_iFtF8JqZ9(~MRUSkOS!YCHS;DOC7*~=7mF{Y_Xwbj94 z@)rKPiY{NK0qGP=F%7M#k3e(BnmK-x#tx#hY3bOGZDW`~Vt)+1NanvxDY7%9#W8_Y zm85k1Bma_~Nj%;GOkv$1|MI%wLl-j@5UdKQGab-iM$NdMT2GN*$x`qDO&HfE^!F)v zP`dEBN+?N3{-q&&FGT4W;&|TTI;9Y2=1pK{qPi@j2;FB;l8Z`mU|EBI9VK}xVFd~y zAW)#g-!#|L7+YflcQk>mvq9kg1Im$tS2rZRI^>2?{%@ju809;X@)4B(M3j%9d}mZn z@x5K^@R(QBRb8Y_w#)BZN8lpz6Z4qQ=nWDdyMvX4mnWS%PK?O?T9oHJoBTa-e(-w7 z?cjupJXR_y!-roEu#I3t@In} z9%UD?wZ^jB)uEk^dJ3`=PHsCK)RSmPuOmPXCi)JsBFiIJK*+o(L*@u3si^xKQP+<;MEXz{in>9t(-7*0qdF0k0^=Ee8WF#q*}tiJhG;P&4j0IL%-o?s`ypWN+=6*X zVD2JJe03UYHM(kC&#Y(GG3)gd*gk`n=h<%D4cf!@Qjn~?FZgW2ZLwFenE07E(4t@q zkrRYHf-uP?pKj0|F&_j;WGoO7BdZ$Z{y-mldXb-@y1~DnLA)J$k%_4m7S;RL{PSfhr`>k z&-aMvh@zA}n18DFt_gKD0-rsjTQ~^P?wgwVu9>1R4k<73==)K#U(IQGU50xA5&O$% z+E2H5`rC~Ny_Jvk76pl=0r@ITcmkl>tC=WG&mTGGe0sI3{*rcwJ1QA>S%BWjzW zT9$=;&jnq{e40c#f{}=pcSSsXtc6Q$ojS7?T+59JjwRALmgfg05^Qcsl84|RUc~_p z-P4pJxSX_^5B5cj22v0gh~mo%lDebwcMl_0ad|Nbs0LQl>}rd9GVJfSuHw#Aa!G)H z8S5SFpGxi<(J_)m28DI-#iO`;+TmV#iqX8Jx4&0iLk`F=GgF--pcw+boi#uK!XYMYx|pjdAhh&t2SJJxy8f*syvCkM6)NWm|q}3 zXKy?p@KFLC0#^u-izaQ}iiv${y8B<>v`QQ|-Otvznp26ZfFKU3^~COtti` z7!8c9Eps8YLWAVogZxYJ82V_zzhg+iS`r6^OnpO#6{%BPhVQ2H5u_26<4-c;Cxb$D z;3+d`3QGTIr-mCqzPuAH_(<3Q;4mRd<;~`@7t)gK_V`D3eBxvuL}t@! z(mbbgyesSxe2v<_dTM%#Om>C&r$EbN)zf~7P%AA z(FTds=s4^N+6j_8O0k$6ZU{!WXJ+{y)3DH45psphWvPm{*I7jGv=f5nmyy6OApS@P z=XW%bf& z&>^lM{|#c3&=e+5bqQ(Qtv)p_FRxH20j#oxx#$e8C#Fl0f}XhlAIUa?-@ZasT{1}V zKcNC)5s7UOOm~;cws0QKx}qJAHgJM=TLi!|nml?^b8nkzI=Z5RD00qmtd-^8LuYj7 zA9wDXl}d2wgDp5oszu!+G(f6c?bkVA-_x_{<`m8k9HKP5KE zgxt6cAdkLBPmc!!(M>U2GDNdWSdL)$boUPPDJ-zK!z|;IsfRLXkhQGybj|dHB?2-* z#s z=u6NIFp4%vuWnF}k|f6`$L*B3Y$hU8!H8&m?1UAa{6@|ApP>c+b82>se%`6^Aa|jL z8Cwru(DP*+{v6)7RGGbiQ$ z+R(jF#UoP?5j8j float: - score = 0.0 + """ + Calculate priority score using centralized triage engine + """ - tier_scores = {"EMERGENCY": 100, "ALERT": 50, "NORMAL": 0} - score += tier_scores.get(patient.current_tier, 0) + # If no vitals yet, use basic scoring + if not patient.last_vitals: + severity_scores = {"severe": 50, "moderate": 30, "mild": 20} + return severity_scores.get(patient.severity, 20) - wait_minutes = (datetime.now() - patient.check_in_time).total_seconds() / 60 - if wait_minutes > 30: - score += (wait_minutes - 30) * 0.5 - elif wait_minutes > 60: - score += (wait_minutes - 60) * 1.0 + # Create VitalSigns object + vitals = VitalSigns( + heart_rate=patient.last_vitals.get("hr_bpm", 75), + spo2=patient.last_vitals.get("spo2", 98), + temperature=patient.last_vitals.get("temp_c", 37.0), + activity=patient.last_vitals.get("activity", 0.0), + ) - severity_scores = {"severe": 20, "moderate": 10, "mild": 5} - score += severity_scores.get(patient.severity, 0) + # Calculate wait time + wait_minutes = int((datetime.now() - patient.check_in_time).total_seconds() / 60) - if patient.last_vitals: - hr = patient.last_vitals.get("hr_bpm", 75) - spo2 = patient.last_vitals.get("spo2", 98) - temp = patient.last_vitals.get("temp_c", 37.0) + # Use triage engine to assess + assessment = TriageEngine.assess_patient( + vitals=vitals, + symptoms=patient.symptoms, + severity=patient.severity, + age=None, # Add age field to Patient model if needed + preexisting=[], # Add preexisting field to Patient model if needed + wait_time_minutes=wait_minutes, + ) - if hr > 110 or hr < 50: - score += 10 - if hr > 140 or hr < 40: - score += 30 + # Update patient tier based on assessment + patient.current_tier = assessment["tier_name"] - if spo2 < 92: - score += 15 - if spo2 < 88: - score += 40 - - if temp > 38.5: - score += 15 - if temp > 39.5: - score += 25 - - return score + return assessment["priority_score"] # ============================================================================ @@ -203,24 +203,57 @@ async def check_in_patient(data: PatientCheckIn): @app.post("/api/vitals") async def receive_vitals(data: VitalsData): + """Receive vitals data from base station""" + patient_id = data.patient_id if patient_id not in patients_db: raise HTTPException(status_code=404, detail="Patient not found") patient = patients_db[patient_id] - patient.current_tier = data.tier + + # Use triage engine to determine tier from vitals + vitals = VitalSigns( + heart_rate=data.hr_bpm, + spo2=data.spo2, + temperature=data.temp_c, + activity=data.activity, + ) + + # Quick tier assessment + tier = triage_from_vitals(data.hr_bpm, data.spo2, data.temp_c) + + patient.current_tier = tier patient.last_vitals = data.dict() + # Store in history vitals_history[patient_id].append(data) if len(vitals_history[patient_id]) > 1000: vitals_history[patient_id] = vitals_history[patient_id][-1000:] + # Check for deterioration if we have history + if len(vitals_history[patient_id]) >= 3: + previous = [ + VitalSigns(v.hr_bpm, v.spo2, v.temp_c, v.activity) + for v in vitals_history[patient_id][-4:-1] + ] + deterioration = TriageEngine.detect_deterioration(vitals, previous) + + if deterioration["deteriorating"]: + print(f"⚠️ DETERIORATION DETECTED: {patient_id}") + print(f" Concerns: {', '.join(deterioration['concerns'])}") + + # Broadcast update await broadcast_update( - {"type": "vitals_update", "patient_id": patient_id, "vitals": data.dict()} + { + "type": "vitals_update", + "patient_id": patient_id, + "vitals": data.dict(), + "tier": tier, + } ) - return {"status": "received"} + return {"status": "received", "tier": tier} @app.get("/api/queue") diff --git a/vitallink/backend/triage_engine.py b/vitallink/backend/triage_engine.py new file mode 100644 index 0000000..c43fe25 --- /dev/null +++ b/vitallink/backend/triage_engine.py @@ -0,0 +1,723 @@ +""" +VitalLink Triage Engine +Centralized triage assessment algorithm based on hospital emergency standards +Combines elements from US ESI, UK Manchester, and Canadian CTAS systems +""" + +from datetime import datetime +from enum import IntEnum +from typing import List, Optional, Dict +from dataclasses import dataclass + +# ============================================================================ +# TRIAGE LEVELS (Lower number = Higher priority) +# ============================================================================ + + +class TriageLevel(IntEnum): + """ + Four-tier triage system + Based on Emergency Severity Index (ESI) and similar systems + """ + + LEVEL_1_EMERGENCY = 1 # Immediate life threat - needs resuscitation + LEVEL_2_WARNING = 2 # High risk - deteriorating/unstable + LEVEL_3_ALERT = 3 # Urgent - abnormal vitals or moderate risk + LEVEL_4_NORMAL = 4 # Standard - stable with minor complaints + + +# ============================================================================ +# VITAL SIGN THRESHOLDS +# ============================================================================ + + +class VitalThresholds: + """Clinical thresholds for vital sign assessment with hysteresis""" + + # Heart Rate (BPM) - Upgrade thresholds + HR_CRITICAL_LOW = 40 + HR_CRITICAL_HIGH = 140 + HR_ABNORMAL_LOW = 50 + HR_ABNORMAL_HIGH = 110 + + # Heart Rate - Downgrade thresholds (with hysteresis gap) + HR_CRITICAL_LOW_RECOVERY = 45 # Must go above 45 to leave critical + HR_CRITICAL_HIGH_RECOVERY = 135 # Must go below 135 to leave critical + HR_ABNORMAL_LOW_RECOVERY = 55 + HR_ABNORMAL_HIGH_RECOVERY = 105 + + # SpO2 (%) - Upgrade thresholds + SPO2_CRITICAL = 88 + SPO2_ABNORMAL = 92 + + # SpO2 - Downgrade thresholds + SPO2_CRITICAL_RECOVERY = 90 # Must go above 90 to leave critical + SPO2_ABNORMAL_RECOVERY = 94 # Must go above 94 to leave abnormal + + # Temperature (°C) - Upgrade thresholds + TEMP_CRITICAL_LOW = 35.0 + TEMP_CRITICAL_HIGH = 39.5 + TEMP_ABNORMAL_LOW = 35.5 + TEMP_ABNORMAL_HIGH = 38.3 + + # Temperature - Downgrade thresholds + TEMP_CRITICAL_LOW_RECOVERY = 35.5 + TEMP_CRITICAL_HIGH_RECOVERY = 39.0 + TEMP_ABNORMAL_LOW_RECOVERY = 36.0 + TEMP_ABNORMAL_HIGH_RECOVERY = 38.0 + + # Respiratory Rate (breaths/min) + RR_CRITICAL_LOW = 10 + RR_CRITICAL_HIGH = 30 + RR_ABNORMAL_LOW = 12 + RR_ABNORMAL_HIGH = 20 + + +@dataclass +class TierStabilityTracker: + """Tracks tier changes to prevent oscillation""" + + current_tier: str = "NORMAL" + tier_since: float = 0.0 # Timestamp when tier was set + consecutive_readings: int = 0 + tier_change_count: int = 0 + + # Confirmation requirements + CONFIRMATION_READINGS_UPGRADE = 3 # Need 3 consecutive readings to upgrade + CONFIRMATION_READINGS_DOWNGRADE = 5 # Need 5 consecutive readings to downgrade + MIN_TIME_IN_TIER = 30.0 # Minimum 30 seconds before tier can change + + +# ============================================================================ +# CLINICAL KNOWLEDGE BASE +# ============================================================================ + +CRITICAL_CONDITIONS = [ + "cardiac arrest", + "respiratory arrest", + "major trauma", + "severe hemorrhage", + "stroke", + "seizure ongoing", + "anaphylaxis", + "severe chest pain", + "unresponsive", +] + +HIGH_RISK_SYMPTOMS = [ + "chest pain", + "difficulty breathing", + "altered mental status", + "severe headache", + "excessive bleeding", + "abdominal pain", + "head injury", + "suspected sepsis", +] + +MODERATE_RISK_SYMPTOMS = [ + "fever", + "nausea/vomiting", + "dizziness", + "moderate pain", + "injury/trauma", + "infection signs", +] + +PREEXISTING_CONDITIONS = [ + "diabetes", + "copd", + "asthma", + "cancer", + "hypertension", + "heart disease", + "kidney disease", + "immunocompromised", +] + +# ============================================================================ +# VITAL SIGNS DATA CLASS +# ============================================================================ + + +@dataclass +class VitalSigns: + """Current vital signs for a patient""" + + heart_rate: int + spo2: int + temperature: float + activity: float = 0.0 + respiratory_rate: Optional[int] = None + blood_pressure_systolic: Optional[int] = None + consciousness_level: str = "Alert" + pain_level: int = 0 # 0-10 scale + + def is_critical(self) -> bool: + """Check if any vital is in critical range""" + return ( + self.heart_rate < VitalThresholds.HR_CRITICAL_LOW + or self.heart_rate > VitalThresholds.HR_CRITICAL_HIGH + or self.spo2 < VitalThresholds.SPO2_CRITICAL + or self.temperature < VitalThresholds.TEMP_CRITICAL_LOW + or self.temperature > VitalThresholds.TEMP_CRITICAL_HIGH + or ( + self.respiratory_rate + and ( + self.respiratory_rate < VitalThresholds.RR_CRITICAL_LOW + or self.respiratory_rate > VitalThresholds.RR_CRITICAL_HIGH + ) + ) + ) + + def is_abnormal(self) -> bool: + """Check if any vital is abnormal but not critical""" + return ( + self.heart_rate < VitalThresholds.HR_ABNORMAL_LOW + or self.heart_rate > VitalThresholds.HR_ABNORMAL_HIGH + or self.spo2 < VitalThresholds.SPO2_ABNORMAL + or self.temperature < VitalThresholds.TEMP_ABNORMAL_LOW + or self.temperature > VitalThresholds.TEMP_ABNORMAL_HIGH + ) + + def get_abnormalities(self) -> List[str]: + """Get list of abnormal vital signs""" + abnormalities = [] + + if self.heart_rate < VitalThresholds.HR_CRITICAL_LOW: + abnormalities.append(f"Severe Bradycardia ({self.heart_rate} bpm)") + elif self.heart_rate > VitalThresholds.HR_CRITICAL_HIGH: + abnormalities.append(f"Severe Tachycardia ({self.heart_rate} bpm)") + elif self.heart_rate < VitalThresholds.HR_ABNORMAL_LOW: + abnormalities.append(f"Bradycardia ({self.heart_rate} bpm)") + elif self.heart_rate > VitalThresholds.HR_ABNORMAL_HIGH: + abnormalities.append(f"Tachycardia ({self.heart_rate} bpm)") + + if self.spo2 < VitalThresholds.SPO2_CRITICAL: + abnormalities.append(f"Critical Hypoxia ({self.spo2}%)") + elif self.spo2 < VitalThresholds.SPO2_ABNORMAL: + abnormalities.append(f"Hypoxia ({self.spo2}%)") + + if self.temperature > VitalThresholds.TEMP_CRITICAL_HIGH: + abnormalities.append(f"High Fever ({self.temperature:.1f}°C)") + elif self.temperature > VitalThresholds.TEMP_ABNORMAL_HIGH: + abnormalities.append(f"Fever ({self.temperature:.1f}°C)") + elif self.temperature < VitalThresholds.TEMP_CRITICAL_LOW: + abnormalities.append(f"Hypothermia ({self.temperature:.1f}°C)") + + return abnormalities + + def is_critical_with_hysteresis(self, current_tier: str) -> bool: + """Check if critical, with hysteresis based on current tier""" + + if current_tier == "EMERGENCY": + # Already in EMERGENCY - use recovery thresholds (harder to leave) + return ( + self.heart_rate < VitalThresholds.HR_CRITICAL_LOW_RECOVERY + or self.heart_rate > VitalThresholds.HR_CRITICAL_HIGH_RECOVERY + or self.spo2 < VitalThresholds.SPO2_CRITICAL_RECOVERY + or self.temperature < VitalThresholds.TEMP_CRITICAL_LOW_RECOVERY + or self.temperature > VitalThresholds.TEMP_CRITICAL_HIGH_RECOVERY + ) + else: + # Not in EMERGENCY - use standard thresholds (easier to enter) + return self.is_critical() + + def is_abnormal_with_hysteresis(self, current_tier: str) -> bool: + """Check if abnormal, with hysteresis based on current tier""" + + if current_tier in ["ALERT", "EMERGENCY"]: + # Already elevated - use recovery thresholds + return ( + self.heart_rate < VitalThresholds.HR_ABNORMAL_LOW_RECOVERY + or self.heart_rate > VitalThresholds.HR_ABNORMAL_HIGH_RECOVERY + or self.spo2 < VitalThresholds.SPO2_ABNORMAL_RECOVERY + or self.temperature < VitalThresholds.TEMP_ABNORMAL_LOW_RECOVERY + or self.temperature > VitalThresholds.TEMP_ABNORMAL_HIGH_RECOVERY + ) + else: + # Normal tier - use standard thresholds + return self.is_abnormal() + + +# ============================================================================ +# TRIAGE ENGINE +# ============================================================================ + + +class TriageEngine: + """ + Central triage assessment engine + Implements hospital-standard triage algorithms + """ + + @staticmethod + def assess_patient( + vitals: VitalSigns, + symptoms: List[str], + severity: str, + age: Optional[int] = None, + preexisting: List[str] = None, + wait_time_minutes: int = 0, + ) -> Dict: + """ + Comprehensive triage assessment + Returns triage level, priority score, and reasoning + """ + + preexisting = preexisting or [] + + # Step 1: Check for immediate life threats + if TriageEngine._is_life_threatening(vitals, symptoms): + return { + "triage_level": TriageLevel.LEVEL_1_EMERGENCY, + "tier_name": "EMERGENCY", + "priority_score": 200.0, + "reasoning": "Life-threatening condition detected", + "abnormalities": vitals.get_abnormalities(), + "recommended_action": "Immediate intervention required", + } + + # Step 2: Assess high-risk situations + if TriageEngine._is_high_risk(vitals, symptoms, severity, age, preexisting): + base_score = 100.0 + + # Add points for vital abnormalities + if vitals.is_abnormal(): + base_score += 30.0 + + # Add wait time urgency + if wait_time_minutes > 30: + base_score += (wait_time_minutes - 30) * 0.5 + + return { + "triage_level": TriageLevel.LEVEL_2_WARNING, + "tier_name": "ALERT", + "priority_score": base_score, + "reasoning": "High-risk patient with concerning symptoms", + "abnormalities": vitals.get_abnormalities(), + "recommended_action": "Rapid assessment needed", + } + + # Step 3: Evaluate moderate urgency + resources_needed = TriageEngine._estimate_resources(symptoms, severity) + + if resources_needed >= 2 or vitals.is_abnormal(): + base_score = 50.0 + + if vitals.is_abnormal(): + base_score += 20.0 + + if wait_time_minutes > 45: + base_score += (wait_time_minutes - 45) * 0.8 + + # Check for preexisting conditions + if any( + cond.lower() in [p.lower() for p in preexisting] + for cond in PREEXISTING_CONDITIONS + ): + base_score += 15.0 + + return { + "triage_level": TriageLevel.LEVEL_3_ALERT, + "tier_name": "ALERT", + "priority_score": base_score, + "reasoning": "Urgent care needed - abnormal vitals or complex case", + "abnormalities": vitals.get_abnormalities(), + "recommended_action": "See within 30 minutes", + } + + # Step 4: Standard care + base_score = 20.0 + + # Severity modifier + if severity == "severe": + base_score += 15.0 + elif severity == "moderate": + base_score += 10.0 + else: + base_score += 5.0 + + # Long wait compensation + if wait_time_minutes > 60: + base_score += (wait_time_minutes - 60) * 1.0 + + return { + "triage_level": TriageLevel.LEVEL_4_NORMAL, + "tier_name": "NORMAL", + "priority_score": base_score, + "reasoning": "Stable patient - standard care", + "abnormalities": [], + "recommended_action": "See within 120 minutes", + } + + @staticmethod + def _is_life_threatening(vitals: VitalSigns, symptoms: List[str]) -> bool: + """Detect immediate life threats""" + + # Critical vital signs + if vitals.is_critical(): + return True + + # Unresponsive patient + if vitals.consciousness_level.lower() in ["unresponsive", "unconscious"]: + return True + + # Critical conditions in symptoms + return any( + cond.lower() in " ".join(symptoms).lower() for cond in CRITICAL_CONDITIONS + ) + + @staticmethod + def _is_high_risk( + vitals: VitalSigns, + symptoms: List[str], + severity: str, + age: Optional[int], + preexisting: List[str], + ) -> bool: + """Detect high-risk patients""" + + # High-risk age groups + if age and (age < 1 or age > 65): + if vitals.is_abnormal() or severity == "severe": + return True + + # High-risk symptoms + symptom_text = " ".join(symptoms).lower() + if any(symptom.lower() in symptom_text for symptom in HIGH_RISK_SYMPTOMS): + return True + + # Severe self-reported severity with abnormal vitals + if severity == "severe" and vitals.is_abnormal(): + return True + + # Preexisting conditions with concerning vitals + if preexisting and vitals.is_abnormal(): + return True + + return False + + @staticmethod + def _estimate_resources(symptoms: List[str], severity: str) -> int: + """ + Estimate number of resources needed + Resources: labs, imaging, IV access, procedures, consultations + """ + resource_count = 0 + + symptom_text = " ".join(symptoms).lower() + + # Likely needs labs + if any(s in symptom_text for s in ["fever", "infection", "pain", "bleeding"]): + resource_count += 1 + + # Likely needs imaging + if any( + s in symptom_text + for s in ["head injury", "chest pain", "abdominal", "trauma"] + ): + resource_count += 1 + + # Likely needs IV access + if any( + s in symptom_text + for s in ["difficulty breathing", "severe", "bleeding", "dehydration"] + ): + resource_count += 1 + + # Complex intervention likely + if severity == "severe": + resource_count += 1 + + return resource_count + + @staticmethod + def calculate_priority_score( + triage_level: TriageLevel, + vitals: VitalSigns, + severity: str, + wait_time_minutes: int, + preexisting: List[str] = None, + ) -> float: + """ + Calculate final priority score for queue ordering + Higher score = higher priority + """ + + preexisting = preexisting or [] + + # Base score from triage level + level_scores = { + TriageLevel.LEVEL_1_EMERGENCY: 200.0, + TriageLevel.LEVEL_2_WARNING: 100.0, + TriageLevel.LEVEL_3_ALERT: 50.0, + TriageLevel.LEVEL_4_NORMAL: 20.0, + } + score = level_scores.get(triage_level, 0.0) + + # Vital sign modifiers + if vitals.is_critical(): + score += 50.0 + elif vitals.is_abnormal(): + score += 20.0 + + # Specific vital concerns + if vitals.heart_rate > 140 or vitals.heart_rate < 40: + score += 30.0 + if vitals.spo2 < 88: + score += 40.0 + if vitals.temperature > 39.5: + score += 25.0 + + # Severity modifier + severity_scores = {"severe": 25, "moderate": 15, "mild": 5} + score += severity_scores.get(severity, 0) + + # Wait time escalation + if wait_time_minutes > 30: + score += (wait_time_minutes - 30) * 0.5 + if wait_time_minutes > 60: + score += (wait_time_minutes - 60) * 1.0 # Accelerate + if wait_time_minutes > 120: + score += (wait_time_minutes - 120) * 2.0 # Major escalation + + # Preexisting conditions + if preexisting and triage_level != TriageLevel.LEVEL_1_EMERGENCY: + score += 10.0 * len(preexisting) + + return round(score, 1) + + @staticmethod + def detect_deterioration( + current_vitals: VitalSigns, + previous_vitals: List[VitalSigns], + time_window_minutes: int = 10, + ) -> Dict: + """ + Detect if patient is deteriorating based on vital sign trends + Returns trend analysis and recommendation + """ + + if len(previous_vitals) < 3: + return { + "deteriorating": False, + "reason": "Insufficient data for trend analysis", + } + + # Take last 3 readings + recent = previous_vitals[-3:] + + # Calculate trends + hr_trend = current_vitals.heart_rate - sum(v.heart_rate for v in recent) / len( + recent + ) + spo2_trend = sum(v.spo2 for v in recent) / len(recent) - current_vitals.spo2 + temp_trend = current_vitals.temperature - sum( + v.temperature for v in recent + ) / len(recent) + + # Detect concerning trends + concerns = [] + + if hr_trend > 15: + concerns.append(f"Increasing HR (+{hr_trend:.0f} bpm)") + if spo2_trend > 3: + concerns.append(f"Decreasing SpO2 (-{spo2_trend:.0f}%)") + if temp_trend > 0.5: + concerns.append(f"Rising temperature (+{temp_trend:.1f}°C)") + + # Crossed into abnormal range + if current_vitals.is_critical() and not any(v.is_critical() for v in recent): + concerns.append("Vitals crossed into CRITICAL range") + elif current_vitals.is_abnormal() and not any(v.is_abnormal() for v in recent): + concerns.append("Vitals crossed into ABNORMAL range") + + deteriorating = len(concerns) > 0 + + return { + "deteriorating": deteriorating, + "concerns": concerns, + "hr_trend": hr_trend, + "spo2_trend": spo2_trend, + "temp_trend": temp_trend, + "recommendation": "Escalate care immediately" + if deteriorating + else "Continue monitoring", + } + + @staticmethod + def should_escalate_tier( + current_tier: TriageLevel, vitals: VitalSigns, wait_time_minutes: int + ) -> tuple[bool, Optional[TriageLevel], str]: + """ + Determine if patient tier should be escalated + Returns (should_escalate, new_tier, reason) + """ + + # Always escalate if vitals become critical + if vitals.is_critical() and current_tier != TriageLevel.LEVEL_1_EMERGENCY: + return ( + True, + TriageLevel.LEVEL_1_EMERGENCY, + "Vitals entered critical range", + ) + + # Escalate NORMAL to ALERT if vitals abnormal + if current_tier == TriageLevel.LEVEL_4_NORMAL and vitals.is_abnormal(): + return (True, TriageLevel.LEVEL_3_ALERT, "Vitals became abnormal") + + # Escalate ALERT to WARNING if vitals worsening + if current_tier == TriageLevel.LEVEL_3_ALERT and vitals.is_critical(): + return ( + True, + TriageLevel.LEVEL_2_WARNING, + "Vitals worsening toward critical", + ) + + # Time-based escalation for long waits + if wait_time_minutes > 120 and current_tier == TriageLevel.LEVEL_4_NORMAL: + return (True, TriageLevel.LEVEL_3_ALERT, "Excessive wait time (>2 hours)") + + if wait_time_minutes > 180 and current_tier == TriageLevel.LEVEL_3_ALERT: + return (True, TriageLevel.LEVEL_2_WARNING, "Critical wait time (>3 hours)") + + return (False, None, "No escalation needed") + + +# ============================================================================ +# CONVENIENCE FUNCTIONS +# ============================================================================ + + +def triage_from_vitals(hr: int, spo2: int, temp: float) -> str: + """ + Quick triage tier determination from vital signs only + Returns: "EMERGENCY", "ALERT", or "NORMAL" + """ + vitals = VitalSigns(heart_rate=hr, spo2=spo2, temperature=temp) + + if vitals.is_critical(): + return "EMERGENCY" + elif vitals.is_abnormal(): + return "ALERT" + else: + return "NORMAL" + + +def assess_new_patient( + hr: int, + spo2: int, + temp: float, + symptoms: List[str], + severity: str, + age: Optional[int] = None, + preexisting: List[str] = None, +) -> Dict: + """ + Complete assessment for new patient + Returns full triage result with score and recommendations + """ + + vitals = VitalSigns(heart_rate=hr, spo2=spo2, temperature=temp) + + result = TriageEngine.assess_patient( + vitals=vitals, + symptoms=symptoms, + severity=severity, + age=age, + preexisting=preexisting, + wait_time_minutes=0, + ) + + return result + + +def reassess_patient( + patient_data: Dict, current_vitals: Dict, wait_time_minutes: int +) -> Dict: + """ + Reassess existing patient with updated vitals and wait time + Returns updated triage assessment + """ + + vitals = VitalSigns( + heart_rate=current_vitals.get("hr_bpm", 75), + spo2=current_vitals.get("spo2", 98), + temperature=current_vitals.get("temp_c", 37.0), + activity=current_vitals.get("activity", 0.0), + ) + + result = TriageEngine.assess_patient( + vitals=vitals, + symptoms=patient_data.get("symptoms", []), + severity=patient_data.get("severity", "moderate"), + age=patient_data.get("age"), + preexisting=patient_data.get("preexisting", []), + wait_time_minutes=wait_time_minutes, + ) + + return result + + +# ============================================================================ +# EXAMPLE USAGE +# ============================================================================ + +if __name__ == "__main__": + print("=" * 80) + print("VitalLink Triage Engine - Test Cases") + print("=" * 80 + "\n") + + # Test Case 1: Critical patient + print("Test 1: Critical Emergency") + result = assess_new_patient( + hr=155, + spo2=85, + temp=40.2, + symptoms=["Severe Chest Pain", "Difficulty Breathing"], + severity="severe", + ) + print(f" Level: {result['triage_level'].name}") + print(f" Tier: {result['tier_name']}") + print(f" Score: {result['priority_score']}") + print(f" Reason: {result['reasoning']}") + print(f" Abnormalities: {result['abnormalities']}") + print() + + # Test Case 2: Deteriorating patient + print("Test 2: Deteriorating Patient") + result = assess_new_patient( + hr=118, + spo2=93, + temp=38.5, + symptoms=["Fever", "Difficulty Breathing"], + severity="moderate", + ) + print(f" Level: {result['triage_level'].name}") + print(f" Tier: {result['tier_name']}") + print(f" Score: {result['priority_score']}") + print() + + # Test Case 3: Stable patient + print("Test 3: Stable Patient") + result = assess_new_patient( + hr=75, spo2=98, temp=36.9, symptoms=["Minor Pain"], severity="mild" + ) + print(f" Level: {result['triage_level'].name}") + print(f" Tier: {result['tier_name']}") + print(f" Score: {result['priority_score']}") + print() + + # Test Case 4: Long wait escalation + print("Test 4: Long Wait Time Escalation") + vitals = VitalSigns(heart_rate=78, spo2=97, temperature=37.1) + should_escalate, new_tier, reason = TriageEngine.should_escalate_tier( + current_tier=TriageLevel.LEVEL_4_NORMAL, vitals=vitals, wait_time_minutes=130 + ) + print(f" Should escalate: {should_escalate}") + print(f" New tier: {new_tier.name if new_tier else 'N/A'}") + print(f" Reason: {reason}") + print() + + print("=" * 80) diff --git a/vitallink/logs/all_pids.txt b/vitallink/logs/all_pids.txt deleted file mode 100644 index 6cad68a..0000000 --- a/vitallink/logs/all_pids.txt +++ /dev/null @@ -1,4 +0,0 @@ -200440 -200455 -200464 -200523 diff --git a/vitallink/logs/backend.log b/vitallink/logs/backend.log index 977f17e..e33878f 100644 --- a/vitallink/logs/backend.log +++ b/vitallink/logs/backend.log @@ -1,4 +1,4 @@ -INFO: Started server process [200440] +INFO: Started server process [209520] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) @@ -8,279 +8,1540 @@ VitalLink Backend API Started API Documentation: http://localhost:8000/docs WebSocket Endpoint: ws://localhost:8000/ws ================================================================================ -INFO: 127.0.0.1:46164 - "GET / HTTP/1.1" 200 OK -INFO: 127.0.0.1:46172 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46180 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46186 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:46194 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46330 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:46334 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:46350 - "POST /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:46366 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46370 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:46382 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:37822 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:37826 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:37828 - "POST /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:37834 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:37836 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:54120 - "GET / HTTP/1.1" 200 OK +INFO: 127.0.0.1:54128 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:56968 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:56984 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:56996 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:57012 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:57028 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:57034 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:42428 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:42430 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:42432 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:42436 - "GET /api/queue HTTP/1.1" 200 OK /home/mai/documents/school/capstone/vitallink-BS/vitallink/backend/server.py:195: PydanticDeprecatedSince20: The `dict` method is deprecated; use `model_dump` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.12/migration/ await broadcast_update({"type": "patient_added", "patient": patient.dict()}) -INFO: 127.0.0.1:37852 - "POST /api/checkin HTTP/1.1" 200 OK -INFO: 127.0.0.1:37866 - "GET /api/queue HTTP/1.1" 200 OK -/home/mai/documents/school/capstone/vitallink-BS/vitallink/backend/server.py:213: PydanticDeprecatedSince20: The `dict` method is deprecated; use `model_dump` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.12/migration/ +INFO: 127.0.0.1:42444 - "POST /api/checkin HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:42454 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:42464 - "GET /api/queue HTTP/1.1" 200 OK +/home/mai/documents/school/capstone/vitallink-BS/vitallink/backend/server.py:227: PydanticDeprecatedSince20: The `dict` method is deprecated; use `model_dump` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.12/migration/ patient.last_vitals = data.dict() -/home/mai/documents/school/capstone/vitallink-BS/vitallink/backend/server.py:220: PydanticDeprecatedSince20: The `dict` method is deprecated; use `model_dump` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.12/migration/ - {"type": "vitals_update", "patient_id": patient_id, "vitals": data.dict()} -INFO: 127.0.0.1:37872 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:60706 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:60710 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:60720 - "POST /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:60728 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:60740 - "POST /api/checkin HTTP/1.1" 200 OK -INFO: 127.0.0.1:60748 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:60762 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:60764 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:55144 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:55150 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:55166 - "POST /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:55174 - "POST /api/checkin HTTP/1.1" 200 OK -INFO: 127.0.0.1:55176 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:55182 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:55196 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:55200 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:60430 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:60432 - "POST /api/checkin HTTP/1.1" 200 OK -INFO: 127.0.0.1:60442 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:60456 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:60466 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:60474 - "POST /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:60482 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:60488 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:60496 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:60512 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:60514 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:60520 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:60534 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:60540 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:60544 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:60554 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:48206 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:48216 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:48230 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:48234 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:48236 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:48242 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:48250 - "POST /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:48256 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:48264 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:48272 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:48284 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:48288 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:48294 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:48304 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:48310 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:48312 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:33906 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:33912 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:33926 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:33928 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:33930 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:33936 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:33940 - "POST /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:33948 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:33956 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:33970 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:33976 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:33984 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:33992 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:33994 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:34000 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:34002 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:47598 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:47608 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:47620 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:47624 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:47630 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:47660 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:47668 - "POST /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:47672 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:47674 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:47678 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK +/home/mai/documents/school/capstone/vitallink-BS/vitallink/backend/server.py:251: PydanticDeprecatedSince20: The `dict` method is deprecated; use `model_dump` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.12/migration/ + "vitals": data.dict(), +INFO: 127.0.0.1:42472 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:43228 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:43240 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:43252 - "POST /api/checkin HTTP/1.1" 200 OK +INFO: 127.0.0.1:43258 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:43264 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:43270 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:43284 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:43290 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:36120 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:36132 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:36136 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:36142 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:36144 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:36154 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:33498 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:33504 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:33518 - "POST /api/checkin HTTP/1.1" 200 OK +INFO: 127.0.0.1:33524 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:33534 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:33542 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:33548 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:33554 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:44788 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:44794 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:44796 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:44800 - "POST /api/checkin HTTP/1.1" 200 OK +INFO: 127.0.0.1:44802 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:44812 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:44824 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:44838 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:44854 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:44866 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:40554 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:40566 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.7°C) +INFO: 127.0.0.1:40576 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+20 bpm), Rising temperature (+1.5°C), Vitals crossed into CRITICAL range +INFO: 127.0.0.1:40582 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:40596 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:40610 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:40622 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:40632 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-5%) +INFO: 127.0.0.1:40634 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:40638 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:40648 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.1°C) +INFO: 127.0.0.1:40662 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.8°C) +INFO: 127.0.0.1:40678 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:40692 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:40700 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.7°C) +INFO: 127.0.0.1:40712 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:40186 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:40200 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:40202 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:40204 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:40208 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:40224 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:40228 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:40240 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.9°C) +INFO: 127.0.0.1:40246 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.5°C) +INFO: 127.0.0.1:40248 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:40256 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.2°C), Vitals crossed into CRITICAL range +INFO: 127.0.0.1:40270 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+22 bpm) +INFO: 127.0.0.1:40284 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:40290 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:40292 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:40306 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:40318 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:47130 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:47144 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:47160 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+21 bpm) +INFO: 127.0.0.1:47176 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:47180 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:47182 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:47190 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:47200 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:47216 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.6°C) +INFO: 127.0.0.1:47230 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+19 bpm), Rising temperature (+1.0°C), Vitals crossed into CRITICAL range +INFO: 127.0.0.1:47246 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:47250 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:47264 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:47274 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:47290 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:47300 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:47312 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-4%) +INFO: 127.0.0.1:56608 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:56612 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.1°C), Vitals crossed into CRITICAL range +INFO: 127.0.0.1:56614 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+21 bpm) +INFO: 127.0.0.1:56618 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:56628 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:56642 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:56644 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:56652 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.9°C), Vitals crossed into CRITICAL range +INFO: 127.0.0.1:56656 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+24 bpm) +INFO: 127.0.0.1:56662 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:56672 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+30 bpm) +INFO: 127.0.0.1:56678 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:56694 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:56696 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:56704 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:56718 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:45732 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:45738 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:45740 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:45742 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:45756 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+20 bpm) +INFO: 127.0.0.1:45760 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+22 bpm), Rising temperature (+0.6°C), Vitals crossed into CRITICAL range +INFO: 127.0.0.1:45774 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:45780 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:45788 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:45798 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:45810 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:45812 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:45820 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:45832 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:45838 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:45840 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:45846 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Vitals crossed into CRITICAL range +INFO: 127.0.0.1:34068 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:34070 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:34078 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.6°C) +INFO: 127.0.0.1:34082 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:34086 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:34094 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:34098 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:34114 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.9°C), Vitals crossed into CRITICAL range +INFO: 127.0.0.1:34126 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+28 bpm) +INFO: 127.0.0.1:34132 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:34142 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+25 bpm), Rising temperature (+0.5°C) +INFO: 127.0.0.1:34144 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-3%) +INFO: 127.0.0.1:34146 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:34156 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:34172 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+2.2°C) +INFO: 127.0.0.1:33552 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:33568 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:33582 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:33586 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.0°C) +INFO: 127.0.0.1:33592 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:33594 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:33608 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:33610 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:33618 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:33622 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+32 bpm), Decreasing SpO2 (-4%), Vitals crossed into CRITICAL range +INFO: 127.0.0.1:33638 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:33642 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:33648 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.8°C) +INFO: 127.0.0.1:33660 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:33668 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:33672 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.9°C) +INFO: 127.0.0.1:35274 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:35278 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:35284 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:35292 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:35306 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:35322 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+28 bpm) +INFO: 127.0.0.1:35338 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.8°C) +INFO: 127.0.0.1:35344 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:35356 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:35366 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:35380 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:35384 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:35390 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.5°C) +INFO: 127.0.0.1:35404 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:35408 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:35414 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:35418 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.7°C), Vitals crossed into CRITICAL range +INFO: 127.0.0.1:58840 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58850 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58854 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+20 bpm) +INFO: 127.0.0.1:58864 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58878 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58894 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:58902 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.0°C), Vitals crossed into CRITICAL range +INFO: 127.0.0.1:58912 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58918 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58930 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:58936 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58940 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58942 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:58946 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58956 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58968 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58980 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:51290 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.3°C), Vitals crossed into CRITICAL range +INFO: 127.0.0.1:51296 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:51302 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+25 bpm) +INFO: 127.0.0.1:51308 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:51310 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:51322 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:51332 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:51334 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:51340 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.7°C) +INFO: 127.0.0.1:51356 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:51362 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:51364 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:51378 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:51382 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:51386 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:51396 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Vitals crossed into CRITICAL range +INFO: 127.0.0.1:39454 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:39462 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:39476 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-5%) +INFO: 127.0.0.1:39484 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:39494 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:39498 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:39506 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+19 bpm) +INFO: 127.0.0.1:39518 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:39528 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:39538 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.1°C), Vitals crossed into CRITICAL range +INFO: 127.0.0.1:39554 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:39562 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.0°C) +INFO: 127.0.0.1:39566 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:39576 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:39584 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:39596 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:39608 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58640 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58656 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-4%) +INFO: 127.0.0.1:58658 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58664 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:58678 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58684 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58692 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Vitals crossed into CRITICAL range +INFO: 127.0.0.1:58708 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58724 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58728 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.5°C) +INFO: 127.0.0.1:58732 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.6°C) +INFO: 127.0.0.1:58746 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58752 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:58754 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58762 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58768 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58512 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:58528 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58542 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58544 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+21 bpm) +INFO: 127.0.0.1:58548 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58560 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58574 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.1°C) +INFO: 127.0.0.1:58582 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58592 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58602 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.7°C) +INFO: 127.0.0.1:58612 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58628 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58644 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.4°C) +INFO: 127.0.0.1:58652 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58658 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58664 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:36394 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:36410 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:36412 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:36420 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+16 bpm), Rising temperature (+0.8°C) +INFO: 127.0.0.1:36422 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+24 bpm) +INFO: 127.0.0.1:36430 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:36440 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:36454 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:36460 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:36466 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-5%), Rising temperature (+0.9°C) +INFO: 127.0.0.1:36474 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.6°C) +INFO: 127.0.0.1:36484 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:36492 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-6%) +INFO: 127.0.0.1:36496 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:36508 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:36516 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:36524 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:39686 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:39694 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.9°C) +INFO: 127.0.0.1:39710 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:39714 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:39720 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:39732 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:39740 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:39750 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-3%), Vitals crossed into CRITICAL range +INFO: 127.0.0.1:39756 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:39762 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:39764 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:39766 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+18 bpm) +INFO: 127.0.0.1:39768 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:39770 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+27 bpm) +INFO: 127.0.0.1:39786 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:39796 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:39804 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:57498 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:57512 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-3%) +INFO: 127.0.0.1:57514 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57528 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.9°C) +INFO: 127.0.0.1:57532 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.7°C) +INFO: 127.0.0.1:57540 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57546 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:57552 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-5%) +INFO: 127.0.0.1:57556 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57572 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:57584 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+27 bpm), Rising temperature (+1.3°C) +INFO: 127.0.0.1:57594 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57602 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:57618 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57628 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57636 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:46504 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:46516 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+20 bpm) +INFO: 127.0.0.1:46526 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:46530 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:46534 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.6°C) +INFO: 127.0.0.1:46544 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:46552 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+24 bpm) +INFO: 127.0.0.1:46554 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:46570 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:46578 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-4%) +INFO: 127.0.0.1:46584 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:46596 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:46606 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:46622 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:46638 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:46646 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:46654 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58414 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.7°C) +INFO: 127.0.0.1:58428 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+15 bpm) +INFO: 127.0.0.1:58432 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58448 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:58454 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.1°C) +INFO: 127.0.0.1:58462 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58478 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:58480 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58488 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58500 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58502 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58512 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58516 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:58518 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58524 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58526 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58240 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:58252 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+36 bpm), Rising temperature (+0.6°C) +INFO: 127.0.0.1:58266 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58270 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.8°C) +INFO: 127.0.0.1:58280 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58290 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58298 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.8°C) +INFO: 127.0.0.1:58312 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58318 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58334 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:58340 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.9°C) +INFO: 127.0.0.1:58354 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58360 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:58376 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58380 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58394 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:36984 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:36996 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.8°C) +INFO: 127.0.0.1:37010 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:37018 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:37028 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+18 bpm) +INFO: 127.0.0.1:37036 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:37038 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:37050 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.7°C) +INFO: 127.0.0.1:37056 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:37060 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.5°C) +INFO: 127.0.0.1:37070 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:37074 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:37084 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:37096 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:37110 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:37120 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:37136 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:36896 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:36908 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:36914 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:36922 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:36932 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:36934 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:36940 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:36942 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.0°C) +INFO: 127.0.0.1:36948 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:36952 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:36956 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+2.1°C) +INFO: 127.0.0.1:36962 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:36970 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:36982 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:36984 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:36986 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:37002 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58866 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-4%) +INFO: 127.0.0.1:58872 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58884 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58890 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:58898 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.3°C) +INFO: 127.0.0.1:58904 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58914 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:58916 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58930 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58946 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:58954 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.0°C) +INFO: 127.0.0.1:58966 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:58968 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.3°C) +INFO: 127.0.0.1:58972 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58984 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58996 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:41560 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:41574 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:41578 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:41590 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:41598 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.6°C) +INFO: 127.0.0.1:41610 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:41624 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-4%) +INFO: 127.0.0.1:41630 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+15 bpm), Rising temperature (+0.8°C) +INFO: 127.0.0.1:41646 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:41660 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:41672 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:41688 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:41698 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:41704 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+17 bpm) +INFO: 127.0.0.1:41720 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:41728 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:41734 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:48958 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:48966 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:48972 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:48976 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+29 bpm) +INFO: 127.0.0.1:48992 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:49008 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:49010 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:49026 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.7°C) +INFO: 127.0.0.1:49028 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:49030 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:49044 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+20 bpm) +INFO: 127.0.0.1:49056 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:49064 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+26 bpm) +INFO: 127.0.0.1:49072 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:49088 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:49104 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:53802 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:53804 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:53816 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:53818 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:53826 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:53832 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:53834 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.6°C) +INFO: 127.0.0.1:53848 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-4%) +INFO: 127.0.0.1:53854 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:53862 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:53868 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.6°C) +INFO: 127.0.0.1:53884 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:53898 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+17 bpm), Rising temperature (+0.6°C) +INFO: 127.0.0.1:53902 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-5%) +INFO: 127.0.0.1:53906 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:53918 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:37472 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:37486 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+24 bpm) +INFO: 127.0.0.1:37496 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:37512 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:37514 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-4%) +INFO: 127.0.0.1:37522 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:37524 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.7°C) +INFO: 127.0.0.1:37526 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.6°C) +INFO: 127.0.0.1:37536 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:37548 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+24 bpm) +INFO: 127.0.0.1:37560 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:37574 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:37578 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:37594 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:37598 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:37606 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:37616 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:46818 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:46834 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:46848 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:46850 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-5%) +INFO: 127.0.0.1:46860 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:46862 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:46868 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:46872 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:46884 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:46888 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:46904 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-3%), Rising temperature (+0.6°C) +INFO: 127.0.0.1:46908 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:46920 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:46922 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:46936 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:46946 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:46962 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:43994 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:44000 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-5%) +INFO: 127.0.0.1:44014 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:44028 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:44032 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-5%), Rising temperature (+0.8°C) +INFO: 127.0.0.1:44038 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:44050 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:44062 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.5°C) +INFO: 127.0.0.1:44076 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:44092 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+20 bpm) +INFO: 127.0.0.1:44102 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:44116 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:44124 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.6°C) +INFO: 127.0.0.1:44128 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:44132 - "POST /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.7°C) +INFO: 127.0.0.1:44148 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:49466 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-5%) +INFO: 127.0.0.1:49478 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.8°C) +INFO: 127.0.0.1:49488 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:49502 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:49516 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:49526 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:49536 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:49548 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:49550 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:49556 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:49570 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+28 bpm) +INFO: 127.0.0.1:49574 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:49576 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:49588 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-4%), Rising temperature (+1.2°C) +INFO: 127.0.0.1:49602 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:49616 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:49626 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:35138 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.1°C) +INFO: 127.0.0.1:35146 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:35160 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:35176 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:35192 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:35202 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:35206 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:35214 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-4%) +INFO: 127.0.0.1:35230 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:35242 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.1°C) +INFO: 127.0.0.1:35258 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:35262 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:35270 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-3%) +INFO: 127.0.0.1:35278 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:35294 - "POST /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.7°C) +INFO: 127.0.0.1:35296 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:34752 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:34766 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:34776 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:34784 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:34790 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:34804 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:34820 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+18 bpm) +INFO: 127.0.0.1:34824 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+20 bpm) +INFO: 127.0.0.1:34836 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:34846 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.3°C) +INFO: 127.0.0.1:34856 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:34864 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:34874 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-3%) +INFO: 127.0.0.1:34880 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:34882 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:54476 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54488 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+15 bpm) +INFO: 127.0.0.1:54498 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.2°C) +INFO: 127.0.0.1:54500 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54510 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54516 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54532 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:54538 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54548 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.0°C) +INFO: 127.0.0.1:54552 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54568 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54570 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:54586 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54588 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54592 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54596 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54608 - "POST /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.5°C) +INFO: 127.0.0.1:55950 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:55958 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.8°C) +INFO: 127.0.0.1:55964 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:55966 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:55968 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:55980 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:55992 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:55998 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:56012 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:56014 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:56018 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:56032 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+19 bpm) +INFO: 127.0.0.1:56046 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:56058 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:56060 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:56074 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:56082 - "POST /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.6°C) +INFO: 127.0.0.1:57138 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57146 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.5°C) +INFO: 127.0.0.1:57154 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57164 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:57180 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:57188 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.8°C) +INFO: 127.0.0.1:57204 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57216 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+23 bpm), Rising temperature (+1.3°C) +INFO: 127.0.0.1:57218 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:57224 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57226 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:57240 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57256 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:57266 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-6%) +INFO: 127.0.0.1:57278 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57294 - "POST /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+29 bpm), Rising temperature (+0.5°C) +INFO: 127.0.0.1:33652 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:33668 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+17 bpm), Rising temperature (+0.5°C) +INFO: 127.0.0.1:33682 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+21 bpm), Rising temperature (+1.0°C) +INFO: 127.0.0.1:33684 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:33694 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:33708 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:33720 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:33734 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.6°C) +INFO: 127.0.0.1:33738 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:33740 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:33744 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:33754 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:33760 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:33768 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:33770 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-3%) +INFO: 127.0.0.1:33774 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:33786 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:48722 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:48738 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:48748 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.0°C) +INFO: 127.0.0.1:48758 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:48760 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+23 bpm) +INFO: 127.0.0.1:48764 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+1.0°C) +INFO: 127.0.0.1:48770 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:48774 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-3%), Rising temperature (+0.6°C) +INFO: 127.0.0.1:48784 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:48790 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:48804 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+22 bpm) +INFO: 127.0.0.1:48806 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:48814 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:48818 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:48832 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:48844 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:57676 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57682 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-5%), Rising temperature (+0.7°C) +INFO: 127.0.0.1:57688 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:57698 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57700 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.8°C) +INFO: 127.0.0.1:57706 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57708 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57722 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+18 bpm), Decreasing SpO2 (-6%) +INFO: 127.0.0.1:57734 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57736 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57752 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:57758 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:57760 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57768 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+23 bpm) +INFO: 127.0.0.1:57780 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57794 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:57904 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57906 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-3%), Rising temperature (+1.4°C) +INFO: 127.0.0.1:57914 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57920 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57930 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:57944 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:57956 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57962 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:57978 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57988 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:57990 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+36 bpm) +INFO: 127.0.0.1:58002 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58012 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58024 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.5°C) +INFO: 127.0.0.1:58034 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58048 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:58060 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:45452 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:45464 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+26 bpm), Rising temperature (+1.2°C) +INFO: 127.0.0.1:45466 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:45468 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:45472 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:45476 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-5%) +INFO: 127.0.0.1:45486 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:45502 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:45516 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:45532 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+18 bpm) +INFO: 127.0.0.1:45546 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:45548 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:45560 - "POST /api/vitals HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+21 bpm) +INFO: 127.0.0.1:45572 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:45580 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.9°C) +INFO: 127.0.0.1:45590 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:45602 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:53272 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:53288 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.9°C) +INFO: 127.0.0.1:53290 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:53302 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:53306 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:53320 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:53330 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:53340 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:53350 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:53360 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:53374 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:53384 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Increasing HR (+22 bpm) +INFO: 127.0.0.1:53396 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:53402 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Decreasing SpO2 (-4%), Rising temperature (+1.2°C) +INFO: 127.0.0.1:53414 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:53422 - "POST /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:47614 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:47616 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:47632 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:47644 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:47646 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.5°C) +INFO: 127.0.0.1:47650 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/queue HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/stats HTTP/1.1" 200 OK +INFO: 127.0.0.1:54104 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:47658 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:47670 - "GET /api/queue HTTP/1.1" 200 OK +⚠️ DETERIORATION DETECTED: P100004 + Concerns: Rising temperature (+0.6°C) +INFO: 127.0.0.1:47676 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: 127.0.0.1:47680 - "POST /api/vitals HTTP/1.1" 200 OK INFO: 127.0.0.1:47686 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:47702 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:47712 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:47720 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:47728 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:47734 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:47746 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:60736 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:60746 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:60748 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:60760 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:60772 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:60782 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:60798 - "POST /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:60810 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:60826 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:60834 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:60836 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:60842 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:60856 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:60870 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:60878 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:60888 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:60890 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:51482 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:51494 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:51500 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:51506 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:51516 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:51532 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:51544 - "POST /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:51560 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:51572 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:51584 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:51594 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:51596 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:51610 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:51618 - "POST /api/vitals HTTP/1.1" 200 OK -INFO: 127.0.0.1:51634 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:46186 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46196 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:46206 - "POST /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:46208 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46214 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:46228 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK -INFO: 127.0.0.1:49752 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:49766 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/queue HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/stats HTTP/1.1" 200 OK -INFO: 127.0.0.1:46182 - "GET /api/wristband-details HTTP/1.1" 200 OK +INFO: 127.0.0.1:47692 - "POST /api/vitals HTTP/1.1" 200 OK +INFO: Shutting down +INFO: Waiting for application shutdown. +INFO: Application shutdown complete. +INFO: Finished server process [209520] diff --git a/vitallink/logs/backend.pid b/vitallink/logs/backend.pid deleted file mode 100644 index 713c999..0000000 --- a/vitallink/logs/backend.pid +++ /dev/null @@ -1 +0,0 @@ -200440 diff --git a/vitallink/logs/dashboard.log b/vitallink/logs/dashboard.log index 84805d5..6d0f2a5 100644 --- a/vitallink/logs/dashboard.log +++ b/vitallink/logs/dashboard.log @@ -3,7 +3,7 @@ > vite - VITE v7.1.10 ready in 116 ms + VITE v7.1.10 ready in 107 ms ➜ Local: http://localhost:5173/ ➜ Network: use --host to expose diff --git a/vitallink/logs/dashboard.pid b/vitallink/logs/dashboard.pid deleted file mode 100644 index f9c17c9..0000000 --- a/vitallink/logs/dashboard.pid +++ /dev/null @@ -1 +0,0 @@ -200464 diff --git a/vitallink/logs/kiosk.pid b/vitallink/logs/kiosk.pid deleted file mode 100644 index e03efb9..0000000 --- a/vitallink/logs/kiosk.pid +++ /dev/null @@ -1 +0,0 @@ -200523 diff --git a/vitallink/logs/wristbands.pid b/vitallink/logs/wristbands.pid deleted file mode 100644 index 13ce005..0000000 --- a/vitallink/logs/wristbands.pid +++ /dev/null @@ -1 +0,0 @@ -200455 diff --git a/vitallink/simulator/__pycache__/wristband_simulator.cpython-39.pyc b/vitallink/simulator/__pycache__/wristband_simulator.cpython-39.pyc index 250e42d665326501f9d1de2722c9c9755c591fd5..a73b4a51260270186cfda97c3198fa46c4fc1b83 100644 GIT binary patch delta 89 zcmcbg`8|_2k(ZZ?0SF?Z*fQ5`+%Rk@qy8s)|c$NorAUW?rg7VoqvNi9$(cYLP-xVsUDU TLVlh?S!PLMPVr_@{zs|+|LGT! diff --git a/vitallink/simulator/wristband_simulator.py b/vitallink/simulator/wristband_simulator.py index 9892dcd..d553398 100644 --- a/vitallink/simulator/wristband_simulator.py +++ b/vitallink/simulator/wristband_simulator.py @@ -181,18 +181,18 @@ class WristbandSimulator: return int(hr), int(spo2), temp, self.activity_level def _determine_tier(self, hr: int, spo2: int, temp: float) -> tuple: - """Determine alert tier based on vitals""" + """Determine flags based on vitals - tier determined by backend""" flags = 0 # Battery warning if self.battery < 15: flags |= VitalFlags.LOW_BATT - # Check for critical vitals (EMERGENCY) + # Set EMERGENCY flag if critical vitals if hr > 140 or hr < 45 or spo2 < 88 or temp > 39.5 or temp < 35.0: flags |= VitalFlags.EMERGENCY tier = "EMERGENCY" - # Check for concerning vitals (ALERT) + # Set ALERT flag if concerning vitals elif hr > 110 or hr < 50 or spo2 < 92 or temp > 38.3 or temp < 35.5: flags |= VitalFlags.ALERT tier = "ALERT"