[613] | 1 | ORRCVIT ;SLC/MKB - Vitals utilities ; 25 Jul 2003 9:31 AM
|
---|
| 2 | ;;1.0;CARE MANAGEMENT;;Jul 15, 2003
|
---|
| 3 | ;
|
---|
| 4 | ; ID = "VIT:"_PatientID_;_MeasurementDate everywhere below
|
---|
| 5 | ;
|
---|
| 6 | LIST(ORY,DFN,SDATE,EDATE,VALS) ; -- Return MAX sets of measurements for DFN
|
---|
| 7 | ; in @ORY@(#) = Item=ID^^MeasurementDate in HL7 format, and if VALS
|
---|
| 8 | ; = Data=Vital^Value^Unit^MetricValue^Unit^BMI^SuppO2^CriticalFlag^Qualifiers
|
---|
| 9 | ; RPC = ORRC VITALS BY PATIENT
|
---|
| 10 | N ORN,GMRVSTR,CNT,IDT,VDT,TYPE,IFN,DATA,X K ^UTILITY($J,"GMRVD")
|
---|
| 11 | S SDATE=$$HL7TFM^XLFDT($G(SDATE)),EDATE=$$HL7TFM^XLFDT($G(EDATE))
|
---|
| 12 | S DFN=+$G(DFN),MAX=$S(SDATE&EDATE:100,1:5)
|
---|
| 13 | I $G(EDATE),$L(EDATE,".")<2 S EDATE=EDATE_".2359"
|
---|
| 14 | S GMRVSTR="BP;T;R;P;HT;WT;CVP;CG;PO2;PN",GMRVSTR(0)=SDATE_U_EDATE_U_MAX_"^1"
|
---|
| 15 | D EN1^GMRVUT0 S ORY=$NA(^TMP($J,"ORRCVIT")),(ORN,CNT)=0 K @ORY
|
---|
| 16 | S IDT=0 F S IDT=$O(^UTILITY($J,"GMRVD",IDT)) Q:IDT<1 D Q:CNT'<MAX
|
---|
| 17 | . S VDT=9999999-IDT,CNT=CNT+1
|
---|
| 18 | . S ORN=ORN+1,@ORY@(ORN)="Item=VIT:"_DFN_";"_VDT_U_U_VDT Q:'$G(VALS)
|
---|
| 19 | . S TYPE="" F S TYPE=$O(^UTILITY($J,"GMRVD",IDT,TYPE)) Q:TYPE="" D
|
---|
| 20 | .. S IFN=0 F S IFN=$O(^UTILITY($J,"GMRVD",IDT,TYPE,IFN)) Q:IFN<1 S X=$G(^(IFN)) D
|
---|
| 21 | ... D @TYPE ;return DATA w/relevant pieces
|
---|
| 22 | ... S ORN=ORN+1,@ORY@(ORN)="Data="_DATA
|
---|
| 23 | K ^UTILITY($J,"GMRVD")
|
---|
| 24 | Q
|
---|
| 25 | ;
|
---|
| 26 | DETAIL(ORY,VITAL) ; -- Return details of VITALs
|
---|
| 27 | ; where VITAL(#) = ID
|
---|
| 28 | ; in @ORY@(#) = Item=ID^^MeasurementDate in HL7 format
|
---|
| 29 | ; = Data=Vital^Value^Unit^MetricValue^Unit^BMI^SuppO2^CriticalFlag^Qualifiers
|
---|
| 30 | ; RPC = ORRC VITALS BY ID
|
---|
| 31 | N GMRVSTR,DFN,STRT,STOP,ORN,ORI,ID,IDT,VDT,TYPE,IFN,DATA,X
|
---|
| 32 | K ^UTILITY($J,"GMRVD") D RANGE
|
---|
| 33 | S GMRVSTR="BP;T;R;P;HT;WT;CVP;CG;PO2;PN",GMRVSTR(0)=STRT_U_STOP_"^100^1"
|
---|
| 34 | D EN1^GMRVUT0 S ORY=$NA(^TMP($J,"ORRCVIT")),ORN=0 K @ORY
|
---|
| 35 | S ORI=0 F S ORI=$O(VITAL(ORI)) Q:ORI<1 S ID=$G(VITAL(ORI)) D
|
---|
| 36 | . S VDT=$P(ID,";",2),IDT=9999999-VDT
|
---|
| 37 | . S ORN=ORN+1,@ORY@(ORN)="Item="_ID_U_U_VDT
|
---|
| 38 | . S TYPE="" F S TYPE=$O(^UTILITY($J,"GMRVD",IDT,TYPE)) Q:TYPE="" D
|
---|
| 39 | .. S IFN=0 F S IFN=$O(^UTILITY($J,"GMRVD",IDT,TYPE,IFN)) Q:IFN<1 S X=$G(^(IFN)) D
|
---|
| 40 | ... D @TYPE ;return DATA w/relevant pieces
|
---|
| 41 | ... S ORN=ORN+1,@ORY@(ORN)="Data="_DATA
|
---|
| 42 | K ^UTILITY($J,"GMRVD")
|
---|
| 43 | Q
|
---|
| 44 | ;
|
---|
| 45 | RANGE ; -- Get STRT,STOP,DFN from VITALs
|
---|
| 46 | N ORI,ID,VDT S (STRT,STOP)=""
|
---|
| 47 | S ORI=0 F S ORI=$O(VITAL(ORI)) Q:ORI<1 S ID=$G(VITAL(ORI)) D
|
---|
| 48 | . S DFN=+$P(ID,":",2),VDT=$P(ID,";",2)
|
---|
| 49 | . I $S('$L(STRT):1,VDT<STRT:1,1:0) S STRT=VDT
|
---|
| 50 | . I $S('$L(STOP):1,VDT>STOP:1,1:0) S STOP=VDT
|
---|
| 51 | Q
|
---|
| 52 | ;
|
---|
| 53 | ; Return formatted DATA string from X:
|
---|
| 54 | ;
|
---|
| 55 | BP ; -- Blood Pressure = B/P^value^^^^^^[*]^Q1;..;Qn
|
---|
| 56 | S DATA="B/P^"_$P(X,U,8)_"^^^^^^"_$P(X,U,12)_U_$P(X,U,17)
|
---|
| 57 | Q
|
---|
| 58 | T ; -- Temperature = Temp.^value^F^metric^C^^^[*]^Q1;..;Qn
|
---|
| 59 | S DATA="Temp.^"_$P(X,U,8)_"^F^"_$P(X,U,13)_"^C^^^"_$P(X,U,12)_U_$P(X,U,17)
|
---|
| 60 | Q
|
---|
| 61 | R ; -- Respiration = Resp.^value^^^^^^[*]^Q1;..;Qn
|
---|
| 62 | S DATA="Resp.^"_$P(X,U,8)_"^^^^^^"_$P(X,U,12)_U_$P(X,U,17)
|
---|
| 63 | Q
|
---|
| 64 | P ; -- Pulse = Pulse^value^^^^^^[*]^Q1;..;Qn
|
---|
| 65 | S DATA="Pulse^"_$P(X,U,8)_"^^^^^^"_$P(X,U,12)_U_$P(X,U,17)
|
---|
| 66 | Q
|
---|
| 67 | HT ; -- Height = Ht.^value^in^metric^cm^^^[*]^Q1;..;Qn
|
---|
| 68 | S DATA="Ht.^"_$P(X,U,8)_"^in^"_$P(X,U,13)_"^cm^^^"_$P(X,U,12)_U_$P(X,U,17)
|
---|
| 69 | Q
|
---|
| 70 | WT ; -- Weight = Wt.^value^lb^metric^kg^BodyMassIndex^^[*]^Q1;..;Qn
|
---|
| 71 | S DATA="Wt.^"_$P(X,U,8)_"^lb^"_$P(X,U,13)_"^kg^"_$P(X,U,14)_U_U_$P(X,U,12)_U_$P(X,U,17)
|
---|
| 72 | Q
|
---|
| 73 | CVP ; -- CenVenPress = CVP^value^cmH2O^^^^^[*]^Q1;..;Qn
|
---|
| 74 | S DATA="CVP^"_$P(X,U,8)_"^cmH2O^^^^^"_$P(X,U,12)_U_$P(X,U,17)
|
---|
| 75 | Q
|
---|
| 76 | CG ; -- Circm/Girth = C/G^value^in^metric^cm^^^[*]^Q1;..;Qn
|
---|
| 77 | S DATA="C/G^"_$P(X,U,8)_"^in^"_$P(X,U,13)_"^cm^^^"_$P(X,U,12)_U_$P(X,U,17)
|
---|
| 78 | Q
|
---|
| 79 | PO2 ; -- PulseOx = Pulse Ox^value^^^^^l/min of supplemental O2^[*]^Q1;..;Qn
|
---|
| 80 | S DATA="Pulse Ox^"_$P(X,U,8)_"^^^^^"_$P(X,U,15)_U_$P(X,U,12)_U_$P(X,U,17)
|
---|
| 81 | Q
|
---|
| 82 | PN ; -- Pain = Pain^value^^^^^^[*]^Q1;..;Qn
|
---|
| 83 | S DATA="Pain^"_$P(X,U,8)_"^^^^^^"_$P(X,U,12)_U_$P(X,U,17)
|
---|
| 84 | Q
|
---|
| 85 | ;
|
---|
| 86 | IDS(ORY,DFN,SDATE,EDATE) ; --Return recent measurement IDs for DFN
|
---|
| 87 | ; in @ORY@(DFN) = #sets ^ 1 if any are critical
|
---|
| 88 | ; @ORY@(DFN,ID) = * if critical, else null
|
---|
| 89 | ; [from ORRCDPT1]
|
---|
| 90 | N GMRVSTR,MAX,CNT,ABN,IDT,VDT,X
|
---|
| 91 | S ORY=$NA(^TMP($J,"ORRCVIT")) K @ORY,^UTILITY($J,"GMRVD")
|
---|
| 92 | S DFN=+$G(DFN),MAX=$S($G(SDATE)&$G(EDATE):100,1:5)
|
---|
| 93 | I $G(EDATE),$L(EDATE,".")<2 S EDATE=EDATE_".2359" ;end of day
|
---|
| 94 | S GMRVSTR="BP;T;R;P;HT;WT;CVP;CG;PO2;PN",GMRVSTR(0)=$G(SDATE)_U_$G(EDATE)_U_MAX_"^1"
|
---|
| 95 | D EN1^GMRVUT0 S CNT=0,ABN=""
|
---|
| 96 | S IDT=0 F S IDT=$O(^UTILITY($J,"GMRVD",IDT)) Q:IDT<1 D Q:CNT'<MAX
|
---|
| 97 | . S VDT=9999999-IDT,CNT=CNT+1,X=$$ABN(IDT)
|
---|
| 98 | . S @ORY@(DFN,"VIT:"_DFN_";"_VDT)=X S:$L(X) ABN=1
|
---|
| 99 | S:CNT @ORY@(DFN)=CNT_U_ABN
|
---|
| 100 | K ^UTILITY($J,"GMRVD")
|
---|
| 101 | Q
|
---|
| 102 | ;
|
---|
| 103 | ABN(IDT) ; -- Return * if any value from measurement set is critical, else null
|
---|
| 104 | N Y,TYPE,IFN S Y=""
|
---|
| 105 | S TYPE="" F S TYPE=$O(^UTILITY($J,"GMRVD",IDT,TYPE)) Q:TYPE="" D
|
---|
| 106 | . S IFN=0 F S IFN=$O(^UTILITY($J,"GMRVD",IDT,TYPE,IFN)) Q:IFN<1 S:$G(^(IFN))["*" Y="*"
|
---|
| 107 | Q Y
|
---|