SDECRPT1 ;ALB/JSM - SCHEDULING ENHANCEMENTS CLINIC REPORTS ;MAR 15, 2017
;;5.3;Scheduling;**658**;Aug 13, 1993;Build 23
;
N %ZIS,CLLST,DIC,DTOUT,POP,X,Y,ZTRTN
;Get the clinics
RD S DIC="^SC(",DIC(0)="AEMQZ",DIC("S")="I $P(^(0),""^"",3)=""C"",'$G(^(""OOS""))",DIC("A")="Select CLINIC: " D ^DIC K DIC("S"),DIC("A") I X="",$D(CLLST) G GETDEV
I $S(X["^":1,'$D(DTOUT):0,$D(DTOUT)&DTOUT:1,1:0) G END
I $D(CLLST(+Y)) W !,*7,"This clinic has already been selected" G RD
S CLLST(+Y)=$P(Y,U,2) G RD
;
GETDEV ;get device to print to
S %ZIS="Q" D ^%ZIS G:POP END
I $D(IO("Q")) S ZTRTN="GETDATA^SDECRPT1" D ^%ZTLOAD,HOME^%ZIS G END
;
GETDATA ;
;
N CNT,LST,SDT,SDRIEN,SDREQ,SDCL,SDCLN,SDPT,FIELDS,PTDATA,PTERR,CLHEAD
N COPEN,SDYN,SDCANCEL
S (CNT,COPEN,SDCANCEL)=0
S SDCANCEL=$O(^DIC(19,"B","SDCANCEL",SDCANCEL))
;setup ^TMP
K ^TMP("SDECRPT1",$J)
;Loop through SDEC APPT REQUEST for 'Open' requests
S (SDT,SDRIEN)="" F S SDT=$O(^SDEC(409.85,"E","O",SDT)) Q:SDT="" D
.F S SDRIEN=$O(^SDEC(409.85,"E","O",SDT,SDRIEN)) Q:SDRIEN="" D
..S SDREQ=^SDEC(409.85,SDRIEN,0),SDCL=$P(SDREQ,U,9),COPEN=0
..I SDCL'="",$D(CLLST(SDCL)) D CKAUDIT ;chk if clinic was selected & reopened using SDCANCEL
..I COPEN D
...S SDPT=$P(SDREQ,U,1) ;get patient IEN
...K PTDATA,PTERR S FIELDS=".01;.09;.131"
...D GETS^DIQ(2,SDPT,FIELDS,"IE","PTDATA","PTERR")
...S CNT=CNT+1 S ^TMP("SDECRPT1",$J,CLLST(SDCL),CNT)=PTDATA(2,SDPT_",",.01,"E")_"^"_PTDATA(2,SDPT_",",.09,"E")_"^"_PTDATA(2,SDPT_",",.131,"E")_"^"_$$FMTE^XLFDT($P(SDREQ,U,16))
D CLLIST(.LST,.CLLST) ;create list of clinics for Report Heading
U IO
W !,"VS GUI Requests Re-Opened by Cancel Availability (SDCANCEL) Option"
W !," for clinics: "_LST
W !
W !
W !,?2,"PATIENT",?34,"SSN",?45,"TELEPHONE",?66,"CID/PREF DATE",!
;print out the data
S (CLHEAD,SDCLN)="" F S SDCLN=$O(^TMP("SDECRPT1",$J,SDCLN)) Q:SDCLN="" D
.I CLHEAD'=SDCLN S CLHEAD=SDCLN W !,SDCLN
.S CNT=0 F S CNT=$O(^TMP("SDECRPT1",$J,SDCLN,CNT)) Q:CNT="" D
..W !,?2,$P(^(CNT),U,1),?34,$P(^(CNT),U,2),?45,$P(^(CNT),U,3),?66,$P(^(CNT),U,4)
G END
;
CLLIST(RET,ARRAY) ;
S (RET,X)="" F S X=$O(ARRAY(X)) Q:X="" D
.S RET=RET_ARRAY(X)_", "
S RET=$E(RET,1,*-2)
Q
;
CKAUDIT ;
N AIEN
S (AIEN,COPEN)=0
F S AIEN=$O(^DIA(409.85,"B",SDRIEN,AIEN)) Q:AIEN="" D Q:COPEN
.S:$P($G(^DIA(409.85,AIEN,4.1)),U,1)=SDCANCEL COPEN=1
Q
;
END ; Exit
K ^TMP("SDECRPT1",$J)
K SDT,SDRIEN,SDREQ,SDCL,SDCLN,CLLST,SDPT,FIELDS,PTDATA,PTERR
D KILL^%ZTLOAD
D ^%ZISC
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSDECRPT1 2540 printed Nov 22, 2024@18:02:35 Page 2
SDECRPT1 ;ALB/JSM - SCHEDULING ENHANCEMENTS CLINIC REPORTS ;MAR 15, 2017
+1 ;;5.3;Scheduling;**658**;Aug 13, 1993;Build 23
+2 ;
+3 NEW %ZIS,CLLST,DIC,DTOUT,POP,X,Y,ZTRTN
+4 ;Get the clinics
RD SET DIC="^SC("
SET DIC(0)="AEMQZ"
SET DIC("S")="I $P(^(0),""^"",3)=""C"",'$G(^(""OOS""))"
SET DIC("A")="Select CLINIC: "
DO ^DIC
KILL DIC("S"),DIC("A")
IF X=""
IF $DATA(CLLST)
GOTO GETDEV
+1 IF $SELECT(X["^":1,'$DATA(DTOUT):0,$DATA(DTOUT)&DTOUT:1,1:0)
GOTO END
+2 IF $DATA(CLLST(+Y))
WRITE !,*7,"This clinic has already been selected"
GOTO RD
+3 SET CLLST(+Y)=$PIECE(Y,U,2)
GOTO RD
+4 ;
GETDEV ;get device to print to
+1 SET %ZIS="Q"
DO ^%ZIS
if POP
GOTO END
+2 IF $DATA(IO("Q"))
SET ZTRTN="GETDATA^SDECRPT1"
DO ^%ZTLOAD
DO HOME^%ZIS
GOTO END
+3 ;
GETDATA ;
+1 ;
+2 NEW CNT,LST,SDT,SDRIEN,SDREQ,SDCL,SDCLN,SDPT,FIELDS,PTDATA,PTERR,CLHEAD
+3 NEW COPEN,SDYN,SDCANCEL
+4 SET (CNT,COPEN,SDCANCEL)=0
+5 SET SDCANCEL=$ORDER(^DIC(19,"B","SDCANCEL",SDCANCEL))
+6 ;setup ^TMP
+7 KILL ^TMP("SDECRPT1",$JOB)
+8 ;Loop through SDEC APPT REQUEST for 'Open' requests
+9 SET (SDT,SDRIEN)=""
FOR
SET SDT=$ORDER(^SDEC(409.85,"E","O",SDT))
if SDT=""
QUIT
Begin DoDot:1
+10 FOR
SET SDRIEN=$ORDER(^SDEC(409.85,"E","O",SDT,SDRIEN))
if SDRIEN=""
QUIT
Begin DoDot:2
+11 SET SDREQ=^SDEC(409.85,SDRIEN,0)
SET SDCL=$PIECE(SDREQ,U,9)
SET COPEN=0
+12 ;chk if clinic was selected & reopened using SDCANCEL
IF SDCL'=""
IF $DATA(CLLST(SDCL))
DO CKAUDIT
+13 IF COPEN
Begin DoDot:3
+14 ;get patient IEN
SET SDPT=$PIECE(SDREQ,U,1)
+15 KILL PTDATA,PTERR
SET FIELDS=".01;.09;.131"
+16 DO GETS^DIQ(2,SDPT,FIELDS,"IE","PTDATA","PTERR")
+17 SET CNT=CNT+1
SET ^TMP("SDECRPT1",$JOB,CLLST(SDCL),CNT)=PTDATA(2,SDPT_",",.01,"E")_"^"_PTDATA(2,SDPT_",",.09,"E")_"^"_PTDATA(2,SDPT_",",.131,"E")_"^"_$$FMTE^XLFDT($PIECE(SDREQ,U,16))
End DoDot:3
End DoDot:2
End DoDot:1
+18 ;create list of clinics for Report Heading
DO CLLIST(.LST,.CLLST)
+19 USE IO
+20 WRITE !,"VS GUI Requests Re-Opened by Cancel Availability (SDCANCEL) Option"
+21 WRITE !," for clinics: "_LST
+22 WRITE !
+23 WRITE !
+24 WRITE !,?2,"PATIENT",?34,"SSN",?45,"TELEPHONE",?66,"CID/PREF DATE",!
+25 ;print out the data
+26 SET (CLHEAD,SDCLN)=""
FOR
SET SDCLN=$ORDER(^TMP("SDECRPT1",$JOB,SDCLN))
if SDCLN=""
QUIT
Begin DoDot:1
+27 IF CLHEAD'=SDCLN
SET CLHEAD=SDCLN
WRITE !,SDCLN
+28 SET CNT=0
FOR
SET CNT=$ORDER(^TMP("SDECRPT1",$JOB,SDCLN,CNT))
if CNT=""
QUIT
Begin DoDot:2
+29 WRITE !,?2,$PIECE(^(CNT),U,1),?34,$PIECE(^(CNT),U,2),?45,$PIECE(^(CNT),U,3),?66,$PIECE(^(CNT),U,4)
End DoDot:2
End DoDot:1
+30 GOTO END
+31 ;
CLLIST(RET,ARRAY) ;
+1 SET (RET,X)=""
FOR
SET X=$ORDER(ARRAY(X))
if X=""
QUIT
Begin DoDot:1
+2 SET RET=RET_ARRAY(X)_", "
End DoDot:1
+3 SET RET=$EXTRACT(RET,1,*-2)
+4 QUIT
+5 ;
CKAUDIT ;
+1 NEW AIEN
+2 SET (AIEN,COPEN)=0
+3 FOR
SET AIEN=$ORDER(^DIA(409.85,"B",SDRIEN,AIEN))
if AIEN=""
QUIT
Begin DoDot:1
+4 if $PIECE($GET(^DIA(409.85,AIEN,4.1)),U,1)=SDCANCEL
SET COPEN=1
End DoDot:1
if COPEN
QUIT
+5 QUIT
+6 ;
END ; Exit
+1 KILL ^TMP("SDECRPT1",$JOB)
+2 KILL SDT,SDRIEN,SDREQ,SDCL,SDCLN,CLLST,SDPT,FIELDS,PTDATA,PTERR
+3 DO KILL^%ZTLOAD
+4 DO ^%ZISC
+5 QUIT