GMVHPO0 ;HIOFO/YH,FT-HP LASER PULSE OXIMETRY/RESP. GRAPH - DATA ARRAY ;11/6/01 15:18
;;5.0;GEN. MED. REC. - VITALS;;Oct 31, 2002
;
; This routine uses the following IAs:
; #10061 - ^VADPT calls (supported)
;
EN1 ;ENTRY POINT FROM GMVSR0 TO PRINT PO2/RESP. GRAPH FOR HP LASER PRINTER
S GMROUT=0 K ^TMP($J,"GMR"),^TMP($J,"GMRK"),^TMP($J,"GDT"),^TMP($J,"GMRVG"),^TMP($J,"GTNM") F GI=1:1:200 S ^TMP($J,"GMRK","G"_GI)=""
S GMROUT=0,^TMP($J,"GMRK","G50M")=0.2,^TMP($J,"GMRK","G82M")=0.6
S GSTART1=(9999999-GMRFIN)-.0001,GEND1=9999999-GMRSTRT
F GTYPE="PO2","R" D SETT
S GTYPE="P" D SETT^GMVBP0
U IO D GRAPH
Q1 K GSOL,GIVDT,GMRHLOC,GMRVJ,GDATA,GDT,GEN,GEND1,GI,GJ,GK,GMRVX,GSTART1,GTNM,GTYP,GTYPE,GX,I D KVAR^VADPT K VA,VAROOT
K GMRRMBD,GAGE,GCNT,GDOB,GCNTB,GCNTD,GCNTP,GCNTR,GCNTT,GCNTT1,GCNTI,GCNTO,GDT1,GCNTPD,GCNTTD,GCNTW,GPG,GPGS,GTYPE1,GCNTB3,GDTA,XDT,XIO,XX,^TMP($J,"GMRK"),^TMP($J,"GMR"),^TMP($J,"GDT"),^TMP($J,"GMRVG")
K GMRQUAL,GLINE,^TMP($J,"GTNM") Q
GRAPH D DEM^VADPT,INP^VADPT,SETV^GMVGR1
F GK="PO2","R","P" S ^TMP($J,"GTNM",GK)=0 F GI=0:0 S GI=$O(^TMP($J,"GMRVG",GK,GI)) Q:GI'>0 S GJ="" F X=0:0 S GJ=$O(^TMP($J,"GMRVG",GK,GI,GJ)) Q:GJ="" S ^TMP($J,"GTNM",GK)=^TMP($J,"GTNM",GK)+1,^TMP($J,"GDT",GI)=""
S GTNM=0 F X=0:0 S X=$O(^TMP($J,"GDT",X)) Q:X'>0 S GTNM=GTNM+1
S GPG=$S(GTNM=0:1,1:GTNM\10+''(GTNM#10)),GDT1=0
F GPGS=1:1:GPG D
. K GMRQUAL
. S ^TMP($J,"GMRK","G199")="Page "_GPGS D SETP,DATE S ^TMP($J,"GMRK","G200")=GMRRMBD D PAGE D ^GMVHPO1 D
. . S ^TMP($J,"GMRK","G50M")=0.2,^TMP($J,"GMRK","G82M")=0.6
D KVAR^VADPT K VA,GRAPHR,GRAPHP,GRAPHS,GRAPHD,GPA Q
PAGE ;SET GRAPH DATA
;DATA FOR RESPIRATION GRAPH
K GRAPHR S GRAPHR=0,I=1,J=411,GPA=0 F GI=312:1:321 S GRAPHR=0.4+(1.6*(I-1)) D:^TMP($J,"GMRK","G"_GI)'="" S I=I+1,J=J+1
.S GRAPHR(I)=$S(GPA=0:"PA",1:"PD")_GRAPHR_","_^TMP($J,"GMRK","G"_GI)_";LB"_^TMP($J,"GMRK","G"_J)_"#;",GPA=1
;DATA FOR PULSE OXIMETRY GRAPH
K GRAPHP S GRAPHP=0,I=1,J=431,GPA=0 F GI=362:1:371 S GRAPHP=0.9+(1.6*(I-1)) D:^TMP($J,"GMRK","G"_GI)'="" S I=I+1,J=J+1
.S GRAPHP(I)=$S(GPA=0:"PA",1:"PD")_GRAPHP_","_^TMP($J,"GMRK","G"_GI)_";LB"_^TMP($J,"GMRK","G"_J)_"#;",GPA=1
I $D(GMRQUAL) D LEGEND^GMVLGQU
K GG,GI,GMRVJ,GSYNO Q
DATE F GCNTD=1:1:10 S:$L(GDT1) GDT1=$O(^TMP($J,"GDT",GDT1)) S ^TMP($J,"GMRK","G"_GCNTD)=$S($L(GDT1):$E(GDT1,4,5)_"-"_$E(GDT1,6,7)_"-"_$E(GDT1,2,3),1:"") D DATE1
Q
DATE1 S Y=$E($P(GDT1,".",2)_"0000",1,4),^TMP($J,"GMRK","G"_(GCNTD+16))=$S($L(GDT1):$E(Y,1,2)_":"_$E(Y,3,4),1:"") D SETD
Q
SETD F GI="R","PO2","P" S GJ=$S(GI="R":310,GI="PO2":360,GI="P":1,1:0) Q:GJ=0 S GK=$S($L(GDT1):$O(^TMP($J,"GMRVG",GI,GDT1,"")),1:"") D SETA^GMVHPO3
Q
SETP ;INITIALIZE ^TMP FOR QUALIFIERS
; 410 - STORE R* 430 - STORE P* 510 - STORE PULSE 530 - STORE QUALIFIER
; 1430+I - PULSE OX. L/MIN
; 1450+I - PULSE OX. % 1470+I - PULSE OX. METHOD
F I=1:1:10 S (^TMP($J,"GMRK","G"_(410+I)),^("G"_(430+I)),^("G"_(1430+I)),^("G"_(1450+I)),^("G"_(1470+I)),^("G"_(510+I)),^("G"_(530+I)))=""
Q
SETT S GTYP=$O(^GMRD(120.51,"B",$S(GTYPE="R":"RESPIRATION",GTYPE="PO2":"PULSE OXIMETRY",GTYPE="P":"PULSE",1:""),""))
I GTYP>0 F GX=GSTART1:0 S GX=$O(^GMR(120.5,"AA",DFN,GTYP,GX)) Q:GX>GEND1!(GX'>0) F GEN=0:0 S GEN=$O(^GMR(120.5,"AA",DFN,GTYP,GX,GEN)) Q:GEN'>0 I '$D(^GMR(120.5,GEN,2)) D BLDARR^GMVGR0
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMVHPO0 3328 printed Nov 22, 2024@17:09:24 Page 2
GMVHPO0 ;HIOFO/YH,FT-HP LASER PULSE OXIMETRY/RESP. GRAPH - DATA ARRAY ;11/6/01 15:18
+1 ;;5.0;GEN. MED. REC. - VITALS;;Oct 31, 2002
+2 ;
+3 ; This routine uses the following IAs:
+4 ; #10061 - ^VADPT calls (supported)
+5 ;
EN1 ;ENTRY POINT FROM GMVSR0 TO PRINT PO2/RESP. GRAPH FOR HP LASER PRINTER
+1 SET GMROUT=0
KILL ^TMP($JOB,"GMR"),^TMP($JOB,"GMRK"),^TMP($JOB,"GDT"),^TMP($JOB,"GMRVG"),^TMP($JOB,"GTNM")
FOR GI=1:1:200
SET ^TMP($JOB,"GMRK","G"_GI)=""
+2 SET GMROUT=0
SET ^TMP($JOB,"GMRK","G50M")=0.2
SET ^TMP($JOB,"GMRK","G82M")=0.6
+3 SET GSTART1=(9999999-GMRFIN)-.0001
SET GEND1=9999999-GMRSTRT
+4 FOR GTYPE="PO2","R"
DO SETT
+5 SET GTYPE="P"
DO SETT^GMVBP0
+6 USE IO
DO GRAPH
Q1 KILL GSOL,GIVDT,GMRHLOC,GMRVJ,GDATA,GDT,GEN,GEND1,GI,GJ,GK,GMRVX,GSTART1,GTNM,GTYP,GTYPE,GX,I
DO KVAR^VADPT
KILL VA,VAROOT
+1 KILL GMRRMBD,GAGE,GCNT,GDOB,GCNTB,GCNTD,GCNTP,GCNTR,GCNTT,GCNTT1,GCNTI,GCNTO,GDT1,GCNTPD,GCNTTD,GCNTW,GPG,GPGS,GTYPE1,GCNTB3,GDTA,XDT,XIO,XX,^TMP($JOB,"GMRK"),^TMP($JOB,"GMR"),^TMP($JOB,"GDT"),^TMP($JOB,"GMRVG")
+2 KILL GMRQUAL,GLINE,^TMP($JOB,"GTNM")
QUIT
GRAPH DO DEM^VADPT
DO INP^VADPT
DO SETV^GMVGR1
+1 FOR GK="PO2","R","P"
SET ^TMP($JOB,"GTNM",GK)=0
FOR GI=0:0
SET GI=$ORDER(^TMP($JOB,"GMRVG",GK,GI))
if GI'>0
QUIT
SET GJ=""
FOR X=0:0
SET GJ=$ORDER(^TMP($JOB,"GMRVG",GK,GI,GJ))
if GJ=""
QUIT
SET ^TMP($JOB,"GTNM",GK)=^TMP($JOB,"GTNM",GK)+1
SET ^TMP($JOB,"GDT",GI)=""
+2 SET GTNM=0
FOR X=0:0
SET X=$ORDER(^TMP($JOB,"GDT",X))
if X'>0
QUIT
SET GTNM=GTNM+1
+3 SET GPG=$SELECT(GTNM=0:1,1:GTNM\10+''(GTNM#10))
SET GDT1=0
+4 FOR GPGS=1:1:GPG
Begin DoDot:1
+5 KILL GMRQUAL
+6 SET ^TMP($JOB,"GMRK","G199")="Page "_GPGS
DO SETP
DO DATE
SET ^TMP($JOB,"GMRK","G200")=GMRRMBD
DO PAGE
DO ^GMVHPO1
Begin DoDot:2
+7 SET ^TMP($JOB,"GMRK","G50M")=0.2
SET ^TMP($JOB,"GMRK","G82M")=0.6
End DoDot:2
End DoDot:1
+8 DO KVAR^VADPT
KILL VA,GRAPHR,GRAPHP,GRAPHS,GRAPHD,GPA
QUIT
PAGE ;SET GRAPH DATA
+1 ;DATA FOR RESPIRATION GRAPH
+2 KILL GRAPHR
SET GRAPHR=0
SET I=1
SET J=411
SET GPA=0
FOR GI=312:1:321
SET GRAPHR=0.4+(1.6*(I-1))
if ^TMP($JOB,"GMRK","G"_GI)'=""
Begin DoDot:1
+3 SET GRAPHR(I)=$SELECT(GPA=0:"PA",1:"PD")_GRAPHR_","_^TMP($JOB,"GMRK","G"_GI)_";LB"_^TMP($JOB,"GMRK","G"_J)_"#;"
SET GPA=1
End DoDot:1
SET I=I+1
SET J=J+1
+4 ;DATA FOR PULSE OXIMETRY GRAPH
+5 KILL GRAPHP
SET GRAPHP=0
SET I=1
SET J=431
SET GPA=0
FOR GI=362:1:371
SET GRAPHP=0.9+(1.6*(I-1))
if ^TMP($JOB,"GMRK","G"_GI)'=""
Begin DoDot:1
+6 SET GRAPHP(I)=$SELECT(GPA=0:"PA",1:"PD")_GRAPHP_","_^TMP($JOB,"GMRK","G"_GI)_";LB"_^TMP($JOB,"GMRK","G"_J)_"#;"
SET GPA=1
End DoDot:1
SET I=I+1
SET J=J+1
+7 IF $DATA(GMRQUAL)
DO LEGEND^GMVLGQU
+8 KILL GG,GI,GMRVJ,GSYNO
QUIT
DATE FOR GCNTD=1:1:10
if $LENGTH(GDT1)
SET GDT1=$ORDER(^TMP($JOB,"GDT",GDT1))
SET ^TMP($JOB,"GMRK","G"_GCNTD)=$SELECT($LENGTH(GDT1):$EXTRACT(GDT1,4,5)_"-"_$EXTRACT(GDT1,6,7)_"-"_$EXTRACT(GDT1,2,3),1:"")
DO DATE1
+1 QUIT
DATE1 SET Y=$EXTRACT($PIECE(GDT1,".",2)_"0000",1,4)
SET ^TMP($JOB,"GMRK","G"_(GCNTD+16))=$SELECT($LENGTH(GDT1):$EXTRACT(Y,1,2)_":"_$EXTRACT(Y,3,4),1:"")
DO SETD
+1 QUIT
SETD FOR GI="R","PO2","P"
SET GJ=$SELECT(GI="R":310,GI="PO2":360,GI="P":1,1:0)
if GJ=0
QUIT
SET GK=$SELECT($LENGTH(GDT1):$ORDER(^TMP($JOB,"GMRVG",GI,GDT1,"")),1:"")
DO SETA^GMVHPO3
+1 QUIT
SETP ;INITIALIZE ^TMP FOR QUALIFIERS
+1 ; 410 - STORE R* 430 - STORE P* 510 - STORE PULSE 530 - STORE QUALIFIER
+2 ; 1430+I - PULSE OX. L/MIN
+3 ; 1450+I - PULSE OX. % 1470+I - PULSE OX. METHOD
+4 FOR I=1:1:10
SET (^TMP($JOB,"GMRK","G"_(410+I)),^("G"_(430+I)),^("G"_(1430+I)),^("G"_(1450+I)),^("G"_(1470+I)),^("G"_(510+I)),^("G"_(530+I)))=""
+5 QUIT
SETT SET GTYP=$ORDER(^GMRD(120.51,"B",$SELECT(GTYPE="R":"RESPIRATION",GTYPE="PO2":"PULSE OXIMETRY",GTYPE="P":"PULSE",1:""),""))
+1 IF GTYP>0
FOR GX=GSTART1:0
SET GX=$ORDER(^GMR(120.5,"AA",DFN,GTYP,GX))
if GX>GEND1!(GX'>0)
QUIT
FOR GEN=0:0
SET GEN=$ORDER(^GMR(120.5,"AA",DFN,GTYP,GX,GEN))
if GEN'>0
QUIT
IF '$DATA(^GMR(120.5,GEN,2))
DO BLDARR^GMVGR0
+2 QUIT