| 1 | SDM2A ; OG - MAKE APPOINTMENT - overflow routine due to SACC 10K limit. ; Compiled August 28, 2007 16:08:18
|
---|
| 2 | ;;5.3;Scheduling;**446**;Aug 13 1993;Build 77
|
---|
| 3 | WL(SC) ;Wait List Hook/teh patch 263 ;SD/327 passed 'SC'
|
---|
| 4 | N DA,DIE,DR,SBEG,SCSR,SDDIV,SDINST,SDPAR,SDWLDA,SDWLDFN,SDWLSCL
|
---|
| 5 | Q:$G(SC)'>0
|
---|
| 6 | I '$D(^SC(SC)) Q
|
---|
| 7 | S SDINST=$$GET1^DIQ(44,SC_",",3,"I") ; get Inst
|
---|
| 8 | I SDINST="" S SDDIV=$$GET1^DIQ(44,SC_",",3.5,"I") S:SDDIV'="" SDINST=$$GET1^DIQ(40.8,SDDIV_",",.07,"I")
|
---|
| 9 | I SDINST="" D Q ; sd/446
|
---|
| 10 | .N DIR
|
---|
| 11 | .D MESS2^SDWL120(SC)
|
---|
| 12 | .W !,"No Institution or Division is associated with this Clinic."
|
---|
| 13 | .W !,"Unable to create a Wait List Entry. Abandoning request."
|
---|
| 14 | .W !!,"A message is being sent to the administrators mail group"
|
---|
| 15 | .W !,"alerting them to the situation."
|
---|
| 16 | .S DIR(0)="E" D ^DIR
|
---|
| 17 | .Q
|
---|
| 18 | S SDPAR=0
|
---|
| 19 | ;create 409.32 entry
|
---|
| 20 | I $D(^SDWL(409.32,"B",SC)) S SDWLSCL=$O(^SDWL(409.32,"B",SC,""))
|
---|
| 21 | E D
|
---|
| 22 | .N DA,DIC,X,DIE,DR
|
---|
| 23 | .S DIC(0)="LX",X=SC,DIC="^SDWL(409.32," D FILE^DICN
|
---|
| 24 | .S SDWLSCL=DA
|
---|
| 25 | .S DIE="^SDWL(409.32,"
|
---|
| 26 | .S DR=".02////^S X=SDINST" D ^DIE
|
---|
| 27 | .S DR="1////^S X=DT"
|
---|
| 28 | .S DR=DR_";2////^S X=DUZ"
|
---|
| 29 | .D ^DIE S SDPAR=1 ; flag indicating clinic parameter entry
|
---|
| 30 | .; CREATE 409.3 with 120 flag
|
---|
| 31 | S DIC(0)="LX",(X,SDWLDFN)=DFN,DIC="^SDWL(409.3," D FILE^DICN
|
---|
| 32 | ; File just created so lock should never fail.
|
---|
| 33 | F L +^SDWL(409.3,DA):5 Q:$T W !,"Unable to acquire a lock on the Wait List file" Q
|
---|
| 34 | ; Update EWL variables.
|
---|
| 35 | S SDWLDA=DA D EN^SDWLE11 ; get enrollee both SDWLDA and SDWLDFN have to be defined
|
---|
| 36 | S DIE="^SDWL(409.3,"
|
---|
| 37 | S DR="1////^S X=DT"
|
---|
| 38 | S DR=DR_";2////^S X=SDINST"
|
---|
| 39 | S DR=DR_";4////^S X=4"
|
---|
| 40 | S DR=DR_";8////^S X=SDWLSCL"
|
---|
| 41 | S DR=DR_";9////^S X=DUZ"
|
---|
| 42 | S DR=DR_";10////^S X=""A"""
|
---|
| 43 | S DR=DR_";11////^S X=2" ; by patient for this entry to avoid asking for provider
|
---|
| 44 | S DR=DR_";14////^S X="""_$S($P($G(^DPT(SDWLDFN,.3)),U,1)="Y":$P(^DPT(SDWLDFN,.3),U,2),1:"")_""""
|
---|
| 45 | S DR=DR_";15////^S X="_$S($P($G(^DPT(SDWLDFN,.3)),U,1)="Y":1,1:0)
|
---|
| 46 | S DR=DR_";22////^S X=SDDATE"
|
---|
| 47 | S DR=DR_";23////^S X=""O"""
|
---|
| 48 | S DR=DR_";25////^S X="" > 120 days"""
|
---|
| 49 | S DR=DR_";36////^S X=1"
|
---|
| 50 | D ^DIE
|
---|
| 51 | L -^SDWL(409.3,DA)
|
---|
| 52 | S SDWLFLG=0 D MESS^SDWL120(SDWLDFN,SDWLDA,SDPAR)
|
---|
| 53 | Q
|
---|
| 54 | ;
|
---|
| 55 | WLCL120(SC,DESDT) ; Is there clinic availability within 120 days of desired date ; sd/446
|
---|
| 56 | N SBEG,SD120
|
---|
| 57 | Q:$$GET1^DIQ(44,SC,2502,"I")="Y" 1 ; Non-count clinic. Allow > 120 days.
|
---|
| 58 | S SD120=0,SBEG=DESDT-1
|
---|
| 59 | F S SBEG=$O(^SC(SC,"ST",SBEG)) Q:SBEG="" I $$HASAVSL(^SC(SC,"ST",SBEG,1)) D Q
|
---|
| 60 | .N X,DESDTH
|
---|
| 61 | .S X=SBEG D H^%DTC S SBEG=%H
|
---|
| 62 | .S X=DESDT D H^%DTC S DESDTH=%H
|
---|
| 63 | .S SD120=(SBEG-DESDTH>120)
|
---|
| 64 | .Q
|
---|
| 65 | Q 'SD120
|
---|
| 66 | ;
|
---|
| 67 | WLCL120A(SDWLAPDT,SDDATE1,SC) ;
|
---|
| 68 | N %DT,DIR,X,X1,X2,Y
|
---|
| 69 | Q:$$GET1^DIQ(44,SC,2502,"I")="Y" 1 ; Non-count clinic. Allow > 120 days.
|
---|
| 70 | S X=SDWLAPDT,%DT="TXF" D ^%DT
|
---|
| 71 | Q:Y=-1 1
|
---|
| 72 | S X1=Y,X2=SDDATE1 D ^%DTC
|
---|
| 73 | I X'>120 Q 1
|
---|
| 74 | S DIR(0)="Y",DIR("B")="YES"
|
---|
| 75 | S DIR("A")="Add to EWL",DIR("A",1)="The date is more than 120 days beyond the Desired Date"
|
---|
| 76 | W ! D ^DIR
|
---|
| 77 | I Y=1 D WL(SC)
|
---|
| 78 | Q 0
|
---|
| 79 | ;
|
---|
| 80 | WLCLASK() ; No appointment availability warning. ; sd/446
|
---|
| 81 | N DIR
|
---|
| 82 | S DIR(0)="Y"
|
---|
| 83 | S DIR("A",1)="No appointments are available within 120 days of the Desired Date."
|
---|
| 84 | S DIR("A",2)="Do you want to place this patient on the Electronic Wait List"
|
---|
| 85 | S DIR("A",3)="or change the desired date?"
|
---|
| 86 | S DIR("A",4)=""
|
---|
| 87 | S DIR("A",5)="Enter ""Y"" to place on EWL, ""N"" to go back"
|
---|
| 88 | S DIR("A")="or ""^"" to return to the CLINIC: prompt. "
|
---|
| 89 | W ! D ^DIR
|
---|
| 90 | Q Y
|
---|
| 91 | ;
|
---|
| 92 | HASAVSL(SCSR) ; Has available slots ; sd/446
|
---|
| 93 | ; Look at CLINIC PATTERN CURRENT AVAILABILITY string (44.005/1)
|
---|
| 94 | ; If there is 1-9,j-z within the [ ... ], there is availability for that day.
|
---|
| 95 | N DIC,F,SDOK,X,Y
|
---|
| 96 | ; Allow whatever if user has a key to overbook.
|
---|
| 97 | S DIC="^VA(200,"_DUZ_",51,",X="SDOB" D ^DIC Q:Y'=-1 1
|
---|
| 98 | S X="SDMOB" D ^DIC Q:Y'=-1 1
|
---|
| 99 | Q:SCSR'["[" 0 ; No slots.
|
---|
| 100 | S SCSR=$TR($E(SCSR,$F(SCSR,"[")-1,$L(SCSR))," |"),(SDOK,F)=0
|
---|
| 101 | F S F=$F(SCSR,"[",F) Q:'F D Q:SDOK
|
---|
| 102 | .N I,SCSR0,SL
|
---|
| 103 | .S SCSR0=$E(SCSR,F,$F(SCSR,"]",F)-2)
|
---|
| 104 | .F I=1:1:$L(SCSR0) S SL=$E(SCSR0,I) I $A(SL)>105&($A(SL)<123)!SL S SDOK=1 Q ; If SL=1-9,j-z slots are available
|
---|
| 105 | .Q
|
---|
| 106 | Q SDOK
|
---|