| 1 | SDAMWI ;ALB/MJK - Unscheduled Appointments ; 5/3/05 5:50pm | 
|---|
| 2 | ;;5.3;Scheduling;**63,94,241,250,296,380,327**;Aug 13, 1993 | 
|---|
| 3 | ; | 
|---|
| 4 | EN(DFN,SC) ; -- main entry point | 
|---|
| 5 | ;    input: DFN ; SC := clinic# | 
|---|
| 6 | ; returned: success or fail := 1/0 | 
|---|
| 7 | ; | 
|---|
| 8 | N SDY,SDAPTYP,SDRE,SDRE1,SDIN,SDSL,SDD,SDALLE,SDATD,SDDECOD,SDEC,SDEMP,SDOEL,SDPL,SDRT,SDSC,SDTTM,COLLAT,SDX,SDSTART,ORDER,SDREP,SDDA,SDCL | 
|---|
| 9 | D 2^VADPT I +VADM(6) W !!?5,*7,"o  Patient has died!" D PAUSE^VALM1 S SDY=0 G ENQ | 
|---|
| 10 | S SDCL=SC,SDSL=$S($D(^SC(SC,"SL")):+^("SL"),1:""),SDD=0 | 
|---|
| 11 | K SDRE,SDIN,SDRE1 | 
|---|
| 12 | I $D(^SC(SC,"I")) S Y=^("I"),SDIN=+Y,SDRE=+$P(Y,U,2),SDRE1=$$FDATE^VALM1(SDRE) | 
|---|
| 13 | I $D(SDIN),SDIN,SDIN'>DT,SDRE,SDRE>DT W !!?5,*7,"o  Clinic is inactive from ",$$FTIME^VALM1(SDIN)," to "_SDRE1 D PAUSE^VALM1 S SDY=0 G ENQ | 
|---|
| 14 | I $D(SDIN),SDIN,SDIN'>DT,'SDRE W !!?5,*7,"o  Clinic is inactive as of ",$$FTIME^VALM1(SDIN) D PAUSE^VALM1 S SDY=0 G ENQ | 
|---|
| 15 | N SDRES S SDRES=$$CLNCK^SDUTL2(SC,1) | 
|---|
| 16 | I 'SDRES W !,?5,*7,"o  Clinic MUST be corrected before continuing." D PAUSE^VALM1 S SDY=0 G ENQ | 
|---|
| 17 | I '$$TIME(.DFN,.SC,.SDT) D WL^SDM1(SC) S SDY=0 G ENQ ;SD/327 | 
|---|
| 18 | S Y=SDT D ^SDM4 I X="^" S SDY=0 G ENQ | 
|---|
| 19 | ; ** SD*5.3*250 MT Blocking check removed | 
|---|
| 20 | ;S X="EASMTCHK" X ^%ZOSF("TEST") I $T N EASACT S EASACT="W" I $$MT^EASMTCHK(DFN,+$G(SDAPTYP),EASACT) D PAUSE^VALM1 S SDY=0 G ENQ | 
|---|
| 21 | ;-- get sub-category for appointment type | 
|---|
| 22 | S SDXSCAT=$$SUB^DGSAUTL(SDAPTYP,2,"") | 
|---|
| 23 | S SDY=$$MAKE^SDAMWI1(DFN,SDCL,SDT) | 
|---|
| 24 | K SDXSCAT | 
|---|
| 25 | ENQ D KVAR^VADPT | 
|---|
| 26 | Q SDY | 
|---|
| 27 | ; | 
|---|
| 28 | TIME(DFN,SC,SDT) ; -- get appt date/time | 
|---|
| 29 | ;    input: DFN ; SC := clinic# | 
|---|
| 30 | ;   output: SDT := date/time of wi appt | 
|---|
| 31 | ; returned: success or fail := 1/0 | 
|---|
| 32 | ; | 
|---|
| 33 | N SDY,%DT | 
|---|
| 34 | ASK R !!,"APPOINTMENT TIME: NOW// ",X:DTIME S X=$$UPPER^VALM1(X) | 
|---|
| 35 | I X["^"!('$T) S SDY=0 G TIMEQ | 
|---|
| 36 | I X?.E1"?" D  G ASK | 
|---|
| 37 | .W !,"  Enter a time or date@time for the appointment or return for 'NOW'." | 
|---|
| 38 | .W !,"The date must be today or earlier." | 
|---|
| 39 | S:X=""!(X="N")!(X="NO") X="NOW" | 
|---|
| 40 | I X'="NOW",X'["@" S X="T@"_X | 
|---|
| 41 | S %DT="TEP",%DT(0)=-(DT+1) D ^%DT G ASK:Y<0 S SDT=Y | 
|---|
| 42 | G:'$$CANCHK(.SC,.SDT) ASK | 
|---|
| 43 | I $D(^DPT(DFN,"S",SDT,0)) W !?5,*7,"o  Patient already has an appt on ",$$FTIME^VALM1(SDT) G ASK | 
|---|
| 44 | S SDY=1 | 
|---|
| 45 | TIMEQ Q SDY | 
|---|
| 46 | ; | 
|---|
| 47 | CANCHK(SC,SDT) ; -- is clinic cancelled for date | 
|---|
| 48 | ;    input: SC := clinic# ; SDT := date/time of wi appt | 
|---|
| 49 | ; returned: success or fail := 1/0 | 
|---|
| 50 | ; | 
|---|
| 51 | N SDY | 
|---|
| 52 | S SDY=1 | 
|---|
| 53 | I $D(^SC(SC,"ST",$P(SDT,"."))),'$D(^SC(SC,"ST",$P(SDT,"."),"CAN")) G CANCHKQ | 
|---|
| 54 | I $D(^SC(SC,"ST",$P(SDT,"."),"CAN")),$G(^SC(SC,"ST",$P(SDT,"."),1))["CANCEL" W !?5,*7,"o  This date's clinic has been cancelled!" S SDY=0 G CANCHKQ | 
|---|
| 55 | I $D(^SC(SC,"ST",$P(SDT,"."),"CAN")),$G(^SC(SC,"ST",$P(SDT,"."),1))'["CANCEL" W !?5,*7,"o  Warning: Part of this day's clinic has been cancelled!" G CANCHKQ | 
|---|
| 56 | S SDY=$$AVAIL(.SC,.SDT) | 
|---|
| 57 | CANCHKQ Q SDY | 
|---|
| 58 | ; | 
|---|
| 59 | AVAIL(SC,SDT) ; -- does clinic meet | 
|---|
| 60 | ;    input: SC := clinic# ; SDT := date/time of wi appt | 
|---|
| 61 | ; returned: success or fail := 1/0 | 
|---|
| 62 | ; | 
|---|
| 63 | N SDY | 
|---|
| 64 | S X=$P(SDT,".") D DOW^SDM0 | 
|---|
| 65 | I $D(^SC(SC,"T"_Y)) S Z=$O(^SC(SC,"T"_Y,DT)) I Z'="",$D(^SC(SC,"T"_Y,Z,1)),^(1)]"" S SDY=1 G AVAILQ | 
|---|
| 66 | W !?5,*7,"o  Clinic does not meet on this date!" S SDY=0 | 
|---|
| 67 | AVAILQ Q SDY | 
|---|
| 68 | ; | 
|---|
| 69 | CL(DFN) ; -- make wi appt | 
|---|
| 70 | ;    input: DFN | 
|---|
| 71 | ; returned: success or fail := 1/0 | 
|---|
| 72 | ; | 
|---|
| 73 | S DIC="^SC(",DIC(0)="AEMQ",DIC("A")="Select Clinic: ",DIC("S")="I $P(^(0),U,3)=""C"",'$G(^(""OOS""))" | 
|---|
| 74 | D ^DIC K DIC | 
|---|
| 75 | I Y<0 S SDY=0 G CLQ | 
|---|
| 76 | S SC=+Y S SDY=$$EN(.DFN,.SC) | 
|---|
| 77 | CLQ Q SDY | 
|---|
| 78 | ; | 
|---|
| 79 | PT(SC) ; | 
|---|
| 80 | ;    input:  SC := clinic# | 
|---|
| 81 | ; returned: success or fail := 1/0 | 
|---|
| 82 | ; | 
|---|
| 83 | S DIC="^DPT(",DIC(0)="AEMQ",DIC("A")="Select Patient: " | 
|---|
| 84 | D ^DIC K DIC | 
|---|
| 85 | I Y<0 S SDY=0 G PTQ | 
|---|
| 86 | S DFN=+Y S SDY=$$EN(.DFN,.SC) | 
|---|
| 87 | PTQ Q SDY | 
|---|
| 88 | ; | 
|---|