140 lines
3.4 KiB
Mathematica
140 lines
3.4 KiB
Mathematica
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
|
|
;
|