| 1 | GMTSVSS ; SLC/KER - Selected Vital Signs           ; 02/27/2002
 | 
|---|
| 2 |  ;;2.7;Health Summary;**8,20,28,35,49,78**;Oct 20, 1995
 | 
|---|
| 3 |  ;                          
 | 
|---|
| 4 |  ; External References
 | 
|---|
| 5 |  ;   DBIA  4791  EN1^GMVHS
 | 
|---|
| 6 |  ;   DBIA 10141  $$VERSION^XPDUTL
 | 
|---|
| 7 |  ;   DBIA 10015  EN^DIQ1
 | 
|---|
| 8 |  ;   DBIA 10022  %XY^%RCR
 | 
|---|
| 9 |  ;                    
 | 
|---|
| 10 |  ; Health Summary patch GMTS*2.7*35 will require 
 | 
|---|
| 11 |  ; Vitals version 4.0, patch GMRV*4.0*7
 | 
|---|
| 12 |  ;                          
 | 
|---|
| 13 | OUTPAT ; Outpatient Select Vitals Signs Main control
 | 
|---|
| 14 |  N CNT,COL,COLL,HDR,GMTSDA,GMTSDT,GMTSF,GMTSI,GMW,GMRVSTR,LOOP,MAX,ROW,WIDTH
 | 
|---|
| 15 |  K ^UTILITY($J,"GMRVD") S MAX=$S(+($G(GMTSNDM))>0:+($G(GMTSNDM)),1:100)
 | 
|---|
| 16 |  S GMTSI=0 F  S GMTSI=$O(GMTSEG(GMTSEGN,120.51,GMTSI)) Q:GMTSI'>0  S GMTSDA=GMTSEG(GMTSEGN,120.51,GMTSI) D BLDSTR
 | 
|---|
| 17 |  Q:'$D(GMRVSTR)
 | 
|---|
| 18 |  S GMRVSTR(0)=GMTSBEG_U_GMTSEND_U_MAX_U_1
 | 
|---|
| 19 |  ;   Set to only get Vital Sign for Clinics
 | 
|---|
| 20 |  S GMRVSTR("LT")="^C^"
 | 
|---|
| 21 |  ;D BLDHDR,EN1^GMRVUT0
 | 
|---|
| 22 |  D BLDHDR,EN1^GMVHS
 | 
|---|
| 23 |  ;   If no data, display most recent inpatient measurements
 | 
|---|
| 24 |  I '$D(^UTILITY($J,"GMRVD")) D  Q
 | 
|---|
| 25 |  . D CKP^GMTSUP Q:$D(GMTSQIT)  W "*** No Outpatient measurements ***",!!
 | 
|---|
| 26 |  . S MAX=1 D ENVS
 | 
|---|
| 27 |  S ROW=1 D NXTROW
 | 
|---|
| 28 |  D WRTHDR,WRTHDR1
 | 
|---|
| 29 |  S GMTSDT="" F GMTSF=1:1:MAX S GMTSDT=$O(^UTILITY($J,"GMRVD",GMTSDT)) Q:GMTSDT'>0  D WRT Q:$D(GMTSQIT)  D CKP^GMTSUP Q:$D(GMTSQIT)  W !
 | 
|---|
| 30 |  I $O(COL(ROW)) F ROW=2:1 Q:'$D(COL(ROW))!($D(GMTSQIT))  D
 | 
|---|
| 31 |  . D NXTROW
 | 
|---|
| 32 |  . W !! D WRTHDR,WRTHDR1
 | 
|---|
| 33 |  . S GMTSDT="" F GMTSF=1:1:MAX S GMTSDT=$O(^UTILITY($J,"GMRVD",GMTSDT)) Q:GMTSDT'>0  D WRT Q:$D(GMTSQIT)  D CKP^GMTSUP Q:$D(GMTSQIT)  W !
 | 
|---|
| 34 |  K ^UTILITY($J,"GMRVD"),GMTSVMVR
 | 
|---|
| 35 |  Q
 | 
|---|
| 36 | ENVS ; Set up for extraction routine
 | 
|---|
| 37 |  N CNT,COL,COLL,HDR,HDR1,GMTSDA,GMTSDT,GMTSF,GMTSI,GMW,LOOP,ROW,WIDTH
 | 
|---|
| 38 |  K ^UTILITY($J,"GMRVD"),GMRVSTR("LT")
 | 
|---|
| 39 |  S MAX=$S(+($G(MAX))>0:MAX,+($G(MAX))'>0&(+($G(GMTSNDM))>0):+($G(GMTSNDM)),1:100)
 | 
|---|
| 40 |  S GMTSI=0 F  S GMTSI=$O(GMTSEG(GMTSEGN,120.51,GMTSI)) Q:GMTSI'>0  S GMTSDA=GMTSEG(GMTSEGN,120.51,GMTSI) D BLDSTR
 | 
|---|
| 41 |  Q:'$D(GMRVSTR)
 | 
|---|
| 42 |  S GMRVSTR(0)=GMTSBEG_U_GMTSEND_U_MAX_U_1
 | 
|---|
| 43 |  ;D BLDHDR,EN1^GMRVUT0
 | 
|---|
| 44 |  D BLDHDR,EN1^GMVHS
 | 
|---|
| 45 |  I '$D(^UTILITY($J,"GMRVD")) Q
 | 
|---|
| 46 |  S ROW=1 D NXTROW
 | 
|---|
| 47 |  D WRTHDR,WRTHDR1
 | 
|---|
| 48 |  S GMTSDT="" F GMTSF=1:1:MAX S GMTSDT=$O(^UTILITY($J,"GMRVD",GMTSDT)) Q:GMTSDT'>0  D WRT Q:$D(GMTSQIT)  D CKP^GMTSUP Q:$D(GMTSQIT)  W !
 | 
|---|
| 49 |  I $O(COL(ROW)) F ROW=2:1 Q:'$D(COL(ROW))!($D(GMTSQIT))  D
 | 
|---|
| 50 |  . D NXTROW
 | 
|---|
| 51 |  . W !! D WRTHDR,WRTHDR1
 | 
|---|
| 52 |  . S GMTSDT="" F GMTSF=1:1:MAX S GMTSDT=$O(^UTILITY($J,"GMRVD",GMTSDT)) Q:GMTSDT'>0  D WRT Q:$D(GMTSQIT)  D CKP^GMTSUP Q:$D(GMTSQIT)  W !
 | 
|---|
| 53 |  K ^UTILITY($J,"GMRVD"),GMTSVMVR
 | 
|---|
| 54 |  Q
 | 
|---|
| 55 | BLDSTR ; Builds GMRVSTR string for extract call
 | 
|---|
| 56 |  N DA,DIC,DIQ,DR,VIT
 | 
|---|
| 57 |  S GMTSVMVR=+$$VERSION^XPDUTL("GMRV")
 | 
|---|
| 58 |  S DIQ="VIT(",DIQ(0)="E",DIC=120.51,DR="1",DA=GMTSDA
 | 
|---|
| 59 |  D EN^DIQ1 S VIT=VIT(120.51,DA,1,"E")
 | 
|---|
| 60 |  S GMRVSTR=$S($D(GMRVSTR):GMRVSTR_";"_VIT,1:VIT)
 | 
|---|
| 61 |  Q
 | 
|---|
| 62 | BLDHDR ; Builds the HDR array
 | 
|---|
| 63 |  N ABB,GMTSI S COL=18
 | 
|---|
| 64 |  F GMTSI=1:1:$L(GMRVSTR,";") D
 | 
|---|
| 65 |  . S (HDR(GMTSI-1),ABB)=$P(GMRVSTR,";",GMTSI)
 | 
|---|
| 66 |  . S HDR(GMTSI-1)=HDR(GMTSI-1)_U
 | 
|---|
| 67 |  . S HDR(GMTSI-1)=HDR(GMTSI-1)_$S(ABB="BP":"BP",ABB="PN":"PAIN",ABB="HT":"HEIGHT",ABB="WT":"WEIGHT",ABB="P":"PULSE",ABB="R":"RESP",ABB="T":"TEMP",ABB="PO2":"POx",1:ABB)
 | 
|---|
| 68 |  . S WIDTH=$S($P(HDR(GMTSI-1),U)="T":13,$P(HDR(GMTSI-1),U)="P":8,$P(HDR(GMTSI-1),U)="R":12,$P(HDR(GMTSI-1),U)="WT":20,$P(HDR(GMTSI-1),U)="CG":34,$P(HDR(GMTSI-1),U)="CVP":16,$P(HDR(GMTSI-1),U)="HT":13,$P(HDR(GMTSI-1),U)="PO2":13,1:12)
 | 
|---|
| 69 |  . S COLL=$P(COL,U,GMTSI)+WIDTH
 | 
|---|
| 70 |  . S COL=COL_U
 | 
|---|
| 71 |  . S COL=COL_COLL
 | 
|---|
| 72 |  . S HDR(GMTSI-1)=HDR(GMTSI-1)_U_COLL_U_WIDTH
 | 
|---|
| 73 |  S ROW=1,COL(ROW)=18,COLL=18,CNT=0
 | 
|---|
| 74 |  F LOOP=0:1 Q:'$D(HDR(LOOP))  D
 | 
|---|
| 75 |  . I $P(HDR(LOOP),U,4)+COLL'>80 D  Q
 | 
|---|
| 76 |  . . S COLL=$P(HDR(LOOP),U,4)+COLL
 | 
|---|
| 77 |  . . S COL(ROW)=COL(ROW)_U_COLL
 | 
|---|
| 78 |  . . S HDR1(ROW,CNT)=HDR(LOOP)
 | 
|---|
| 79 |  . . S CNT=CNT+1
 | 
|---|
| 80 |  . . K HDR(LOOP)
 | 
|---|
| 81 |  . S ROW=ROW+1,COL(ROW)=18,COLL=18,CNT=0
 | 
|---|
| 82 |  . S COLL=$P(HDR(LOOP),U,4)+COLL
 | 
|---|
| 83 |  . S COL(ROW)=COL(ROW)_U_COLL
 | 
|---|
| 84 |  . S HDR1(ROW,CNT)=HDR(LOOP)
 | 
|---|
| 85 |  . S CNT=CNT+1
 | 
|---|
| 86 |  . K HDR(LOOP)
 | 
|---|
| 87 |  Q
 | 
|---|
| 88 | WRTHDR ; Writes Header
 | 
|---|
| 89 |  N GMI
 | 
|---|
| 90 |  D CKP^GMTSUP Q:$D(GMTSQIT)  W "Measurement DT"
 | 
|---|
| 91 |  I GMTSVMVR'>3 F GMI=0:1:5 D CKP^GMTSUP Q:'$D(HDR(GMI))!($D(GMTSQIT))  D
 | 
|---|
| 92 |  . W ?$P(COL,U,GMI+1),$P(HDR(GMI),U,2)
 | 
|---|
| 93 |  I GMTSVMVR>3 S GMI="" F  S GMI=$O(HDR(GMI)) Q:(GMI="")  Q:('$D(HDR(GMI)))!($D(GMTSQIT))  D CKP^GMTSUP D
 | 
|---|
| 94 |  . W ?$P(COL,U,GMI+1),$P(HDR(GMI),U,2)
 | 
|---|
| 95 |  D CKP^GMTSUP Q:$D(GMTSQIT)  W !
 | 
|---|
| 96 |  Q
 | 
|---|
| 97 | WRTHDR1 ; Writes 2nd line of header
 | 
|---|
| 98 |  N GMI
 | 
|---|
| 99 |  I GMTSVMVR'>3 F GMI=0:1:5 D CKP^GMTSUP Q:'$D(HDR(GMI))!($D(GMTSQIT))  D
 | 
|---|
| 100 |  . I $P(HDR(GMI),U)="HT" W ?$P(COL,U,GMI+1),"IN(CM)"
 | 
|---|
| 101 |  . I $P(HDR(GMI),U)="WT" W ?$P(COL,U,GMI+1),"LB(KG)"
 | 
|---|
| 102 |  . I $P(HDR(GMI),U)="T" W ?$P(COL,U,GMI+1),"F(C)"
 | 
|---|
| 103 |  I GMTSVMVR>3 S GMI="" F  S GMI=$O(HDR(GMI)) Q:(GMI="")  Q:('$D(HDR(GMI)))!($D(GMTSQIT))  D CKP^GMTSUP D
 | 
|---|
| 104 |  . I $P(HDR(GMI),U)="HT" W ?$P(COL,U,GMI+1),"IN(CM)"
 | 
|---|
| 105 |  . I $P(HDR(GMI),U)="WT" W ?$P(COL,U,GMI+1),"LB(KG)[BMI]"
 | 
|---|
| 106 |  . I $P(HDR(GMI),U)="T" W ?$P(COL,U,GMI+1),"F(C)"
 | 
|---|
| 107 |  . I $P(HDR(GMI),U)="CVP" W ?$P(COL,U,GMI+1),"CMH20(MMHG)"
 | 
|---|
| 108 |  . I $P(HDR(GMI),U)="PO2" W ?$P(COL,U,GMI+1),"(L/MIN)(%)"
 | 
|---|
| 109 |  . I $P(HDR(GMI),U)="CG" W ?$P(COL,U,GMI+1),"IN(CM)"
 | 
|---|
| 110 |  D CKP^GMTSUP Q:$D(GMTSQIT)  W !!
 | 
|---|
| 111 |  Q
 | 
|---|
| 112 | WRT ; Writes vitals record for one observation time
 | 
|---|
| 113 |  N GMLEN,GMTSBMI,GMTSI,GMTSVAL,GMTDT,GMTSVI,GMTSVT,GMTSMET,GMTSPERC,GMTSLMIN,GMTSQUAL,IEN,X
 | 
|---|
| 114 |  S GMTSVI="",X=9999999-GMTSDT D REGDTM4^GMTSU S GMTDT=X
 | 
|---|
| 115 |  D CKP^GMTSUP Q:$D(GMTSQIT)  D:GMTSNPG WRTHDR,WRTHDR1 W GMTDT
 | 
|---|
| 116 |  I GMTSVMVR'>3 F GMTSI=0:1:5 S GMTSVI=$O(HDR(GMTSVI)) Q:GMTSVI=""!($D(GMTSQIT))  D
 | 
|---|
| 117 |  . S GMTSVT=$P(HDR(GMTSVI),U),IEN=$O(^UTILITY($J,"GMRVD",GMTSDT,GMTSVT,0))
 | 
|---|
| 118 |  . I +IEN D CKP^GMTSUP Q:$D(GMTSQIT)  D
 | 
|---|
| 119 |  . . S GMTSVAL=$P(^UTILITY($J,"GMRVD",GMTSDT,GMTSVT,+IEN),U,8)
 | 
|---|
| 120 |  . . W ?$P(COL,U,GMTSI+1),GMTSVAL
 | 
|---|
| 121 |  . . S GMTSMET=$P(^UTILITY($J,"GMRVD",GMTSDT,GMTSVT,+IEN),U,13) I GMTSMET'="" W "("_$P(^(+IEN),U,13)_")"
 | 
|---|
| 122 |  . . Q
 | 
|---|
| 123 |  . Q
 | 
|---|
| 124 |  I GMTSVMVR>3 F GMTSI=0:1 S GMTSVI=$O(HDR(GMTSVI)) Q:GMTSVI=""!($D(GMTSQIT))  D
 | 
|---|
| 125 |  . S GMTSVT=$P(HDR(GMTSVI),U),IEN=$O(^UTILITY($J,"GMRVD",GMTSDT,GMTSVT,0))
 | 
|---|
| 126 |  . I +IEN D CKP^GMTSUP Q:$D(GMTSQIT)  D
 | 
|---|
| 127 |  . . S GMTSVAL=$P(^UTILITY($J,"GMRVD",GMTSDT,GMTSVT,+IEN),U,8)
 | 
|---|
| 128 |  . . S:GMTSVT="PN"&(GMTSVAL=99) GMTSVAL="No Response"
 | 
|---|
| 129 |  . . S:GMTSVT="P"&(GMTSVAL?1A.E) GMTSVAL=$E(GMTSVAL,1,7)
 | 
|---|
| 130 |  . . W ?$P(COL,U,GMTSI+1),GMTSVAL
 | 
|---|
| 131 |  . . S GMTSMET=$P(^UTILITY($J,"GMRVD",GMTSDT,GMTSVT,+IEN),U,13,17)
 | 
|---|
| 132 |  . . S GMTSLMIN=$P(GMTSMET,U,3),GMTSPERC=$P(GMTSMET,U,4)
 | 
|---|
| 133 |  . . S GMTSQUAL=$P(GMTSMET,U,5) S:GMTSQUAL]"" GMTSQUAL=$E(GMTSQUAL,1,15)
 | 
|---|
| 134 |  . . S GMTSBMI=$P(GMTSMET,U,2),GMTSMET=$P(GMTSMET,U,1)
 | 
|---|
| 135 |  . . I GMTSMET'="" W "("_GMTSMET_")" ;   centigrade/kilos/centimeters
 | 
|---|
| 136 |  . . I GMTSBMI'="" W "["_GMTSBMI_"]" ;   body mass index
 | 
|---|
| 137 |  . . I GMTSLMIN'=""!(GMTSPERC'="") W "["_GMTSLMIN_"]["_GMTSPERC_"]" ; [liters/min supplemental O2][% supplemental O2]
 | 
|---|
| 138 |  . . I GMTSVT="CG",GMTSQUAL]"" W "["_GMTSQUAL_"]" ;   qualifiers
 | 
|---|
| 139 |  . . Q
 | 
|---|
| 140 |  . Q
 | 
|---|
| 141 |  Q
 | 
|---|
| 142 | NXTROW ; Get the Next Row of Vital Signs
 | 
|---|
| 143 |  Q:$G(ROW)'>0  K HDR S %X="HDR1(ROW,",%Y="HDR(" D %XY^%RCR
 | 
|---|
| 144 |  S COL=COL(ROW) K %X,%Y
 | 
|---|
| 145 |  Q
 | 
|---|