1 | SDWLQSC ;IOFO BAY PINES/TEH,DMR - WAITING LIST-SC PRIORITY BACKGROUND ;09/02/2004 2:10 PM [4/21/05 8:04pm]
|
---|
2 | ;;5.3;scheduling;**327,394,467,446**;AUG 13, 1993;Build 77
|
---|
3 | ;
|
---|
4 | ;SD*5.3*327 EWL Updates Phase II - Addition of EWL notification messages.
|
---|
5 | ;SD*5.3*394 New Routine for background update of SDWL(409.3) SC priorities.
|
---|
6 | ;SD*5.3*467 Match canceled appts in 409.3
|
---|
7 | ;This routine will run as a background job to determine changes in SC disabilities and update
|
---|
8 | ;the priority of the wait list visit. A mailman message will then be sent to the EWL mail group.
|
---|
9 | ;Vars: SDWLDFN=EWL IEN
|
---|
10 | ; SDWLSC1=EWL RECORDED SC %
|
---|
11 | ; SDWLSC2=PATIENT FILE (2) CURRENT SC %
|
---|
12 | ;DBIAs: 1476 reference to PRIMARY ELIG. ^DPT(IEN,.372)
|
---|
13 | ; 427 reference to ^DIC(8)
|
---|
14 | Q
|
---|
15 | EN ;Use SDWL(409.3) to determine SC changes and priority.
|
---|
16 | S SDWLDFN=0 F S SDWLDFN=$O(^SDWL(409.3,"B",SDWLDFN)) Q:SDWLDFN<1 D
|
---|
17 | .S SDWLDA=0,SDWLME=0 F S SDWLDA=$O(^SDWL(409.3,"B",SDWLDFN,SDWLDA)) Q:SDWLDA="" D
|
---|
18 | ..L ^SDWL(409.3,SDWLDA):5 I '$T Q
|
---|
19 | ..I $P($G(^SDWL(409.3,SDWLDA,0)),U,17)["C" Q ;I EWL entry has been 'CLOSED' don't process.
|
---|
20 | ..S SDWLME=SDWLME+1
|
---|
21 | ..S SDWLSC1=+$P($G(^SDWL(409.3,SDWLDA,"SC")),U,1)
|
---|
22 | ..S SDWLSC2=+$$GET1^DIQ(2,SDWLDFN_",",.302,,"SDWLX","")
|
---|
23 | ..I SDWLSC1=SDWLSC2 S SDWLSC4=1 Q
|
---|
24 | ..S SDWLSCX=0,SDWLSC3=0,SDWLSC4=0
|
---|
25 | ..I SDWLSC2<50,SDWLSC1>49 D
|
---|
26 | ...S SDWLSC3=1,SDWLSC4=1,DA=SDWLDA,DR="14////^S X=SDWLSC2",DIE=409.3 D ^DIE,SET1
|
---|
27 | ..I SDWLSC2>49,SDWLSC1>49 S SDWLSCX=SDWLSC2 D SET0 Q
|
---|
28 | ..I SDWLSC2>49,SDWLSC1<50 S SDWLSCX=SDWLSC2 D SET0,SET1 Q
|
---|
29 | ..I SDWLSC2<50,SDWLSC1<50 S SDWLSC3=1,SDWLSC4=1,SDWLSCX=SDWLSC2 D SET0,SET1 Q
|
---|
30 | ..I '$D(^SDWL(409.3,SDWLDA,"SC")) D
|
---|
31 | ...I SDWLSC2>49 S SDWLSCX=SDWLSC2 D SET0,SET1 Q ;Set "SC" node if not defined.
|
---|
32 | ...I SDWLSC2<50 S SDWLSC3=1,SDWLSC4=1,DA=SDWLDA,DR="14////^S X=SDWLSC2",DIE=409.3 D ^DIE,SET1
|
---|
33 | ..K SDWLSSN,SDWLSC2,SDWLSC1,SDWLSC3,SDWLSCP,SDWLX,SDWLI,SDWLSCX
|
---|
34 | ..L Q
|
---|
35 | I $D(SDWLSC4),SDWLSC4 D
|
---|
36 | .I $D(^TMP("SDWLQSC2",$J)) D MESS1^SDWLMSG
|
---|
37 | I $D(^TMP("SDWLQSC1",$J)) D MESS^SDWLMSG
|
---|
38 | K SDWLDA,SDWLDFN,SDWLSC1,SDWLSC2,SDWLSC3,SDWLSC4,DA,DR,DIC,DIE,X,SDWLX,SDWLNAM,SDWLSSN,SDWLSCX,SDWLWRT,SDWLME
|
---|
39 | D EN2^SDWLQSC1 D EN3
|
---|
40 | K IEN,DFN,APPT,WLAPPT,STOP,WLSTAT,STATUS,NN,SDREC,SDARRAY,SDAPPT,CL,CLINIC,SDC,SDDFN,SDNAME,SDAPPST,CIEN,SDWL
|
---|
41 | K SDCL,SDIEN,CC,SDREACT,SDINACT,CLINICS,TEAM,TEAMN,WLOPEN,PIEN,POS,POSN,SDWLPOS,EDATE,DOD,DIS,NAME,MAX,AVAL,SDFORM
|
---|
42 | Q
|
---|
43 | SET0 ;Set EWL file with current SC percentage.
|
---|
44 | S DA=SDWLDA,DR="14////^S X=SDWLSCX",DIE=409.3 D ^DIE
|
---|
45 | I SDWLSC2=50!(SDWLSC2>50) S DR="15////^S X=1" D ^DIE
|
---|
46 | K DA,DR,X,DIE
|
---|
47 | Q
|
---|
48 | SET1 ;Set temporary file for message.
|
---|
49 | F SDWLI=.01,.09 S SDWLX(SDWLI)=$$GET1^DIQ(2,SDWLDFN_",",SDWLI,,"SDWLX","")
|
---|
50 | S SDWLNAM=$E($G(SDWLX(.01)),1,27),SDWLSSN=$E($G(SDWLX(.09)),6,99)
|
---|
51 | S SDWLSCP=$$GET1^DIQ(409.3,SDWLDA_",",15,,"SDWLSCP","")
|
---|
52 | S SDWLWRT=SDWLNAM,SDWLWRT=SDWLWRT_$J(SDWLSSN,(35-$L(SDWLNAM)))
|
---|
53 | S SDWLWRT=SDWLWRT_$J(SDWLSC1,8),SDWLWRT=SDWLWRT_$J(SDWLSC2,16-$L(SDWLSC1))
|
---|
54 | I 'SDWLSC3 S SDWLWRT=SDWLWRT_$J(SDWLSCP,15)
|
---|
55 | I SDWLSC3 S SDWLWRT=SDWLWRT_$J($S(SDWLME>1:"YES",1:"NO"),15)
|
---|
56 | I SDWLSC3 S ^TMP("SDWLQSC2",$J,SDWLDFN)=SDWLWRT Q
|
---|
57 | S ^TMP("SDWLQSC1",$J,SDWLDFN)=SDWLWRT
|
---|
58 | Q
|
---|
59 | APPT(CLINIC,IEN) ;
|
---|
60 | S (SDREC,SDARRAY)=""
|
---|
61 | S SDARRAY(1)=WLAPPT_";"_WLAPPT
|
---|
62 | S SDARRAY(4)=DFN
|
---|
63 | S SDARRAY("FLDS")="3;2;4;1"
|
---|
64 | S SDREC=$$SDAPI^SDAMA301(.SDARRAY)
|
---|
65 | IF SDREC>0 D
|
---|
66 | .S (CL,SDC,SDDFN,SDNAM,SDAPPT,SDAPPST,NN)=""
|
---|
67 | .S CL=$O(^TMP($J,"SDAMA301",DFN,"")) Q:CL="" ;Current Clinic
|
---|
68 | .S SDAPPST=$P($G(^TMP($J,"SDAMA301",DFN,CL,WLAPPT)),"^",3),SDAPPST=$P(SDAPPST,";") ;Appt Status
|
---|
69 | .I CL'=CLINIC!(SDAPPST="CC") D
|
---|
70 | ..S SDDFN=$P($G(^TMP($J,"SDAMA301",DFN,CL,WLAPPT)),"^",4) IF SDDFN'="" S SDNAM=$P($G(SDDFN),";",2),SDNAM=$E(SDNAM,1,30)
|
---|
71 | ..S SDC=$P($G(^TMP($J,"SDAMA301",DFN,CL,WLAPPT)),"^",2)
|
---|
72 | ..S SDC=$$GET1^DIQ(44,CL_",",.01),SDC=$E(SDC,1,25)
|
---|
73 | ..S Y=WLAPPT D DD^%DT S SDAPPT=Y
|
---|
74 | ..IF CL'=CLINIC S SDC=SDC_"(new)" ;to distinguish another clinic"
|
---|
75 | ..S SDFORM=$$FORM^SDFORM(SDNAM,32,SDC,27,SDAPPT,21)
|
---|
76 | ..S NN=NN+1,^TMP("SDWLQSC3",$J,NN)=SDFORM
|
---|
77 | ..S DIE="^SDWL(409.3,",DA=IEN,DR="23////^S X=""O""" D ^DIE
|
---|
78 | ..S DR="13.8////^S X=""CC""" D ^DIE
|
---|
79 | ..S DR="29////^S X=""CA""" D ^DIE
|
---|
80 | ..S DR="19///@;20///@;21///@" D ^DIE
|
---|
81 | ..S DR="13///@;13.1////@;13.2///@;13.3///@;13.4///@;13.5///@;13.6///@;13.8///@;13.7///@" D ^DIE ;SD/467
|
---|
82 | Q
|
---|
83 | EN3 ;Inactive clinics
|
---|
84 | S (CIEN,IEN,APPT,DFN,WLSTAT,SDCL,SDIEN,CC,SDREACT,SDINACT,CLINICS,SDFORM)=""
|
---|
85 | F S CIEN=$O(^SDWL(409.3,"SC",CIEN)) Q:CIEN<1 S CC=0 D
|
---|
86 | .S SDINACT=$$GET1^DIQ(44,CIEN_",",2505,"I"),SDREACT=$$GET1^DIQ(44,CIEN_",",2506,"I")
|
---|
87 | .Q:SDINACT=""&(SDREACT="") D
|
---|
88 | ..S IEN="" F S IEN=$O(^SDWL(409.3,"SC",CIEN,IEN)) Q:IEN<1 S WLSTAT=$$GET1^DIQ(409.3,IEN_",",23,"I") D
|
---|
89 | ...Q:WLSTAT'="O"
|
---|
90 | ...Q:SDINACT<SDREACT&((SDREACT+.01)>DT)
|
---|
91 | ...Q:SDINACT<DT&(SDREACT>SDINACT)
|
---|
92 | ...Q:SDINACT>(DT+.01)
|
---|
93 | ...S CC=CC+1
|
---|
94 | .IF CC>0 D
|
---|
95 | ..S CLINIC=$$GET1^DIQ(44,CIEN_",",.01),CLINIC=$E(CLINIC,1,30)
|
---|
96 | ..S SDFORM=$$FORM^SDFORM(CLINIC,40,CC,20),^TMP("SDWLQSC4",$J,CIEN)=SDFORM
|
---|
97 | ..S REC="",REC=$O(^SDWL(409.32,"B",CIEN,REC),-1)
|
---|
98 | ..IF REC'="" D
|
---|
99 | ...S SDINACT=$$GET1^DIQ(44,CIEN_",",2505,"I")
|
---|
100 | ...S DIE="^SDWL(409.32,",DA=REC,DR="3////^S X=SDINACT" D ^DIE
|
---|
101 | ...S DR="4////^S X=.5" D ^DIE
|
---|
102 | IF $D(^TMP("SDWLQSC4",$J)) D MESS3^SDWLMSG
|
---|
103 | D EN4
|
---|
104 | Q
|
---|
105 | EN4 ;PCMM Team inactivated
|
---|
106 | S (IEN,TIEN,TEAM,TEAMN,DFN,CC,STATUS,WLOPEN,SDFORM)="" S CC="0"
|
---|
107 | F S TEAM=$O(^SDWL(409.3,"D",TEAM)) Q:TEAM<1 S CC=0 D
|
---|
108 | .S IEN="" F S IEN=$O(^SDWL(409.3,"D",TEAM,IEN)) Q:IEN<1 S WLOPEN=$$GET1^DIQ(409.3,IEN_",",23,"I") D
|
---|
109 | ..Q:WLOPEN="C" S TIEN="",TIEN=$O(^SCTM(404.58,"B",TEAM,TIEN),-1) IF TIEN'="" D
|
---|
110 | ...S STATUS=$$GET1^DIQ(404.58,TIEN_",",.03,"I")
|
---|
111 | ...Q:STATUS="1"
|
---|
112 | ...IF STATUS="0" S CC=CC+1
|
---|
113 | .IF CC>0 D
|
---|
114 | ..S TEAMN=$$GET1^DIQ(404.51,TEAM_",",.01) S TEAMN=$E(TEAMN,1,30)
|
---|
115 | ..S SDFORM=$$FORM^SDFORM(TEAMN,40,CC,20),^TMP("SDWLQSC5",$J,TEAM)=SDFORM
|
---|
116 | IF $D(^TMP("SDWLQSC5",$J)) D MESS4^SDWLMSG
|
---|
117 | D EN5
|
---|
118 | Q
|
---|
119 | EN5 ;PCMM Position inactivated
|
---|
120 | S (IEN,PIEN,POS,POSN,STATUS,WLOPEN,SDWLPOS,SDFORM,TEAM)=""
|
---|
121 | S SDWLPOS="" F S IEN=$O(^SDWL(409.3,"SP",IEN)) Q:IEN<1 D
|
---|
122 | .S POS="" F S POS=$O(^SDWL(409.3,"SP",IEN,POS)) Q:POS<1 D
|
---|
123 | ..S WLOPEN=$$GET1^DIQ(409.3,IEN_",",23,"I")
|
---|
124 | ..Q:WLOPEN="C"
|
---|
125 | ..S PIEN="",PIEN=$O(^SCTM(404.59,"B",POS,PIEN),-1) IF PIEN'="" D
|
---|
126 | ... S POSN=$$GET1^DIQ(404.57,POS_",",.01)
|
---|
127 | ...IF PIEN'="" S STATUS=$$GET1^DIQ(404.59,PIEN_",",.03,"I")
|
---|
128 | ...Q:STATUS="1"
|
---|
129 | ...IF STATUS="0" D
|
---|
130 | ....S:'$D(SDWLPOS(POS)) SDWLPOS(POS)=0 S SDWLPOS(POS)=SDWLPOS(POS)+1,POSN=$E(POSN,1,30)
|
---|
131 | ....S TEAM=$$GET1^DIQ(404.57,POS_",",.02),TEAM=$E(TEAM,1,25)
|
---|
132 | ....S SDFORM=$$FORM^SDFORM(POSN,32,TEAM,27,SDWLPOS(POS),21)
|
---|
133 | ....S ^TMP("SDWLQSC6",$J,POS)=SDFORM
|
---|
134 | IF $D(^TMP("SDWLQSC6",$J)) D MESS5^SDWLMSG
|
---|
135 | D EN6
|
---|
136 | Q
|
---|
137 | EN6 ;Date of Death
|
---|
138 | S (IEN,SDDFN,DIS,DOD,NAME)=""
|
---|
139 | F S SDDFN=$O(^SDWL(409.3,"B",SDDFN)) Q:SDDFN<1 D
|
---|
140 | .S IEN="" F S IEN=$O(^SDWL(409.3,"B",SDDFN,IEN)) Q:IEN<1 D
|
---|
141 | ..S DIS=$$GET1^DIQ(409.3,IEN_",",21,"I") IF DIS="D" D
|
---|
142 | ...S DOD=$$GET1^DIQ(2,SDDFN_",",.351) Q:DOD'="" D
|
---|
143 | ....S DIE="^SDWL(409.3,",DA=IEN,DR="23////^S X=""O""" D ^DIE
|
---|
144 | ....S DR="19///@" D ^DIE
|
---|
145 | ....S DR="20///@" D ^DIE
|
---|
146 | ....S DR="21///@" D ^DIE
|
---|
147 | ....S DR="29////^S X=""DE""" D ^DIE
|
---|
148 | ....S NAME=$$GET1^DIQ(2,SDDFN_",",.01) S ^TMP("SDWLQSC7",$J,SDDFN)=NAME
|
---|
149 | IF $D(^TMP("SDWLQSC7",$J)) D MESS6^SDWLMSG
|
---|
150 | D EN7
|
---|
151 | Q
|
---|
152 | EN7 ;PCMM Team open slots
|
---|
153 | S (IEN,TIEN,TEAMN,CC,WLOPEN,MAX,AVAL,SDFORM,TEAM,STATUS)=""
|
---|
154 | F S TEAM=$O(^SDWL(409.3,"D",TEAM)) Q:TEAM<1 S CC=0 D
|
---|
155 | .S IEN="" F S IEN=$O(^SDWL(409.3,"D",TEAM,IEN)) Q:IEN<1 S WLOPEN=$$GET1^DIQ(409.3,IEN_",",23,"I") D
|
---|
156 | ..Q:WLOPEN="C" S CC=CC+1
|
---|
157 | .IF CC>0 D
|
---|
158 | ..S TIEN="",TIEN=$O(^SCTM(404.58,"B",TEAM,TIEN),-1) IF TIEN'="" D
|
---|
159 | ...S STATUS=$$GET1^DIQ(404.58,TIEN_",",.03,"I")
|
---|
160 | ...Q:STATUS="0"
|
---|
161 | ...S MAX=$$GET1^DIQ(404.51,TEAM_",",.08)
|
---|
162 | ...S TEAMC=$$TEAMCNT^SCAPMCU1(TEAM,DT)
|
---|
163 | ...Q:(TEAMC+.01)>MAX S AVAL=MAX-TEAMC,TEAMN=$$GET1^DIQ(404.51,TEAM_",",.01)
|
---|
164 | ...S TEAMN=$E(TEAMN,1,30),SDFORM=$$FORM^SDFORM(TEAMN,35,AVAL,22,CC,12)
|
---|
165 | ...S ^TMP("SDWLQSC8",$J,TIEN)=SDFORM
|
---|
166 | IF $D(^TMP("SDWLQSC8",$J)) D
|
---|
167 | .S SDFORM=$$FORM^SDFORM("TEAM",35,"SLOTS AVAILIABLE",22,"EWL ENTRIES",12)
|
---|
168 | .S ^TMP("SDWLQSC8",$J,.06)=SDFORM
|
---|
169 | .D MESS7^SDWLMSG
|
---|
170 | D EN8
|
---|
171 | Q
|
---|
172 | EN8 ;PCMM Position open slots
|
---|
173 | S (IEN,PIEN,POS,POSN,STATUS,WLOPEN,EDATE,SDWLPOS,SDWL,SDFORM)="" K SDWLPOS
|
---|
174 | S SDWLPOS="" F S IEN=$O(^SDWL(409.3,"SP",IEN)) Q:IEN<1 D
|
---|
175 | .S POS="" F S POS=$O(^SDWL(409.3,"SP",IEN,POS)) Q:POS<1 D
|
---|
176 | ..S PIEN="",PIEN=$O(^SCTM(404.59,"B",POS,PIEN),-1) IF PIEN'="" D
|
---|
177 | ...S STATUS=$$GET1^DIQ(404.59,PIEN_",",.03,"I")
|
---|
178 | ...S WLOPEN=$$GET1^DIQ(409.3,IEN_",",23,"I"),EDATE=$$GET1^DIQ(404.59,PIEN_",",.02,"I")
|
---|
179 | ...Q:WLOPEN="C"
|
---|
180 | ...Q:((EDATE+.01)<DT&(STATUS="0"))
|
---|
181 | ...S:'$D(SDWLPOS(POS)) SDWLPOS(POS)=0 S SDWLPOS(POS)=SDWLPOS(POS)+1
|
---|
182 | S (IEN,POS,POSN,MAX,AVAL,CC,TEAM)=""
|
---|
183 | F S POS=$O(SDWLPOS(POS)) Q:POS<1 D
|
---|
184 | .S MAX=$$GET1^DIQ(404.57,POS_",",.08),SDWL=$$PCPOSCNT^SCAPMCU1(POS,DT)
|
---|
185 | .Q:(SDWL+.01)>MAX
|
---|
186 | .S TEAM=$$GET1^DIQ(404.57,POS_",",.02),TEAM=$E(TEAM,1,23)
|
---|
187 | .S AVAL=MAX-SDWL,POSN=$$GET1^DIQ(404.57,POS_",",.01)
|
---|
188 | .S POSN=$E(POSN,1,23),SDFORM=$$FORM^SDFORM(POSN,25,TEAM,25,AVAL,14,SDWLPOS(POS),11)
|
---|
189 | .S ^TMP("SDWLQSC9",$J,POS)=SDFORM
|
---|
190 | IF $D(^TMP("SDWLQSC9",$J)) D
|
---|
191 | .S SDFORM=$$FORM^SDFORM("POSITION",25,"TEAM",25,"SLOTS AVAIL",14,"EWL ENTRIES",11)
|
---|
192 | .S ^TMP("SDWLQSC9",$J,.06)=SDFORM
|
---|
193 | .D MESS8^SDWLMSG
|
---|
194 | Q
|
---|