| 1 | SDWLREB ;BP/ESW - EWL matched with Canceled and Rebooked Appointment by Clinic ; 11/16/05 1:16pm
 | 
|---|
| 2 |  ;;5.3;Scheduling;**467**;Aug 13, 1993
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;SD*5.3*467 - Match canceled appointments in EWL entries 
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  Q
 | 
|---|
| 7 | REBOOK(DFN,SD,SC,RBFLG,SDTRB,SDCAN) ; rebook section
 | 
|---|
| 8 |  ;create appt TMP to check for rebooking
 | 
|---|
| 9 |  ;SD - appt date/time
 | 
|---|
| 10 |  ;SC - Hospital Location IEN
 | 
|---|
| 11 |  ;called by reference:
 | 
|---|
| 12 |  ;       RBFLG - cancellation status from Appointment Multiple
 | 
|---|
| 13 |  ;                       Only if RBFLG="CCR" - canceled by clinic, rebooked
 | 
|---|
| 14 |  ;       SDTRB - asked for scheduled Date/Time of Rebooked Appointment
 | 
|---|
| 15 |  ;       SDCAN - asked for cancellation date/time 
 | 
|---|
| 16 |  N SDARR,SCNT
 | 
|---|
| 17 |  S RBFLG=0,SDTRB="",SDCAN="NONE" ;initiate if not 'good' appointment
 | 
|---|
| 18 |  S SDARR(1)=SD_";"_SD
 | 
|---|
| 19 |  S SDARR(2)=SC
 | 
|---|
| 20 |  S SDARR(4)=DFN
 | 
|---|
| 21 |  S SDARR("FLDS")="1;2;3;24;25"
 | 
|---|
| 22 |  N SAPP S SAPP=$$SDAPI^SDAMA301(.SDARR) D
 | 
|---|
| 23 |  .N SDINST,SDFAC,SDINSTE
 | 
|---|
| 24 |  .Q:'$D(^TMP($J,"SDAMA301",DFN))
 | 
|---|
| 25 |  .N SDSTR S SDSTR=^TMP($J,"SDAMA301",DFN,SC,SD)
 | 
|---|
| 26 |  .N SDSTAT S SDSTAT=$P(SDSTR,U,3)
 | 
|---|
| 27 |  .K ^TMP($J,"SDAMA301",DFN,SC,SD)
 | 
|---|
| 28 |  .S RBFLG=$P(SDSTAT,";")
 | 
|---|
| 29 |  .S SDTRB=$P(SDSTR,U,24)
 | 
|---|
| 30 |  .S SDCAN=$P(SDSTR,U,25)
 | 
|---|
| 31 |  Q
 | 
|---|
| 32 | DISREB(DFN,SDTRB,SC) ;DISPOSITION REBOOK OR NOT
 | 
|---|
| 33 |  ; DFN - IEN of file #2 (Patient)
 | 
|---|
| 34 |  ; SDTRB - Scheduled Date/Time of Rebooked Appt
 | 
|---|
| 35 |  ; SC - Clinic IEN
 | 
|---|
| 36 |  ; Temporary ^TMP($J,"APPT" will be created with rebooked appt data
 | 
|---|
| 37 |  N SDARR,SCNT
 | 
|---|
| 38 |  S SDDIV=""
 | 
|---|
| 39 |  S SDARR(1)=SDTRB_";"_SDTRB
 | 
|---|
| 40 |  S SDARR(2)=SC
 | 
|---|
| 41 |  S SDARR(4)=DFN
 | 
|---|
| 42 |  S SDARR("FLDS")="1;2;3;4;10;13;14"
 | 
|---|
| 43 |  N SAPP S SAPP=$$SDAPI^SDAMA301(.SDARR) D
 | 
|---|
| 44 |  .N SDINST,SDFAC,SDINSTE
 | 
|---|
| 45 |  .Q:'$D(^TMP($J,"SDAMA301",DFN))
 | 
|---|
| 46 |  .K ^TMP($J,"APPT") S SCNT=1
 | 
|---|
| 47 |  .S ^TMP($J,"APPT",SCNT)=^TMP($J,"SDAMA301",DFN,SC,SDTRB)
 | 
|---|
| 48 |  .S SDINST=$$GET1^DIQ(44,SC_",",3,"I")  ; get Institution
 | 
|---|
| 49 |  .S SDINSTE=$$GET1^DIQ(44,SC_",",3,"E")
 | 
|---|
| 50 |  .S SDFAC=$S(SDINST="":"",1:$$GET1^DIQ(4,SDINST_",",99,"I"))  ; Station
 | 
|---|
| 51 |  .I SDFAC="" N SDDIV S SDDIV="" S SDDIV=$$GET1^DIQ(44,SC_",",3.5,"I") D
 | 
|---|
| 52 |  ..I SDDIV'="" S SDINST=$$GET1^DIQ(40.8,SDDIV_",",.07,"I") I SDINST'="" D
 | 
|---|
| 53 |  ...S SDFAC=$S(SDINST="":"",1:$$GET1^DIQ(4,SDINST_",",99,"I"))  ; Station
 | 
|---|
| 54 |  ..I SDDIV="" S SDFAC=$P($$SITE^VASITE(,),"^",3)
 | 
|---|
| 55 |  .S $P(^TMP($J,"APPT",SCNT),"^",15)=SDINST_";"_SDINSTE
 | 
|---|
| 56 |  .S $P(^TMP($J,"APPT",SCNT),"^",16)=SDFAC
 | 
|---|
| 57 |  .K ^TMP($J,"SDAMA301",DFN,SC,SDTRB)
 | 
|---|
| 58 |  Q
 | 
|---|
| 59 | OPENEWL(DFN,SDT,SC,SDREB,CEWL) ; SD*5.3*467 Open EWL entry if closed with appointment being canceled
 | 
|---|
| 60 |  ;SDT - appointment date/time
 | 
|---|
| 61 |  ;SC  - appointment clinic IEN
 | 
|---|
| 62 |  ;SDREB - REBOOKING FLAG: 1 - cancel & rebook
 | 
|---|
| 63 |  ;                        0 - cancel only
 | 
|---|
| 64 |  ;CEWL - counter, optionally passed by reference with initial value=0 
 | 
|---|
| 65 |  N DH,IEN,STATUS,CLINIC,WLAPPT,WLSTAT,SDNAM,SDAPPT,SSN,SCN
 | 
|---|
| 66 |  K ^TMP("SDWLPL",$J),^TMP($J,"SDWLPL")
 | 
|---|
| 67 |  I '$D(CEWL) D
 | 
|---|
| 68 |  .I $D(^TMP("SDWLREB",$J)) S CEWL=$O(^TMP("SDWLREB",$J,""),-1)
 | 
|---|
| 69 |  .E  S CEWL=0
 | 
|---|
| 70 |  S IEN="" F  S IEN=$O(^SDWL(409.3,"B",DFN,IEN)) Q:IEN<1  D
 | 
|---|
| 71 |  .S STATUS="" S STATUS=$$GET1^DIQ(409.3,IEN_",",23,"I") IF STATUS="C" D
 | 
|---|
| 72 |  ..IF $G(^SDWL(409.3,IEN,"SDAPT")) D
 | 
|---|
| 73 |  ...S CLINIC=$$GET1^DIQ(409.3,IEN_",",13.2,"I"),WLAPPT=$$GET1^DIQ(409.3,IEN_",",13,"I")
 | 
|---|
| 74 |  ...IF CLINIC=SC&(WLAPPT=SDT) S WLSTAT=$$GET1^DIQ(409.3,IEN_",",21,"I") I WLSTAT="SA" D
 | 
|---|
| 75 |  ....N Y S Y=WLAPPT D DD^%DT S SDAPPT=Y
 | 
|---|
| 76 |  ....S SCN=$$GET1^DIQ(44,SC_",",.01),SCN=$E(SCN,1,20)
 | 
|---|
| 77 |  ....S SDNAM=$$GET1^DIQ(2,DFN_",",.01,"I"),SDNAM=$E(SDNAM,1,25),SSN=$$GET1^DIQ(2,DFN_",",.09,"I")
 | 
|---|
| 78 |  ....S SDFORM=$$FORM^SDFORM(SDNAM,23,SSN,12,SCN,24,SDAPPT,20)
 | 
|---|
| 79 |  ....S CEWL=CEWL+1 S ^TMP("SDWLREB",$J,CEWL)=SDFORM
 | 
|---|
| 80 |  ....N DIE,DA,DR
 | 
|---|
| 81 |  ....S DIE="^SDWL(409.3,",DA=IEN,DR="23////^S X=""O""" D ^DIE
 | 
|---|
| 82 |  ....S DR="13.8////^S X=""CC""" D ^DIE
 | 
|---|
| 83 |  ....S DR="29////^S X=""CA""" D ^DIE
 | 
|---|
| 84 |  ....S DR="19///@" D ^DIE
 | 
|---|
| 85 |  ....S DR="20///@" D ^DIE
 | 
|---|
| 86 |  ....S DR="21///@" D ^DIE
 | 
|---|
| 87 |  ....S DR="13///@;13.1////@;13.2///@;13.3///@;13.4///@;13.5///@;13.6///@;13.8///@;13.7///@" D ^DIE
 | 
|---|
| 88 |  ....I $D(^TMP("SDWLREB",$J)) I SDREB D ASKDISP(IEN)
 | 
|---|
| 89 |  I '$D(^TMP($J,"SDWLPL")) Q  ; no closed EWL related entry
 | 
|---|
| 90 |  I SDREB D DISP
 | 
|---|
| 91 |  Q
 | 
|---|
| 92 | MESS ; SD*5.3*467 - send message with a list of opened EWL entries because of canceled appointments
 | 
|---|
| 93 |  S ^TMP("SDWLREB",$J,.01)="This message displays patients that had their EWL entry opened because of "
 | 
|---|
| 94 |  S ^TMP("SDWLREB",$J,.02)="their matching appointment being now 'CANCELED BY CLINIC'. Some of those "
 | 
|---|
| 95 |  S ^TMP("SDWLREB",$J,.03)="entries may be already closed again if new appointments were scheduled and "
 | 
|---|
| 96 |  S ^TMP("SDWLREB",$J,.04)="matched with those EWL entries. You may use 'SD WAIT LIST REOPEN ENTRIES' "
 | 
|---|
| 97 |  S ^TMP("SDWLREB",$J,.05)="to run report identifying the related EWL entries."
 | 
|---|
| 98 |  N SDFORM S SDFORM=$$FORM^SDFORM("PATIENT NAME",23,"SSN",12,"CLINIC",24,"DATE/TIME of APPT",20) D  ;added
 | 
|---|
| 99 |  .S ^TMP("SDWLREB",$J,.06)=SDFORM
 | 
|---|
| 100 |  S ^TMP("SDWLREB",$J,.07)="-----------------------------------------------------------------------"
 | 
|---|
| 101 |  S ^TMP("SDWLREB",$J,.08)=""
 | 
|---|
| 102 |  N XMSUB,XMY,XMTEXT,XMDUZ
 | 
|---|
| 103 |  S XMSUB="EWL opened entries with appointments 'CANCELED BY CLINIC'."
 | 
|---|
| 104 |  S XMY("G.SD EWL BACKGROUND UPDATE")=""
 | 
|---|
| 105 |  S XMTEXT="^TMP(""SDWLREB"",$J,"
 | 
|---|
| 106 |  S XMDUZ="POSTMASTER"
 | 
|---|
| 107 |  D ^XMD K ^TMP("SDWLREB",$J)
 | 
|---|
| 108 |  Q
 | 
|---|
| 109 | ASKDISP(IEN) ;
 | 
|---|
| 110 |  ;IEN - pointer to 409.3 to get data and display
 | 
|---|
| 111 |  N SDDIS S SDDIS=0 ; flag indicating disposition
 | 
|---|
| 112 |  W ! N X,DIR,DENTER
 | 
|---|
| 113 |  Q:$$GET1^DIQ(409.3,IEN_",",23,"I")="C"
 | 
|---|
| 114 |  S ^TMP("SDWLPL",$J,IEN)=$G(^SDWL(409.3,IEN,0)) S DENTER="",DENTER=$P($G(^TMP("SDWLPL",$J,IEN)),"^",2)
 | 
|---|
| 115 |  S (WLTYPE,TYPE,WLTN,NUM)="",TYPE=$P($G(^TMP("SDWLPL",$J,IEN)),"^",5)
 | 
|---|
| 116 |  IF DENTER'=""&(TYPE'="") D
 | 
|---|
| 117 |  .IF TYPE=1 S WLTYPE="PCMM TEAM",NUM=$P($G(^TMP("SDWLPL",$J,IEN)),"^",6),WLTNI=$$GET1^DIQ(404.51,NUM_",",.01,"I"),WLTN=$$GET1^DIQ(404.51,NUM_",",.01)
 | 
|---|
| 118 |  .IF TYPE=2 S WLTYPE="PCMM POSITION",NUM=$P($G(^TMP("SDWLPL",$J,IEN)),"^",7),WLTNI=$$GET1^DIQ(404.57,NUM_",",.01,"I"),WLTN=$$GET1^DIQ(404.57,NUM_",",.01)
 | 
|---|
| 119 |  .IF TYPE=3 S WLTYPE="SERV/SPECIALTY",NUM=$P($G(^TMP("SDWLPL",$J,IEN)),"^",8),WLTNI=$$GET1^DIQ(409.31,NUM_",",.01,"I"),WLTN=$$GET1^DIQ(409.31,NUM_",",.01)
 | 
|---|
| 120 |  .IF TYPE=4 S WLTYPE="CLINIC",NUM=$P($G(^TMP("SDWLPL",$J,IEN)),"^",9),WLTNI=$$GET1^DIQ(409.32,NUM_",",.01,"I"),WLTN=$$GET1^DIQ(409.32,NUM_",",.01)
 | 
|---|
| 121 |  E  Q
 | 
|---|
| 122 |  D SAVE(TYPE,WLTNI,IEN)
 | 
|---|
| 123 |  Q
 | 
|---|
| 124 | SAVE(TYPE,WLTNI,IEN) ;
 | 
|---|
| 125 |  ;TYPE - EWL type
 | 
|---|
| 126 |  ;WLTNI - TYPE related name the EWL entry is waiting for
 | 
|---|
| 127 |  ;IEN - pointer to 409.3 
 | 
|---|
| 128 |  S REQBY=$P($G(^TMP("SDWLPL",$J,IEN)),"^",12)
 | 
|---|
| 129 |  S INST=$P($G(^TMP("SDWLPL",$J,IEN)),"^",3)
 | 
|---|
| 130 |  N DESIRED S DESIRED=$P($G(^TMP("SDWLPL",$J,IEN)),"^",16)
 | 
|---|
| 131 |  N NAME,SSN S NAME=$$GET1^DIQ(2,DFN_",",.01),SSN=$$GET1^DIQ(2,DFN_",",.09)
 | 
|---|
| 132 |  N SDBY S SDBY=$$GET1^DIQ(409.3,IEN_",",11),SDBY=$E(SDBY,1,3)
 | 
|---|
| 133 |  S NN=$O(^TMP($J,"SDWLPL",""),-1)+1
 | 
|---|
| 134 |  S ^TMP($J,"SDWLPL",NN)=IEN_U_WLTYPE_U_U_WLTN_U_INST_U_DENTER_U_SDBY_U_DESIRED
 | 
|---|
| 135 |  ;
 | 
|---|
| 136 |  N SPIEC S SPIEC=$S(TYPE=4:9,TYPE=3:10,TYPE=2:11,TYPE=1:12)
 | 
|---|
| 137 |  S $P(^TMP($J,"SDWLPL",NN),U,SPIEC)=WLTNI
 | 
|---|
| 138 |  K ^TMP("SDWLPL",$J,IEN)
 | 
|---|
| 139 |  Q
 | 
|---|
| 140 | DISP ;
 | 
|---|
| 141 |  W !,"EWL Entry has just been opened because of its matching appointment",!,"being canceled.",!!
 | 
|---|
| 142 |  N DIR S DIR("B")="YES" ; default to match and close rebooked appointments
 | 
|---|
| 143 |  S DIR("A")="Do you wish to close this EWL entry with Rebooked Appointment(Yes/No)",DIR(0)="Y"
 | 
|---|
| 144 |  W "Closing this entry will disposition it: SA - REMOVED/SCHEDULED-ASSIGNED",!,"with Rebooked Appointment.",!!
 | 
|---|
| 145 |  S DIR("?")="Y(ES) will disposition this EWL entry as 'SA' with just rebooked appointment."
 | 
|---|
| 146 |  D LIST ; disable displaying EWL entry per SRS.
 | 
|---|
| 147 |  W ! D ^DIR
 | 
|---|
| 148 |  N SDDIS S SDDIS=0 I Y S SDDIS=1
 | 
|---|
| 149 |  E  Q
 | 
|---|
| 150 |  N SDWLDISP,SDWLDA,SDWLDFN,NUM
 | 
|---|
| 151 |  I SDDIS S SDWLDISP="SA",NUM="" F  S NUM=$O(^TMP($J,"SDWLPL",NUM)) Q:NUM=""  S REC=^TMP($J,"SDWLPL",NUM) D
 | 
|---|
| 152 |  .S SDWLDA=+REC N SDP,SDR D
 | 
|---|
| 153 |  .S DIE="^SDWL(409.3,",DA=SDWLDA,DR="21////^S X=SDWLDISP" D ^DIE
 | 
|---|
| 154 |  .S DR="19////^S X=DT" D ^DIE
 | 
|---|
| 155 |  .S DR="20////^S X=DUZ" D ^DIE
 | 
|---|
| 156 |  .S DR="23////^S X=""C""" D ^DIE
 | 
|---|
| 157 |  .;I SDWLDISP="SA" update with appointment data
 | 
|---|
| 158 |  .;get appointment data to file (for a particular appt #)
 | 
|---|
| 159 |  .I SDWLDISP="SA" N SDA D DATP^SDWLEVAL(1,.SDA) D
 | 
|---|
| 160 |  ..I $D(SDA) S DIE="^SDWL(409.3,",DA=SDWLDA D
 | 
|---|
| 161 |  ...S DR="13////"_SDA(1)_";13.1////"_DT_";13.2////"_SDA(2)_";13.3////"_SDA(15)_";13.4////"_SDA(13)_";13.5////"_SDA(14)_";13.6////"_SDA(16)_";13.8////"_SDA(3)_";13.7////"_DUZ
 | 
|---|
| 162 |  ...D ^DIE
 | 
|---|
| 163 |  .N SDWLSCL,SDWLSS,SDC
 | 
|---|
| 164 |  .S SDC=1
 | 
|---|
| 165 |  .S SDWLSCL=$P($G(^TMP($J,"SDWLPL",SDC)),U,9)
 | 
|---|
| 166 |  .S SDWLSS=$P($G(^TMP($J,"SDWLPL",SDC)),U,10)
 | 
|---|
| 167 |  .I SDWLSCL K:$D(^SDWL(409.3,"SC",SDWLSCL,SDWLDA)) ^SDWL(409.3,"SC",SDWLSCL,SDWLDA)
 | 
|---|
| 168 |  .S SDWLDFN=$P($G(^TMP($J,"APPT",1)),U,4)
 | 
|---|
| 169 |  .I SDWLSS,SDWLDFN K:$D(^SDWL(409.3,"SS",SDWLDFN,SDWLSS,SDWLDA)) ^SDWL(409.3,"SS",SDWLDFN,SDWLSS,SDWLDA)
 | 
|---|
| 170 |  Q
 | 
|---|
| 171 | LIST ;LIST
 | 
|---|
| 172 |  ;may be called if EWL entry display would be needed
 | 
|---|
| 173 |  S (REC,NUM)="" N SDPN
 | 
|---|
| 174 |  F  S NUM=$O(^TMP($J,"SDWLPL",NUM)) Q:NUM=""  S REC=^TMP($J,"SDWLPL",NUM) D
 | 
|---|
| 175 |  .S IEN=+REC N SDP,SDR D
 | 
|---|
| 176 |  ..S SDPN=$$GET1^DIQ(409.3,IEN_",",.01) W !,"Patient: ",SDPN
 | 
|---|
| 177 |  ..W !,"  EW List Type   P  Waiting for Institution  Orig Date   By  Des. Date Reopen"
 | 
|---|
| 178 |  ..W !,"--------------------------------------------------------------------------"
 | 
|---|
| 179 |  ..S SDP=$E($$GET1^DIQ(409.3,IEN_",",10)) ;priority
 | 
|---|
| 180 |  ..S SDR=$$GET1^DIQ(409.3,IEN_",",29,"I") ;reopen reason
 | 
|---|
| 181 |  .N SDINS,SDIN S SDINS=$P(REC,"^",5) S SDIN=$$GET1^DIQ(4,SDINS_",",.01,"I")
 | 
|---|
| 182 |  .W !,NUM_". ",$E($P(REC,"^",2),1,12),?17,SDP,?21,$E($P(REC,U,4),1,13),?35,SDIN,?45,$$FMTE^XLFDT($P(REC,"^",6),8),?57,$P(REC,"^",7),?61,$$FMTE^XLFDT($P(REC,"^",8),8),?76,SDR
 | 
|---|
| 183 |  .N SDUP,SDLO
 | 
|---|
| 184 |  .S SDUP="ABCDEFGHIJKLMNOPRSTUWQXYzv",SDLO="abcdefghijklmnoprstuwqxyzv"
 | 
|---|
| 185 |  .N SMT S SMT=$$GET1^DIQ(409.3,IEN_",",25) I SMT'="" S SMT=$TR(SMT,SDUP,SDLO) W !?2,"Comment: ",SMT
 | 
|---|
| 186 |  .N SMO S SMO=$$GET1^DIQ(409.3,IEN_",",30) I SMO'="" S SMO=$TR(SMO,SDUP,SDLO) W !?2,"Reopen: ",SMO
 | 
|---|
| 187 |  K ANS1,NN,INST,SCODE,CLINIC,DENTER,REQBY,DESIRD,SCPRI
 | 
|---|
| 188 |  K CLINIC,WLTYPE,TYPE,WLTN,NUM,REC
 | 
|---|
| 189 |  Q
 | 
|---|