GMVDS1 ;HOIFO/YH,FT-CURRENT VITALS BY PATIENT OR LOCATION ;6/6/07
;;5.0;GEN. MED. REC. - VITALS;**23**;Oct 31, 2002;Build 25
;
; This routine uses the following IAs:
; #10039 - FILE 42 references (supported)
; #10040 - FILE 44 references (supported)
; #10061 - ^VADPT calls (supported)
; #10090 - FILE 4 references (supported)
; #10103 - ^XLFDT calls (supported)
; #10104 - ^XLFSTR calls (supported)
;
EN1(RESULT,GMVDATA) ; [RPC entry point]
; GMV LATEST VITALS FOR PATIENT & GMV LATEST VITALS BY LOCATION
; DFN - patient internal entry number
; GMVDEV - device name
; GMVIEN - device internal entry number
; GMVPDT - date/time to print the report
; GMVWARD - ward internal entry number
; GMVHLOC - hospital location internal entry number
;
N DFN,GMVDEV,GMVIEN,GMVPDT,GMVWARD,GMVHLOC
S DFN=+$P(GMVDATA,U,1),GMVDEV=$P(GMVDATA,U,5),GMVIEN=+$P(GMVDATA,U,6),GMVPDT=$P(GMVDATA,U,7),GMVWARD=$P(GMVDATA,U,8),GMVHLOC=$P(GMVDATA,U,9)
S ZTIO=GMVDEV ;device
S ZTDTH=$S($G(GMVPDT)>0:GMVPDT,1:$$NOW^XLFDT()) ;date/time to print
S ZTRTN="EN2^GMVDS1"
S (ZTSAVE("DFN"),ZTSAVE("GMVWARD"),ZTSAVE("GMVHLOC"))=""
I DFN>0 S ZTDESC="Latest Vitals Display for a Patient"
I GMVWARD>0 S ZTDESC="Latest Vitals by Location"
D ^%ZTLOAD
S RESULT=$S($G(ZTSK)>0:"Report sent to device. Task #: "_ZTSK,1:"Unable to task the report.")
K ZTSK,ZTIO,ZTDTH,ZTSAVE,ZTDESC,ZTRTN
Q
EN2 ; Start the report output
S:$D(ZTQUEUED) ZTREQ="@"
S GMVEDB=$S(DFN>0:"P",1:"A") ;P is one patient, A is whole ward
S GMVWARD(1)=$S(GMVWARD>0:$P($G(^DIC(42,GMVWARD,0)),U,1),1:"") ;ward name
K ^TMP($J)
I $G(GMVEDB)="P" D
.D DEM^VADPT,INP^VADPT
.S GMRRMBD=$S(VAIN(5)'="":VAIN(5),1:" BLANK") ;roombed
.S GMVNAME=$S(VADM(1)'="":VADM(1),1:" BLANK") ;patient name
.S GMVWARD=$P(VAIN(4),"^") ;ward ien
.S GMVWARD(1)=$P(VAIN(4),"^",2) ;ward name
.D KVAR^VADPT K VA ;kill VADPT variables
.S ^TMP($J,GMRRMBD,GMVNAME,DFN)=""
E D WARD
AE ;
S (GMROUT,GMVPAGE)=0
S GMVDASH=$$REPEAT^XLFSTR("-",80) ;line of dashes
D NOW^%DTC
S Y=% X ^DD("DD") S GMRPDT=$P(Y,"@")_" ("_$P($P(Y,"@",2),":",1,2)_")"
S GMRSTR="T;P;R;BP;WT;HT;CVP;CG;PO2;PN"
S GLOC=1 ;<-might be dead code
U IO
D HDR
I $O(^TMP($J,""))="" W !,"THERE IS NO DATA FOR THIS REPORT" D Q1 Q
S GMRRMBD=""
F S GMRRMBD=$O(^TMP($J,GMRRMBD)) Q:GMRRMBD=""!GMROUT S GMVNAME="" F S GMVNAME=$O(^TMP($J,GMRRMBD,GMVNAME)) Q:GMVNAME=""!GMROUT F DFN=0:0 S DFN=$O(^TMP($J,GMRRMBD,GMVNAME,DFN)) Q:DFN'>0 D PRT Q:GMROUT
Q1 ; Kill variables and quit
K ^TMP($J),DFN,GMRADM,GMRDA,GMVDASH,GMVEDB,GMVNAME,GMRNM,GMROUT,GMRPDT,GMVPAGE,GMRRMBD,GMRPR,GMRVDT,GMRVTDA,GMVWARD,GMRX,GMRSITE,GMRSP,GMRVX,GMVHLOC,POP,GMRDT,%,%T,GDT
K GSTRIN,GMRSTR,GMROUT,GMRVOERR,GMRVSTOP,GMRVSTRT,GLOC,GDATA
D KVAR^VADPT
D Q^GMVDS0
D ^%ZISC
Q
HDR ; Report Header
W:$Y>0 @IOF
S GMVPAGE=GMVPAGE+1
I GMVEDB="A" W !,GMRPDT,?20,"VITALS REPORT FOR UNIT: "_GMVWARD(1) W:GMVHLOC>0 " - "_$$GET1^DIQ(4,+$$GET1^DIQ(44,+GMVHLOC,3,"I"),.01,"I")
I GMVEDB="P" W !,GMRPDT,?28,"LATEST VITALS REPORT"
W ?72,"PAGE ",GMVPAGE
W !,GMVDASH,!
Q
PRT ; Body of report
D:IOSL<($Y+6)!($E(IOST)'="P") HDR Q:GMROUT
D DEM^VADPT K GMRDT
W !,$S(GMRRMBD'=" BLANK":$E(GMRRMBD,1,10),1:""),?12,$E(GMVNAME,1,20),?34,$E($P(VADM(2),U,2),8,11),!
D EN1^GMVDS0,Q2
Q
Q2 ; Kill variables
K GMRLIN,GMRJ,GBP,GMR,GMRL,GMRDT,GMRDAT,GMRDATS,GMRI,GMRX,GMRY,GMRVX,GSITE,GQUAL
Q
WARD ; Build TMP global for patients on ward
; set ^TMP($J,roombed,patient name,DFN)=""
; GMVWARD(1) is the NAME of FILE 42 entry
; GMVRMBD(n) is an array of room numbers on the ward (e.g, GMVRMBD(200))
; GMVEDB is a code for the type of sort
; A = all patients on a ward
; S = selected roombeds on a ward
; P = an individual patient
K ^TMP($J)
S DFN=0
F S DFN=$O(^DPT("CN",GMVWARD(1),DFN)) Q:DFN="" D
.D DEM^VADPT,INP^VADPT
.S GMVRMBD=$S(VAIN(5)'="":VAIN(5),1:" BLANK") ;roombed
.S GMVNAME=$S(VADM(1)'="":VADM(1),1:" BLANK") ;patient name
.D KVAR^VADPT K VA
.S:$S("Aa"[GMVEDB:1,$D(GMVROOM($P(GMVRMBD,"-"))):1,1:0) ^TMP($J,GMVRMBD,GMVNAME,DFN)=""
.Q
Q
GMVDS1 ;HOIFO/YH,FT-CURRENT VITALS BY PATIENT OR LOCATION ;6/6/07
+1 ;;5.0;GEN. MED. REC. - VITALS;**23**;Oct 31, 2002;Build 25
+2 ;
+3 ; This routine uses the following IAs:
+4 ; #10039 - FILE 42 references (supported)
+5 ; #10040 - FILE 44 references (supported)
+6 ; #10061 - ^VADPT calls (supported)
+7 ; #10090 - FILE 4 references (supported)
+8 ; #10103 - ^XLFDT calls (supported)
+9 ; #10104 - ^XLFSTR calls (supported)
+10 ;
EN1(RESULT,GMVDATA) ; [RPC entry point]
+1 ; GMV LATEST VITALS FOR PATIENT & GMV LATEST VITALS BY LOCATION
+2 ; DFN - patient internal entry number
+3 ; GMVDEV - device name
+4 ; GMVIEN - device internal entry number
+5 ; GMVPDT - date/time to print the report
+6 ; GMVWARD - ward internal entry number
+7 ; GMVHLOC - hospital location internal entry number
+8 ;
+9 NEW DFN,GMVDEV,GMVIEN,GMVPDT,GMVWARD,GMVHLOC
+10 SET DFN=+$PIECE(GMVDATA,U,1)
SET GMVDEV=$PIECE(GMVDATA,U,5)
SET GMVIEN=+$PIECE(GMVDATA,U,6)
SET GMVPDT=$PIECE(GMVDATA,U,7)
SET GMVWARD=$PIECE(GMVDATA,U,8)
SET GMVHLOC=$PIECE(GMVDATA,U,9)
+11 ;device
SET ZTIO=GMVDEV
+12 ;date/time to print
SET ZTDTH=$SELECT($GET(GMVPDT)>0:GMVPDT,1:$$NOW^XLFDT())
+13 SET ZTRTN="EN2^GMVDS1"
+14 SET (ZTSAVE("DFN"),ZTSAVE("GMVWARD"),ZTSAVE("GMVHLOC"))=""
+15 IF DFN>0
SET ZTDESC="Latest Vitals Display for a Patient"
+16 IF GMVWARD>0
SET ZTDESC="Latest Vitals by Location"
+17 DO ^%ZTLOAD
+18 SET RESULT=$SELECT($GET(ZTSK)>0:"Report sent to device. Task #: "_ZTSK,1:"Unable to task the report.")
+19 KILL ZTSK,ZTIO,ZTDTH,ZTSAVE,ZTDESC,ZTRTN
+20 QUIT
EN2 ; Start the report output
+1 IF $DATA(ZTQUEUED)
SET ZTREQ="@"
+2 ;P is one patient, A is whole ward
SET GMVEDB=$SELECT(DFN>0:"P",1:"A")
+3 ;ward name
SET GMVWARD(1)=$SELECT(GMVWARD>0:$PIECE($GET(^DIC(42,GMVWARD,0)),U,1),1:"")
+4 KILL ^TMP($JOB)
+5 IF $GET(GMVEDB)="P"
Begin DoDot:1
+6 DO DEM^VADPT
DO INP^VADPT
+7 ;roombed
SET GMRRMBD=$SELECT(VAIN(5)'="":VAIN(5),1:" BLANK")
+8 ;patient name
SET GMVNAME=$SELECT(VADM(1)'="":VADM(1),1:" BLANK")
+9 ;ward ien
SET GMVWARD=$PIECE(VAIN(4),"^")
+10 ;ward name
SET GMVWARD(1)=$PIECE(VAIN(4),"^",2)
+11 ;kill VADPT variables
DO KVAR^VADPT
KILL VA
+12 SET ^TMP($JOB,GMRRMBD,GMVNAME,DFN)=""
End DoDot:1
+13 IF '$TEST
DO WARD
AE ;
+1 SET (GMROUT,GMVPAGE)=0
+2 ;line of dashes
SET GMVDASH=$$REPEAT^XLFSTR("-",80)
+3 DO NOW^%DTC
+4 SET Y=%
XECUTE ^DD("DD")
SET GMRPDT=$PIECE(Y,"@")_" ("_$PIECE($PIECE(Y,"@",2),":",1,2)_")"
+5 SET GMRSTR="T;P;R;BP;WT;HT;CVP;CG;PO2;PN"
+6 ;<-might be dead code
SET GLOC=1
+7 USE IO
+8 DO HDR
+9 IF $ORDER(^TMP($JOB,""))=""
WRITE !,"THERE IS NO DATA FOR THIS REPORT"
DO Q1
QUIT
+10 SET GMRRMBD=""
+11 FOR
SET GMRRMBD=$ORDER(^TMP($JOB,GMRRMBD))
IF GMRRMBD=""!GMROUT
QUIT
SET GMVNAME=""
FOR
SET GMVNAME=$ORDER(^TMP($JOB,GMRRMBD,GMVNAME))
IF GMVNAME=""!GMROUT
QUIT
FOR DFN=0:0
SET DFN=$ORDER(^TMP($JOB,GMRRMBD,GMVNAME,DFN))
IF DFN'>0
QUIT
DO PRT
IF GMROUT
QUIT
Q1 ; Kill variables and quit
+1 KILL ^TMP($JOB),DFN,GMRADM,GMRDA,GMVDASH,GMVEDB,GMVNAME,GMRNM,GMROUT,GMRPDT,GMVPAGE,GMRRMBD,GMRPR,GMRVDT,GMRVTDA,GMVWARD,GMRX,GMRSITE,GMRSP,GMRVX,GMVHLOC,POP,GMRDT,%,%T,GDT
+2 KILL GSTRIN,GMRSTR,GMROUT,GMRVOERR,GMRVSTOP,GMRVSTRT,GLOC,GDATA
+3 DO KVAR^VADPT
+4 DO Q^GMVDS0
+5 DO ^%ZISC
+6 QUIT
HDR ; Report Header
+1 IF $Y>0
WRITE @IOF
+2 SET GMVPAGE=GMVPAGE+1
+3 IF GMVEDB="A"
WRITE !,GMRPDT,?20,"VITALS REPORT FOR UNIT: "_GMVWARD(1)
IF GMVHLOC>0
WRITE " - "_$$GET1^DIQ(4,+$$GET1^DIQ(44,+GMVHLOC,3,"I"),.01,"I")
+4 IF GMVEDB="P"
WRITE !,GMRPDT,?28,"LATEST VITALS REPORT"
+5 WRITE ?72,"PAGE ",GMVPAGE
+6 WRITE !,GMVDASH,!
+7 QUIT
PRT ; Body of report
+1 IF IOSL<($Y+6)!($EXTRACT(IOST)'="P")
DO HDR
IF GMROUT
QUIT
+2 DO DEM^VADPT
KILL GMRDT
+3 WRITE !,$SELECT(GMRRMBD'=" BLANK":$EXTRACT(GMRRMBD,1,10),1:""),?12,$EXTRACT(GMVNAME,1,20),?34,$EXTRACT($PIECE(VADM(2),U,2),8,11),!
+4 DO EN1^GMVDS0
DO Q2
+5 QUIT
Q2 ; Kill variables
+1 KILL GMRLIN,GMRJ,GBP,GMR,GMRL,GMRDT,GMRDAT,GMRDATS,GMRI,GMRX,GMRY,GMRVX,GSITE,GQUAL
+2 QUIT
WARD ; Build TMP global for patients on ward
+1 ; set ^TMP($J,roombed,patient name,DFN)=""
+2 ; GMVWARD(1) is the NAME of FILE 42 entry
+3 ; GMVRMBD(n) is an array of room numbers on the ward (e.g, GMVRMBD(200))
+4 ; GMVEDB is a code for the type of sort
+5 ; A = all patients on a ward
+6 ; S = selected roombeds on a ward
+7 ; P = an individual patient
+8 KILL ^TMP($JOB)
+9 SET DFN=0
+10 FOR
SET DFN=$ORDER(^DPT("CN",GMVWARD(1),DFN))
IF DFN=""
QUIT
Begin DoDot:1
+11 DO DEM^VADPT
DO INP^VADPT
+12 ;roombed
SET GMVRMBD=$SELECT(VAIN(5)'="":VAIN(5),1:" BLANK")
+13 ;patient name
SET GMVNAME=$SELECT(VADM(1)'="":VADM(1),1:" BLANK")
+14 DO KVAR^VADPT
KILL VA
+15 IF $SELECT("Aa"[GMVEDB
SET ^TMP($JOB,GMVRMBD,GMVNAME,DFN)=""
+16 QUIT
End DoDot:1
+17 QUIT