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

GMTSVSS.m

Go to the documentation of this file.
  1. GMTSVSS ; SLC/KER - Selected Vital Signs ; 02/27/2002
  1. ;;2.7;Health Summary;**8,20,28,35,49,78,107**;Oct 20, 1995;Build 3
  1. ;
  1. ; External References
  1. ; DBIA 4791 EN1^GMVHS
  1. ; DBIA 10141 $$VERSION^XPDUTL
  1. ; DBIA 10015 EN^DIQ1
  1. ; DBIA 10022 %XY^%RCR
  1. ;
  1. ; Health Summary patch GMTS*2.7*35 will require
  1. ; Vitals version 4.0, patch GMRV*4.0*7
  1. ;
  1. OUTPAT ; Outpatient Select Vitals Signs Main control
  1. N CNT,COL,COLL,HDR,GMTSDA,GMTSDT,GMTSF,GMTSI,GMW,GMRVSTR,LOOP,MAX,ROW,WIDTH
  1. K ^UTILITY($J,"GMRVD") S MAX=$S(+($G(GMTSNDM))>0:+($G(GMTSNDM)),1:100)
  1. S GMTSI=0 F S GMTSI=$O(GMTSEG(GMTSEGN,120.51,GMTSI)) Q:GMTSI'>0 S GMTSDA=GMTSEG(GMTSEGN,120.51,GMTSI) D BLDSTR
  1. Q:'$D(GMRVSTR)
  1. S GMRVSTR(0)=GMTSBEG_U_GMTSEND_U_MAX_U_1
  1. ; Set to only get Vital Sign for Clinics
  1. S GMRVSTR("LT")="^C^"
  1. ;D BLDHDR,EN1^GMRVUT0
  1. D BLDHDR,EN1^GMVHS
  1. ; If no data, display most recent inpatient measurements
  1. I '$D(^UTILITY($J,"GMRVD")) D Q
  1. . D CKP^GMTSUP Q:$D(GMTSQIT) W "*** No Outpatient measurements ***",!!
  1. . S MAX=1 D ENVS
  1. S ROW=1 D NXTROW
  1. D WRTHDR,WRTHDR1
  1. 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 !
  1. I $O(COL(ROW)) F ROW=2:1 Q:'$D(COL(ROW))!($D(GMTSQIT)) D
  1. . D NXTROW
  1. . W !! D WRTHDR,WRTHDR1
  1. . 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 !
  1. K ^UTILITY($J,"GMRVD"),GMTSVMVR
  1. Q
  1. ENVS ; Set up for extraction routine
  1. N CNT,COL,COLL,HDR,HDR1,GMTSDA,GMTSDT,GMTSF,GMTSI,GMW,LOOP,ROW,WIDTH
  1. K ^UTILITY($J,"GMRVD"),GMRVSTR("LT")
  1. S MAX=$S(+($G(MAX))>0:MAX,+($G(MAX))'>0&(+($G(GMTSNDM))>0):+($G(GMTSNDM)),1:100)
  1. S GMTSI=0 F S GMTSI=$O(GMTSEG(GMTSEGN,120.51,GMTSI)) Q:GMTSI'>0 S GMTSDA=GMTSEG(GMTSEGN,120.51,GMTSI) D BLDSTR
  1. Q:'$D(GMRVSTR)
  1. S GMRVSTR(0)=GMTSBEG_U_GMTSEND_U_MAX_U_1
  1. ;D BLDHDR,EN1^GMRVUT0
  1. D BLDHDR,EN1^GMVHS
  1. I '$D(^UTILITY($J,"GMRVD")) Q
  1. S ROW=1 D NXTROW
  1. D WRTHDR,WRTHDR1
  1. 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 !
  1. I $O(COL(ROW)) F ROW=2:1 Q:'$D(COL(ROW))!($D(GMTSQIT)) D
  1. . D NXTROW
  1. . W !! D WRTHDR,WRTHDR1
  1. . 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 !
  1. K ^UTILITY($J,"GMRVD"),GMTSVMVR
  1. Q
  1. BLDSTR ; Builds GMRVSTR string for extract call
  1. N DA,DIC,DIQ,DR,VIT
  1. S GMTSVMVR=+$$VERSION^XPDUTL("GMRV")
  1. S DIQ="VIT(",DIQ(0)="E",DIC=120.51,DR="1",DA=GMTSDA
  1. D EN^DIQ1 S VIT=VIT(120.51,DA,1,"E")
  1. S GMRVSTR=$S($D(GMRVSTR):GMRVSTR_";"_VIT,1:VIT)
  1. Q
  1. BLDHDR ; Builds the HDR array
  1. N ABB,GMTSI S COL=18
  1. F GMTSI=1:1:$L(GMRVSTR,";") D
  1. . S (HDR(GMTSI-1),ABB)=$P(GMRVSTR,";",GMTSI)
  1. . S HDR(GMTSI-1)=HDR(GMTSI-1)_U
  1. . 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)
  1. . ;p.107 added "PN" and set to 18 to accomodate "Unable to Respond"
  1. . S WIDTH=HDR(GMTSI-1)
  1. . S WIDTH=$S($P(WIDTH,U)="T":13,$P(WIDTH,U)="P":8,$P(WIDTH,U)="R":12,$P(WIDTH,U)="WT":20,$P(WIDTH,U)="CG":34,$P(WIDTH,U)="CVP":16,$P(WIDTH,U)="HT":13,$P(WIDTH,U)="PO2":13,$P(WIDTH,U)="PN":18,1:12)
  1. . S COLL=$P(COL,U,GMTSI)+WIDTH
  1. . S COL=COL_U
  1. . S COL=COL_COLL
  1. . S HDR(GMTSI-1)=HDR(GMTSI-1)_U_COLL_U_WIDTH
  1. S ROW=1,COL(ROW)=18,COLL=18,CNT=0
  1. F LOOP=0:1 Q:'$D(HDR(LOOP)) D
  1. . I $P(HDR(LOOP),U,4)+COLL'>80 D Q
  1. . . S COLL=$P(HDR(LOOP),U,4)+COLL
  1. . . S COL(ROW)=COL(ROW)_U_COLL
  1. . . S HDR1(ROW,CNT)=HDR(LOOP)
  1. . . S CNT=CNT+1
  1. . . K HDR(LOOP)
  1. . S ROW=ROW+1,COL(ROW)=18,COLL=18,CNT=0
  1. . S COLL=$P(HDR(LOOP),U,4)+COLL
  1. . S COL(ROW)=COL(ROW)_U_COLL
  1. . S HDR1(ROW,CNT)=HDR(LOOP)
  1. . S CNT=CNT+1
  1. . K HDR(LOOP)
  1. Q
  1. WRTHDR ; Writes Header
  1. N GMI
  1. D CKP^GMTSUP Q:$D(GMTSQIT) W "Measurement DT"
  1. I GMTSVMVR'>3 F GMI=0:1:5 D CKP^GMTSUP Q:'$D(HDR(GMI))!($D(GMTSQIT)) D
  1. . W ?$P(COL,U,GMI+1),$P(HDR(GMI),U,2)
  1. I GMTSVMVR>3 S GMI="" F S GMI=$O(HDR(GMI)) Q:(GMI="") Q:('$D(HDR(GMI)))!($D(GMTSQIT)) D CKP^GMTSUP D
  1. . W ?$P(COL,U,GMI+1),$P(HDR(GMI),U,2)
  1. D CKP^GMTSUP Q:$D(GMTSQIT) W !
  1. Q
  1. WRTHDR1 ; Writes 2nd line of header
  1. N GMI
  1. I GMTSVMVR'>3 F GMI=0:1:5 D CKP^GMTSUP Q:'$D(HDR(GMI))!($D(GMTSQIT)) D
  1. . I $P(HDR(GMI),U)="HT" W ?$P(COL,U,GMI+1),"IN(CM)"
  1. . I $P(HDR(GMI),U)="WT" W ?$P(COL,U,GMI+1),"LB(KG)"
  1. . I $P(HDR(GMI),U)="T" W ?$P(COL,U,GMI+1),"F(C)"
  1. I GMTSVMVR>3 S GMI="" F S GMI=$O(HDR(GMI)) Q:(GMI="") Q:('$D(HDR(GMI)))!($D(GMTSQIT)) D CKP^GMTSUP D
  1. . I $P(HDR(GMI),U)="HT" W ?$P(COL,U,GMI+1),"IN(CM)"
  1. . I $P(HDR(GMI),U)="WT" W ?$P(COL,U,GMI+1),"LB(KG)[BMI]"
  1. . I $P(HDR(GMI),U)="T" W ?$P(COL,U,GMI+1),"F(C)"
  1. . I $P(HDR(GMI),U)="CVP" W ?$P(COL,U,GMI+1),"CMH20(MMHG)"
  1. . I $P(HDR(GMI),U)="PO2" W ?$P(COL,U,GMI+1),"(L/MIN)(%)"
  1. . I $P(HDR(GMI),U)="CG" W ?$P(COL,U,GMI+1),"IN(CM)"
  1. D CKP^GMTSUP Q:$D(GMTSQIT) W !!
  1. Q
  1. WRT ; Writes vitals record for one observation time
  1. N GMLEN,GMTSBMI,GMTSI,GMTSVAL,GMTDT,GMTSVI,GMTSVT,GMTSMET,GMTSPERC,GMTSLMIN,GMTSQUAL,IEN,X
  1. S GMTSVI="",X=9999999-GMTSDT D REGDTM4^GMTSU S GMTDT=X
  1. D CKP^GMTSUP Q:$D(GMTSQIT) D:GMTSNPG WRTHDR,WRTHDR1 W GMTDT
  1. I GMTSVMVR'>3 F GMTSI=0:1:5 S GMTSVI=$O(HDR(GMTSVI)) Q:GMTSVI=""!($D(GMTSQIT)) D
  1. . S GMTSVT=$P(HDR(GMTSVI),U),IEN=$O(^UTILITY($J,"GMRVD",GMTSDT,GMTSVT,0))
  1. . I +IEN D CKP^GMTSUP Q:$D(GMTSQIT) D
  1. . . S GMTSVAL=$P(^UTILITY($J,"GMRVD",GMTSDT,GMTSVT,+IEN),U,8)
  1. . . W ?$P(COL,U,GMTSI+1),GMTSVAL
  1. . . S GMTSMET=$P(^UTILITY($J,"GMRVD",GMTSDT,GMTSVT,+IEN),U,13) I GMTSMET'="" W "("_$P(^(+IEN),U,13)_")"
  1. . . Q
  1. . Q
  1. I GMTSVMVR>3 F GMTSI=0:1 S GMTSVI=$O(HDR(GMTSVI)) Q:GMTSVI=""!($D(GMTSQIT)) D
  1. . S GMTSVT=$P(HDR(GMTSVI),U),IEN=$O(^UTILITY($J,"GMRVD",GMTSDT,GMTSVT,0))
  1. . I +IEN D CKP^GMTSUP Q:$D(GMTSQIT) D
  1. . . S GMTSVAL=$P(^UTILITY($J,"GMRVD",GMTSDT,GMTSVT,+IEN),U,8)
  1. . . S:GMTSVT="PN"&(GMTSVAL=99) GMTSVAL="Unable to Respond" ;p.107 changed from "No Response" to "Unable to Respond"
  1. . . S:GMTSVT="P"&(GMTSVAL?1A.E) GMTSVAL=$E(GMTSVAL,1,7)
  1. . . W ?$P(COL,U,GMTSI+1),GMTSVAL
  1. . . S GMTSMET=$P(^UTILITY($J,"GMRVD",GMTSDT,GMTSVT,+IEN),U,13,17)
  1. . . S GMTSLMIN=$P(GMTSMET,U,3),GMTSPERC=$P(GMTSMET,U,4)
  1. . . S GMTSQUAL=$P(GMTSMET,U,5) S:GMTSQUAL]"" GMTSQUAL=$E(GMTSQUAL,1,15)
  1. . . S GMTSBMI=$P(GMTSMET,U,2),GMTSMET=$P(GMTSMET,U,1)
  1. . . I GMTSMET'="" W "("_GMTSMET_")" ; centigrade/kilos/centimeters
  1. . . I GMTSBMI'="" W "["_GMTSBMI_"]" ; body mass index
  1. . . I GMTSLMIN'=""!(GMTSPERC'="") W "["_GMTSLMIN_"]["_GMTSPERC_"]" ; [liters/min supplemental O2][% supplemental O2]
  1. . . I GMTSVT="CG",GMTSQUAL]"" W "["_GMTSQUAL_"]" ; qualifiers
  1. . . Q
  1. . Q
  1. Q
  1. NXTROW ; Get the Next Row of Vital Signs
  1. Q:$G(ROW)'>0 K HDR S %X="HDR1(ROW,",%Y="HDR(" D %XY^%RCR
  1. S COL=COL(ROW) K %X,%Y
  1. Q