PXRRLCHP ;ISL/PKR - encounter by hospital location print. ;5/27/97
;;1.0;PCE PATIENT CARE ENCOUNTER;**3,10,12,18,72**;Aug 12, 1996
;
N BMARG,C2S,C3S,C3E,C3HS,CMAX,HEAD,INDENT,MID,PAGE
N CLASSNAM,DATE,DONE,IC,GTOTAL,HLOC,HLOCMAX
N IC,FACILITY,FACPNAME,FTOTAL
N LOCLIST,LOCNAME,NLOCLIST,PNAME,SC,VIEN
N TEMP
;
;Allow the task to be cleaned up upon successful completion.
S ZTREQ="@"
;
U IO
;
;Setup the formatting parameters.
S HLOCMAX=^XTMP(PXRRXTMP,"HLOCMAX")
S INDENT=3
S C2S=INDENT+HLOCMAX+1
S C3HS=INDENT+38
;We assume that the counts will never be longer than six digits.
S MID=C3HS+6
S BMARG=2
;
S DONE=0
S GTOTAL=0
;
S PAGE=1
D HDR^PXRRGPRT(PAGE)
W !!,"Criteria for Hospital Location Encounter Count Report"
D OLRCRIT^PXRRGPRT(3)
;
SET ;Set up print fields
S FACILITY=0
FAC S FACILITY=$O(^XTMP(PXRRXTMP,FACILITY))
I +FACILITY=0&(FACILITY'="*") G END
;Mark the facility as being found.
F IC=1:1:NFAC I $P(PXRRFAC(IC),U,1)=FACILITY D Q
. S $P(PXRRFAC(IC),U,4)="M"
K LOCLIST
K ^TMP(PXRRXTMP,$J,"PXRRLOC")
S HEAD=1
S FTOTAL=0
S FACPNAME=$P(PXRRFACN(FACILITY),U,1)_" "_$P(PXRRFACN(FACILITY),U,2)
;
S PNAME=""
PRV S PNAME=$O(^XTMP(PXRRXTMP,FACILITY,PNAME))
I PNAME="" G TOTAL
;
;Check for a user request to stop the task.
I $$S^%ZTLOAD S ZTSTOP=1 D EXIT^PXRRGUT
;
S CLASSNAM=""
CLASS ;
S CLASSNAM=$O(^XTMP(PXRRXTMP,FACILITY,PNAME,CLASSNAM))
I CLASSNAM="" G PRV
;
S DATE=""
DATE S DATE=$O(^XTMP(PXRRXTMP,FACILITY,PNAME,CLASSNAM,DATE))
I DATE="" G CLASS
;
S HLOC=""
HLO S HLOC=$O(^XTMP(PXRRXTMP,FACILITY,PNAME,CLASSNAM,DATE,HLOC))
I HLOC="" G DATE
;
S VIEN=""
F S VIEN=$O(^XTMP(PXRRXTMP,FACILITY,PNAME,CLASSNAM,DATE,HLOC,VIEN)) Q:VIEN="" D
. S ^TMP(PXRRXTMP,$J,"PXRRLOC",HLOC,VIEN)=""
;
G HLO
;
TOTAL ;Total up the encounters.
S NLOCLIST=0
S CMAX=0
S HLOC=""
NLOC S HLOC=$O(^TMP(PXRRXTMP,$J,"PXRRLOC",HLOC))
I HLOC="" G OUTPUT
S TEMP=$$LOCCNT^PXRRLCHP(HLOC)
S CMAX=$$MAX^XLFMTH(CMAX,TEMP)
S LOCLIST(HLOC)=TEMP
S NLOCLIST=NLOCLIST+1
G NLOC
;
OUTPUT ;Print the data.
S HEAD=1
S C3E=MID+($L(CMAX)/2)
S HLOC=""
S NLOCLIST=0
NEXTP S HLOC=$O(LOCLIST(HLOC))
I HLOC="" S GTOTAL=GTOTAL+FTOTAL G FINAL
S TEMP=$$LOCCNT^PXRRLCHP(HLOC)
S NLOCLIST=NLOCLIST+1
S FTOTAL=FTOTAL+TEMP
S LOCNAME=$P(HLOC,U,1)
S SC=""
I $P(HLOC,U,3)'="" S SC="("_$P(HLOC,U,3)_")"
D HEAD
I DONE G EXIT
S C3S=C3E-$L(TEMP)
W !,?INDENT,LOCNAME,?C2S,SC,?C3S,TEMP
G NEXTP
;
FINAL ;Print facility total.
I $Y>(IOSL-BMARG-3) D PAGE^PXRRGPRT
I DONE G EXIT
D PTOTAL^PXRRGPRT("Total facility encounters ",FTOTAL,C3E,1)
G FAC
END ;
I $Y>(IOSL-BMARG-3) D PAGE^PXRRGPRT
I DONE G EXIT
I GTOTAL>0 D PTOTAL^PXRRGPRT("Total encounters ",GTOTAL,C3E,0)
I $Y>(IOSL-BMARG-3) D PAGE^PXRRGPRT
I DONE G EXIT
D FACNE^PXRRGPRT(INDENT)
EXIT ;
D EXIT^PXRRGUT
D EOR^PXRRGUT
Q
;
;=======================================================================
HEAD ;If necesary, write the header.
I HEAD D
. I $Y>(IOSL-BMARG-6) D PAGE^PXRRGPRT
. I DONE Q
. W !!,"Facility: ",FACPNAME
. W !!,?INDENT,"Hospital Location (Stop Code)",?C3HS,"Encounters"
. W !,?INDENT,"-----------------------------------",?C3HS,"----------"
. S HEAD=0
Q
;
;=======================================================================
LOCCNT(HLOC) ;Return the number of encounters at this location.
;
N TOTAL,VIEN
S TOTAL=0
S VIEN=""
F S VIEN=$O(^TMP(PXRRXTMP,$J,"PXRRLOC",HLOC,VIEN)) Q:VIEN="" D
. I VIEN>0 S TOTAL=TOTAL+1
Q TOTAL
;
PXRRLCHP ;ISL/PKR - encounter by hospital location print. ;5/27/97
+1 ;;1.0;PCE PATIENT CARE ENCOUNTER;**3,10,12,18,72**;Aug 12, 1996
+2 ;
+3 NEW BMARG,C2S,C3S,C3E,C3HS,CMAX,HEAD,INDENT,MID,PAGE
+4 NEW CLASSNAM,DATE,DONE,IC,GTOTAL,HLOC,HLOCMAX
+5 NEW IC,FACILITY,FACPNAME,FTOTAL
+6 NEW LOCLIST,LOCNAME,NLOCLIST,PNAME,SC,VIEN
+7 NEW TEMP
+8 ;
+9 ;Allow the task to be cleaned up upon successful completion.
+10 SET ZTREQ="@"
+11 ;
+12 USE IO
+13 ;
+14 ;Setup the formatting parameters.
+15 SET HLOCMAX=^XTMP(PXRRXTMP,"HLOCMAX")
+16 SET INDENT=3
+17 SET C2S=INDENT+HLOCMAX+1
+18 SET C3HS=INDENT+38
+19 ;We assume that the counts will never be longer than six digits.
+20 SET MID=C3HS+6
+21 SET BMARG=2
+22 ;
+23 SET DONE=0
+24 SET GTOTAL=0
+25 ;
+26 SET PAGE=1
+27 DO HDR^PXRRGPRT(PAGE)
+28 WRITE !!,"Criteria for Hospital Location Encounter Count Report"
+29 DO OLRCRIT^PXRRGPRT(3)
+30 ;
SET ;Set up print fields
+1 SET FACILITY=0
FAC SET FACILITY=$ORDER(^XTMP(PXRRXTMP,FACILITY))
+1 IF +FACILITY=0&(FACILITY'="*")
GOTO END
+2 ;Mark the facility as being found.
+3 FOR IC=1:1:NFAC
IF $PIECE(PXRRFAC(IC),U,1)=FACILITY
Begin DoDot:1
+4 SET $PIECE(PXRRFAC(IC),U,4)="M"
End DoDot:1
QUIT
+5 KILL LOCLIST
+6 KILL ^TMP(PXRRXTMP,$JOB,"PXRRLOC")
+7 SET HEAD=1
+8 SET FTOTAL=0
+9 SET FACPNAME=$PIECE(PXRRFACN(FACILITY),U,1)_" "_$PIECE(PXRRFACN(FACILITY),U,2)
+10 ;
+11 SET PNAME=""
PRV SET PNAME=$ORDER(^XTMP(PXRRXTMP,FACILITY,PNAME))
+1 IF PNAME=""
GOTO TOTAL
+2 ;
+3 ;Check for a user request to stop the task.
+4 IF $$S^%ZTLOAD
SET ZTSTOP=1
DO EXIT^PXRRGUT
+5 ;
+6 SET CLASSNAM=""
CLASS ;
+1 SET CLASSNAM=$ORDER(^XTMP(PXRRXTMP,FACILITY,PNAME,CLASSNAM))
+2 IF CLASSNAM=""
GOTO PRV
+3 ;
+4 SET DATE=""
DATE SET DATE=$ORDER(^XTMP(PXRRXTMP,FACILITY,PNAME,CLASSNAM,DATE))
+1 IF DATE=""
GOTO CLASS
+2 ;
+3 SET HLOC=""
HLO SET HLOC=$ORDER(^XTMP(PXRRXTMP,FACILITY,PNAME,CLASSNAM,DATE,HLOC))
+1 IF HLOC=""
GOTO DATE
+2 ;
+3 SET VIEN=""
+4 FOR
SET VIEN=$ORDER(^XTMP(PXRRXTMP,FACILITY,PNAME,CLASSNAM,DATE,HLOC,VIEN))
IF VIEN=""
QUIT
Begin DoDot:1
+5 SET ^TMP(PXRRXTMP,$JOB,"PXRRLOC",HLOC,VIEN)=""
End DoDot:1
+6 ;
+7 GOTO HLO
+8 ;
TOTAL ;Total up the encounters.
+1 SET NLOCLIST=0
+2 SET CMAX=0
+3 SET HLOC=""
NLOC SET HLOC=$ORDER(^TMP(PXRRXTMP,$JOB,"PXRRLOC",HLOC))
+1 IF HLOC=""
GOTO OUTPUT
+2 SET TEMP=$$LOCCNT^PXRRLCHP(HLOC)
+3 SET CMAX=$$MAX^XLFMTH(CMAX,TEMP)
+4 SET LOCLIST(HLOC)=TEMP
+5 SET NLOCLIST=NLOCLIST+1
+6 GOTO NLOC
+7 ;
OUTPUT ;Print the data.
+1 SET HEAD=1
+2 SET C3E=MID+($LENGTH(CMAX)/2)
+3 SET HLOC=""
+4 SET NLOCLIST=0
NEXTP SET HLOC=$ORDER(LOCLIST(HLOC))
+1 IF HLOC=""
SET GTOTAL=GTOTAL+FTOTAL
GOTO FINAL
+2 SET TEMP=$$LOCCNT^PXRRLCHP(HLOC)
+3 SET NLOCLIST=NLOCLIST+1
+4 SET FTOTAL=FTOTAL+TEMP
+5 SET LOCNAME=$PIECE(HLOC,U,1)
+6 SET SC=""
+7 IF $PIECE(HLOC,U,3)'=""
SET SC="("_$PIECE(HLOC,U,3)_")"
+8 DO HEAD
+9 IF DONE
GOTO EXIT
+10 SET C3S=C3E-$LENGTH(TEMP)
+11 WRITE !,?INDENT,LOCNAME,?C2S,SC,?C3S,TEMP
+12 GOTO NEXTP
+13 ;
FINAL ;Print facility total.
+1 IF $Y>(IOSL-BMARG-3)
DO PAGE^PXRRGPRT
+2 IF DONE
GOTO EXIT
+3 DO PTOTAL^PXRRGPRT("Total facility encounters ",FTOTAL,C3E,1)
+4 GOTO FAC
END ;
+1 IF $Y>(IOSL-BMARG-3)
DO PAGE^PXRRGPRT
+2 IF DONE
GOTO EXIT
+3 IF GTOTAL>0
DO PTOTAL^PXRRGPRT("Total encounters ",GTOTAL,C3E,0)
+4 IF $Y>(IOSL-BMARG-3)
DO PAGE^PXRRGPRT
+5 IF DONE
GOTO EXIT
+6 DO FACNE^PXRRGPRT(INDENT)
EXIT ;
+1 DO EXIT^PXRRGUT
+2 DO EOR^PXRRGUT
+3 QUIT
+4 ;
+5 ;=======================================================================
HEAD ;If necesary, write the header.
+1 IF HEAD
Begin DoDot:1
+2 IF $Y>(IOSL-BMARG-6)
DO PAGE^PXRRGPRT
+3 IF DONE
QUIT
+4 WRITE !!,"Facility: ",FACPNAME
+5 WRITE !!,?INDENT,"Hospital Location (Stop Code)",?C3HS,"Encounters"
+6 WRITE !,?INDENT,"-----------------------------------",?C3HS,"----------"
+7 SET HEAD=0
End DoDot:1
+8 QUIT
+9 ;
+10 ;=======================================================================
LOCCNT(HLOC) ;Return the number of encounters at this location.
+1 ;
+2 NEW TOTAL,VIEN
+3 SET TOTAL=0
+4 SET VIEN=""
+5 FOR
SET VIEN=$ORDER(^TMP(PXRRXTMP,$JOB,"PXRRLOC",HLOC,VIEN))
IF VIEN=""
QUIT
Begin DoDot:1
+6 IF VIEN>0
SET TOTAL=TOTAL+1
End DoDot:1
+7 QUIT TOTAL
+8 ;