| 1 | FBSHAUT ;WCIOFO/SAB-ENTER/EDIT STATE HOME AUTHORIZATION ;2/9/1999 | 
|---|
| 2 | ;;3.5;FEE BASIS;**13**;JAN 30, 1995 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | ADD ; Enter new authorization | 
|---|
| 6 | ; Called from option FBSH ENTER AUTH | 
|---|
| 7 | D SETUP | 
|---|
| 8 | I 'FBPOP F  D  Q:'$G(DFN) | 
|---|
| 9 | . ; select patient | 
|---|
| 10 | . D PAT Q:'$G(DFN) | 
|---|
| 11 | . ; show patient demographics | 
|---|
| 12 | . S FBPROG(0)=FBPROG | 
|---|
| 13 | . S FBPROG="I $P(^(0),U,3)=FBPROG(0)" | 
|---|
| 14 | . D ^FBAADEM | 
|---|
| 15 | . S FBPROG=FBPROG(0) | 
|---|
| 16 | . ; get dates | 
|---|
| 17 | . D BDATES | 
|---|
| 18 | . I FBBEGDT]"" D | 
|---|
| 19 | . . ; add/edit authorization | 
|---|
| 20 | . . S DA(1)=DFN,X=FBBEGDT | 
|---|
| 21 | . . S DIC="^FBAAA("_DA(1)_",1,",DIC(0)="LQ",DLAYGO=161 | 
|---|
| 22 | . . S DIC("DR")=".02////^S X=FBENDDT;.03////^S X=FBPROG;.095////4;100////^S X=DUZ;S FBTYPE=FBPROG;.07" | 
|---|
| 23 | . . S DIC("P")=$P(^DD(161,1,0),U,2) | 
|---|
| 24 | . . K DD,DO D FILE^DICN K DIC,DLAYGO | 
|---|
| 25 | . . I Y'>0 W $C(7),!,"AUTH. NOT ADDED" Q | 
|---|
| 26 | . . S (DA,FBAAADA)=+Y | 
|---|
| 27 | . . ; edit remaining fields | 
|---|
| 28 | . . S DIE="^FBAAA("_DA(1)_",1," | 
|---|
| 29 | . . S DR=".04;.021" | 
|---|
| 30 | . . D ^DIE K DIE | 
|---|
| 31 | . . ; queue MRA | 
|---|
| 32 | . . S FBX=$$QMRA(DFN,FBAAADA,"A") | 
|---|
| 33 | . ; | 
|---|
| 34 | . ; unlock patient | 
|---|
| 35 | . L -^FBAAA(DFN,FBPROG) | 
|---|
| 36 | D WRAPUP | 
|---|
| 37 | Q | 
|---|
| 38 | ; | 
|---|
| 39 | CHANGE ; Change existing authorization | 
|---|
| 40 | ; Called from option FBSH CHANGE AUTH | 
|---|
| 41 | D SETUP | 
|---|
| 42 | I 'FBPOP F  D  Q:'$G(DFN) | 
|---|
| 43 | . ; select patient | 
|---|
| 44 | . D PAT Q:'$G(DFN) | 
|---|
| 45 | . ; select existing authorization | 
|---|
| 46 | . S FBPROG(0)=FBPROG | 
|---|
| 47 | . S FBPROG="I $P(^(0),U,3)=FBPROG(0)" | 
|---|
| 48 | . D GETAUTH^FBAAUTL1 S FBPROG=FBPROG(0) | 
|---|
| 49 | . I FTP'="" D | 
|---|
| 50 | . . S (DA,FBAAADA)=FTP,DA(1)=DFN | 
|---|
| 51 | . . I $P($G(FBDMRA),U) W $C(7),!,"AUTH IS AUSTIN DELETED. USE THE REINSTATE OPTION TO CHANGE IT." Q | 
|---|
| 52 | . . ; save current data | 
|---|
| 53 | . . S FBAOLD=$G(^FBAAA(DA(1),1,DA,0)),FBANEW="" | 
|---|
| 54 | . . S FBBEGDT=$P(FBAOLD,U),FBENDDT=$P(FBAOLD,U,2) | 
|---|
| 55 | . . ; display current data | 
|---|
| 56 | . . W !!,"FROM DATE: ",$$FMTE^XLFDT(FBBEGDT)," (No Editing)" | 
|---|
| 57 | . . ; edit TO DATE and check for conflicts | 
|---|
| 58 | . . D TDATE Q:FBENDDT="" | 
|---|
| 59 | . . ; update/edit fields | 
|---|
| 60 | . . S DIE="^FBAAA("_DA(1)_",1," | 
|---|
| 61 | . . S DR=".02////^S X=FBENDDT;100////^S X=DUZ;S FBTYPE=FBPROG;.07;.04;.021" | 
|---|
| 62 | . . D ^DIE K DIE | 
|---|
| 63 | . . ; if TO DATE or PURPOSE OF VISIT changed then queue MRA | 
|---|
| 64 | . . S FBANEW=$G(^FBAAA(DA(1),1,DA,0)) | 
|---|
| 65 | . . I $P(FBANEW,U,2)'=$P(FBAOLD,U,2)!($P(FBANEW,U,7)'=$P(FBAOLD,U,7)) D | 
|---|
| 66 | . . . ; queue MRA | 
|---|
| 67 | . . . S FBX=$$QMRA(DFN,FBAAADA,"C") | 
|---|
| 68 | . ; | 
|---|
| 69 | . ; unlock patient | 
|---|
| 70 | . L -^FBAAA(DFN,FBPROG) | 
|---|
| 71 | D WRAPUP | 
|---|
| 72 | Q | 
|---|
| 73 | ; | 
|---|
| 74 | DELETE ; Delete existing authorization | 
|---|
| 75 | ; Called from option FBSH DELETE AUTH | 
|---|
| 76 | D SETUP | 
|---|
| 77 | I 'FBPOP F  D  Q:'$G(DFN) | 
|---|
| 78 | . ; select patient | 
|---|
| 79 | . D PAT Q:'$G(DFN) | 
|---|
| 80 | . ; select existing authorization | 
|---|
| 81 | . S FBPROG(0)=FBPROG | 
|---|
| 82 | . S FBPROG="I $P(^(0),U,3)=FBPROG(0)" | 
|---|
| 83 | . D GETAUTH^FBAAUTL1 S FBPROG=FBPROG(0) | 
|---|
| 84 | . I FTP'="" D | 
|---|
| 85 | . . N FBY | 
|---|
| 86 | . . S (DA,FBAAADA)=FTP,DA(1)=DFN | 
|---|
| 87 | . . ; confirm | 
|---|
| 88 | . . S FBY=$G(^FBAAA(DFN,1,FTP,0)) | 
|---|
| 89 | . . S DIR(0)="Y",DIR("A")="OK to DELETE the "_$$FMTE^XLFDT($P(FBY,U),2)_"-"_$$FMTE^XLFDT($P(FBY,U,2),2)_" authorization" | 
|---|
| 90 | . . D ^DIR K DIR Q:'Y | 
|---|
| 91 | . . ; queue MRA, update ADEL node | 
|---|
| 92 | . . S FBX=$$QMRA(DFN,FBAAADA,"D") | 
|---|
| 93 | . . S $P(^FBAAA(DFN,1,FBAAADA,"ADEL"),U,1,2)="1^"_DT | 
|---|
| 94 | . ; | 
|---|
| 95 | . ; unlock patient | 
|---|
| 96 | . L -^FBAAA(DFN,FBPROG) | 
|---|
| 97 | D WRAPUP | 
|---|
| 98 | Q | 
|---|
| 99 | ; | 
|---|
| 100 | REINSTA ; Reinstate deleted authorization | 
|---|
| 101 | ; Called from option FBSH REINSTATE AUTH | 
|---|
| 102 | D SETUP | 
|---|
| 103 | I 'FBPOP F  D  Q:'$G(DFN) | 
|---|
| 104 | . ; select patient | 
|---|
| 105 | . D PAT Q:'$G(DFN) | 
|---|
| 106 | . ; select existing deleted authorization | 
|---|
| 107 | . S FBPROG(0)=FBPROG | 
|---|
| 108 | . S FBPROG="I $P(^(0),U,3)=FBPROG(0),$P($G(^(""ADEL"")),U)" | 
|---|
| 109 | . D GETAUTH^FBAAUTL1 S FBPROG=FBPROG(0) | 
|---|
| 110 | . I FTP'="" D | 
|---|
| 111 | . . S (DA,FBAAADA)=FTP,DA(1)=DFN | 
|---|
| 112 | . . ; confirm | 
|---|
| 113 | . . ; save current data | 
|---|
| 114 | . . S FBAOLD=$G(^FBAAA(DA(1),1,DA,0)),FBANEW="" | 
|---|
| 115 | . . S FBBEGDT=$P(FBAOLD,U),FBENDDT=$P(FBAOLD,U,2) | 
|---|
| 116 | . . ; display current data | 
|---|
| 117 | . . W !!,"FROM DATE: ",$$FMTE^XLFDT(FBBEGDT)," (No Editing)" | 
|---|
| 118 | . . ; edit TO DATE and check for conflicts | 
|---|
| 119 | . . D TDATE Q:FBENDDT="" | 
|---|
| 120 | . . ; update/edit fields | 
|---|
| 121 | . . S DIE="^FBAAA("_DA(1)_",1," | 
|---|
| 122 | . . S DR=".02////^S X=FBENDDT;100////^S X=DUZ;S FBTYPE=FBPROG;.07;.04;.021" | 
|---|
| 123 | . . D ^DIE K DIE | 
|---|
| 124 | . . ; queue MRA, clear ADEL node | 
|---|
| 125 | . . S FBX=$$QMRA(DFN,FBAAADA,"R") | 
|---|
| 126 | . . K ^FBAAA(DFN,1,FBAAADA,"ADEL") | 
|---|
| 127 | . ; | 
|---|
| 128 | . ; unlock patient | 
|---|
| 129 | . L -^FBAAA(DFN,FBPROG) | 
|---|
| 130 | D WRAPUP | 
|---|
| 131 | Q | 
|---|
| 132 | ; | 
|---|
| 133 | SETUP ; initial setup - returns FBPOP = 1 when problem | 
|---|
| 134 | D SITEP^FBAAUTL Q:FBPOP | 
|---|
| 135 | S FBAADDYS=+$P(FBSITE(0),"^",13),FBAAASKV=$P(FBSITE(1),"^",1) | 
|---|
| 136 | ; | 
|---|
| 137 | S FBPROG=$O(^FBAA(161.8,"B","STATE HOME",0)) | 
|---|
| 138 | I 'FBPROG D  Q | 
|---|
| 139 | . W $C(7) | 
|---|
| 140 | . W !,"ERROR. STATE HOME not found in FEE BASIS PROGRAM (#161.8) file." | 
|---|
| 141 | . W !,"Unable to process State Home authorization. Please contact IRM." | 
|---|
| 142 | . S FBPOP=1 | 
|---|
| 143 | Q | 
|---|
| 144 | ; | 
|---|
| 145 | PAT ; select patient | 
|---|
| 146 | ; returns DFN as patient ien (or undef if not selected) | 
|---|
| 147 | K DFN | 
|---|
| 148 | W ! S DIC="^DPT(",DIC(0)="QEAZM" D ^DIC Q:Y'>0  S DFN=+Y | 
|---|
| 149 | I $P($G(^DPT(DFN,.361)),"^")="" W !!,"ELIGIBILITY HAS NOT BEEN DETERMINED NOR PENDING, CANNOT ENTER AN AUTHORIZATION." G PAT | 
|---|
| 150 | I $P($G(^DPT(DFN,.32)),"^",4)=2 W !!?4,"VETERAN HAS A DISHONORABLE DISCHARGE, " S X=$P($G(^(.321)),"^") W $S(X="Y":"ONLY ELIGIBLE FOR AGENT ORANGE EXAM.",1:"NOT ELIGIBLE FOR BENEFITS.") | 
|---|
| 151 | I "N"[$E(X) W ! S DIR("A")="Do you want to continue",DIR(0)="Y",DIR("B")="No" D ^DIR K DIR G PAT:$S($D(DIRUT):1,'Y:1,1:0) | 
|---|
| 152 | ; if patient not in file #161 then add | 
|---|
| 153 | I '$D(^FBAAA(DFN,0)) D   I Y'>0 W $C(7),!,"ERROR ADDING TO #161" K DFN Q | 
|---|
| 154 | . S DA=DFN | 
|---|
| 155 | . L +^FBAAA(DA):5 I '$T S Y="" Q | 
|---|
| 156 | . K DD,DO S (X,DINUM)=DA | 
|---|
| 157 | . S DIC="^FBAAA(",DIC(0)="LM",DLAYGO=161 | 
|---|
| 158 | . D FILE^DICN K DIC,DINUM | 
|---|
| 159 | . L -^FBAAA(DFN) | 
|---|
| 160 | ; lock patient/program | 
|---|
| 161 | L +^FBAAA(DFN,FBPROG):5 I '$T D  G PAT | 
|---|
| 162 | . W $C(7),!,"ANOTHER USER IS EDITING THIS PATIENT & PROGRAM. PLEASE TRY AGAIN LATER." | 
|---|
| 163 | Q | 
|---|
| 164 | ; | 
|---|
| 165 | WRAPUP ; clean-up | 
|---|
| 166 | K DFN,FB,FBAAADA,FBAAASKV,FBAADDYS,FBANEW,FBAOLD,FBBEGDT | 
|---|
| 167 | K FBDMRA,FBENDDT,FBOPT,FBPOP,FBPROG,FBSITE,FTP,FBTYPE,FBX | 
|---|
| 168 | K DA,DIC,DIE,DIR,DIROUT,DIRUT,DR,DTOUT,DUOUT,X,Y | 
|---|
| 169 | Q | 
|---|
| 170 | ; | 
|---|
| 171 | BDATES ; get both from and to dates of new authorization | 
|---|
| 172 | ; input | 
|---|
| 173 | ;   DFN     patient ien in file 161 | 
|---|
| 174 | ;   FBPROG  program ien in file | 
|---|
| 175 | ; output | 
|---|
| 176 | ;   FBBEGDT From Date, FileMan format, null if dates not selected | 
|---|
| 177 | ;   FBENDDT To Date, FileMan format, null if dates not selected | 
|---|
| 178 | ; | 
|---|
| 179 | S %DT("A")="Enter FROM DATE: ",%DT="AEX" | 
|---|
| 180 | D ^%DT K %DT I Y'>0 S (FBBEGDT,FBENDDT)="" Q | 
|---|
| 181 | S FBBEGDT=Y | 
|---|
| 182 | ; | 
|---|
| 183 | S %DT("A")="Enter TO DATE: ",%DT="AEX",%DT(0)=FBBEGDT | 
|---|
| 184 | D ^%DT K %DT I Y'>0 S (FBBEGDT,FBENDDT)="" Q | 
|---|
| 185 | S FBENDDT=Y | 
|---|
| 186 | ; ensure dates do not conflict with existing authorization | 
|---|
| 187 | S FBX=$$CONFLICT(DFN,FBPROG,FBBEGDT,FBENDDT,1) | 
|---|
| 188 | I FBX D RCON(DFN,FBX) G BDATES | 
|---|
| 189 | Q | 
|---|
| 190 | ; | 
|---|
| 191 | TDATE ; get to date for existing authorization | 
|---|
| 192 | ; input | 
|---|
| 193 | ;   DFN     patient ien in file 161 | 
|---|
| 194 | ;   FBPROG  program ien in file | 
|---|
| 195 | ;   FBBEGDT From Date, FileMan format | 
|---|
| 196 | ;   FBENDDT (optional) current value of To Date | 
|---|
| 197 | ; output | 
|---|
| 198 | ;   FBENDDT To Date, FileMan format, null if date not selected | 
|---|
| 199 | ; | 
|---|
| 200 | S %DT("A")="Enter TO DATE: ",%DT="AEX",%DT(0)=FBBEGDT | 
|---|
| 201 | I $G(FBENDDT)]"" S %DT("B")=$$FMTE^XLFDT(FBENDDT) | 
|---|
| 202 | D ^%DT K %DT I Y'>0 S FBENDDT="" Q | 
|---|
| 203 | S FBENDDT=Y | 
|---|
| 204 | ; | 
|---|
| 205 | S FBX=$$CONFLICT(DFN,FBPROG,FBBEGDT,FBENDDT,0) | 
|---|
| 206 | I FBX D RCON(DFN,FBX) G TDATE | 
|---|
| 207 | Q | 
|---|
| 208 | ; | 
|---|
| 209 | CONFLICT(DFN,PRG,FDT,TDT,NEWAUT) ; check for conflict with existing auth. | 
|---|
| 210 | ; input | 
|---|
| 211 | ;   DFN     - patient ien | 
|---|
| 212 | ;   PRG     - program ien | 
|---|
| 213 | ;   FDT     - from date in fileman format | 
|---|
| 214 | ;   TDT     - to date in fileman format | 
|---|
| 215 | ;   NEWAUT  - optional flag, true if dates for a new authorization | 
|---|
| 216 | ; returns string with value = | 
|---|
| 217 | ;   list of authorization iens (delimited by ^) that conflict OR | 
|---|
| 218 | ;   null when no conflict found | 
|---|
| 219 | ; | 
|---|
| 220 | ; A conflict exists if | 
|---|
| 221 | ;   1) the from date of a new authorization has already been used as | 
|---|
| 222 | ;      the from date for an existing authorization (including deleted) | 
|---|
| 223 | ;      for the same FEE program. | 
|---|
| 224 | ;   OR | 
|---|
| 225 | ;   2) the date range (FROM-TO) of this authorization overlaps the | 
|---|
| 226 | ;      date range of a different, active (does not include deleted) | 
|---|
| 227 | ;      authorization for the same FEE program. Note that the from date | 
|---|
| 228 | ;      of one authorization can equal the to date of a different | 
|---|
| 229 | ;      authorization and would not be in conflict. | 
|---|
| 230 | ; | 
|---|
| 231 | N FBI,FBRET,FBY | 
|---|
| 232 | S FBRET="" | 
|---|
| 233 | ; loop thru authorizations | 
|---|
| 234 | S FBI=0 F  S FBI=$O(^FBAAA(DFN,1,FBI)) Q:'FBI  D | 
|---|
| 235 | . S FBY=$G(^FBAAA(DFN,1,FBI,0)) | 
|---|
| 236 | . Q:$P(FBY,U,3)'=PRG  ; not program of interest | 
|---|
| 237 | . Q:$P(FBY,U)=""!($P(FBY,U,2)="")  ; date missing - invalid | 
|---|
| 238 | . ; if same from date and not new then must be the selected auth. | 
|---|
| 239 | . ; and wouldn't conflict with self. if new then conflict found. | 
|---|
| 240 | . I $P(FBY,U)=FDT S:NEWAUT FBRET=FBRET_FBI_U Q  ; same from date | 
|---|
| 241 | . Q:$P($G(^FBAAA(DFN,1,FBI,"ADEL")),U)  ; austin deleted | 
|---|
| 242 | . I FDT<$P(FBY,U,2),TDT>$P(FBY,U) S FBRET=FBRET_FBI_U  ; conflict | 
|---|
| 243 | Q FBRET | 
|---|
| 244 | ; | 
|---|
| 245 | RCON(DFN,LIST) ; Report Conflicts | 
|---|
| 246 | N CNT,FBA,FBFD,FBI,FBIEN,FBP | 
|---|
| 247 | S CNT=$L(LIST,U)-1 | 
|---|
| 248 | W $C(7) | 
|---|
| 249 | W !!,"The specified dates conflict with other authorization(s)." | 
|---|
| 250 | W !,"Please specify different dates for this authorization or" | 
|---|
| 251 | W !,"remove the conflcit by first editing the other authorization(s)." | 
|---|
| 252 | W !!,"Conflict with  FROM DATE",?30,"TO DATE",?45,"PURPOSE OF VISIT" | 
|---|
| 253 | F FBP=1:1 S FBI=$P(LIST,U,FBP) Q:FBI=""  D | 
|---|
| 254 | . S FBFD=$P($G(^FBAAA(DFN,1,FBI,0)),U) | 
|---|
| 255 | . Q:FBFD="" | 
|---|
| 256 | . S FBA(FBFD)=FBI | 
|---|
| 257 | S FBFD="" F  S FBFD=$O(FBA(FBFD)) Q:FBFD=""  D | 
|---|
| 258 | . S FBI=FBA(FBFD) | 
|---|
| 259 | . S FBIEN=FBI_","_DFN_"," | 
|---|
| 260 | . W ! | 
|---|
| 261 | . I $P($G(^FBAAA(DFN,1,FBI,"ADEL")),U)]"" D | 
|---|
| 262 | . . W !,?2,"**Austin Deleted** - Use Reinstate to reuse this From Date" | 
|---|
| 263 | . W ?15,$$GET1^DIQ(161.01,FBIEN,.01) | 
|---|
| 264 | . W ?30,$$GET1^DIQ(161.01,FBIEN,.02) | 
|---|
| 265 | . W ?45,$$GET1^DIQ(161.01,FBIEN,.07) | 
|---|
| 266 | W ! | 
|---|
| 267 | Q | 
|---|
| 268 | ; | 
|---|
| 269 | QMRA(DFN,AUT,TYP) ; Queue MRA for transmission to Austin | 
|---|
| 270 | ; input | 
|---|
| 271 | ;   DFN - patient ien (file 2) | 
|---|
| 272 | ;   AUT - authorization ien (file 161.01) | 
|---|
| 273 | ;   TYP - type of MRA (A, C, D, or R) | 
|---|
| 274 | ; returns ien of MRA (file 161.26) | 
|---|
| 275 | N DD,DO,DIC,DLAYGO | 
|---|
| 276 | S DIC="^FBAA(161.26,",DIC(0)="L",DLAYGO=161.26,X=DFN | 
|---|
| 277 | S DIC("DR")="1///^S X=""P"";2///^S X=AUT;3///^S X=TYP" | 
|---|
| 278 | K DD,DO D FILE^DICN K DIC,DLAYGO | 
|---|
| 279 | Q +Y | 
|---|
| 280 | ; | 
|---|
| 281 | ;FBSHAUT | 
|---|