1 | SDWLE6 ;;IOFO BAY PINES/OG - WAITING LIST-ENTER/EDIT - INTER-FACILITY TRANSFER ; Compiled January 25, 2007 09:47:40
|
---|
2 | ;;5.3;scheduling;**446**;AUG 13 1993;Build 77
|
---|
3 | ;
|
---|
4 | ; ******************************************************************
|
---|
5 | ; CHANGE LOG
|
---|
6 | ;
|
---|
7 | ; DATE PATCH DESCRIPTION
|
---|
8 | ; ---- ----- -----------
|
---|
9 | ;
|
---|
10 | ;
|
---|
11 | EN(SDWLDFN,SDWLERR) ; Entry Point
|
---|
12 | ; Extrinsic function. Quit back one of the following values
|
---|
13 | ; 0 : Inter-Facility Transfer not selected, continue with standard processing
|
---|
14 | ; 1 : Inter-Facility selected, all processing performed here, quit out on return.
|
---|
15 | ;
|
---|
16 | ; SDWLERR passed back by reference, indicates to the calling routine
|
---|
17 | ; whether to announce that the update to 409.3 was performed.
|
---|
18 | ;
|
---|
19 | N ICN,SDWLIFTN,SDWLONSY,SDWLTY,SSN
|
---|
20 | S SDWLIFTN=0,SDWLERR=1,SDWLONSY=0
|
---|
21 | S ICN=$$GET1^DIQ(2,SDWLDFN,991.01),SSN=$$GET1^DIQ(2,SDWLDFN,.09)
|
---|
22 | I ICN'="",$D(^SDWL(409.36,"AICN",ICN)) S SDWLONSY=1
|
---|
23 | I SSN'="",$D(^SDWL(409.36,"SSN",SSN)) S SDWLONSY=1
|
---|
24 | D:SDWLONSY
|
---|
25 | .N DIR,SDWLARR,SDWLI,SDWLIFN0,SDWLILM,TMP
|
---|
26 | .S SDWLIFN0="",SDWLILM=23
|
---|
27 | .I ICN'="" F S SDWLIFN0=$O(^SDWL(409.36,"AICN",ICN,SDWLIFN0)) Q:SDWLIFN0="" S TMP(SDWLIFN0)=""
|
---|
28 | .I SSN'="" F S SDWLIFN0=$O(^SDWL(409.36,"SSN",SSN,SDWLIFN0)) Q:SDWLIFN0="" S TMP(SDWLIFN0)=""
|
---|
29 | .F S SDWLIFN0=$O(TMP(SDWLIFN0)) Q:SDWLIFN0="" D
|
---|
30 | ..N SDWLIL,SDWLINS,SDWLINSX,SDWLINX,TMP
|
---|
31 | ..D GETS^DIQ(409.36,SDWLIFN0_",",".1;1;4",,"TMP")
|
---|
32 | ..Q:"P"'[$E(TMP(409.36,SDWLIFN0_",",1))
|
---|
33 | ..S SDWLINS=TMP(409.36,SDWLIFN0_",",.1),SDWLINSX=$$GET1^DIQ(4,SDWLINS,.01)
|
---|
34 | ..S SDWLIL=$L(SDWLINSX) S:SDWLIL>SDWLILM SDWLILM=SDWLIL
|
---|
35 | ..S SDWLARR(0)=$G(SDWLARR(0))+1
|
---|
36 | ..S SDWLARR(SDWLARR(0),0)=SDWLINSX_U_TMP(409.36,SDWLIFN0_",",4)_U_SDWLIFN0_U_$$GET1^DIQ(4,SDWLINS,4,"I")
|
---|
37 | ..Q
|
---|
38 | .Q:'$D(SDWLARR)
|
---|
39 | .W !,"This patient has the following pending Inter-Facility Transfer entr"_$S(SDWLARR(0)=1:"y",1:"ies")_":"
|
---|
40 | .W !?5,"Requesting Facility",?SDWLILM+5,"Wait List Type"
|
---|
41 | .F SDWLI=1:1:SDWLARR(0) W !,SDWLI,?5,$P(SDWLARR(SDWLI,0),U),?SDWLILM+5,$P(SDWLARR(SDWLI,0),U,2)
|
---|
42 | .S DIR("A")="Enter a number"
|
---|
43 | .S DIR("A",1)="Select to associate this EWL entry with a transfer from the listed facility "
|
---|
44 | .S DIR("A",2)="or ^ to continue without selecting."
|
---|
45 | .S DIR(0)="N^1:"_SDWLARR(0) D ^DIR
|
---|
46 | .Q:Y="^"
|
---|
47 | .S SDWLIFTN=$P(SDWLARR(Y,0),U,3),SDWLTY=$P(SDWLARR(Y,0),U,2)
|
---|
48 | .Q
|
---|
49 | Q:'SDWLIFTN 0 ; Continue with normal EWL enter/edit.
|
---|
50 | D EN2(SDWLIFTN,SDWLDFN,SDWLTY)
|
---|
51 | Q 1 ; Return true: user chose to process transfer.
|
---|
52 | ;
|
---|
53 | EN2(SDWLIFTN,SDWLDFN,SDWLTY) ; Entry point if transfer record is selected elsewhere.
|
---|
54 | N DFN,SDWLCM,SDWLCP1,SDWLCP2,SDWLCP3,SDWLCP4,SDWLCP5,SDWLCP6,SDWLDDA,SDWLIN,SDWLOPT,SDWLPCMM,SDWLPN,SDWLPOS,SDWLSCO,SDWLSPO,SDWLSSO,SDWLSTO,SDWLTEM,SDWLTM
|
---|
55 | I $G(SDWLDFN)="" W !,"Patient not entered on the system. Use Load/edit" S DIR(0)="E" D ^DIR Q
|
---|
56 | L +^SDWL(409.36,SDWLIFTN):1
|
---|
57 | I '$T W !,"Unable to acquire lock on transfer file" S DIR(0)="E" D ^DIR Q
|
---|
58 | S DFN=SDWLDFN D PCM^SDWLE1
|
---|
59 | ; Call each "P" subroutine for Wait List data items. Controlled by the value of SDWLOPT.
|
---|
60 | S SDWLOPT=1,(SDWLIN,SDWLTM,SDWLPN,SDWLDDA,SDWLCM)=""
|
---|
61 | F D @("P"_SDWLOPT) Q:'SDWLOPT
|
---|
62 | L -^SDWL(409.36,SDWLIFTN)
|
---|
63 | Q
|
---|
64 | ;
|
---|
65 | P1 ; Wait List Type
|
---|
66 | N DIR
|
---|
67 | S DIR(0)="SO^1:PCMM TEAM ASSIGNMENT;2:PCMM POSITION ASSIGNMENT"
|
---|
68 | S DIR("L",1)=" Select Wait List Type:"
|
---|
69 | S DIR("L",2)=" 1. "_$P($P(DIR(0),U,2),":",2)
|
---|
70 | S DIR("L",3)=" 2. "_$P($P(DIR(0),U,3),":",2)
|
---|
71 | I SDWLTY'="" S DIR("B")=SDWLTY
|
---|
72 | D ^DIR
|
---|
73 | I "^"[Y S SDWLOPT=0 Q
|
---|
74 | S SDWLTY=Y,SDWLOPT=SDWLOPT+1
|
---|
75 | Q
|
---|
76 | ;
|
---|
77 | P2 ; Institution
|
---|
78 | N DIC,SDWLINL,SDWLTM
|
---|
79 | I SDWLTY=1 S DIC("S")="I $D(^SCTM(404.51,""AINST"",+Y))"
|
---|
80 | I SDWLTY=2 D
|
---|
81 | .N SDWLI
|
---|
82 | .I 'SDWLCP3 S SDWLI=0 F S SDWLI=$O(^SCTM(404.57,SDWLI)) Q:'SDWLI D
|
---|
83 | ..N SDWLL
|
---|
84 | ..S SDWLL=+$P($G(^SCTM(404.57,SDWLI,0)),U,2)
|
---|
85 | ..S SDWLINL=+$P($G(^SCTM(404.51,+SDWLL,0)),U,7)
|
---|
86 | ..S SDWLINL(SDWLINL)=""
|
---|
87 | ..Q
|
---|
88 | .S DIC("S")="I $D(SDWLINL(+Y))"
|
---|
89 | .Q
|
---|
90 | S DIC("S")=DIC("S")_",$$GET1^DIQ(4,+Y_"","",11,""I"")=""N"",$$TF^XUAF4(+Y)"
|
---|
91 | I SDWLIN'="" S DIC("B")=$$EXTERNAL^DILFD(4,.01,,SDWLIN)
|
---|
92 | S DIC(0)="AEQNM",DIC="4",DIC("A")="Select Institution: "
|
---|
93 | D ^DIC
|
---|
94 | I Y="^" S SDWLOPT=0 Q
|
---|
95 | I Y<1 S SDWLOPT=SDWLOPT-1 Q
|
---|
96 | I SDWLTY=1 D GETTEAMS(+Y,.SDWLTM) I '$D(SDWLTM) W !,"No TEAMS are available for this INSTITUTION." Q
|
---|
97 | S SDWLIN=+Y,SDWLOPT=SDWLOPT+1
|
---|
98 | Q
|
---|
99 | ;
|
---|
100 | P3 ; Team or Team Position
|
---|
101 | N DIR,SDWLPNS
|
---|
102 | I $G(SDWLCP3)'="" D I Y["^"!'Y S SDWLOPT=0 Q
|
---|
103 | .N DIR
|
---|
104 | .W !,"This patient is already on the ",SDWLCP3,"."
|
---|
105 | .S DIR(0)="Y^A0",DIR("B")="NO",DIR("A")="Are you sure you want to continue"
|
---|
106 | .D ^DIR
|
---|
107 | .Q
|
---|
108 | I SDWLTY=1 D Q
|
---|
109 | .N DIR
|
---|
110 | .I $G(SDWLTM)'="" S DIR("B")=$$EXTERNAL^DILFD(404.58,.01,,SDWLTM) ; Not sure this is ever true.
|
---|
111 | .D GETTEAMS(SDWLIN,.SDWLTM)
|
---|
112 | .S DIR(0)="PAO^SCTM(404.51,:EMNZ",DIR("A")="Select Team: "
|
---|
113 | .S DIR("S")="I $D(SDWLTM(+Y))"
|
---|
114 | .D ^DIR
|
---|
115 | .I Y="^" S SDWLOPT=0 Q
|
---|
116 | .I Y<1 S SDWLOPT=2 Q
|
---|
117 | .S SDWLTM=+Y,SDWLOPT=SDWLOPT+1
|
---|
118 | .Q
|
---|
119 | I $G(SDWLPN)'="" S DIR("B")=$$EXTERNAL^DILFD(404.57,.01,,SDWLPN) ; Not sure this is ever true.
|
---|
120 | D GETPSNS(.SDWLPNS) I '$D(SDWLPNS) W !,"No Positions Meet Wait List Criteria" S SDWLOPT=1 Q
|
---|
121 | S DIR(0)="PAO^SCTM(404.57,:EMNZ",DIR("A")="Select Team Position: "
|
---|
122 | S DIR("S")="I $D(SDWLPNS(+Y))"
|
---|
123 | D ^DIR
|
---|
124 | I Y="^" S SDWLOPT=0 Q
|
---|
125 | I Y<1 S SDWLOPT=SDWLOPT-1 Q
|
---|
126 | S SDWLPN=+Y,SDWLOPT=SDWLOPT+1
|
---|
127 | Q
|
---|
128 | ;
|
---|
129 | P4 ; Comment
|
---|
130 | N DIR
|
---|
131 | S DIR(0)="FAOU^^",DIR("A")="Comments: ",DIR("B")=SDWLCM
|
---|
132 | D ^DIR
|
---|
133 | I Y="^" S SDWLOPT=0 Q
|
---|
134 | I X="@" S SDWLOPT=SDWLOPT-1 Q
|
---|
135 | S SDWLCM=$E(Y,1,60),SDWLOPT=SDWLOPT+1
|
---|
136 | Q
|
---|
137 | ;
|
---|
138 | P5 ; Update database
|
---|
139 | N DA,DIC,DIE,X,DR,SDWLDA,SDWLSCPE,SDWLSCPR,SDWLTMP
|
---|
140 | ; Create new EWL entry
|
---|
141 | S DIC(0)="LX",X=SDWLDFN,DIC="^SDWL(409.3," D FILE^DICN
|
---|
142 | L +^SDWL(409.3,DA):1 ; This file has just been created. Is it neurotic to code for the possibility of a lock from elsewhere?
|
---|
143 | I '$T W !,"Unable to acquire a lock on the Wait List file" S SDWLOPT=5 Q
|
---|
144 | ; Update EWL variables.
|
---|
145 | D GETS^DIQ(409.36,SDWLIFTN_",",".301;.302","I","SDWLTMP")
|
---|
146 | S SDWLSCPR=$G(SDWLTMP(409.36,SDWLIFTN_",",.301,"I"))="Y"
|
---|
147 | S SDWLSCPE=$G(SDWLTMP(409.36,SDWLIFTN_",",.302,"I"))
|
---|
148 | S SDWLDA=DA,DIE=DIC,DR="1////^S X=DT;2////^S X=SDWLIN;4////^S X=SDWLTY"
|
---|
149 | I SDWLTY=1 S DR=DR_";5////^S X=SDWLTM"
|
---|
150 | I SDWLTY=2 S DR=DR_";6////^S X=SDWLPN"
|
---|
151 | S DR=DR_";9////^S X=DUZ"
|
---|
152 | S DR=DR_";14////^S X=SDWLSCPE"
|
---|
153 | S DR=DR_";15////^S X=SDWLSCPR"
|
---|
154 | S DR=DR_";22////^S X=SDWLDDA"
|
---|
155 | S DR=DR_";23////O"
|
---|
156 | S DR=DR_";25////^S X=SDWLCM"
|
---|
157 | S DR=DR_";27////^S X="""_$$GETENRST^SDWLE6(SDWLDFN)_""""
|
---|
158 | D ^DIE
|
---|
159 | L -^SDWL(409.3,DA)
|
---|
160 | ; Update 409.36
|
---|
161 | S DIE="^SDWL(409.36,",DA=SDWLIFTN,DR="1////E;409.3////^S X=SDWLDA" D ^DIE
|
---|
162 | ; Pass message back to sending facility
|
---|
163 | D SENDST^SDWLIFT6(SDWLIFTN)
|
---|
164 | S SDWLOPT=0,SDWLERR=0
|
---|
165 | Q
|
---|
166 | ;
|
---|
167 | GETTEAMS(SDWLIN,SDWLTM) ; Get teams for an institution ; NB this is reworking of code in SDWLE3.
|
---|
168 | N Y,SDWLST,SDWLINE,SDWLPLST,TMHSID K SDWLTM
|
---|
169 | S SDWLINE=SDWLIN
|
---|
170 | D GETLIST^SDWLE3
|
---|
171 | S TMHSID="" ; Team history
|
---|
172 | F S TMHSID=$O(^SCTM(404.58,"B",TMHSID)) Q:TMHSID="" D:$P($G(^SCTM(404.51,TMHSID,0)),U,7)=SDWLIN
|
---|
173 | .N TMID ; Team
|
---|
174 | .S TMID=$O(^SCTM(404.58,"B",TMHSID,":"),-1) Q:TMID=""
|
---|
175 | .Q:$D(SDWLPLST(1,TMID,SDWLIN))
|
---|
176 | .Q:$P($G(^SCTM(404.58,TMID,0)),U,3)=0
|
---|
177 | .Q:'$$ACTTM^SCMCTMU(TMID)
|
---|
178 | .I $$TEAMCNT^SCAPMCU1(TMHSID,DT)>$P($G(^SCTM(404.51,TMHSID,0)),U,8) S SDWLTM(TMHSID)=""
|
---|
179 | .Q
|
---|
180 | Q
|
---|
181 | ;
|
---|
182 | GETPSNS(SDWLPN) ; Get positions ; NB this is reworking of code in SDWLE5.
|
---|
183 | N SDWLPSS,SDWLPDA,SDWLX,SDWLA,SDWLCPP,SDWLCPT K SDWLPN
|
---|
184 | D GETLIST^SDWLE5
|
---|
185 | Q:'$D(SDWLCPP)
|
---|
186 | S SDWLA=0
|
---|
187 | F S SDWLA=$O(^SCTM(404.57,SDWLA)) Q:'SDWLA D:$D(SDWLCPP(SDWLA))&'$D(SDWLPSS(SDWLA))
|
---|
188 | .N X
|
---|
189 | .S X=$G(^SCTM(404.57,SDWLA,0))
|
---|
190 | .Q:$P(X,U,2)'=SDWLCPT
|
---|
191 | .S:$P(X,U,8)'<$$PCPOSCNT^SCAPMCU1(SDWLA,DT,0)&$P(X,U,4) SDWLPN(SDWLA)=""
|
---|
192 | .Q
|
---|
193 | Q
|
---|
194 | ;
|
---|
195 | GETENRST(SDWLDFN) ; Determine enrollee status ; NB this is reworking of code in SDWLE11.
|
---|
196 | N SDWLE
|
---|
197 | S SDWLE=1 D
|
---|
198 | .N SDWLX,SDWLY,%H
|
---|
199 | .I '$D(^DGCN(391.91,"B",SDWLDFN)) S SDWLE=3 Q
|
---|
200 | .; Loop backwards through the B cross reference of TREATING FACILITY LIST until there is a DATE LAST TREATED entry.
|
---|
201 | .; If that is less than 730 days ago, SDWLE=2; otherwise, SDWLE=3. Then quit from the loop.
|
---|
202 | .S SDWLX=""
|
---|
203 | .F S SDWLX=$O(^DGCN(391.91,"B",SDWLDFN,SDWLX),-1) Q:SDWLX="" S SDWLY=$G(^DGCN(391.91,SDWLX,0)) I $P(SDWLY,U,3) S X=$P(SDWLY,U,3) D H^%DTC S SDWLE=$H-%H'<730+2 Q
|
---|
204 | .Q
|
---|
205 | D:SDWLE'=2
|
---|
206 | .N SDWLRNE,%H
|
---|
207 | .S SDWLRNE=$$ENROLL^EASWTAPI(SDWLDFN)
|
---|
208 | .I $P(SDWLRNE,U,3) S X=$P(SDWLRNE,U,3) D H^%DTC S SDWLE=$H-%H>365*2+1 ; If number of days is greater than a year, SDWLE=3; otherwise, SDWLE=1.
|
---|
209 | .I 'SDWLRNE S SDWLE=4
|
---|
210 | .Q
|
---|
211 | Q $S(SDWLE=1:"N",SDWLE=2:"E",SDWLE=3:"P",SDWLE=4:"U")
|
---|
212 | ;
|
---|
213 | DIS(SDWLDA) ; Action on disposition
|
---|
214 | N DIE,DR,SDWLDIS,SDWLIFTN,SDWLSTA,X
|
---|
215 | S SDWLIFTN=$O(^SDWL(409.36,"C",SDWLDA,"")) Q:'SDWLIFTN
|
---|
216 | S SDWLDIS=$$GET1^DIQ(409.3,SDWLDA,21,"I")
|
---|
217 | ; If disposition is because entered in error, reset to pending. Otherwise, set to closed.
|
---|
218 | S SDWLSTA=$S(SDWLDIS="ER":"P",1:"C")
|
---|
219 | S DIE="^SDWL(409.36,",DA=SDWLIFTN,DR="1///"_SDWLSTA D ^DIE
|
---|
220 | ; Pass message back to sending facility
|
---|
221 | D SENDST^SDWLIFT6(SDWLIFTN)
|
---|
222 | Q
|
---|