Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ORQQVI

ORQQVI.m

Go to the documentation of this file.
  1. ORQQVI ; slc/STAFF - Functions which return patient vital and I/O data ;31-Dec-2012 10:33;PLS
  1. ;;3.0;ORDER ENTRY/RESULTS REPORTING;**10,198,215,250,260,285,1010**;Dec 17, 1997;Build 47
  1. ;Modified - IHS/MSC/MGH - 10/23/2012 - Line VITAL+2
  1. VITALS(ORY,DFN,ORSDT,OREDT) ; return patient's vital measurements taken between start date/time and end date/time
  1. ;ORY: return variable, results are returned in the format:
  1. ; vital measurement ien^vital type^date/time taken^rate
  1. ;DFN: patient identifier from Patient File [#2]
  1. ;ORSDT: start date/time in Fileman format
  1. ;OREDT: end date/time in Fileman format
  1. ;DBIA for PXRMINDX(120.5 is 4290
  1. ;DBIA for ^GMVPXRM is 3647
  1. ;DBIA for ^GMRVUT0 is 1446
  1. K ^UTILITY($J,"GMRVD")
  1. S GMRVSTR="BP;HT;WT;T;R;P;PN" ;dee 2/12/99 added PN
  1. S GMRVSTR(0)=ORSDT_"^"_OREDT_"^"_"^"
  1. D EN1^GMRVUT0
  1. N ORT,ORD,ORI,I
  1. S ORT="",ORD=0,ORI=0,I=0
  1. F S ORT=$O(^UTILITY($J,"GMRVD",ORT)) Q:ORT="" D
  1. .F S ORD=$O(^UTILITY($J,"GMRVD",ORT,ORD)) Q:ORD<1 D
  1. ..F S ORI=$O(^UTILITY($J,"GMRVD",ORT,ORD,ORI)) Q:ORI<1 D
  1. ...S I=I+1
  1. ...S ORY(I)=ORI_"^"_ORT_"^"_$P(^UTILITY($J,"GMRVD",ORT,ORD,ORI),"^",8)_"^"_$P(^(ORI),"^")
  1. I I=0 S ORY(1)="^No vitals found."
  1. K GMRVSTR
  1. Q
  1. ;
  1. XFASTVIT(ORY,DFN,F1,F2) ; return patient's most recent vital measurements
  1. ;ORY: return variable, results are returned in the format:
  1. ; vital measurement ien^vital type^rate^date/time taken
  1. ;DFN: patient identifier from Patient File [#2]
  1. ; F1 & F2 are ignored
  1. ;
  1. N CNT
  1. S CNT=0
  1. D VITAL("TEMPERATURE","T",DFN,.ORY,.CNT)
  1. D VITAL("PULSE","P",DFN,.ORY,.CNT)
  1. D VITAL("RESPIRATION","R",DFN,.ORY,.CNT)
  1. D VITAL("BLOOD PRESSURE","BP",DFN,.ORY,.CNT)
  1. D VITAL("HEIGHT","HT",DFN,.ORY,.CNT)
  1. D VITAL("WEIGHT","WT",DFN,.ORY,.CNT)
  1. D VITAL("PAIN","PN",DFN,ORY,.CNT) ;dee 2/11/99
  1. Q
  1. ;
  1. XVITAL(VITAL,ABBREV,DFN,ORY,CNT) ; get vital measurement
  1. N DATA,IDT,IEN,OK,VTYPE
  1. S VTYPE=$$FIND1^DIC(120.51,"","BX",VITAL,"","","ERR")
  1. I 'VTYPE Q
  1. S OK=0,IDT=0 F S IDT=$O(^PXRMINDX(120.5,"PI",DFN,VTYPE,IDT),-1) Q:IDT<1 D Q:OK
  1. .S IEN="" F S IEN=$O(^PXRMINDX(120.5,"PI",DFN,VTYPE,IDT,IEN)) Q:$L(IEN)<1 D Q:OK
  1. ..D EN^GMVPXRM(.DATA,IEN,"I")
  1. ..I $P(DATA(1),U)=-1 Q
  1. ..S CNT=CNT+1,OK=1
  1. ..S ORY(CNT)=IEN_U_ABBREV_U_$P(DATA(7),U)_U_$P(DATA(1),U)
  1. Q
  1. ;
  1. NOTEVIT(ORY,DFN,NOTEIEN) ;
  1. N VSTR,NOTEDATE
  1. D NOTEVSTR^ORWPCE(.VSTR,NOTEIEN)
  1. Q:$P(VSTR,";",2)=""
  1. D FASTVIT(.ORY,DFN,$P(VSTR,";",2))
  1. Q
  1. ;
  1. FASTVIT(ORY,DFN,F1,F2) ; return patient's most recent vital measurements
  1. ; in date range
  1. ;ORY: return variable, results are returned in the format:
  1. ; vital measurement ien^vital type^rate^date/time taken
  1. ;DFN: patient identifier from Patient File [#2]
  1. ; F1: starting date/time range
  1. ; F2: ending date/time range
  1. ;
  1. N CNT,DT1,DT2
  1. S CNT=0
  1. I $G(F1)>0 D
  1. . I $G(F2)="",F1["." S DT1=$P(F1,".",1)_"."_$E($P(F1,".",2),1,4)
  1. . E S DT1=F1
  1. E S DT1=1
  1. S DT2=$S($G(F2)>0:F2,DT1>1:DT1,1:9999998)
  1. ;
  1. D VITAL("TEMPERATURE","T",DFN,.ORY,.CNT,DT1,DT2)
  1. D VITAL("PULSE","P",DFN,.ORY,.CNT,DT1,DT2)
  1. D VITAL("RESPIRATION","R",DFN,.ORY,.CNT,DT1,DT2)
  1. D VITAL("BLOOD PRESSURE","BP",DFN,.ORY,.CNT,DT1,DT2)
  1. D VITAL("HEIGHT","HT",DFN,.ORY,.CNT,DT1,DT2)
  1. D VITAL("WEIGHT","WT",DFN,.ORY,.CNT,DT1,DT2)
  1. D VITAL("PAIN","PN",DFN,.ORY,.CNT,DT1,DT2) ;dee 2/11/99
  1. D VITAL("PULSE OXIMETRY","PO2",DFN,.ORY,.CNT,DT1,DT2)
  1. D VITAL("CENTRAL VENOUS PRESSURE","CVP",DFN,.ORY,.CNT,DT1,DT2)
  1. D VITAL("CIRCUMFERENCE/GIRTH","CG",DFN,.ORY,.CNT,DT1,DT2)
  1. D VITAL("BODY MASS INDEX","BMI",DFN,.ORY,.CNT,DT1,DT2)
  1. Q
  1. ;
  1. VITAL(VITAL,ABBREV,DFN,ORY,CNT,F1,F2) ;
  1. ;get most recent vital measurement in date range
  1. ;IHS/MSC/MGH Get vitals from V Measurement file
  1. I DUZ("AG")="I" D MSR(VITAL,ABBREV,DFN,.ORY,CNT,F1,F2) Q
  1. I ABBREV="BMI" D BMILAST^ORWGAPIX(DFN,.ORY,.CNT) Q
  1. N DATA,IDT,ENDIDT,IEN,LOOP,OK,QUALS,VTYPE,MVAL,VALUE
  1. S VTYPE=$$FIND1^DIC(120.51,"","BX",VITAL,"","","ERR")
  1. I 'VTYPE Q
  1. S OK=0
  1. S IDT=F2+$S(F2#1:.0000001,1:.7)
  1. S ENDIDT=F1-.0000001
  1. F S IDT=$O(^PXRMINDX(120.5,"PI",DFN,VTYPE,IDT),-1) Q:IDT<ENDIDT!'IDT D Q:OK
  1. .S IEN="" F S IEN=$O(^PXRMINDX(120.5,"PI",DFN,VTYPE,IDT,IEN)) Q:$L(IEN)<1 D Q:OK
  1. ..D EN^GMVPXRM(.DATA,IEN,"B")
  1. ..I $P(DATA(1),U)=-1 Q
  1. ..S CNT=CNT+1,OK=1,VALUE=$P(DATA(7),U)
  1. ..S QUALS(CNT)=""
  1. ..F LOOP=1:1 Q:'$D(DATA(12,LOOP)) D
  1. ...S QUALS(CNT)=QUALS(CNT)_$S(QUALS(CNT)="":"",1:",")_$P(DATA(12,LOOP),U,2)
  1. ..; changed to display 'POX' rather than 'PO2' per CQ 10592
  1. ..S ORY(CNT)=IEN_U_$S(ABBREV="PO2":"POX",1:ABBREV)_U_VALUE_U_$P(DATA(1),U)
  1. ..I $P(ORY(CNT),"^",2)="T" D ; Temperature.
  1. ...S ORY(CNT)=ORY(CNT)_"^"_VALUE_$S($E(VALUE):" F",1:"")
  1. ...S MVAL=+VALUE
  1. ...Q:'MVAL
  1. ...S MVAL=MVAL-32
  1. ...S MVAL=$J((MVAL*(5/9)),3,1)
  1. ...S ORY(CNT)=ORY(CNT)_"^("_MVAL_" C)"
  1. ..I $P(ORY(CNT),"^",2)="P" D ; Pulse.
  1. ...S ORY(CNT)=ORY(CNT)_"^"_VALUE
  1. ..I $P(ORY(CNT),"^",2)="R" D ; Respiration.
  1. ...S ORY(CNT)=ORY(CNT)_"^"_VALUE
  1. ..I $P(ORY(CNT),"^",2)="BP" D ; Blood Pressure.
  1. ...S ORY(CNT)=ORY(CNT)_"^"_VALUE
  1. ..I $P(ORY(CNT),"^",2)="HT" D ; Height.
  1. ...S ORY(CNT)=ORY(CNT)_"^"_VALUE_$S($E(VALUE):" in",1:"")
  1. ...S MVAL=+VALUE
  1. ...Q:'MVAL
  1. ...S MVAL=$J((MVAL*2.54),3,1)
  1. ...S ORY(CNT)=ORY(CNT)_"^("_MVAL_" cm)"
  1. ..I $P(ORY(CNT),"^",2)="WT" D ; Weight.
  1. ...S ORY(CNT)=ORY(CNT)_"^"_VALUE_$S($E(VALUE):" lb",1:"")
  1. ...S MVAL=+VALUE
  1. ...Q:'MVAL
  1. ...; changed 2.2 to 2.20462262 per CQ 10637
  1. ...S MVAL=$J((MVAL/2.20462262),3,1)
  1. ...S ORY(CNT)=ORY(CNT)_"^("_MVAL_" kg)"
  1. ..I $P(ORY(CNT),"^",2)="PN" D ; Pain
  1. ...S ORY(CNT)=ORY(CNT)_"^"_VALUE
  1. ..; looks for 'POX' rather than 'PO2' due to change for CQ 10592 above
  1. ..I $P(ORY(CNT),"^",2)="POX" D ; Pulse Oximetry.
  1. ...S ORY(CNT)=ORY(CNT)_"^"_$P(ORY(CNT),"^",3)
  1. ...S $P(ORY(CNT),U,8)=$P(DATA(8),U)
  1. ..I $P(ORY(CNT),"^",2)="CVP" D ; Central Venous Pressure.
  1. ...S ORY(CNT)=ORY(CNT)_"^"_$P(ORY(CNT),"^",3)
  1. ...S MVAL=$P(ORY(CNT),"^",3)
  1. ...I MVAL'=+MVAL,+MVAL=0 S ORY(CNT)=ORY(CNT)_"^",$P(ORY(CNT),U,7)="" Q
  1. ...S MVAL=$J((MVAL/1.36),3,1)
  1. ...S ORY(CNT)=ORY(CNT)_" cmH20^("_MVAL_" mmHg)"
  1. ..I $P(ORY(CNT),"^",2)="CG" D ; Circumference Girth.
  1. ...S ORY(CNT)=ORY(CNT)_"^"_$P(ORY(CNT),"^",3)
  1. ...S MVAL=$P(ORY(CNT),"^",3)
  1. ...I MVAL'=+MVAL,+MVAL=0 S ORY(CNT)=ORY(CNT)_"^",$P(ORY(CNT),U,7)="" Q
  1. ...S MVAL=$J((MVAL*2.54),3,1)
  1. ...S ORY(CNT)=ORY(CNT)_" in^("_MVAL_" cm)"
  1. ..S $P(ORY(CNT),U,7)=QUALS(CNT)
  1. Q
  1. MSR(VITAL,ABBREV,DFN,ORY,CNT,F1,F2) ;EP-
  1. ;I ABBREV="BMI" D BMILAST^ORWGAPIX(DFN,.ORY,.CNT) Q
  1. I ABBREV="BMI" Q
  1. N DATA,IDT,ENDIDT,IEN,LOOP,OK,QUALS,VTYPE,MVAL,VALUE
  1. S ABBREV=$S(ABBREV="T":"TMP",ABBREV="P":"PU",ABBREV="R":"RS",ABBREV="PN":"PA",ABBREV="PO2":"O2",1:ABBREV)
  1. S VTYPE=$$FIND1^DIC(9999999.07,"","BX",ABBREV,"","","ERR")
  1. I 'VTYPE Q
  1. S OK=0
  1. S IDT=F2+$S(F2#1:.0000001,1:.7)
  1. S ENDIDT=F1-.0000001
  1. F S IDT=$O(^PXRMINDX(9000010.01,"PI",DFN,VTYPE,IDT),-1) Q:IDT<ENDIDT!'IDT D Q:OK
  1. .S IEN="" F S IEN=$O(^PXRMINDX(9000010.01,"PI",DFN,VTYPE,IDT,IEN)) Q:$L(IEN)<1 D Q:OK
  1. ..D VMEA^BPXRMPX(.DATA,IEN,"B")
  1. ..I $P(DATA(1),U)=-1 Q
  1. ..S CNT=CNT+1,OK=1,VALUE=$P(DATA(7),U)
  1. ..S QUALS(CNT)=""
  1. ..F LOOP=1:1 Q:'$D(DATA(12,LOOP)) D
  1. ...S QUALS(CNT)=QUALS(CNT)_$S(QUALS(CNT)="":"",1:",")_$P(DATA(12,LOOP),U,2)
  1. ..; changed to display 'POX' rather than 'PO2' per CQ 10592
  1. ..S ORY(CNT)=IEN_U_$S(ABBREV="PO2":"O2",1:ABBREV)_U_VALUE_U_$P(DATA(1),U)
  1. ..I $P(ORY(CNT),"^",2)="TMP" D ; Temperature.
  1. ...S ORY(CNT)=ORY(CNT)_"^"_VALUE_$S($E(VALUE):" F",1:"")
  1. ...S MVAL=+VALUE
  1. ...Q:'MVAL
  1. ...S MVAL=MVAL-32
  1. ...S MVAL=$J((MVAL*(5/9)),3,1)
  1. ...S ORY(CNT)=ORY(CNT)_"^("_MVAL_" C)"
  1. ..I $P(ORY(CNT),"^",2)="PU" D ; Pulse.
  1. ...S ORY(CNT)=ORY(CNT)_"^"_VALUE
  1. ..I $P(ORY(CNT),"^",2)="RS" D ; Respiration.
  1. ...S ORY(CNT)=ORY(CNT)_"^"_VALUE
  1. ..I $P(ORY(CNT),"^",2)="BP" D ; Blood Pressure.
  1. ...S ORY(CNT)=ORY(CNT)_"^"_VALUE
  1. ..I $P(ORY(CNT),"^",2)="HT" D ; Height.
  1. ...S ORY(CNT)=ORY(CNT)_"^"_VALUE_$S($E(VALUE):" in",1:"")
  1. ...S MVAL=+VALUE
  1. ...Q:'MVAL
  1. ...S MVAL=$J((MVAL*2.54),3,1)
  1. ...S ORY(CNT)=ORY(CNT)_"^("_MVAL_" cm)"
  1. ..I $P(ORY(CNT),"^",2)="WT" D ; Weight.
  1. ...S ORY(CNT)=ORY(CNT)_"^"_VALUE_$S($E(VALUE):" lb",1:"")
  1. ...S MVAL=+VALUE
  1. ...Q:'MVAL
  1. ...; changed 2.2 to 2.20462262 per CQ 10637
  1. ...S MVAL=$J((MVAL/2.20462262),3,1)
  1. ...S ORY(CNT)=ORY(CNT)_"^("_MVAL_" kg)"
  1. ..I $P(ORY(CNT),"^",2)="PA" D ; Pain
  1. ...S ORY(CNT)=ORY(CNT)_"^"_VALUE
  1. ..; looks for 'POX' rather than 'PO2' due to change for CQ 10592 above
  1. ..I $P(ORY(CNT),"^",2)="O2" D ; Pulse Oximetry.
  1. ...S ORY(CNT)=ORY(CNT)_"^"_$P(ORY(CNT),"^",3)
  1. ...S $P(ORY(CNT),U,8)=$P(DATA(8),U)
  1. ..I $P(ORY(CNT),"^",2)="CVP" D ; Central Venous Pressure.
  1. ...S ORY(CNT)=ORY(CNT)_"^"_$P(ORY(CNT),"^",3)
  1. ...S MVAL=$P(ORY(CNT),"^",3)
  1. ...I MVAL'=+MVAL,+MVAL=0 S ORY(CNT)=ORY(CNT)_"^",$P(ORY(CNT),U,7)="" Q
  1. ...S MVAL=$J((MVAL/1.36),3,1)
  1. ...S ORY(CNT)=ORY(CNT)_" cmH20^("_MVAL_" mmHg)"
  1. ..I $P(ORY(CNT),"^",2)="CG" D ; Circumference Girth.
  1. ...S ORY(CNT)=ORY(CNT)_"^"_$P(ORY(CNT),"^",3)
  1. ...S MVAL=$P(ORY(CNT),"^",3)
  1. ...I MVAL'=+MVAL,+MVAL=0 S ORY(CNT)=ORY(CNT)_"^",$P(ORY(CNT),U,7)="" Q
  1. ...S MVAL=$J((MVAL*2.54),3,1)
  1. ...S ORY(CNT)=ORY(CNT)_" in^("_MVAL_" cm)"
  1. ..S $P(ORY(CNT),U,7)=QUALS(CNT)
  1. Q