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
|
---|