2 lines
86 KiB
JavaScript
2 lines
86 KiB
JavaScript
|
|
import{r as m,j as e,a1 as le,I as T,T as P,a2 as ye,a3 as ke,a4 as ce,a5 as we,z as B,a6 as Ce,a7 as de,a8 as Se,a9 as me,aa as Pe,i as Me,ab as Re,ac as ue,y as $,ad as xe,ae as ge,af as pe,Y as _,ag as Fe,ah as Ee,ai as Ie,R as Te,Q as he,m as Ae,aj as De,C as G,ak as ze,a as L}from"./0-vendor-react-DWOJpYrt.js";import{B as F,I as v,C as R,A as Z,a as X,b as Ve,c as K,d as W,e as Q}from"./page-comunicacion-DmHQUHoW.js";import{c as S,B as Y}from"./page-ajustes-DgawOEJM.js";import{a as be}from"./1-vendor-utils-Delnuc0l.js";const Le={smartPerfusions:!0},q=s=>typeof s=="number"&&Number.isFinite(s),V=(s,t,r)=>({value:s,interpretation:t,severity:r}),Oe=s=>{const{weightKg:t,doseMcgKgMin:r,concentrationMcgMl:n,doseRange:a}=s;if(!q(t)||!q(r)||!q(n)||t<=0||r<=0||n<=0)return V("N/A","Datos insuficientes para calcular ml/h","amber");const i=r*t*60/n;if(a){if(r>a.max)return V(i,"Dosis por encima del rango habitual","red");if(r<a.min)return V(i,"Dosis por debajo del rango habitual","amber")}return V(i,"Dosis dentro de rango habitual","green")},Be=(s,t=20)=>{if(!q(s)||!q(t)||s<=0||t<=0)return V("N/A","Datos insuficientes para gotas/min","amber");const r=s*t/60;return V(r,"Goteo estimado","green")},w=s=>typeof s=="number"&&Number.isFinite(s),y=(s,t,r)=>({value:s,interpretation:t,severity:r}),Es=(s,t)=>{if(!w(s)||!w(t))return y("N/A","Insufficient data for MAP","amber");const r=(2*t+s)/3;return r<65?y(r,"MAP low (hypotension risk)","red"):r<75?y(r,"MAP borderline","amber"):y(r,"MAP adequate","green")},Is=(s,t)=>{if(!w(s)||!w(t)||t<=0)return y("N/A","Insufficient data for Shock Index","amber");const r=s/t;return r>=1?y(r,"Shock Index high (possible shock)","red"):r>=.7?y(r,"Shock Index elevated","amber"):y(r,"Shock Index normal","green")},Ts=s=>{const{respiratoryRate:t,systolicBP:r,gcs:n}=s;if(!w(t)||!w(r)||!w(n))return y("N/A","Insufficient data for qSOFA","amber");const a=(t>=22?1:0)+(r<=100?1:0)+(n<15?1:0);return a>=2?y(a,"qSOFA high risk","red"):a===1?y(a,"qSOFA elevated risk","amber"):y(a,"qSOFA low risk","green")},qe=s=>s<=8?3:s<=11?1:s<=20?0:s<=24?2:3,He=s=>s>=96?0:s>=94?1:s>=92?2:3,$e=s=>s<=90?3:s<=100?2:s<=110?1:s<=219?0:3,Ge=s=>s<=40?3:s<=50?1:s<=90?0:s<=110?1:s<=130?2:3,_e=s=>s<=35?3:s<=36?1:s<=38?0:s<=39?1:2,Ue=s=>s<15?3:0,As=s=>{const{respiratoryRate:t,oxygenSaturation:r,systolicBP:n,heartRate:a,temperatureC:i,gcs:o}=s;if(!w(t)||!w(r)||!w(n)||!w(a)||!w(i)||!w(o))return y("N/A","Insufficient data for NEWS2","amber");const d=qe(t)+He(r)+$e(n)+Ge(a)+_e(i)+Ue(o);return d>=7?y(d,"NEWS2 high risk","red"):d>=5?y(d,"NEWS2 medium risk","amber"):y(d,"NEWS2 low risk","green")},ee="patient_context_v1",Ke=1440*60*1e3,H={patient:{age:void 0,weight:void 0,sex:void 0},vitals:{heartRate:void 0,respiratoryRate:void 0,oxygenSaturation:void 0,systolicBP:void 0,diastolicBP:void 0,temperatureC:void 0,glucoseMgDl:void 0,gcs:void 0},clinicalFlags:{}},fe=m.createContext(void 0),se=typeof window<"u",We=()=>{if(!se)return null;try{const s=window.localStorage.getItem(ee);return s?JSON.parse(s):null}catch{return null}},Qe=s=>{if(se)try{const t={data:s,expiresAt:Date.now()+Ke};window.localStorage.setItem(ee,JSON.stringify(t))}catch{}},ae=()=>{if(se)try{window.localStorage.removeItem(ee)}catch{}},Ds=({children:s})=>{const[t,r]=m.useState(H);m.useEffect(()=>{const a=We();if(a){if(a.expiresAt<=Date.now()){ae(),r(H);return}r(a.data||H)}},[]),m.useEffect(()=>{Qe(t)},[t]);const n=m.useMemo(()=>({state:t,setPatientBasics:a=>{r(i=>({...i,patient:{...i.patient,...a}}))},updateVitals:a=>{r(i=>({...i,vitals:{...i.vitals,...a}}))},setClinicalFlags:a=>{r(i=>({...i,clinicalFlags:{...a}}))},resetPatient:()=>{r(H),ae()}}),[t]);return e.jsx(fe.Provider,{value:n,children:s})},Ye=()=>{const s=m.useContext(fe);if(!s)throw new Error("usePatient must be used within PatientContextProvider");return s},Je=()=>{const s=Ye(),{state:t}=s,r=()=>t.patient!==null&&t.patient!==void 0,n=()=>t.vitals!==null&&t.vitals!==void 0,a=()=>t.patient??{age:void 0,weight:void 0,sex:void 0},i=()=>t.vitals??{heartRate:void 0,respiratoryRate:void 0,oxygenSaturation:void 0,systolicBP:void 0,diastol
|