GMVSR1 ;HIOFO/RM,YH-PATIENT VITAL SIGNS-I/O SF 511 GRAPH - 1 ;11/6/01  16:00
 ;;5.0;GEN. MED. REC. - VITALS;;Oct 31, 2002
 ;
 ; This routine uses the following IAs:
 ; #10061 - ^VADPT calls           (supported)
 ; #10104 - ^XLFSTR calls          (supported)
 ;
SF511 ;PRODUCE PATIENT VITAL SIGNS-I/O GRAPH
 S GRPT=5,GMRHT=0 D SETIO^GMVGR0 D DEM^VADPT,INP^VADPT S GMRBTH=$P(VADM(3),"^",2),GMRNAM=VADM(1)
 F GMRK="P","T","B","H","W","R","PO2","CVP","CG","XI1","PN" D GMRDT^GMVVS3
 I $D(^TMP($J,"GMRVG","I")) F GMRI=0:0 S GMRI=$O(^TMP($J,"GMRVG","I",GMRI)) Q:GMRI'>0  S GFOUND=0 D CKDT^GMVVS3 S:GFOUND=0 ^TMP($J,"GMRDT",GMRI)=""
 I $D(^TMP($J,"GMRVG","O")) F GMRI=0:0 S GMRI=$O(^TMP($J,"GMRVG","O",GMRI)) Q:GMRI'>0  S GFOUND=0 D CKDT^GMVVS3 S:GFOUND=0 ^TMP($J,"GMRDT",GMRI)=""
 S (GMRTNM,GMRI)=0 I $D(^TMP($J,"GMRDT")) F  S GMRI=$O(^TMP($J,"GMRDT",GMRI)) Q:GMRI'>0  S GMRTNM=GMRTNM+1
 D GRAPH K GMR3,GMRDAT,GMREN,GMRHDR1,GMRHDR11,GMRHDR10,GMRHDR2,GMRHT,GMRI,GMRJ,GMRK,GMRLINE,GDATA,GMROLD,GMRP,GMRPDIF,GMRPG,GMRPGC,GMRPGS,GMRPHI,GMRPLO,GMRPOFF,GMRSITE,GMRT,GMRTDIF,GMRTHI,GMRTLO,GMRTNM
 K GLPRNTR,GMRTOFF,GMRTY,GMRNM,GMRVX,GMRVX1,GMRVX2,^TMP($J,"GMRDT"),^TMP($J,"GMRG"),^TMP($J,"GMR")
 Q
GRAPH ;
 S:'$D(GFLAG) GFLAG=0 S GMRPGC=0,GMRX1="" F X=1:1:10 S GMRX1=GMRX1_"          "_"|"
 S (GMRX,GMRX2)=GMRX1 F X=1:1:10 S $P(GMRX,"|",X)="__________",$P(GMRX2,"|",X)="----------"
 S GMRPG=$S(GMRTNM=0:1,1:GMRTNM\10+$S(GMRTNM#10>0:1,1:0)) F GMRPGS=1:1:GMRPG S GMRTLO=105.8335,GMRPLO=168.335 D PAGE Q:GMROUT
 K GDIP,GDOP,GRNDIP,GRNDOP,GSIP,GSOP Q
PAGE ;
 K GMRQUAL,GLINE W:'($E(IOST)'="C"&'GFLAG) @IOF S GFLAG=1,GMRPGC=GMRPGC+1 W !
 I '$D(^TMP($J,"GMR")) W !!!!!!!!,?5,"THERE  IS  NO  DATA  FOR  THIS  REPORT" X "F Y=$Y:1:(IOSL-6) W !" D FOOTER^GMVVS2 Q
 W ! D DATES^GMVVS2 W !,?3,"Pulse Temp/F/C",?17,"|",?18,GMRX
 F GMRI=0:0 Q:$Y>43  W ! D SETHD^GMVVS4 W ?2,$S(GMRHDR1'["41.1":GMRHDR1,1:""),?16,$S(GMR3!($Y=28):"-",1:""),?17,"|" D DATAPRT^GMVVS4
 W !,?17,"|",GMRX2 F GMRI="T","P","R","B","B1","B2","W","H","PO2","CVP","CG","PN" S GMRLINE(GMRI)=GMRX1
 S (GMRLINE("H1"),GMRLINE("W1"),GMRLINE("BMI"),GMRLINE("P1"),GMRLINE("OX1"),GMRLINE("OX2"),GMRLINE("OX3"),GMRLINE("CVP1"),GMRLINE("CG1"),GMRLINE("CG2"))=GMRX1
 S GMRNM=0 F GMRDT=0:0 S GMRDT=$O(^TMP($J,"GMRDT",GMRDT)) Q:GMRDT'>0  S GMRNM=GMRNM+1 Q:GMRNM>10  F GMRI="T","P","R","H","W","PO2","CVP","CG","PN" D:$D(^TMP($J,"GMR",GMRI,GMRDT)) STLNP^GMVVS1
 S GMRNM=0 F GMRDT=0:0 S GMRDT=$O(^TMP($J,"GMRDT",GMRDT)) Q:GMRDT'>0  S GMRNM=GMRNM+1 Q:GMRNM>10  D BP^GMVVS2
 F GMRI="T","P","P1","R","PO2","OX1","OX2","OX3","B","B1","B2","W","W1","BMI","H","H1","CG","CG2","CVP","CVP1" D
 .S G=$S(GMRI="T":"Temperature",GMRI="P":"Pulse",GMRI="R":"Respiration",GMRI="W":"Weight (lb)",GMRI="H":"Height (in)",GMRI="B":"BLOOD",GMRI="B1":"  PRESSURE",GMRI="W1":"       (kg)",GMRI="H1":"       (cm)",GMRI="BMI":"Body Mass Index",1:"")
 . I G="" S G=$S(GMRI="PO2":"Pulse Ox.",GMRI="OX1":"  L/Min",GMRI="OX2":"  %",GMRI="OX3":"  Method",GMRI="CG":"C/G (in)",GMRI="CVP":"CVP (cm H2O)",GMRI="CVP1":"    (mm Hg)",GMRI="CG2":"    (cm)",1:"")
 . W !,G,?17,"|",GMRLINE(GMRI)
 D IO
 S G="Pain" W !,G,?17,"|",GMRLINE("PN")
 I 'GMROUT W !,?17,$$REPEAT^XLFSTR("-",111)
 W !,"T: Temperature     P: Pulse     C/G: Circumference/Girth     * - Abnormal value     ** - Abnormal value off of graph"
 W !,"Pain:  99 - Unable to respond  0 - No pain  10 - Worst imaginable pain"
 W ! I $D(GMRQUAL) S GLPRNTR=1 D LEGEND^GMVLGQU F I=1:1:5 W !,GLINE(I)
 I IOSL'<($Y+10) F X=1:1 W ! Q:IOSL<($Y+10)
 D FOOTER^GMVVS2 S GMRDT="" F GMRNM=1:1:10 S GMRDT=$O(^TMP($J,"GMRDT",GMRDT)) Q:GMRDT'>0  K ^TMP($J,"GMRDT",GMRDT)
 K GG,GI,GMRVJ,GSYNO Q
IO ;PRINT INTAKE/OUTPUT SECTION OF VITAL SIGNS-I/O SHEET
 S (GMRLINE("I"),GMRLINE("O"))=GMRX1
 S GMRNM=0 F GMRDT=0:0 S GMRDT=$O(^TMP($J,"GMRDT",GMRDT)) Q:GMRDT'>0  S GMRNM=GMRNM+1 Q:GMRNM>10  S GDT=+$E(GMRDT,1,7) I $D(^TMP($J,"GMRVG","I",GDT))!($D(^TMP($J,"GMRVG","O",GDT))) D SETDATA
 W !,"Intake(24 Hr)(cc)",?17,"|",GMRLINE("I")
 W !,"Output(24 Hr)(cc)",?17,"|",GMRLINE("O")
 Q
SETDATA ; FILL GMRLINE WITH I/O DATA AND WRITE GMRLINE
 I $D(^TMP($J,"GMRVG","I",GDT)) S GDATA=$O(^(GDT,0)) S:GDATA>0 $P(GMRLINE("I"),"|",GMRNM)=$E(GDATA_"          ",1,10) K ^TMP($J,"GMRVG","I",GDT)
 I $D(^TMP($J,"GMRVG","O",GDT)) S GDATA=$O(^(GDT,0)) S:GDATA>0 $P(GMRLINE("O"),"|",GMRNM)=$E(GDATA_"          ",1,10) K ^TMP($J,"GMRVG","O",GDT)
 Q
SELECT(J) ;TYPE OF GRAPH FOR REPORT
 N X,I W !
TRYAGN F I=1:1:5 W !,?2,I_"  "_$P($T(GCHART+I),";;",2)
 W !!,?2,"Select a number between 1 and 5: 1  Vital Signs Record// " S X="" R X:DTIME I '$T!(X["^") S J=0 Q
 I X="" S J=1 Q
 I $L(X)>2 G TRYAGN
 I '(X?1N&(X>0&(X<6)))!(X["?") W !!,"Enter the number for the graph you wish to print.",!,"The default is Vital Signs Record.",! G TRYAGN
 W "  ",$P($T(GCHART+X),";;",2) S J=X Q
 Q
WRT1 W !!,?5,$C(7),"This report must be queued to a 132 column printer.",!!
 Q
SETT ; SET GMRT
 D SETT^GMVSR2 Q
GCHART ;
 ;;Vital Signs Record
 ;;B/P Plotting Chart
 ;;Weight Chart
 ;;Pulse Oximetry/Respiratory Graph
 ;;Pain Chart
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMVSR1   5090     printed  Sep 23, 2025@19:36:01                                                                                                                                                                                                      Page 2
GMVSR1    ;HIOFO/RM,YH-PATIENT VITAL SIGNS-I/O SF 511 GRAPH - 1 ;11/6/01  16:00
 +1       ;;5.0;GEN. MED. REC. - VITALS;;Oct 31, 2002
 +2       ;
 +3       ; This routine uses the following IAs:
 +4       ; #10061 - ^VADPT calls           (supported)
 +5       ; #10104 - ^XLFSTR calls          (supported)
 +6       ;
SF511     ;PRODUCE PATIENT VITAL SIGNS-I/O GRAPH
 +1        SET GRPT=5
           SET GMRHT=0
           DO SETIO^GMVGR0
           DO DEM^VADPT
           DO INP^VADPT
           SET GMRBTH=$PIECE(VADM(3),"^",2)
           SET GMRNAM=VADM(1)
 +2        FOR GMRK="P","T","B","H","W","R","PO2","CVP","CG","XI1","PN"
               DO GMRDT^GMVVS3
 +3        IF $DATA(^TMP($JOB,"GMRVG","I"))
               FOR GMRI=0:0
                   SET GMRI=$ORDER(^TMP($JOB,"GMRVG","I",GMRI))
                   if GMRI'>0
                       QUIT 
                   SET GFOUND=0
                   DO CKDT^GMVVS3
                   if GFOUND=0
                       SET ^TMP($JOB,"GMRDT",GMRI)=""
 +4        IF $DATA(^TMP($JOB,"GMRVG","O"))
               FOR GMRI=0:0
                   SET GMRI=$ORDER(^TMP($JOB,"GMRVG","O",GMRI))
                   if GMRI'>0
                       QUIT 
                   SET GFOUND=0
                   DO CKDT^GMVVS3
                   if GFOUND=0
                       SET ^TMP($JOB,"GMRDT",GMRI)=""
 +5        SET (GMRTNM,GMRI)=0
           IF $DATA(^TMP($JOB,"GMRDT"))
               FOR 
                   SET GMRI=$ORDER(^TMP($JOB,"GMRDT",GMRI))
                   if GMRI'>0
                       QUIT 
                   SET GMRTNM=GMRTNM+1
 +6        DO GRAPH
           KILL GMR3,GMRDAT,GMREN,GMRHDR1,GMRHDR11,GMRHDR10,GMRHDR2,GMRHT,GMRI,GMRJ,GMRK,GMRLINE,GDATA,GMROLD,GMRP,GMRPDIF,GMRPG,GMRPGC,GMRPGS,GMRPHI,GMRPLO,GMRPOFF,GMRSITE,GMRT,GMRTDIF,GMRTHI,GMRTLO,GMRTNM
 +7        KILL GLPRNTR,GMRTOFF,GMRTY,GMRNM,GMRVX,GMRVX1,GMRVX2,^TMP($JOB,"GMRDT"),^TMP($JOB,"GMRG"),^TMP($JOB,"GMR")
 +8        QUIT 
GRAPH     ;
 +1        if '$DATA(GFLAG)
               SET GFLAG=0
           SET GMRPGC=0
           SET GMRX1=""
           FOR X=1:1:10
               SET GMRX1=GMRX1_"          "_"|"
 +2        SET (GMRX,GMRX2)=GMRX1
           FOR X=1:1:10
               SET $PIECE(GMRX,"|",X)="__________"
               SET $PIECE(GMRX2,"|",X)="----------"
 +3        SET GMRPG=$SELECT(GMRTNM=0:1,1:GMRTNM\10+$SELECT(GMRTNM#10>0:1,1:0))
           FOR GMRPGS=1:1:GMRPG
               SET GMRTLO=105.8335
               SET GMRPLO=168.335
               DO PAGE
               if GMROUT
                   QUIT 
 +4        KILL GDIP,GDOP,GRNDIP,GRNDOP,GSIP,GSOP
           QUIT 
PAGE      ;
 +1        KILL GMRQUAL,GLINE
           if '($EXTRACT(IOST)'="C"&'GFLAG)
               WRITE @IOF
           SET GFLAG=1
           SET GMRPGC=GMRPGC+1
           WRITE !
 +2        IF '$DATA(^TMP($JOB,"GMR"))
               WRITE !!!!!!!!,?5,"THERE  IS  NO  DATA  FOR  THIS  REPORT"
               XECUTE "F Y=$Y:1:(IOSL-6) W !"
               DO FOOTER^GMVVS2
               QUIT 
 +3        WRITE !
           DO DATES^GMVVS2
           WRITE !,?3,"Pulse Temp/F/C",?17,"|",?18,GMRX
 +4        FOR GMRI=0:0
               if $Y>43
                   QUIT 
               WRITE !
               DO SETHD^GMVVS4
               WRITE ?2,$SELECT(GMRHDR1'["41.1":GMRHDR1,1:""),?16,$SELECT(GMR3!($Y=28):"-",1:""),?17,"|"
               DO DATAPRT^GMVVS4
 +5        WRITE !,?17,"|",GMRX2
           FOR GMRI="T","P","R","B","B1","B2","W","H","PO2","CVP","CG","PN"
               SET GMRLINE(GMRI)=GMRX1
 +6        SET (GMRLINE("H1"),GMRLINE("W1"),GMRLINE("BMI"),GMRLINE("P1"),GMRLINE("OX1"),GMRLINE("OX2"),GMRLINE("OX3"),GMRLINE("CVP1"),GMRLINE("CG1"),GMRLINE("CG2"))=GMRX1
 +7        SET GMRNM=0
           FOR GMRDT=0:0
               SET GMRDT=$ORDER(^TMP($JOB,"GMRDT",GMRDT))
               if GMRDT'>0
                   QUIT 
               SET GMRNM=GMRNM+1
               if GMRNM>10
                   QUIT 
               FOR GMRI="T","P","R","H","W","PO2","CVP","CG","PN"
                   if $DATA(^TMP($JOB,"GMR",GMRI,GMRDT))
                       DO STLNP^GMVVS1
 +8        SET GMRNM=0
           FOR GMRDT=0:0
               SET GMRDT=$ORDER(^TMP($JOB,"GMRDT",GMRDT))
               if GMRDT'>0
                   QUIT 
               SET GMRNM=GMRNM+1
               if GMRNM>10
                   QUIT 
               DO BP^GMVVS2
 +9        FOR GMRI="T","P","P1","R","PO2","OX1","OX2","OX3","B","B1","B2","W","W1","BMI","H","H1","CG","CG2","CVP","CVP1"
               Begin DoDot:1
 +10               SET G=$SELECT(GMRI="T":"Temperature",GMRI="P":"Pulse",GMRI="R":"Respiration",GMRI="W":"Weight (lb)",GMRI="H":"Height (in)",GMRI="B":"BLOOD",GMRI="B1":"  PRESSURE",GMRI="W1":"       (kg)",GMRI="H1":"       (cm)",GMRI="BMI":"Body Mass Ind
ex",1:"")
 +11               IF G=""
                       SET G=$SELECT(GMRI="PO2":"Pulse Ox.",GMRI="OX1":"  L/Min",GMRI="OX2":"  %",GMRI="OX3":"  Method",GMRI="CG":"C/G (in)",GMRI="CVP":"CVP (cm H2O)",GMRI="CVP1":"    (mm Hg)",GMRI="CG2":"    (cm)",1:"")
 +12               WRITE !,G,?17,"|",GMRLINE(GMRI)
               End DoDot:1
 +13       DO IO
 +14       SET G="Pain"
           WRITE !,G,?17,"|",GMRLINE("PN")
 +15       IF 'GMROUT
               WRITE !,?17,$$REPEAT^XLFSTR("-",111)
 +16       WRITE !,"T: Temperature     P: Pulse     C/G: Circumference/Girth     * - Abnormal value     ** - Abnormal value off of graph"
 +17       WRITE !,"Pain:  99 - Unable to respond  0 - No pain  10 - Worst imaginable pain"
 +18       WRITE !
           IF $DATA(GMRQUAL)
               SET GLPRNTR=1
               DO LEGEND^GMVLGQU
               FOR I=1:1:5
                   WRITE !,GLINE(I)
 +19       IF IOSL'<($Y+10)
               FOR X=1:1
                   WRITE !
                   if IOSL<($Y+10)
                       QUIT 
 +20       DO FOOTER^GMVVS2
           SET GMRDT=""
           FOR GMRNM=1:1:10
               SET GMRDT=$ORDER(^TMP($JOB,"GMRDT",GMRDT))
               if GMRDT'>0
                   QUIT 
               KILL ^TMP($JOB,"GMRDT",GMRDT)
 +21       KILL GG,GI,GMRVJ,GSYNO
           QUIT 
IO        ;PRINT INTAKE/OUTPUT SECTION OF VITAL SIGNS-I/O SHEET
 +1        SET (GMRLINE("I"),GMRLINE("O"))=GMRX1
 +2        SET GMRNM=0
           FOR GMRDT=0:0
               SET GMRDT=$ORDER(^TMP($JOB,"GMRDT",GMRDT))
               if GMRDT'>0
                   QUIT 
               SET GMRNM=GMRNM+1
               if GMRNM>10
                   QUIT 
               SET GDT=+$EXTRACT(GMRDT,1,7)
               IF $DATA(^TMP($JOB,"GMRVG","I",GDT))!($DATA(^TMP($JOB,"GMRVG","O",GDT)))
                   DO SETDATA
 +3        WRITE !,"Intake(24 Hr)(cc)",?17,"|",GMRLINE("I")
 +4        WRITE !,"Output(24 Hr)(cc)",?17,"|",GMRLINE("O")
 +5        QUIT 
SETDATA   ; FILL GMRLINE WITH I/O DATA AND WRITE GMRLINE
 +1        IF $DATA(^TMP($JOB,"GMRVG","I",GDT))
               SET GDATA=$ORDER(^(GDT,0))
               if GDATA>0
                   SET $PIECE(GMRLINE("I"),"|",GMRNM)=$EXTRACT(GDATA_"          ",1,10)
               KILL ^TMP($JOB,"GMRVG","I",GDT)
 +2        IF $DATA(^TMP($JOB,"GMRVG","O",GDT))
               SET GDATA=$ORDER(^(GDT,0))
               if GDATA>0
                   SET $PIECE(GMRLINE("O"),"|",GMRNM)=$EXTRACT(GDATA_"          ",1,10)
               KILL ^TMP($JOB,"GMRVG","O",GDT)
 +3        QUIT 
SELECT(J) ;TYPE OF GRAPH FOR REPORT
 +1        NEW X,I
           WRITE !
TRYAGN     FOR I=1:1:5
               WRITE !,?2,I_"  "_$PIECE($TEXT(GCHART+I),";;",2)
 +1        WRITE !!,?2,"Select a number between 1 and 5: 1  Vital Signs Record// "
           SET X=""
           READ X:DTIME
           IF '$TEST!(X["^")
               SET J=0
               QUIT 
 +2        IF X=""
               SET J=1
               QUIT 
 +3        IF $LENGTH(X)>2
               GOTO TRYAGN
 +4        IF '(X?1N&(X>0&(X<6)))!(X["?")
               WRITE !!,"Enter the number for the graph you wish to print.",!,"The default is Vital Signs Record.",!
               GOTO TRYAGN
 +5        WRITE "  ",$PIECE($TEXT(GCHART+X),";;",2)
           SET J=X
           QUIT 
 +6        QUIT 
WRT1       WRITE !!,?5,$CHAR(7),"This report must be queued to a 132 column printer.",!!
 +1        QUIT 
SETT      ; SET GMRT
 +1        DO SETT^GMVSR2
           QUIT 
GCHART    ;
 +1       ;;Vital Signs Record
 +2       ;;B/P Plotting Chart
 +3       ;;Weight Chart
 +4       ;;Pulse Oximetry/Respiratory Graph
 +5       ;;Pain Chart