PXRRECSE ;ISL/PKR - Sort through encounters applying the selection criteria. ;6/27/97
;;1.0;PCE PATIENT CARE ENCOUNTER;**3,10,12,18,72,189,222**;Aug 12, 1996;Build 5
;;Reference to ^DIC(4 supported by DBIA 10090
;;Reference to ^DIC(40.7 supported by DBIA 93-C
SORT ;
N BD,BUSY,CLASSNAM,CLINIC,CLINIEN,CSSCR
N ED,IC,FAC,FACILITY,FOUND
N HLOCIEN,HLOCNAM,HLOCMAX,HSSCR,NEWPIEN
N PCLMAX,PCLASS,PNAME,PNMAX,PPNAME,PPONLY,PRVCNT,PRVIEN
N TEMP,VACODE,VIEN,VISIT
N HOSLOC,INS
;
S (HLOCMAX,PCLMAX,PNMAX)=0
;
I '(PXRRQUE!$D(IO("S"))) D INIT^PXRRBUSY(.BUSY)
;
;CSSCR is true if we want selected clinics.
I $P($G(PXRRLCSC),U,1)="CS" S CSSCR=1
E S CSSCR=0
;
;CLINIC is true if we want clinics instead of hospital locations.
I $P($G(PXRRLCSC),U,1)["C" S CLINIC=1
E S CLINIC=0
;
;HSSCR is true if we want selected hospital locations.
I $P($G(PXRRLCSC),U,1)="HS" S HSSCR=1
E S HSSCR=0
;
;PPONLY is true if we want primary providers only.
I $P($G(PXRRPRSC),U,1)="P" S PPONLY=1
E S PPONLY=0
;
;Allow the task to be cleaned up upon successful completion.
S ZTREQ="@"
;
S BD=PXRRBDT-.0001
S ED=PXRREDT+.2359
NDATE S BD=$O(^AUPNVSIT("B",BD))
;If we have passed the ending date we are done.
I (BD>ED)!(BD="") G DONE
;
;If this is an interactive session let the user know that something
;is happening.
I '(PXRRQUE!$D(IO("S"))) D SPIN^PXRRBUSY("Sorting encounters",.BUSY)
;
;Check for a user request to stop the task.
I $$S^%ZTLOAD S ZTSTOP=1 D EXIT^PXRRGUT
;
;Get the VISIT IEN
S VIEN=0
VISIT S VIEN=$O(^AUPNVSIT("B",BD,VIEN))
I VIEN="" G NDATE
S VISIT=$G(^AUPNVSIT(VIEN,0)) G:VISIT="" NDATE
S VISIT=^AUPNVSIT(VIEN,0)
;
;Screen out inappropriate vists.
I $P(VISIT,U,7)'="" I PXRRSCAT'[$P(VISIT,U,7) G VISIT
I $P(VISIT,U,7)="" I PXRRSCAT'=$P(VISIT,U,7) G VISIT
;
;Make sure that the facility is on the list.
S FOUND=0
S FAC=$P(VISIT,U,6)
F IC=1:1:NFAC I $P(PXRRFAC(IC),U,1)=FAC D Q
. S FACILITY=FAC
. S FOUND=1
;
;If category was an encounter, check if encounter
;occurred at a non-VA site
I PXRRSCAT["E"&($P(VISIT,U,7)="E")&(FAC="")&($D(NONVA)) D
. I $D(^AUPNVSIT(VIEN,21)) S FACILITY="*",FOUND=1
;
;If Service Category = EVENT (HISTORICAL), get facility based on
;the hospital location, encounter occurred at a VA site. - *189
I PXRRSCAT["E"&($P(VISIT,U,7)="E")&(FAC="") D
. S (INS,HOSLOC)=""
. I $P(VISIT,U,22)'="" S HOSLOC=$P(VISIT,U,22) D
. . S INS=$P(^SC(HOSLOC,0),U,15)
. . ;S:+INS INS=$P($G(^DG(40.8,INS,0)),U,7)
. . S:+INS INS=$$GET1^DIQ(40.8,INS_",",.07,"I")
. . S INS=$S(+INS&$D(^DIC(4,+INS,0)):INS,1:"")
. . I $D(INS) F IC=1:1:NFAC I $P(PXRRFAC(IC),U,1)=INS D Q
. . . S FACILITY=INS,FOUND=1
;
I 'FOUND G VISIT
;
;Get the Provider
S PRVCNT=0
S PRVIEN=0
PRV ;
S PRVIEN=$O(^AUPNVPRV("AD",VIEN,PRVIEN))
I (PRVIEN="")&(PRVCNT>0) G VISIT
I (PRVIEN="") D
. S NEWPIEN=0
E D
. S NEWPIEN=$P(^AUPNVPRV(PRVIEN,0),U,1)
S PRVCNT=PRVCNT+1
S (CLASSNAM,HLOCNAM,PPNAME)=""
S FOUND=1
;
;Apply any Provider screens.
;List of providers.
I $D(PXRRPRPL) D
. S FOUND=0
. F IC=1:1:NPL I $P(PXRRPRPL(IC),U,2)=NEWPIEN D Q
..;Mark this provider as being matched.
.. S $P(PXRRPRPL(IC),U,4)="M"
.. S PPNAME=$P(PXRRPRPL(IC),U,1)
.. S FOUND=1
I 'FOUND G PRV
;
;Get the Person Class.
S PCLASS=$$OCCUP^PXBGPRV(NEWPIEN,BD,"",1,"")
;
;Person class screen.
I $D(PXRRPECL) D
. S FOUND=$$MATCH^PXRRPECU(PCLASS)
I 'FOUND G PRV
;
;Primary Provider only.
I PPONLY D
. S FOUND=0
. I PRVIEN>0 D
.. I $P(^AUPNVPRV(PRVIEN,0),U,4)="P" S FOUND=1
I 'FOUND G PRV
;
;Clinic screen.
I CSSCR D
. S FOUND=0
. S CLINIEN=$P(VISIT,U,8)
. F IC=1:1:NCS I $P(PXRRCS(IC),U,2)=CLINIEN D Q
..;Mark the clinic as being matched.
.. S $P(PXRRCS(IC),U,4)="M"
.. S HLOCNAM=$P(^DIC(40.7,CLINIEN,0),U,1)_U_CLINIEN
.. S FOUND=1
I 'FOUND G PRV
;
;Hospital location screen.
I HSSCR D
. S FOUND=0
. S HLOCIEN=$P(VISIT,U,22)
. F IC=1:1:NHL I $P(PXRRLCHL(IC),U,2)=HLOCIEN D Q
..;Mark the hospital location as being matched.
.. S $P(PXRRLCHL(IC),U,4)="M"
.. S HLOCNAM=$P(^SC(HLOCIEN,0),U,1)_U_HLOCIEN
.. S CLINIEN=$P(^SC(HLOCIEN,0),U,7)
.. S FOUND=1
I 'FOUND G PRV
;
;At this point we have an encounter that can be added to the list.
;Make sure we have a Provider name.
I NEWPIEN=0 S PPNAME="Unknown"
I $L(PPNAME)=0 D
. S PPNAME=$P($G(^VA(200,NEWPIEN,0)),U,1)
. I $L(PPNAME)=0 S PPNAME="Unknown",NEWPIEN=0
S PNMAX=$$MAX^XLFMTH(PNMAX,$L(PPNAME))
S PNAME=PPNAME_U_NEWPIEN
;
;Make sure we have a Person Class.
I +$P($G(PCLASS),U,1)'>0 D
. S CLASSNAM="Unknown"
. S TEMP=CLASSNAM
E D
. S VACODE=$P(PCLASS,U,7)
. S CLASSNAM=$$ALPHA^PXRRPECU(PCLASS)
. S TEMP=$$ABBRV^PXRRPECU(VACODE)
S PCLMAX=$$MAX^XLFMTH(PCLMAX,$L(TEMP))
;
;Get the hospital location or clinic and stop code.
I $L(HLOCNAM)'>0 D
. I 'CLINIC D
.. ;Get the hospital location.
.. S HLOCIEN=$P(VISIT,U,22)
.. I HLOCIEN>0 D
... S HLOCNAM=$P(^SC(HLOCIEN,0),U,1)_U_HLOCIEN
... S CLINIEN=$P(^SC(HLOCIEN,0),U,7)
.. E D
...;No hospital location, see if we can at least find the clinic.
... S HLOCNAM="Unknown"
... S CLINIEN=$P(VISIT,U,8)
.. I PXRRSCAT["E"&($P(VISIT,U,7)="E")&(FAC="") D
...; If encounter occurred outside VA get location from node 21
...; Check if node 21 exists - *189
...I $D(^AUPNVSIT(VIEN,21)) S HLOCNAM=$P(^AUPNVSIT(VIEN,21),U,1)
...; If encounter occurred at VA site, get location from field .22 - *189
...I '$D(^AUPNVSIT(VIEN,21)) S HLOCNAM=$P(^SC($P(VISIT,U,22),0),U,1)
. E D
.. ;Get the clinic.
.. S CLINIEN=$P(VISIT,U,8)
.. I CLINIEN>0 S HLOCNAM=$P(^DIC(40.7,CLINIEN,0),U,1)_U_CLINIEN
.. E S HLOCNAM="Unknown"
;
;Append the clinic stop code.
I CLINIEN>0 S HLOCNAM=HLOCNAM_U_$P(^DIC(40.7,CLINIEN,0),U,2)
S HLOCMAX=$$MAX^XLFMTH(HLOCMAX,$L($P(HLOCNAM,U,1)))
;
S ^XTMP(PXRRXTMP,FACILITY,PNAME,CLASSNAM,BD,HLOCNAM,VIEN)=""
;
;Get the next provider.
G PRV
;
DONE ;
I '(PXRRQUE!$D(IO("S"))) D DONE^PXRRBUSY("done")
;
;If there were selected clinic stops build dummy entries for all
;those without entries.
I $D(PXRRCS) D
. F FAC=1:1:NFAC D
.. S FACILITY=$P(PXRRFAC(FAC),U,1)
.. F IC=1:1:NCS D
... I $P(PXRRCS(IC),U,4)'="M" D
.... S PNAME="Unknown"_U_"0"
.... S CLASSNAM="Unknown"
.... S HLOCNAM=PXRRCS(IC)
.... S HLOCMAX=$$MAX^XLFMTH(HLOCMAX,$L($P(HLOCNAM,U,1)))
.... S ^XTMP(PXRRXTMP,FACILITY,PNAME,CLASSNAM,0,HLOCNAM,0)=""
;
;If there were selected hospital locations build dummy entries for all
;those without entries.
I $D(PXRRLCHL) D
. F FAC=1:1:NFAC D
.. S FACILITY=$P(PXRRFAC(FAC),U,1)
.. F IC=1:1:NHL D
... I $P(PXRRLCHL(IC),U,4)'="M" D
.... S PNAME="Unknown"_U_"0"
.... S CLASSNAM="Unknown"
.... S HLOCNAM=PXRRLCHL(IC)
.... S HLOCMAX=$$MAX^XLFMTH(HLOCMAX,$L($P(HLOCNAM,U,1)))
.... S ^XTMP(PXRRXTMP,FACILITY,PNAME,CLASSNAM,0,HLOCNAM,0)=""
;
;If there were selected providers build dummy entries for all those
;without encounters.
I $D(PXRRPRPL) D
. N CLASSLST,JC,NPCLASS
. F FAC=1:1:NFAC D
.. S FACILITY=$P(PXRRFAC(FAC),U,1)
.. F IC=1:1:NPL D
... I $P(PXRRPRPL(IC),U,4)'="M" D
.... S PNAME=PXRRPRPL(IC)
.... S PPNAME=$P(PNAME,U,1)
.... S PNMAX=$$MAX^XLFMTH(PNMAX,$L(PPNAME))
.... S NEWPIEN=$P(PNAME,U,2)
....;Get the person class list for this provider.
.... S NPCLASS=$$PCLLIST^PXRRPECU(NEWPIEN,PXRRBDT,PXRREDT,.CLASSLST)
.... F JC=1:1:NPCLASS D
..... S CLASSNAM=CLASSLST(JC)
..... S VACODE=$P(CLASSNAM,U,2)
..... I $L(VACODE)'>0 S TEMP="Unknown"
..... E S TEMP=$$ABBRV^PXRRPECU(VACODE)
..... S PCLMAX=$$MAX^XLFMTH(PCLMAX,$L(TEMP))
..... S ^XTMP(PXRRXTMP,FACILITY,PNAME,CLASSNAM,0,"HLOC")=0
;
EXIT ;Save the values of HLOCMAX, PCLMAX,and PNMAX.
S ^XTMP(PXRRXTMP,"HLOCMAX")=HLOCMAX
S ^XTMP(PXRRXTMP,"PCLMAX")=PCLMAX
S ^XTMP(PXRRXTMP,"PNMAX")=PNMAX
;
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPXRRECSE 7966 printed Oct 16, 2024@18:31:14 Page 2
PXRRECSE ;ISL/PKR - Sort through encounters applying the selection criteria. ;6/27/97
+1 ;;1.0;PCE PATIENT CARE ENCOUNTER;**3,10,12,18,72,189,222**;Aug 12, 1996;Build 5
+2 ;;Reference to ^DIC(4 supported by DBIA 10090
+3 ;;Reference to ^DIC(40.7 supported by DBIA 93-C
SORT ;
+1 NEW BD,BUSY,CLASSNAM,CLINIC,CLINIEN,CSSCR
+2 NEW ED,IC,FAC,FACILITY,FOUND
+3 NEW HLOCIEN,HLOCNAM,HLOCMAX,HSSCR,NEWPIEN
+4 NEW PCLMAX,PCLASS,PNAME,PNMAX,PPNAME,PPONLY,PRVCNT,PRVIEN
+5 NEW TEMP,VACODE,VIEN,VISIT
+6 NEW HOSLOC,INS
+7 ;
+8 SET (HLOCMAX,PCLMAX,PNMAX)=0
+9 ;
+10 IF '(PXRRQUE!$DATA(IO("S")))
DO INIT^PXRRBUSY(.BUSY)
+11 ;
+12 ;CSSCR is true if we want selected clinics.
+13 IF $PIECE($GET(PXRRLCSC),U,1)="CS"
SET CSSCR=1
+14 IF '$TEST
SET CSSCR=0
+15 ;
+16 ;CLINIC is true if we want clinics instead of hospital locations.
+17 IF $PIECE($GET(PXRRLCSC),U,1)["C"
SET CLINIC=1
+18 IF '$TEST
SET CLINIC=0
+19 ;
+20 ;HSSCR is true if we want selected hospital locations.
+21 IF $PIECE($GET(PXRRLCSC),U,1)="HS"
SET HSSCR=1
+22 IF '$TEST
SET HSSCR=0
+23 ;
+24 ;PPONLY is true if we want primary providers only.
+25 IF $PIECE($GET(PXRRPRSC),U,1)="P"
SET PPONLY=1
+26 IF '$TEST
SET PPONLY=0
+27 ;
+28 ;Allow the task to be cleaned up upon successful completion.
+29 SET ZTREQ="@"
+30 ;
+31 SET BD=PXRRBDT-.0001
+32 SET ED=PXRREDT+.2359
NDATE SET BD=$ORDER(^AUPNVSIT("B",BD))
+1 ;If we have passed the ending date we are done.
+2 IF (BD>ED)!(BD="")
GOTO DONE
+3 ;
+4 ;If this is an interactive session let the user know that something
+5 ;is happening.
+6 IF '(PXRRQUE!$DATA(IO("S")))
DO SPIN^PXRRBUSY("Sorting encounters",.BUSY)
+7 ;
+8 ;Check for a user request to stop the task.
+9 IF $$S^%ZTLOAD
SET ZTSTOP=1
DO EXIT^PXRRGUT
+10 ;
+11 ;Get the VISIT IEN
+12 SET VIEN=0
VISIT SET VIEN=$ORDER(^AUPNVSIT("B",BD,VIEN))
+1 IF VIEN=""
GOTO NDATE
+2 SET VISIT=$GET(^AUPNVSIT(VIEN,0))
if VISIT=""
GOTO NDATE
+3 SET VISIT=^AUPNVSIT(VIEN,0)
+4 ;
+5 ;Screen out inappropriate vists.
+6 IF $PIECE(VISIT,U,7)'=""
IF PXRRSCAT'[$PIECE(VISIT,U,7)
GOTO VISIT
+7 IF $PIECE(VISIT,U,7)=""
IF PXRRSCAT'=$PIECE(VISIT,U,7)
GOTO VISIT
+8 ;
+9 ;Make sure that the facility is on the list.
+10 SET FOUND=0
+11 SET FAC=$PIECE(VISIT,U,6)
+12 FOR IC=1:1:NFAC
IF $PIECE(PXRRFAC(IC),U,1)=FAC
Begin DoDot:1
+13 SET FACILITY=FAC
+14 SET FOUND=1
End DoDot:1
QUIT
+15 ;
+16 ;If category was an encounter, check if encounter
+17 ;occurred at a non-VA site
+18 IF PXRRSCAT["E"&($PIECE(VISIT,U,7)="E")&(FAC="")&($DATA(NONVA))
Begin DoDot:1
+19 IF $DATA(^AUPNVSIT(VIEN,21))
SET FACILITY="*"
SET FOUND=1
End DoDot:1
+20 ;
+21 ;If Service Category = EVENT (HISTORICAL), get facility based on
+22 ;the hospital location, encounter occurred at a VA site. - *189
+23 IF PXRRSCAT["E"&($PIECE(VISIT,U,7)="E")&(FAC="")
Begin DoDot:1
+24 SET (INS,HOSLOC)=""
+25 IF $PIECE(VISIT,U,22)'=""
SET HOSLOC=$PIECE(VISIT,U,22)
Begin DoDot:2
+26 SET INS=$PIECE(^SC(HOSLOC,0),U,15)
+27 ;S:+INS INS=$P($G(^DG(40.8,INS,0)),U,7)
+28 if +INS
SET INS=$$GET1^DIQ(40.8,INS_",",.07,"I")
+29 SET INS=$SELECT(+INS&$DATA(^DIC(4,+INS,0)):INS,1:"")
+30 IF $DATA(INS)
FOR IC=1:1:NFAC
IF $PIECE(PXRRFAC(IC),U,1)=INS
Begin DoDot:3
+31 SET FACILITY=INS
SET FOUND=1
End DoDot:3
QUIT
End DoDot:2
End DoDot:1
+32 ;
+33 IF 'FOUND
GOTO VISIT
+34 ;
+35 ;Get the Provider
+36 SET PRVCNT=0
+37 SET PRVIEN=0
PRV ;
+1 SET PRVIEN=$ORDER(^AUPNVPRV("AD",VIEN,PRVIEN))
+2 IF (PRVIEN="")&(PRVCNT>0)
GOTO VISIT
+3 IF (PRVIEN="")
Begin DoDot:1
+4 SET NEWPIEN=0
End DoDot:1
+5 IF '$TEST
Begin DoDot:1
+6 SET NEWPIEN=$PIECE(^AUPNVPRV(PRVIEN,0),U,1)
End DoDot:1
+7 SET PRVCNT=PRVCNT+1
+8 SET (CLASSNAM,HLOCNAM,PPNAME)=""
+9 SET FOUND=1
+10 ;
+11 ;Apply any Provider screens.
+12 ;List of providers.
+13 IF $DATA(PXRRPRPL)
Begin DoDot:1
+14 SET FOUND=0
+15 FOR IC=1:1:NPL
IF $PIECE(PXRRPRPL(IC),U,2)=NEWPIEN
Begin DoDot:2
+16 ;Mark this provider as being matched.
+17 SET $PIECE(PXRRPRPL(IC),U,4)="M"
+18 SET PPNAME=$PIECE(PXRRPRPL(IC),U,1)
+19 SET FOUND=1
End DoDot:2
QUIT
End DoDot:1
+20 IF 'FOUND
GOTO PRV
+21 ;
+22 ;Get the Person Class.
+23 SET PCLASS=$$OCCUP^PXBGPRV(NEWPIEN,BD,"",1,"")
+24 ;
+25 ;Person class screen.
+26 IF $DATA(PXRRPECL)
Begin DoDot:1
+27 SET FOUND=$$MATCH^PXRRPECU(PCLASS)
End DoDot:1
+28 IF 'FOUND
GOTO PRV
+29 ;
+30 ;Primary Provider only.
+31 IF PPONLY
Begin DoDot:1
+32 SET FOUND=0
+33 IF PRVIEN>0
Begin DoDot:2
+34 IF $PIECE(^AUPNVPRV(PRVIEN,0),U,4)="P"
SET FOUND=1
End DoDot:2
End DoDot:1
+35 IF 'FOUND
GOTO PRV
+36 ;
+37 ;Clinic screen.
+38 IF CSSCR
Begin DoDot:1
+39 SET FOUND=0
+40 SET CLINIEN=$PIECE(VISIT,U,8)
+41 FOR IC=1:1:NCS
IF $PIECE(PXRRCS(IC),U,2)=CLINIEN
Begin DoDot:2
+42 ;Mark the clinic as being matched.
+43 SET $PIECE(PXRRCS(IC),U,4)="M"
+44 SET HLOCNAM=$PIECE(^DIC(40.7,CLINIEN,0),U,1)_U_CLINIEN
+45 SET FOUND=1
End DoDot:2
QUIT
End DoDot:1
+46 IF 'FOUND
GOTO PRV
+47 ;
+48 ;Hospital location screen.
+49 IF HSSCR
Begin DoDot:1
+50 SET FOUND=0
+51 SET HLOCIEN=$PIECE(VISIT,U,22)
+52 FOR IC=1:1:NHL
IF $PIECE(PXRRLCHL(IC),U,2)=HLOCIEN
Begin DoDot:2
+53 ;Mark the hospital location as being matched.
+54 SET $PIECE(PXRRLCHL(IC),U,4)="M"
+55 SET HLOCNAM=$PIECE(^SC(HLOCIEN,0),U,1)_U_HLOCIEN
+56 SET CLINIEN=$PIECE(^SC(HLOCIEN,0),U,7)
+57 SET FOUND=1
End DoDot:2
QUIT
End DoDot:1
+58 IF 'FOUND
GOTO PRV
+59 ;
+60 ;At this point we have an encounter that can be added to the list.
+61 ;Make sure we have a Provider name.
+62 IF NEWPIEN=0
SET PPNAME="Unknown"
+63 IF $LENGTH(PPNAME)=0
Begin DoDot:1
+64 SET PPNAME=$PIECE($GET(^VA(200,NEWPIEN,0)),U,1)
+65 IF $LENGTH(PPNAME)=0
SET PPNAME="Unknown"
SET NEWPIEN=0
End DoDot:1
+66 SET PNMAX=$$MAX^XLFMTH(PNMAX,$LENGTH(PPNAME))
+67 SET PNAME=PPNAME_U_NEWPIEN
+68 ;
+69 ;Make sure we have a Person Class.
+70 IF +$PIECE($GET(PCLASS),U,1)'>0
Begin DoDot:1
+71 SET CLASSNAM="Unknown"
+72 SET TEMP=CLASSNAM
End DoDot:1
+73 IF '$TEST
Begin DoDot:1
+74 SET VACODE=$PIECE(PCLASS,U,7)
+75 SET CLASSNAM=$$ALPHA^PXRRPECU(PCLASS)
+76 SET TEMP=$$ABBRV^PXRRPECU(VACODE)
End DoDot:1
+77 SET PCLMAX=$$MAX^XLFMTH(PCLMAX,$LENGTH(TEMP))
+78 ;
+79 ;Get the hospital location or clinic and stop code.
+80 IF $LENGTH(HLOCNAM)'>0
Begin DoDot:1
+81 IF 'CLINIC
Begin DoDot:2
+82 ;Get the hospital location.
+83 SET HLOCIEN=$PIECE(VISIT,U,22)
+84 IF HLOCIEN>0
Begin DoDot:3
+85 SET HLOCNAM=$PIECE(^SC(HLOCIEN,0),U,1)_U_HLOCIEN
+86 SET CLINIEN=$PIECE(^SC(HLOCIEN,0),U,7)
End DoDot:3
+87 IF '$TEST
Begin DoDot:3
+88 ;No hospital location, see if we can at least find the clinic.
+89 SET HLOCNAM="Unknown"
+90 SET CLINIEN=$PIECE(VISIT,U,8)
End DoDot:3
+91 IF PXRRSCAT["E"&($PIECE(VISIT,U,7)="E")&(FAC="")
Begin DoDot:3
+92 ; If encounter occurred outside VA get location from node 21
+93 ; Check if node 21 exists - *189
+94 IF $DATA(^AUPNVSIT(VIEN,21))
SET HLOCNAM=$PIECE(^AUPNVSIT(VIEN,21),U,1)
+95 ; If encounter occurred at VA site, get location from field .22 - *189
+96 IF '$DATA(^AUPNVSIT(VIEN,21))
SET HLOCNAM=$PIECE(^SC($PIECE(VISIT,U,22),0),U,1)
End DoDot:3
End DoDot:2
+97 IF '$TEST
Begin DoDot:2
+98 ;Get the clinic.
+99 SET CLINIEN=$PIECE(VISIT,U,8)
+100 IF CLINIEN>0
SET HLOCNAM=$PIECE(^DIC(40.7,CLINIEN,0),U,1)_U_CLINIEN
+101 IF '$TEST
SET HLOCNAM="Unknown"
End DoDot:2
End DoDot:1
+102 ;
+103 ;Append the clinic stop code.
+104 IF CLINIEN>0
SET HLOCNAM=HLOCNAM_U_$PIECE(^DIC(40.7,CLINIEN,0),U,2)
+105 SET HLOCMAX=$$MAX^XLFMTH(HLOCMAX,$LENGTH($PIECE(HLOCNAM,U,1)))
+106 ;
+107 SET ^XTMP(PXRRXTMP,FACILITY,PNAME,CLASSNAM,BD,HLOCNAM,VIEN)=""
+108 ;
+109 ;Get the next provider.
+110 GOTO PRV
+111 ;
DONE ;
+1 IF '(PXRRQUE!$DATA(IO("S")))
DO DONE^PXRRBUSY("done")
+2 ;
+3 ;If there were selected clinic stops build dummy entries for all
+4 ;those without entries.
+5 IF $DATA(PXRRCS)
Begin DoDot:1
+6 FOR FAC=1:1:NFAC
Begin DoDot:2
+7 SET FACILITY=$PIECE(PXRRFAC(FAC),U,1)
+8 FOR IC=1:1:NCS
Begin DoDot:3
+9 IF $PIECE(PXRRCS(IC),U,4)'="M"
Begin DoDot:4
+10 SET PNAME="Unknown"_U_"0"
+11 SET CLASSNAM="Unknown"
+12 SET HLOCNAM=PXRRCS(IC)
+13 SET HLOCMAX=$$MAX^XLFMTH(HLOCMAX,$LENGTH($PIECE(HLOCNAM,U,1)))
+14 SET ^XTMP(PXRRXTMP,FACILITY,PNAME,CLASSNAM,0,HLOCNAM,0)=""
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+15 ;
+16 ;If there were selected hospital locations build dummy entries for all
+17 ;those without entries.
+18 IF $DATA(PXRRLCHL)
Begin DoDot:1
+19 FOR FAC=1:1:NFAC
Begin DoDot:2
+20 SET FACILITY=$PIECE(PXRRFAC(FAC),U,1)
+21 FOR IC=1:1:NHL
Begin DoDot:3
+22 IF $PIECE(PXRRLCHL(IC),U,4)'="M"
Begin DoDot:4
+23 SET PNAME="Unknown"_U_"0"
+24 SET CLASSNAM="Unknown"
+25 SET HLOCNAM=PXRRLCHL(IC)
+26 SET HLOCMAX=$$MAX^XLFMTH(HLOCMAX,$LENGTH($PIECE(HLOCNAM,U,1)))
+27 SET ^XTMP(PXRRXTMP,FACILITY,PNAME,CLASSNAM,0,HLOCNAM,0)=""
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+28 ;
+29 ;If there were selected providers build dummy entries for all those
+30 ;without encounters.
+31 IF $DATA(PXRRPRPL)
Begin DoDot:1
+32 NEW CLASSLST,JC,NPCLASS
+33 FOR FAC=1:1:NFAC
Begin DoDot:2
+34 SET FACILITY=$PIECE(PXRRFAC(FAC),U,1)
+35 FOR IC=1:1:NPL
Begin DoDot:3
+36 IF $PIECE(PXRRPRPL(IC),U,4)'="M"
Begin DoDot:4
+37 SET PNAME=PXRRPRPL(IC)
+38 SET PPNAME=$PIECE(PNAME,U,1)
+39 SET PNMAX=$$MAX^XLFMTH(PNMAX,$LENGTH(PPNAME))
+40 SET NEWPIEN=$PIECE(PNAME,U,2)
+41 ;Get the person class list for this provider.
+42 SET NPCLASS=$$PCLLIST^PXRRPECU(NEWPIEN,PXRRBDT,PXRREDT,.CLASSLST)
+43 FOR JC=1:1:NPCLASS
Begin DoDot:5
+44 SET CLASSNAM=CLASSLST(JC)
+45 SET VACODE=$PIECE(CLASSNAM,U,2)
+46 IF $LENGTH(VACODE)'>0
SET TEMP="Unknown"
+47 IF '$TEST
SET TEMP=$$ABBRV^PXRRPECU(VACODE)
+48 SET PCLMAX=$$MAX^XLFMTH(PCLMAX,$LENGTH(TEMP))
+49 SET ^XTMP(PXRRXTMP,FACILITY,PNAME,CLASSNAM,0,"HLOC")=0
End DoDot:5
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+50 ;
EXIT ;Save the values of HLOCMAX, PCLMAX,and PNMAX.
+1 SET ^XTMP(PXRRXTMP,"HLOCMAX")=HLOCMAX
+2 SET ^XTMP(PXRRXTMP,"PCLMAX")=PCLMAX
+3 SET ^XTMP(PXRRXTMP,"PNMAX")=PNMAX
+4 ;
+5 QUIT