Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: SDRRISRL

SDRRISRL.m

Go to the documentation of this file.
  1. SDRRISRL ;10N20/MAH;Recall Reminder Open Slots Report;01/18/2008
  1. ;;5.3;Scheduling;**536**;Aug 13, 1993;Build 53
  1. ; Option: SDRR RECALL LIST
  1. EN ;
  1. N SDRRST,SDRRND,SDRRSTX,SDRRNDX,SDRRBRK,SDRRABORT,DIRUT,I,ZTSAVE,XMDUZ,XMSUB,ZTQUEUED,ZTSK
  1. N SDRRDIV,ZTDESC
  1. S SDRRABORT=0
  1. W !!,"Select a time period and a set of clinics, and I'll tell you all the"
  1. W !,"patients who are on the Recall List for that time period at those clinics."
  1. W !,"For each month, I'll also tell you how many slots are available in each clinic.",!
  1. W !,"First select the Recall Date range."
  1. S SDRRST=$E(DT,1,5)_"01" ; 1st of this month
  1. I $E(DT,4,5)>27 S SDRRST=$E($$FMADD^XLFDT(SDRRST,31),1,5)_"01" ; 1st of next month
  1. S SDRRND=$E($$SCH^XLFDT("3M",SDRRST),1,7) ; 3 months later
  1. D DRANGE^SDRRUTL(.SDRRST,.SDRRND,.SDRRSTX,.SDRRNDX,.SDRRABORT,SDRRST,$$FMADD^XLFDT(DT,366),1) Q:SDRRABORT
  1. K ^TMP("SDRR",$J)
  1. D ASKDIV^SDRRPXC(.SDRRDIV) Q:'SDRRDIV
  1. D ASKCLIN^SDRRPXC(.SDRRDIV,SDRRST,SDRRND) Q:'$D(^TMP("SDRR",$J))
  1. W !
  1. N DIR,X,Y
  1. S DIR(0)="Y"
  1. S DIR("A")="Page break on clinic"
  1. S DIR("B")="Yes"
  1. D ^DIR Q:$D(DIRUT)
  1. S SDRRBRK=Y ; Page break on Clinic
  1. S XMSUB="Future Recall Slots, "_$S(SDRRST=SDRRND:SDRRSTX,1:SDRRSTX_"-"_SDRRNDX)
  1. F I="SDRRDIV","SDRRDIV(","SDRRST","SDRRSTX","SDRRND","SDRRNDX","SDRRBRK","^TMP(""SDRR"",$J," S ZTSAVE(I)=""
  1. D EN^XUTMDEVQ("CONTROL^SDRRISRL",XMSUB,.ZTSAVE,,1)
  1. I '$D(ZTQUEUED),$D(ZTSK) W !,"Request queued. (Task: ",ZTSK,")"
  1. Q
  1. CONTROL ;
  1. N SDRRIA,SDRRCLIST
  1. S SDRRIA=$E($G(IOST),1,2)="C-"
  1. D CLINLIST^SDRRISB(.SDRRCLIST)
  1. D GATHER
  1. D PRINT
  1. K ^TMP("SDRR",$J)
  1. Q
  1. GATHER ; Gather Patient from Recall List
  1. N SDRRDT,SDRRIEN,SDRRDFN,SDRRREC,SDRRDFN0,SDRRCLIN,SDRRCLERK,SDRRSDT,SDRRPHONE,DFN,VA,VADM,VAPA,Z
  1. S SDRRND=SDRRND+.9999
  1. S SDRRDT=SDRRST-.1
  1. S SDRRIEN="" ; "D" xref is on the RECALL DATE field
  1. F S SDRRDT=$O(^SD(403.5,"D",SDRRDT)) Q:SDRRDT>SDRRND!'SDRRDT D
  1. . F S SDRRIEN=$O(^SD(403.5,"D",SDRRDT,SDRRIEN)) Q:'SDRRIEN D
  1. . . S SDRRREC=$G(^SD(403.5,SDRRIEN,0))
  1. . . S SDRRCLIN=+$P(SDRRREC,U,2)
  1. . . Q:'$D(SDRRCLIST(SDRRCLIN)) ; Must be clinic we want
  1. . . S SDRRDFN=+SDRRREC
  1. . . Q:$$TESTPAT^VADPT(SDRRDFN) ; Test patient
  1. . . S SDRRSDT=$P(SDRRREC,U,10) ; Reminder sent date
  1. . . S SDRRCLERK=+$P(SDRRREC,U,11) ; Clerk who entered the recall
  1. . . S Z=$P(SDRRREC,U,13) I Z'="" S Z="*"
  1. . . S DFN=SDRRDFN
  1. . . D ADD^VADPT,DEM^VADPT
  1. . . S ^TMP("SDRR",$J,"PRT",SDRRCLIST(SDRRCLIN)_U_SDRRCLIN,SDRRDT,$P(VADM(1),U)_U_SDRRDFN)=$P(VA("BID"),U)_U_$P(VAPA(8),U)_U_SDRRCLERK_U_SDRRSDT_U_Z
  1. D KVAR^VADPT
  1. Q
  1. PRINT ;
  1. N SDRRTODAY,SDRRCLIN,SDRRCLSAV,SDRRDT,SDRRDTSAV,SDRRREC,SDRRPAGE,SDRRABORT,SDRRDR,SDRRRP
  1. N SDRRCLERK,SDRRPAT,SDRRSSN,SDRRCNT,SDRRDTX,SDRRPHONE,SDRRSDT,SDRRMDT,SDRRMDTX
  1. N SDRRPROV
  1. S SDRRMDT=$$FMADD^XLFDT(DT,1) ; earliest date to look for slot availability
  1. S SDRRMDTX=$$FMTE^XLFDT(SDRRMDT,"2Z")
  1. S (SDRRABORT,SDRRPAGE,SDRRCNT)=0
  1. I SDRRIA W @IOF
  1. S SDRRTODAY=$$FMTE^XLFDT(DT)
  1. S SDRRDR=$$CJ^XLFSTR(ZTDESC,IOM-1)
  1. S $E(SDRRDR,1,$L(SDRRTODAY))=SDRRTODAY
  1. S SDRRDR=$E(SDRRDR,1,IOM-8)_"Page"
  1. D HEADER
  1. I '$D(^TMP("SDRR",$J,"PRT")) W !,"No Recalls found for this date range." Q
  1. S (SDRRCLIN,SDRRDT,SDRRPAT)=""
  1. S SDRRCLSAV=SDRRCLIN
  1. F S SDRRCLIN=$O(^TMP("SDRR",$J,"PRT",SDRRCLIN)) Q:SDRRCLIN="" D Q:SDRRABORT
  1. . I SDRRCLSAV'="",SDRRBRK!($Y+5+SDRRIA>IOSL) D Q:SDRRABORT
  1. . . I SDRRIA D PAGE^XMXUTIL(.SDRRABORT) Q:SDRRABORT
  1. . . W @IOF D HEADER
  1. . S SDRRCLSAV=SDRRCLIN
  1. . S SDRRPROV=$$PRDEF^SDCO31($P(SDRRCLIN,U,2))
  1. . I SDRRPROV="" S SDRRPROV="(No Default Provider)"
  1. . W !!,$$CJ^XLFSTR(" "_$P(SDRRCLIN,U)_" "_SDRRPROV_" ",79,"-")
  1. . S SDRRDTSAV=SDRRDT
  1. . F S SDRRDT=$O(^TMP("SDRR",$J,"PRT",SDRRCLIN,SDRRDT)) Q:'SDRRDT D Q:SDRRABORT
  1. . . S SDRRDTX=$$FMTE^XLFDT(SDRRDT,"2Z")
  1. . . I SDRRDTSAV'=$E(SDRRDT,1,5) D Q:SDRRABORT
  1. . . . I SDRRDTSAV D SUBTOT
  1. . . . S SDRRCNT=0
  1. . . . S SDRRDTSAV=$E(SDRRDT,1,5)
  1. . . . I $Y+2+SDRRIA>IOSL D Q:SDRRABORT
  1. . . . . I SDRRIA D PAGE^XMXUTIL(.SDRRABORT) Q:SDRRABORT
  1. . . . . W @IOF D HEADER
  1. . . . W !
  1. . . F S SDRRPAT=$O(^TMP("SDRR",$J,"PRT",SDRRCLIN,SDRRDT,SDRRPAT)) Q:SDRRPAT="" S SDRRREC=^(SDRRPAT) D Q:SDRRABORT
  1. . . . S SDRRCNT=SDRRCNT+1
  1. . . . S SDRRSSN=$E(SDRRREC,1,4)
  1. . . . S SDRRPHONE=$P(SDRRREC,U,2)
  1. . . . S SDRRCLERK=$P(SDRRREC,U,3) S SDRRCLERK=$$NAME^XUSER(SDRRCLERK,"F")
  1. . . . S SDRRSDT=$P(SDRRREC,U,4)
  1. . . . S SDRRRP=$P(SDRRREC,U,5)
  1. . . . I $Y+2+SDRRIA>IOSL D Q:SDRRABORT
  1. . . . . I SDRRIA D PAGE^XMXUTIL(.SDRRABORT) Q:SDRRABORT
  1. . . . . W @IOF D HEADER
  1. . . . W !,SDRRDTX,?10,SDRRRP_$$FMTE^XLFDT(SDRRSDT,"2Z"),?20,$E($P(SDRRPAT,U),1,17),?38,SDRRSSN,?43,SDRRPHONE,?64,$E(SDRRCLERK,1,15)
  1. . Q:SDRRABORT
  1. . D SUBTOT
  1. Q:SDRRABORT
  1. I SDRRIA D WAIT^XMXUTIL
  1. Q
  1. S SDRRPAGE=SDRRPAGE+1
  1. W SDRRDR,$J(SDRRPAGE,3)
  1. W !!,?10,"Reminder",?64,"Recall"
  1. W !,"Recall",?10,"Sent",?20,"Patient",?38,"SSN",?43,"Home Phone",?64,"Entered by"
  1. Q
  1. SUBTOT ;
  1. I $Y+3+SDRRIA>IOSL D Q:SDRRABORT
  1. . I SDRRIA D PAGE^XMXUTIL(.SDRRABORT) Q:SDRRABORT
  1. . W @IOF D HEADER
  1. W !!,$$FMTE^XLFDT(SDRRDTSAV_"00",1)," Patient Recalls: ",SDRRCNT,", Available Slots: ",$$OPENSLOT^SDRRISRU($P(SDRRCLIN,U,2),$S(SDRRDTSAV=$E(SDRRMDT,1,5):SDRRMDT,1:SDRRDTSAV_"01"))
  1. I SDRRDTSAV=$E(SDRRMDT,1,5) W " (",SDRRMDTX," through EOM)"
  1. Q