| 1 | SDWLRP1 ;;IOFO BAY PINES/TEH - WAITING LIST - RPC;06/28/2002 ; 26 Aug 2002  1:25 PM  ; Compiled April 16, 2007 10:15:05 | 
|---|
| 2 | ;;5.3;scheduling;**263,273,485,497,446**;AUG 13 1993;Build 77 | 
|---|
| 3 | ; | 
|---|
| 4 | ; | 
|---|
| 5 | ;****************************************************************** | 
|---|
| 6 | ;                             CHANGE LOG | 
|---|
| 7 | ; | 
|---|
| 8 | ;   DATE                        PATCH                   DESCRIPTION | 
|---|
| 9 | ;   ----                        -----                   ----------- | 
|---|
| 10 | ;   2/21/03                     SD*5.3*273              Line new+12 added "/" | 
|---|
| 11 | ;   5/10/06                     SD*5.3*446              New field: INTRA-transfer | 
|---|
| 12 | OUTPUT(SDWLOUT,SDWLDFN) ;-FULL | 
|---|
| 13 | ; input: | 
|---|
| 14 | ;   DFN = Patient | 
|---|
| 15 | ;     Lookup uses Wait List data file (409.3) and returns the following data. | 
|---|
| 16 | ; | 
|---|
| 17 | ; output: | 
|---|
| 18 | ;   SCOUT = location of data = ^TMP("SDWLG",$J,i,0) | 
|---|
| 19 | ;   for i=1:number of records returned: | 
|---|
| 20 | ; | 
|---|
| 21 | ;         Field  Location               Description | 
|---|
| 22 | ;               1               2                       ORIGINATION DATE | 
|---|
| 23 | ;               2               3                       INSTITUTION | 
|---|
| 24 | ;               3               4                       CLINIC | 
|---|
| 25 | ;               4               5                       WAIT LIST TYPE | 
|---|
| 26 | ;               5               6                       SPECIFIC TEAM | 
|---|
| 27 | ;               5.1             22                      MARKED OPEN (SPECIFIC TEAM) | 
|---|
| 28 | ;               6               7                       SPECIFIC POSITION | 
|---|
| 29 | ;               6.1             23                      MARKED OPEN (SPEICIFIC POSITION) | 
|---|
| 30 | ;               7               8                       SERVICE /SPECIALTY | 
|---|
| 31 | ;               8               9                       SPECIFIC CLINIC | 
|---|
| 32 | ;               9               10                      ORIGINATING USER | 
|---|
| 33 | ;               10              11                      PRIORITY | 
|---|
| 34 | ;               11              12                      REQUESTED BY | 
|---|
| 35 | ;               12              13                      PROVIDER | 
|---|
| 36 | ;               22              16                      DESIRED DATE OF APPT | 
|---|
| 37 | ;               23              17                      CURRENT STATUS | 
|---|
| 38 | ;               25              18                      COMMENTS | 
|---|
| 39 | ;               27              20                      NEW ENROLLE | 
|---|
| 40 | ; | 
|---|
| 41 | N DIERR,SDWLDAX | 
|---|
| 42 | I '$D(^SDWL(409.3,"B",SDWLDFN)) S SDWLRES=-1 Q  ;- No Entry in Wait List file. | 
|---|
| 43 | S SDWLDA="" F  S SDWLDA=$O(^SDWL(409.3,"B",SDWLDFN,SDWLDA)) Q:SDWLDA<1  D | 
|---|
| 44 | .S SDWLDAX="`"_SDWLDA | 
|---|
| 45 | .D FIND^DIC(409.3,,".01;1;2;3;4;5;5.1;6;6.1;7;8;9;10;11;12;15;22;23;25","PS",.SDWLDAX) | 
|---|
| 46 | I $G(DIERR) D CLEAN^DILF S SDWLRES=-1 Q | 
|---|
| 47 | K SDWLOUT S SDWLOUT=$NA(^TMP("DILIST",$J)) | 
|---|
| 48 | Q | 
|---|
| 49 | OUTPUT1(SDWLOUT,SDWLDFN) ; | 
|---|
| 50 | ;Brief Output - for Wait List. | 
|---|
| 51 | ; input: | 
|---|
| 52 | ;   DFN = Patient | 
|---|
| 53 | ;     Lookup uses Wait List data file (409.3) and returns the following data. | 
|---|
| 54 | ; | 
|---|
| 55 | ; output: | 
|---|
| 56 | ;   SWDLRES = On/Not on Wait list^Number of IENs^IEN;IEN;IEN;IEN..... | 
|---|
| 57 | ;            1     0            ^      2       ^1;2 | 
|---|
| 58 | ; | 
|---|
| 59 | S SDWLCNT=0,SDWLIEN="" | 
|---|
| 60 | I '$D(^SDWL(409.3,"B",SDWLDFN)) S SDWLRES=$NA(^TMP("SDWLRP1",$J)),^TMP("SDWLRP1",$J,1)=-1 | 
|---|
| 61 | S SDWLDA=""  F  S SDWLDA=$O(^SDWL(409.3,"B",SDWLDFN,SDWLDA)) Q:SDWLDA<1  D | 
|---|
| 62 | .I $P(^SDWL(409.3,SDWLDA,0),U,17)["C" Q | 
|---|
| 63 | .S SDWLCNT=SDWLCNT+1 | 
|---|
| 64 | .S ^TMP("SDWLRP1",$J,SDWLCNT)=SDWLDA_"^"_$G(^SDWL(409.3,SDWLDA,0)) | 
|---|
| 65 | S SDWLOUT=$NA(^TMP("SDWLRP1",$J)) | 
|---|
| 66 | K SDWLDFN,SDWLDA,SDWLCNT,SDWLIEN | 
|---|
| 67 | Q | 
|---|
| 68 | OUTPUT3(SDWLOUT,SDWLDFN) ;Disposition Data | 
|---|
| 69 | ;  input: | 
|---|
| 70 | ;    DFN = Patient Internal ID | 
|---|
| 71 | ; | 
|---|
| 72 | ;  output: Subscript 'DIS' | 
|---|
| 73 | ;    Date Dsipositioned^Disposition by^Disposition | 
|---|
| 74 | ; | 
|---|
| 75 | N SDWLRES,SDWLDFN,SDWLDA,DIERR | 
|---|
| 76 | I '$D(^SDWL(409.3,"B",SDWLDFN)) S SDWLRES=-1 Q  ;- No Entry in Wait List file. | 
|---|
| 77 | S SDWLDA="" F  S SDWLDA=$O(^SDWL(409.3,"B",SDWLDFN,SDWLDA)) Q:SDWLDA<1  D | 
|---|
| 78 | .S SDWLDAX="`"_SDWLDA | 
|---|
| 79 | .D FIND^DIC(409.3,,"19;20;21","PS",.SDWLDAX) | 
|---|
| 80 | I $G(DIERR) D CLEAN^DILF S SDWLRES=-1 Q | 
|---|
| 81 | K SDWLOUT S SDWLOUT="^TMP(""DILIST"","_$J_")",SDWLRES=1 | 
|---|
| 82 | Q | 
|---|
| 83 | INPUT(SDWLRES,SDWLSTR) ; | 
|---|
| 84 | ; Input: | 
|---|
| 85 | ;   SDWLSTR = location of data = ^TMP("SDWLG",$J,i,0) | 
|---|
| 86 | ;   (R) = Required Field | 
|---|
| 87 | ;   (O) = Optional | 
|---|
| 88 | ; | 
|---|
| 89 | ;    .01    2           3                     5                  6 | 
|---|
| 90 | ;  DFN (R)^TYPE (R)^SPECIFIC TEAM (O)^SPECIFIC POSITION (O)^ORGINATING USER (R)^COMMENT (O)^CLINIC (O)^INTRA FLAG (O)^REJ FLAG (O)^MULTI TEAM FLAG (O) | 
|---|
| 91 | ;     1     2           3                     4                  5                6            7           8               9             10 | 
|---|
| 92 | ; | 
|---|
| 93 | ;  Output: | 
|---|
| 94 | ;               SDWLRES  =  0      Failed | 
|---|
| 95 | ;               SDWLRES  =  1^IEN  Saved to ^SDWL(409.3,IEN,0) | 
|---|
| 96 | ; | 
|---|
| 97 | N DIERR,%H,SDWLF,SDWLFLD,SDWLFLG,SDWLI,SDWLIN,SDWLMSG,SDWLRNED,SDWLTP,SDWLVAL,SDWLX,SDWLY,X,Y | 
|---|
| 98 | K ^TMP("SDWLIN",$J),^TMP("SDWLOUT",$J),^TMP("DIERR",$J) | 
|---|
| 99 | I '$G(SDWLSTR) S SDWLRES="-1^Data String Missing" Q | 
|---|
| 100 | D NEW | 
|---|
| 101 | D FDA I SDWLRES<0 D DEL Q | 
|---|
| 102 | ;D VAL I SDWLRES<0 D DEL Q | 
|---|
| 103 | D SET I SDWLRES<0 D DEL Q | 
|---|
| 104 | D CLEAN^DILF K ^TMP("SDWLIN",$J),^TMP("SDWLOUT",$J) | 
|---|
| 105 | K SDWLDUZ,SDWLDFN,SDWLDA,Y | 
|---|
| 106 | Q | 
|---|
| 107 | NEW ;Get IEN from ^SDWL(409.3,IEN,0). | 
|---|
| 108 | N DA,DIC,DIE,DIK,DR,SDREJ,SDINTRA,SDMULTI | 
|---|
| 109 | I $P(SDWLSTR,U,4) D | 
|---|
| 110 | .S SDWLTP=+$P(SDWLSTR,U,4) | 
|---|
| 111 | .S SDWLIN=$P($G(^SCTM(404.51,+$P(^SCTM(404.57,SDWLTP,0),U,2),0)),U,7) | 
|---|
| 112 | I $P(SDWLSTR,U,3) D | 
|---|
| 113 | .S SDWLIN=$P($G(^SCTM(404.51,+$P(SDWLSTR,U,3),0)),U,7) | 
|---|
| 114 | S SDWLDFN=+$P(SDWLSTR,U,1) | 
|---|
| 115 | S SDREJ=$P(SDWLSTR,U,9),SDINTRA=$P(SDWLSTR,U,8),SDMULTI=$P(SDWLSTR,U,10) | 
|---|
| 116 | ;identify INTRA-transfer | 
|---|
| 117 | ;- last team assignment | 
|---|
| 118 | S DIC(0)="LX",X=$P(SDWLSTR,U,1),DIC="^SDWL(409.3," D FILE^DICN I Y<0 S SDWLRES="-1^IEN failed" Q | 
|---|
| 119 | S SDWLDFN=$P(Y,U,2),SDWLDA=+Y,SDWLDUZ=$P(SDWLSTR,U,9) | 
|---|
| 120 | S DIE="^SDWL(409.3,",DA=SDWLDA | 
|---|
| 121 | S DR="1///^S X=DT" D ^DIE | 
|---|
| 122 | S DR="2////^S X=SDWLIN;32////^S X=SDREJ;34////^S X=SDINTRA;38////^S X=SDMULTI" D ^DIE | 
|---|
| 123 | S DR="23///^S X=""O""",DIE="^SDWL(409.3," D ^DIE | 
|---|
| 124 | ; | 
|---|
| 125 | ;DETERMINE ENROLLEE STATUS | 
|---|
| 126 | ; | 
|---|
| 127 | ;SDWLE=1 = NEW ENROLLEE | 
|---|
| 128 | ;SDWLE=2 = ESTABLISHED | 
|---|
| 129 | ;SDWLE=3 = PRIOR ENROLLEE | 
|---|
| 130 | ;SDWLE=4 = UNDETERMINED | 
|---|
| 131 | ; | 
|---|
| 132 | S SDWLDE=+$H,SDWLE=0,(SDWLEE,SDWLRNED,SDWLDB)=0 D SB1 | 
|---|
| 133 | G SB0:SDWLE=2 | 
|---|
| 134 | S SDWLRNE=$$ENROLL^EASWTAPI(SDWLDFN) G SB0:$P(SDWLRNE,U,4)="A" S SDWLRNED=$P(SDWLRNE,U,3) | 
|---|
| 135 | I SDWLRNED S X=SDWLRNED D H^%DTC S SDWLDS=%H S SDWLDE=+$H,SDWLDET=SDWLDE-SDWLDS,SDWLDB=2 I SDWLDET<366 S SDWLE=1 | 
|---|
| 136 | I $D(SDWLDET),SDWLDET>365 S SDWLE=3 | 
|---|
| 137 | I 'SDWLRNE S SDWLE=4 | 
|---|
| 138 | SB0 I $D(SDWLRNE),$P(SDWLRNE,U,4)="A" D | 
|---|
| 139 | .I 'SDWLRNE,SDWLEE>730!(SDWLEE=730) S SDWLE=4 Q | 
|---|
| 140 | .I 'SDWLEE S SDWLE=4 Q | 
|---|
| 141 | S SDWLRNE=$S(SDWLE=1:"N",SDWLE=2:"E",SDWLE=3:"P",SDWLE=4:"U",1:"U") | 
|---|
| 142 | ;-Code here for filling in 409.3 | 
|---|
| 143 | S DR="27////^S X=SDWLRNE",DIE="^SDWL(409.3,",DA=SDWLDA D ^DIE | 
|---|
| 144 | S DR="9////^S X=DUZ" D ^DIE | 
|---|
| 145 | S DR="27.1////^S X=$S($G(SDWLRNED):SDWLRNED,$G(SDWLD):SDWLD,1:"""")" D ^DIE | 
|---|
| 146 | S DR="27.2////^S X=SDWLDB" D ^DIE | 
|---|
| 147 | K SDWLRNE,SDWLD,SDWLDE,SDWLEE,SDWLDET,DIC,DIR,DR,DIE,SDWLDS,SDWLE | 
|---|
| 148 | Q | 
|---|
| 149 | SB1 I '$D(^DGCN(391.91,"B",SDWLDFN)) N SDWLDB S SDWLE=3 Q | 
|---|
| 150 | S SDWLX="" F  S SDWLX=$O(^DGCN(391.91,"B",SDWLDFN,SDWLX)) Q:SDWLX=""  D | 
|---|
| 151 | .S SDWLY=$G(^DGCN(391.91,SDWLX,0)) D | 
|---|
| 152 | ..;CHECK FOR TREATING FACILITY | 
|---|
| 153 | ..I $$TF^XUAF4(+$P(SDWLY,U,2)) D | 
|---|
| 154 | ...;SORT FOR LAST TREATMENT DATE | 
|---|
| 155 | ...S SDWLD=$P(SDWLY,U,3) I SDWLD S SDWLDTF(9999999-SDWLD)=SDWLX | 
|---|
| 156 | I '$D(SDWLDTF) Q | 
|---|
| 157 | S SDWLDTF=$O(SDWLDTF(0)) I SDWLDTF S (SDWLD,X)=9999999-SDWLDTF D H^%DTC S SDWLEE=SDWLDE-%H,SDWLDB=1 I SDWLEE<730 S SDWLE=2 | 
|---|
| 158 | I $D(SDWLEE),SDWLEE>730!(SDWLEE=730) S SDWLE=3 | 
|---|
| 159 | K SDWLDTF | 
|---|
| 160 | Q | 
|---|
| 161 | FDA ;Get data from SDWLSTR string and set FDA. | 
|---|
| 162 | S SDWLF=409.3 | 
|---|
| 163 | S SDWLVAL="" F SDWLI=2:1:7 S SDWLVAL=$P(SDWLSTR,"^",SDWLI) D | 
|---|
| 164 | .S SDWLFLD=SDWLI D | 
|---|
| 165 | ..S SDWLFLD=$S(SDWLFLD=2:4,SDWLFLD=3:5,SDWLFLD=4:6,SDWLFLD=5:9,SDWLFLD=7:15,1:25) | 
|---|
| 166 | .S SDWLFLG="F",SDWLIEN=$$IENS^DILF(SDWLDA) ;,SDWLVAL=$$EXTERNAL^DILFD(SDWLF,SDWLFLD,,SDWLVAL,"SDWLMSG") | 
|---|
| 167 | .I $D(SDWLMSG) M SDWLRES=SDWLMSG S SDWLRES=-1 Q | 
|---|
| 168 | .D FDA^DILF(SDWLF,SDWLIEN,SDWLFLD,"",SDWLVAL,"^TMP(""SDWLIN"",$J)") | 
|---|
| 169 | .S SDWLRES=1 M SDWLRES("SDWLIN")=^TMP("SDWLIN",$J) | 
|---|
| 170 | Q | 
|---|
| 171 | VAL ;Validate fields | 
|---|
| 172 | N DIERR | 
|---|
| 173 | D VALS^DIE(,"^TMP(""SDWLIN"",$J)","^TMP(""SDWLOUT"",$J)","SDWLMSG") | 
|---|
| 174 | I $G(SDWLMSG("DIERR")) S SDWLRES=-1 Q | 
|---|
| 175 | M SDWLRES("SDWLOUT")=^TMP("SDWLOUT",$J) | 
|---|
| 176 | Q | 
|---|
| 177 | SET ;Input data to file ^SDWL(409.3,IEN,0). | 
|---|
| 178 | D UPDATE^DIE(,"^TMP(""SDWLIN"",$J)","SDWLMSG") | 
|---|
| 179 | I $G(SDWLMSG("DIERR")) S SDWLRES=-1 Q | 
|---|
| 180 | S SDWLRES=1_"^"_$G(SDWLDA) | 
|---|
| 181 | Q | 
|---|
| 182 | DEL S DA=SDWLDA,DIK="^SDWL(409.3," D ^DIK | 
|---|
| 183 | S SDWLRES="-1^Entry "_SDWLDA_" Deleted" | 
|---|
| 184 | Q | 
|---|
| 185 | INPUTDP(SDWLRES,SDWLSTR) ;Set disposition in Wait List Patient file | 
|---|
| 186 | ; | 
|---|
| 187 | ;       Input: | 
|---|
| 188 | ; | 
|---|
| 189 | ;               SDWLSTR=Patient DFN^Disposition^User DUZ^Wait List IEN | 
|---|
| 190 | ; | 
|---|
| 191 | ;       Ouput: | 
|---|
| 192 | ; | 
|---|
| 193 | ;           SDWLRES=-1 Failed | 
|---|
| 194 | ;           SDWKRES=1^IEN for Wait List File (409.3) | 
|---|
| 195 | ; | 
|---|
| 196 | N SDWLDFN,SDWLDISP,SDWLDUZ,SDWLDA,SDWLDDT | 
|---|
| 197 | I '$G(SDWLSTR) S SDWLRES="-1^Data String Missing" Q | 
|---|
| 198 | I '$G(^SDWL(409.3,SDWLDA,0)) S SDWLRES="-1^Missing Patient IEN" Q | 
|---|
| 199 | I '$D(^SDWL(409.3,"B",SDWLDFN)) S SDWLRES="-1^Missing Wait List data file" Q | 
|---|
| 200 | D FDA1 I SDWLRES<0 D DEL1 Q | 
|---|
| 201 | D VAL1 I SDWLRES<0 D DEL1 Q | 
|---|
| 202 | D SET1 I SDWLRES<0 D DEL1 Q | 
|---|
| 203 | D CLEAN^DILF K ^TMP("SDWLIN",$J),^TMP("SDWLOUT",$J) | 
|---|
| 204 | Q | 
|---|
| 205 | FDA1 ; | 
|---|
| 206 | S SDWLDFN=$P(SDWLSTR,U,1),SDWLDISP=$P(SDWLSTR,U,2),SDWLDUZ=$P(SDWLSTR,U,3),SDWLDA=$P(SDWLSTR,U,4),SDWLDDT=DT | 
|---|
| 207 | S SDWLIEN=$$IENS^DILF(SDWLDA) | 
|---|
| 208 | F SDWLI=1:1:4 S SDWLVAL=$S(SDWLI=1:SDWLDISP,SDWLI=2:SDWLDUZ,SDWLI=3:SDWLDDT,SDWLI=4:"C"),SDWLFLD=$S(SDWLI=1:21,SDWLI=2:20,SDWLI=3:19,SDWLI=4:23) D | 
|---|
| 209 | .S SDWLVAL=$$EXTERNAL^DILFD(SDWLF,SDWLFLD,,SDWLVAL,"SDWLMSG") | 
|---|
| 210 | .I $D(SDWLMSG) M SDWLRES=SDWLMSG S SDWLRES=-1 Q | 
|---|
| 211 | .D FDA^DILF(SDWLF,SDWLIEN,SDWLFLD,"",SDWLVAL,"^TMP(""SDWLIN"",$J)") | 
|---|
| 212 | .S SDWLRES=1 M SDWLRES("SDWLIN")=^TMP("SDWLIN",$J) | 
|---|
| 213 | Q | 
|---|
| 214 | VAL1 ; | 
|---|
| 215 | N DIERR | 
|---|
| 216 | D VALS^DIE(,"^TMP(""SDWLIN"",$J)","^TMP(""SDWLOUT"",$J)","SDWLMSG") | 
|---|
| 217 | I $G(SDWLMSG("DIERR")) S SDWLRES=-1 Q | 
|---|
| 218 | M SDWLRES("SDWLOUT")=^TMP("SDWLOUT",$J) | 
|---|
| 219 | Q | 
|---|
| 220 | SET1 ; | 
|---|
| 221 | D UPDATE^DIE(,"^TMP(""SDWLOUT"",$J)","SDWLMSG") | 
|---|
| 222 | I $G(SDWLMSG("DIERR")) S SDWLRES=-1 Q | 
|---|
| 223 | S SDWLRES=1 | 
|---|
| 224 | Q | 
|---|
| 225 | DEL1 ; | 
|---|
| 226 | S DA(1)=SDWLDA,DIK="^SDWL("_DA(1)_",""DIS""," F DA=19,20,21,23 D ^DIK | 
|---|
| 227 | S SDWLRES="-1^"_"Disposition Nodes Deleted." | 
|---|
| 228 | Q | 
|---|