Released SD*5.3*758 SEQ #620 Extracted from mail message **KIDS**:SD*5.3*758^ **INSTALL NAME** SD*5.3*758 "BLD",11891,0) SD*5.3*758^SCHEDULING^0^3200709^y "BLD",11891,1,0) ^^13^13^3200625^ "BLD",11891,1,1,0) Patch SD*5.3*758 addresses the following issue: "BLD",11891,1,2,0) "BLD",11891,1,3,0) 1. Return to Clinic (RTC) orders are moving to "active" status "BLD",11891,1,4,0) after the appointment is moved and the clinic availability "BLD",11891,1,5,0) cancelled. "BLD",11891,1,6,0) "BLD",11891,1,7,0) 2. Appointments that were canceled by the patient show as "BLD",11891,1,8,0) "Canceled by Clinic" after the clinic availability "BLD",11891,1,9,0) is cancelled. "BLD",11891,1,10,0) "BLD",11891,1,11,0) 3. When blocking a clinic grid for a partial day, the block "BLD",11891,1,12,0) displays incorrectly (early) when it is for less than 1 hour, "BLD",11891,1,13,0) and after the scheduled availability. "BLD",11891,4,0) ^9.64PA^^ "BLD",11891,6.3) 2 "BLD",11891,"KRN",0) ^9.67PA^1.5^25 "BLD",11891,"KRN",.4,0) .4 "BLD",11891,"KRN",.401,0) .401 "BLD",11891,"KRN",.402,0) .402 "BLD",11891,"KRN",.403,0) .403 "BLD",11891,"KRN",.5,0) .5 "BLD",11891,"KRN",.84,0) .84 "BLD",11891,"KRN",1.5,0) 1.5 "BLD",11891,"KRN",1.6,0) 1.6 "BLD",11891,"KRN",1.61,0) 1.61 "BLD",11891,"KRN",1.62,0) 1.62 "BLD",11891,"KRN",3.6,0) 3.6 "BLD",11891,"KRN",3.8,0) 3.8 "BLD",11891,"KRN",9.2,0) 9.2 "BLD",11891,"KRN",9.8,0) 9.8 "BLD",11891,"KRN",9.8,"NM",0) ^9.68A^1^1 "BLD",11891,"KRN",9.8,"NM",1,0) SDC^^0^B30941608 "BLD",11891,"KRN",9.8,"NM","B","SDC",1) "BLD",11891,"KRN",19,0) 19 "BLD",11891,"KRN",19.1,0) 19.1 "BLD",11891,"KRN",101,0) 101 "BLD",11891,"KRN",409.61,0) 409.61 "BLD",11891,"KRN",771,0) 771 "BLD",11891,"KRN",779.2,0) 779.2 "BLD",11891,"KRN",870,0) 870 "BLD",11891,"KRN",8989.51,0) 8989.51 "BLD",11891,"KRN",8989.52,0) 8989.52 "BLD",11891,"KRN",8993,0) 8993 "BLD",11891,"KRN",8994,0) 8994 "BLD",11891,"KRN","B",.4,.4) "BLD",11891,"KRN","B",.401,.401) "BLD",11891,"KRN","B",.402,.402) "BLD",11891,"KRN","B",.403,.403) "BLD",11891,"KRN","B",.5,.5) "BLD",11891,"KRN","B",.84,.84) "BLD",11891,"KRN","B",1.5,1.5) "BLD",11891,"KRN","B",1.6,1.6) "BLD",11891,"KRN","B",1.61,1.61) "BLD",11891,"KRN","B",1.62,1.62) "BLD",11891,"KRN","B",3.6,3.6) "BLD",11891,"KRN","B",3.8,3.8) "BLD",11891,"KRN","B",9.2,9.2) "BLD",11891,"KRN","B",9.8,9.8) "BLD",11891,"KRN","B",19,19) "BLD",11891,"KRN","B",19.1,19.1) "BLD",11891,"KRN","B",101,101) "BLD",11891,"KRN","B",409.61,409.61) "BLD",11891,"KRN","B",771,771) "BLD",11891,"KRN","B",779.2,779.2) "BLD",11891,"KRN","B",870,870) "BLD",11891,"KRN","B",8989.51,8989.51) "BLD",11891,"KRN","B",8989.52,8989.52) "BLD",11891,"KRN","B",8993,8993) "BLD",11891,"KRN","B",8994,8994) "BLD",11891,"QDEF") ^^^^^^^^^^YES "BLD",11891,"QUES",0) ^9.62^^ "BLD",11891,"REQB",0) ^9.611^1^1 "BLD",11891,"REQB",1,0) SD*5.3*724^2 "BLD",11891,"REQB","B","SD*5.3*724",1) "MBREQ") 0 "PKG",16,-1) 1^1 "PKG",16,0) SCHEDULING^SD^APPOINTMENTS,PROFILES,LETTERS,AMIS REPORTS "PKG",16,22,0) ^9.49I^1^1 "PKG",16,22,1,0) 5.3^2930813 "PKG",16,22,1,"PAH",1,0) 758^3200709 "PKG",16,22,1,"PAH",1,1,0) ^^13^13^3200709 "PKG",16,22,1,"PAH",1,1,1,0) Patch SD*5.3*758 addresses the following issue: "PKG",16,22,1,"PAH",1,1,2,0) "PKG",16,22,1,"PAH",1,1,3,0) 1. Return to Clinic (RTC) orders are moving to "active" status "PKG",16,22,1,"PAH",1,1,4,0) after the appointment is moved and the clinic availability "PKG",16,22,1,"PAH",1,1,5,0) cancelled. "PKG",16,22,1,"PAH",1,1,6,0) "PKG",16,22,1,"PAH",1,1,7,0) 2. Appointments that were canceled by the patient show as "PKG",16,22,1,"PAH",1,1,8,0) "Canceled by Clinic" after the clinic availability "PKG",16,22,1,"PAH",1,1,9,0) is cancelled. "PKG",16,22,1,"PAH",1,1,10,0) "PKG",16,22,1,"PAH",1,1,11,0) 3. When blocking a clinic grid for a partial day, the block "PKG",16,22,1,"PAH",1,1,12,0) displays incorrectly (early) when it is for less than 1 hour, "PKG",16,22,1,"PAH",1,1,13,0) and after the scheduled availability. "QUES","XPF1",0) Y "QUES","XPF1","??") ^D REP^XPDH "QUES","XPF1","A") Shall I write over your |FLAG| File "QUES","XPF1","B") YES "QUES","XPF1","M") D XPF1^XPDIQ "QUES","XPF2",0) Y "QUES","XPF2","??") ^D DTA^XPDH "QUES","XPF2","A") Want my data |FLAG| yours "QUES","XPF2","B") YES "QUES","XPF2","M") D XPF2^XPDIQ "QUES","XPI1",0) YO "QUES","XPI1","??") ^D INHIBIT^XPDH "QUES","XPI1","A") Want KIDS to INHIBIT LOGONs during the install "QUES","XPI1","B") NO "QUES","XPI1","M") D XPI1^XPDIQ "QUES","XPM1",0) PO^VA(200,:EM "QUES","XPM1","??") ^D MG^XPDH "QUES","XPM1","A") Enter the Coordinator for Mail Group '|FLAG|' "QUES","XPM1","B") "QUES","XPM1","M") D XPM1^XPDIQ "QUES","XPO1",0) Y "QUES","XPO1","??") ^D MENU^XPDH "QUES","XPO1","A") Want KIDS to Rebuild Menu Trees Upon Completion of Install "QUES","XPO1","B") NO "QUES","XPO1","M") D XPO1^XPDIQ "QUES","XPZ1",0) Y "QUES","XPZ1","??") ^D OPT^XPDH "QUES","XPZ1","A") Want to DISABLE Scheduled Options, Menu Options, and Protocols "QUES","XPZ1","B") YES "QUES","XPZ1","M") D XPZ1^XPDIQ "QUES","XPZ2",0) Y "QUES","XPZ2","??") ^D RTN^XPDH "QUES","XPZ2","A") Want to MOVE routines to other CPUs "QUES","XPZ2","B") NO "QUES","XPZ2","M") D XPZ2^XPDIQ "RTN") 1 "RTN","SDC") 0^1^B30941608^B28152855 "RTN","SDC",1,0) SDC ;MAN/GRR,ALB/LDB - CANCEL A CLINIC'S AVAILABILITY ;JAN 15, 2016 "RTN","SDC",2,0) ;;5.3;Scheduling;**15,32,79,132,167,478,487,523,545,627,684,724,758**;Aug 13, 1993;Build 2 "RTN","SDC",3,0) N SDATA,SDCNHDL ; for evt dvr "RTN","SDC",4,0) SDC1 K SDLT,SDCP S NOAP="" D LO^DGUTL "RTN","SDC",5,0) S DIC=44,DIC(0)="MEQA",DIC("S")="I $P(^(0),""^"",3)=""C"",'$G(^(""OOS""))",DIC("A")="Select CLINIC NAME: " D ^DIC K DIC("S"),DIC("A") G:'$D(^SC(+Y,"SL")) END^SDC0 "RTN","SDC",6,0) S SC=+Y,SL=^("SL"),%DT="AEXF",%DT("A")="CANCEL '"_$P(Y,U,2)_"' FOR WHAT DATE: " D ^%DT K %DT G:Y<0 END^SDC0 ;NAKED REFERNCE - ^SC(IFN,"SL") "RTN","SDC",7,0) S (SD,CDATE)=Y,%=$P(SL,U,6),SI=$S(%="":4,%<3:4,%:%,1:4),%=$P(SL,U,3),STARTDAY=$S($L(%):%,1:8) D NOW^%DTC S SDTIME=% "RTN","SDC",8,0) K SDRE,SDIN,SDRE1 I $D(^SC(SC,"I")) S SDIN=+^("I"),SDRE=+$P(^("I"),"^",2),Y=SDRE D:Y DTS^SDUTL S SDRE1=$S(SDRE:" to "_Y,1:"") "RTN","SDC",9,0) I $S('$D(SDIN):0,SDIN'>0!(SDIN>SD):0,SDRE'>SD&(SDRE):0,1:1) W !,*7,"Clinic is inactive ",$S('SDRE:"as of ",1:"from ") S Y=SDIN D DTS^SDUTL W Y,SDRE1 G SDC1 "RTN","SDC",10,0) I '$D(^SC(SC,"ST",SD,1)) S DH="" D B S ^SC(SC,"ST",SD,1)=$P("SU^MO^TU^WE^TH^FR^SA",U,DOW+1)_" "_$E(SD,6,7)_$J("",SI+SI-6)_DH,^(0)=SD G N "RTN","SDC",11,0) I ^(1)["CANCELLED" W !,"APPOINTMENTS HAVE ALREADY BEEN CANCELLED",!,*7 S ANS="N",SDTIME="*",SDV1=$S($P(^SC(SC,0),"^",15):$P(^(0),"^",15),1:+$O(^DG(40.8,0))) K SDX G ASKL^SDC0 ;NAKED REFERENCE - ^SC(IFN,"ST",Date,1) "RTN","SDC",12,0) ;N I '$F(^SC(SC,"ST",SD,1),"[") K:^(1)?2U.E ^SC(SC,"ST",SD) W !,*7,"CLINIC DOES NOT MEET ON THAT DAY" G SDC1 ; KILLs node if not holiday "RTN","SDC",13,0) N I '$F(^SC(SC,"ST",SD,1),"[") W !,*7,"CLINIC DOES NOT MEET ON THAT DAY" G SDC1 ; SD*5.3*684 - Remove KILL on "ST" (PATTERN) node "RTN","SDC",14,0) I $O(^SC(SC,"S",SD))\1-SD W *7,!?5,"NO APPOINTMENTS SCHEDULED" S NOAP=1 G W "RTN","SDC",15,0) W !,"FIRST, I'LL LIST THE EXISTING APPOINTMENTS",! "RTN","SDC",16,0) K DUOUT,DTOUT D ^SDC1 I $D(DUOUT)!$D(DTOUT) D END^SDC0 Q "RTN","SDC",17,0) I ^SC(SC,"ST",SD,1)["X" G ^SDC2 "RTN","SDC",18,0) W S DH=0,%="" W !,"WANT TO CANCEL THE WHOLE DAY" D YN^DICN I '% W !,"REPLY YES (Y) OR NO (N)" G W "RTN","SDC",19,0) I %=1 G WP:$$COED^SDC4(SC,SD,SD+.2359,1),ALL "RTN","SDC",20,0) Q:%<1 "RTN","SDC",21,0) WP S %="" W !,"WANT TO CANCEL PART OF THE DAY" D YN^DICN I '% W !,"REPLY YES (Y) OR NO (N)" G WP "RTN","SDC",22,0) Q:(%-1) "RTN","SDC",23,0) F R !,"STARTING TIME: ",X:DTIME Q:U[X D TC^SDC2 G F:Y<0 S FR=Y,ST=% "RTN","SDC",24,0) T R !,"ENDING TIME: ",X:DTIME Q:U[X D TC^SDC2 G T:Y<0 S SDHTO=X,TO=Y I TO'>FR W !,"Ending time must be greater than starting time",*7 G T "RTN","SDC",25,0) N SDDFR S SDDFR=TO-FR ;SD*5.3*758 - Set length of block "RTN","SDC",26,0) I $$COED^SDC4(SC,FR,TO,1) K FR,SDHTO,TO,ST W ! G F "RTN","SDC",27,0) ROPT R !,"Reason for cancellation: ",I:DTIME I I?1"?".E W !,"YOU MAY ENTER A MESSAGE CONCERNING THE CANCELLATION HERE" G ROPT "RTN","SDC",28,0) N CANREM S CANREM=I "RTN","SDC",29,0) Q:I["^" I '$D(^SC(SC,"SDCAN",0)) S ^SC(SC,"SDCAN",0)="^44.05D^"_FR_"^1" G SKIP "RTN","SDC",30,0) S A=^SC(SC,"SDCAN",0),SDCNT=$P(A,"^",4),^SC(SC,"SDCAN",0)=$P(A,"^",1,2)_"^"_FR_"^"_(SDCNT+1) "RTN","SDC",31,0) SKIP S ^SC(SC,"SDCAN",FR,0)=FR_"^"_SDHTO "RTN","SDC",32,0) S NOAP=$S($O(^SC(SC,"S",(FR-.0001)))'>0:1,$O(^SC(SC,"S",(FR-.0001)))>TO:1,1:0) I 'NOAP S NOAP=$S($O(^SC(SC,"S",+$O(^SC(SC,"S",(FR-.0001))),0))="MES":1,1:0) "RTN","SDC",33,0) S ^SC(SC,"S",FR,0)=FR,^("MES")="CANCELLED UNTIL "_X_$S(I?.P:"",1:" ("_I_")") D S S I=^(1),I=I_$J("",%-$L(I)),Y="" I $G(SDDFR)<100,$L(I)<77 S I=I_" " ;SD*5.3*758 - pad 4 empty spaces needed for blocks < 60 minutes "RTN","SDC",34,0) F X=0:2:% S DH=$E(I,X+SI+SI),P=$S(X160!($L(CANREM)<3) W !,*7,"Reason must be between 3 to 160 characters long",! G ALL "RTN","SDC",41,0) D S S ^(1)=" "_$E(SD,6,7)_" **CANCELLED**",FR=SD,TO=SD+.9 ;NAKED REFERENCE - ^SC(IFN,"ST",Date,1) "RTN","SDC",42,0) C S FR=$O(^SC(SC,"S",FR)) I FR<1!(FR'0 D "RTN","SDC",46,0) .I '$D(^SC(SC,"S",FR,1,SDI,0)) I $D(^("C")) S J=FR,J2=SDI D DELETE^SDC1 K J,J2 Q ;SD*5.3*545 delete corrupt node "RTN","SDC",47,0) .I '+$G(^SC(SC,"S",FR,1,SDI,0)) S J=FR,J2=SDI D DELETE^SDC1 K J,J2 Q ;SD*5.3*545 if DFN is missing delete record "RTN","SDC",48,0) .Q:$P(^SC(SC,"S",FR,1,SDI,0),"^",9)="C" ;SD*5.3*758 - Quit processing if appointment already canceled. "RTN","SDC",49,0) .S DFN=+^SC(SC,"S",FR,1,SDI,0),SDCNHDL=$$HANDLE^SDAMEVT(1) "RTN","SDC",50,0) .D BEFORE^SDAMEVT(.SDATA,DFN,FR,SC,SDI,SDCNHDL) "RTN","SDC",51,0) .S $P(^SC(SC,"S",FR,1,SDI,0),"^",9)="C" "RTN","SDC",52,0) .S:$D(^DPT(DFN,"S",FR,0)) NODE=^(0) ;added SD/523 "RTN","SDC",53,0) .Q:$P(NODE,U,1)'=SC ;added SD/523 "RTN","SDC",54,0) .S ^DPT("ASDCN",SC,FR,DFN)="" "RTN","SDC",55,0) .S SDSC=SC,SDTTM=FR,SDPL=SDI,TDH=DH,TMPD=CANREM D CANCEL^SDCNSLT S DH=TDH ;SD/478 "RTN","SDC",56,0) .I $D(^DPT(DFN,"S",FR,0)),$P(^(0),"^",2)'["C" S $P(^(0),"^",2)="C",$P(^(0),"^",12)=DUZ,$P(^(0),"^",14)=SDTIME,DH=DH+1,TDH=DH,DIE="^DPT(DFN,"_"""S"""_",",DR="17///^S X=CANREM",DA=FR D ^DIE S DH=TDH D MORE "RTN","SDC",57,0) .D SDEC^SDCNP0(DFN,FR,SC,"C","",$G(CANREM),SDTIME,DUZ) ;alb/sat 627 "RTN","SDC",58,0) G C "RTN","SDC",59,0) ; "RTN","SDC",60,0) B S X=SD D DOW^SDM0 S DOW=Y,SS=+$O(^SC(SC,"T"_Y,X)) I $D(^(SS,1)),^(1)]"" S DH=^(1),DO=X+1,DA(1)=SC "RTN","SDC",61,0) Q "RTN","SDC",62,0) MORE I $D(^SC("ARAD",SC,FR,DFN)) S ^(DFN)="N" "RTN","SDC",63,0) S SDIV=$S($P(^SC(SC,0),"^",15)]"":$P(^(0),"^",15),1:" 1"),SDV1=$S(SDIV:SDIV,1:+$O(^DG(40.8,0))) I $D(^DPT("ASDPSD","C",SDIV,SC,FR,DFN)) K ^(DFN) "RTN","SDC",64,0) ; SD*724 - set SDPL with value from SDI "RTN","SDC",65,0) S SDH=DH,SDTTM=FR,SDSC=SC,SDPL=SDI,SDRT="D" D RT^SDUTL "RTN","SDC",66,0) S DH=SDH K SDH D CK1,EVT "RTN","SDC",67,0) K SD1,SDIV,SDPL,SDRT,SDSC,SDTTM,SDX Q "RTN","SDC",68,0) CK1 S SDX=0 F SD1=FR\1:0 S SD1=$O(^DPT(DFN,"S",SD1)) Q:'SD1!((SD1\1)'=(FR\1)) I $P(^(SD1,0),"^",2)'["C",$P(^(0),"^",2)'["N" S SDX=1 Q "RTN","SDC",69,0) Q:SDX F SD1=2,4 I $D(^SC("AAS",SD1,FR\1,DFN)) S SDX=1 Q "RTN","SDC",70,0) Q:SDX IF $D(^SCE(+$$EXAE^SDOE(DFN,FR\1,FR\1),0)) S SDX=1 "RTN","SDC",71,0) Q:SDX K ^DPT("ASDPSD","B",SDIV,FR\1,DFN) Q "RTN","SDC",72,0) ; "RTN","SDC",73,0) EVT ; -- separate tag if need to NEW vars "RTN","SDC",74,0) ; -- cancel event "RTN","SDC",75,0) N FR,I,SDTIME,DH,SC "RTN","SDC",76,0) D CANCEL^SDAMEVT(.SDATA,DFN,SDTTM,SDSC,SDPL,0,SDCNHDL) K SDATA,SDCNHDL "RTN","SDC",77,0) Q "RTN","SDC",78,0) ; "VER") 8.0^22.2 "BLD",11891,6) ^620 **END** **END**