| 1 | SD53430P ;WOIFO/CLC - PFSS Scheduled Outpatient Conversion Backload ;22-APR-2005 | 
|---|
| 2 | ;;5.3;Scheduling;**430**;Aug 13, 1993 | 
|---|
| 3 | D HDR | 
|---|
| 4 | Q | 
|---|
| 5 | ; | 
|---|
| 6 | PRECHK ; | 
|---|
| 7 | N VCNT | 
|---|
| 8 | D HDR W !!,"Pre-Backload Analysis - Outpatient future appointments." | 
|---|
| 9 | S VCNT=$$FUTRAPP(0) | 
|---|
| 10 | I VCNT<0 W !,"Analysis exited without processing..." Q | 
|---|
| 11 | W !!,VCNT," Outpatient future appointments identified in VistA..." | 
|---|
| 12 | W !!,"Analysis complete...." | 
|---|
| 13 | Q | 
|---|
| 14 | FUTRAPP(CMP) ; | 
|---|
| 15 | N I,DFN,APP,STDT,DT,APPINFO | 
|---|
| 16 | S (DFN,APP)=0 | 
|---|
| 17 | S STDT=$$GETRESP($$NOW^XLFDT(),"Future Appointment search start date") I STDT="" S APP=-1 G OFAQ | 
|---|
| 18 | W !,"Checking VistA future appointments ",STDT," forward..." | 
|---|
| 19 | F I=1:1 S DFN=$O(^DPT(DFN)) Q:+DFN<1  D | 
|---|
| 20 | .I I#10000=0 W "." | 
|---|
| 21 | .S DT=STDT | 
|---|
| 22 | .F  S DT=$O(^DPT(DFN,"S",DT)) Q:+DT<1  D | 
|---|
| 23 | ..S APPINFO=$G(^DPT(DFN,"S",DT,0)) | 
|---|
| 24 | ..I APPINFO="" W !,"Invalid Patient Appointment Node:",DFN,"-",DT Q | 
|---|
| 25 | ..I $P(APPINFO,"^",2)="" D | 
|---|
| 26 | ...S APP=APP+1 | 
|---|
| 27 | ...I CMP I $G(^TMP($J,"OFA",DFN))="" S EXC(DFN_"^"_DT)=^DPT(DFN,0) | 
|---|
| 28 | OFAQ Q APP | 
|---|
| 29 | POSTCHK ; | 
|---|
| 30 | N PATH,FILENM,LN,TMP,I,DFN,BLCNT,EXC,VCNT | 
|---|
| 31 | D HDR W !!,"Post-Backload Analysis - Outpatient future appointments." | 
|---|
| 32 | S FILENM="SDCONV_ACCT.TXT",BLCNT=0,PATH=$$PWD^%ZISH() | 
|---|
| 33 | S PATH=$$GETRESP(PATH,"Select Backload Path") Q:PATH="" | 
|---|
| 34 | I '$$LISTF(PATH) S FILENM="" | 
|---|
| 35 | S FILENM=$$GETRESP(FILENM,"Select Backload File") Q:FILENM="" | 
|---|
| 36 | ; | 
|---|
| 37 | K ^TMP($J,"OFA") | 
|---|
| 38 | D OPEN^%ZISH("SD",PATH,FILENM,"R") | 
|---|
| 39 | F  U IO R LN:1 Q:LN']""  S ^TMP($J,"OFA",$P(LN,"^"))=LN,BLCNT=BLCNT+1 | 
|---|
| 40 | D CLOSE^%ZISH(IO) | 
|---|
| 41 | ; | 
|---|
| 42 | W !!,"File: ",FILENM," contains: ",BLCNT," records." | 
|---|
| 43 | S VCNT=$$FUTRAPP(1) | 
|---|
| 44 | W !!,VCNT," Outpatient future appointments identified in VistA..." | 
|---|
| 45 | ; | 
|---|
| 46 | W !,"   VistA Total:",$J(VCNT,10) | 
|---|
| 47 | W !,"Backload Total:",$J(BLCNT,10) | 
|---|
| 48 | W !,"==================================" | 
|---|
| 49 | W !,"               ",$J(VCNT-BLCNT,10) | 
|---|
| 50 | ; | 
|---|
| 51 | I '$D(EXC) W !,"No Discrepencies between VistA and the Backload file" Q | 
|---|
| 52 | W !!,"Missing patients from backload file:",! | 
|---|
| 53 | S DFN=0 | 
|---|
| 54 | F I=1:1 S DFN=$O(EXC(DFN)) Q:DFN=""  W !,I,") ",DFN,"^",EXC(DFN) | 
|---|
| 55 | W !!,"Post analysis complete...." | 
|---|
| 56 | K ^TMP($J,"OFA") | 
|---|
| 57 | Q | 
|---|
| 58 | EP1 ; | 
|---|
| 59 | N CNT,GOOD,ERR,SDKEY,ANS,PATH,Y,FN,GFILE,RFILE,FILENM | 
|---|
| 60 | S SDKEY="SDCONV_ACCT.TXT",FILENM=SDKEY | 
|---|
| 61 | S PATH=$$PWD^%ZISH(),(CNT,GOOD)=0 | 
|---|
| 62 | D HDR | 
|---|
| 63 | S PATH=$$GETRESP(PATH,"Select Backload Path") Q:PATH="" | 
|---|
| 64 | ; | 
|---|
| 65 | I '$$LISTF(PATH) S FILENM="" | 
|---|
| 66 | S FILENM=$$GETRESP(FILENM,"Select Backload File") Q:FILENM="" | 
|---|
| 67 | S CNT=$$LOADFILE(PATH,FILENM) | 
|---|
| 68 | ; | 
|---|
| 69 | I CNT>0 S GOOD=$$PROCESS(CNT) | 
|---|
| 70 | D RPTERR(CNT,GOOD,PATH_FILENM) | 
|---|
| 71 | W !!,"Finished.... Mailman message sent to:",$$GET1^DIQ(200,DUZ,.01)," and G.PATCHES" | 
|---|
| 72 | Q | 
|---|
| 73 | LISTF(PATH) ; | 
|---|
| 74 | N GFILE,Y,RFILE,FN | 
|---|
| 75 | S GFILE("SD*.TXT")="" | 
|---|
| 76 | S Y=$$LIST^%ZISH(PATH,"GFILE","RFILE") | 
|---|
| 77 | W !!,"SD*.TXT Files in ",PATH,!,"==================================" | 
|---|
| 78 | I Y=1 S FN="" F  S FN=$O(RFILE(FN))  Q:FN=""  W !,?10,FN | 
|---|
| 79 | I Y=0 W !!,?10,"** No files matching the SD*.TXT filter exists **" | 
|---|
| 80 | Q Y | 
|---|
| 81 | HDR ; | 
|---|
| 82 | D HOME^%ZIS  W @IOF | 
|---|
| 83 | W !!,"===========================================================" | 
|---|
| 84 | W !,"Scheduled Outpatient Conversion Backload",! | 
|---|
| 85 | W !,"    **********************************************************" | 
|---|
| 86 | W !,"    * This Routine should ONLY be run by PFSS Implementation *" | 
|---|
| 87 | W !,"    * Staff.  DO NOT run this routine as part of the normal  *" | 
|---|
| 88 | W !,"    * Patch installation process.                            *" | 
|---|
| 89 | W !,"    **********************************************************" | 
|---|
| 90 | W !!,"===========================================================" | 
|---|
| 91 | Q | 
|---|
| 92 | GETRESP(DEF,TXT) ; | 
|---|
| 93 | N DIR,DIRUT,DTOUT,X,Y | 
|---|
| 94 | S DIR(0)="Fr",DIR("A")=TXT,DIR("B")=DEF D ^DIR | 
|---|
| 95 | I $D(DIRUT)!$D(DTOUT) S Y="" | 
|---|
| 96 | Q Y | 
|---|
| 97 | RPTERR(CNT,GOOD,FULLPATH) ; | 
|---|
| 98 | N REC,CAT,ROW,ERR,ET,DETAIL | 
|---|
| 99 | N XMDF,XMDUZ,XMSUB,XMDUN,XMTEXT,XMSTRIP,XMROU,XMY,XMZ,XMMG | 
|---|
| 100 | S XMDF="",XMDUZ="SD53430P-"_$TR($P($$SITE^VASITE(),"^",2,3),"^","-") | 
|---|
| 101 | S XMY(DUZ)="",XMY("G.PATCHES")="" | 
|---|
| 102 | S XMSUB="PFSS Scheduled Outpatient Conversion" | 
|---|
| 103 | D XMZ^XMA2                                 ; Call Create Message Module | 
|---|
| 104 | I XMZ<1 D  Q | 
|---|
| 105 | .W !!,"** UNABLE TO CREATE MAILMAN MESSAGE PLEASE CHECK XTMP FOR DETAILS!" | 
|---|
| 106 | ; | 
|---|
| 107 | S ^XMB(3.9,XMZ,2,1,0)="Scheduled OutPatient Conversion Backload" | 
|---|
| 108 | S ^XMB(3.9,XMZ,2,2,0)="             File: "_FULLPATH | 
|---|
| 109 | S ^XMB(3.9,XMZ,2,3,0)="           Run By: "_$$GET1^DIQ(200,DUZ,.01) | 
|---|
| 110 | S ^XMB(3.9,XMZ,2,4,0)="" | 
|---|
| 111 | S ^XMB(3.9,XMZ,2,5,0)="Sucessful Records: "_GOOD | 
|---|
| 112 | S ^XMB(3.9,XMZ,2,7,0)="                 ----------------------" | 
|---|
| 113 | S ^XMB(3.9,XMZ,2,8,0)="  Total Processed: "_CNT | 
|---|
| 114 | S ^XMB(3.9,XMZ,2,9,0)="===============================================" | 
|---|
| 115 | ; | 
|---|
| 116 | S REC="",ROW=9,ERR=0 | 
|---|
| 117 | F  S REC=$O(^XTMP(SDKEY,"ERR",REC)) Q:REC=""  D | 
|---|
| 118 | .S ERR=ERR+1,ROW=ROW+1 | 
|---|
| 119 | .S ^XMB(3.9,XMZ,2,ROW,0)="Record: "_REC_"     ----------------------" | 
|---|
| 120 | .S CAT="" | 
|---|
| 121 | .F  S CAT=$O(^XTMP(SDKEY,"ERR",REC,CAT)) Q:CAT=""  D | 
|---|
| 122 | ..S ROW=ROW+1,^XMB(3.9,XMZ,2,ROW,0)="   "_CAT | 
|---|
| 123 | ..S ET="" | 
|---|
| 124 | ..F  S ET=$O(^XTMP(SDKEY,"ERR",REC,CAT,ET)) Q:ET=""  D | 
|---|
| 125 | ...S ROW=ROW+1 | 
|---|
| 126 | ...S ^XMB(3.9,XMZ,2,ROW,0)="        "_^XTMP(SDKEY,"ERR",REC,CAT,ET) | 
|---|
| 127 | ; | 
|---|
| 128 | S ^XMB(3.9,XMZ,2,6,0)="    Error Records: "_ERR | 
|---|
| 129 | I ROW=9 S ROW=10,^XMB(3.9,XMZ,2,ROW,0)="Sucessful Backload..... No ERRORS found..." | 
|---|
| 130 | ; | 
|---|
| 131 | S ^XMB(3.9,XMZ,2,0)="^3.92^"_ROW_"^"_ROW_"^"_$$NOW^XLFDT() | 
|---|
| 132 | D ENT1^XMD                                                 ;Deliver MSG | 
|---|
| 133 | K ^XTMP(SDKEY) | 
|---|
| 134 | Q | 
|---|
| 135 | LOADFILE(PATH,FILENM) ; | 
|---|
| 136 | N POP,NOW,PURGDT,STOP,TOT,LN | 
|---|
| 137 | W !,"Loading backload file..." | 
|---|
| 138 | K ^XTMP(SDKEY) | 
|---|
| 139 | S NOW=$$NOW^XLFDT(),PURGDT=NOW+2,TOT=0             ;Purge 2 days later | 
|---|
| 140 | S ^XTMP(SDKEY,0)=PURGDT_"^"_NOW_"^PFSS Scheduled Outpatient Back Load" | 
|---|
| 141 | ; | 
|---|
| 142 | D OPEN^%ZISH("SD",PATH,FILENM,"R") | 
|---|
| 143 | I $G(POP) S ^XTMP(SDKEY,"ERR",0,"FATAL",1)="Could NOT PROCESS File!" | 
|---|
| 144 | ; | 
|---|
| 145 | S (STOP,TOT)=0 | 
|---|
| 146 | F  U IO R LN:1 Q:LN']""  Q:$$STATUS^%ZISH  Q:STOP  D | 
|---|
| 147 | .I $G(LN)="" S STOP=1 Q | 
|---|
| 148 | .S TOT=TOT+1,^XTMP(SDKEY,"DAT",TOT)=LN I TOT#1000=0 U 0 W "." | 
|---|
| 149 | ; | 
|---|
| 150 | D CLOSE^%ZISH(IO) | 
|---|
| 151 | LFQ Q TOT | 
|---|
| 152 | ; | 
|---|
| 153 | PROCESS(TOT) ; | 
|---|
| 154 | N CNT,INFO,DFN,SDT,SDCLN,SDEXVN,SDANR,SDCHK,GOOD | 
|---|
| 155 | W !,"Processing data..." | 
|---|
| 156 | S GOOD=0 | 
|---|
| 157 | F CNT=1:1:TOT D | 
|---|
| 158 | .I CNT#1000=0 W "." | 
|---|
| 159 | .S INFO=^XTMP(SDKEY,"DAT",CNT) | 
|---|
| 160 | .S DFN=$P(INFO,"^",1),SDT=$P(INFO,"^",18) | 
|---|
| 161 | .S SDCLN=$P(INFO,"^",8),SDEXVN=$TR($P(INFO,"^",21)," ","") | 
|---|
| 162 | .; | 
|---|
| 163 | .Q:$$CHKINFO(CNT,DFN,SDT,SDCLN,SDEXVN) | 
|---|
| 164 | .S SDANR=$$GETARN^SDPFSS2(SDT,DFN,SDCLN) | 
|---|
| 165 | .I +SDANR>0 D  Q | 
|---|
| 166 | ..I $$EXTNUM^IBBAPI(DFN,SDANR)'=SDEXVN D  Q | 
|---|
| 167 | ...S ^XTMP(SDKEY,"ERR",CNT,"ACCT",1)="Visit Number Discrepancy: "_INFO_" NOT EQUAL: "_SDANR | 
|---|
| 168 | ..S GOOD=GOOD+1 | 
|---|
| 169 | .; | 
|---|
| 170 | .S SDANR=$$IBBACONV^IBBAADTI(DFN,"O",SDT,SDCLN,SDEXVN) | 
|---|
| 171 | .I SDANR="" S ^XTMP(SDKEY,"ERR",CNT,"ACCT",2)="PFSS Account Reference NOT Created" Q | 
|---|
| 172 | .; | 
|---|
| 173 | .S SDCHK=$$FILE^SDPFSS(DFN,SDT,SDCLN,SDANR) | 
|---|
| 174 | .I +SDCHK<0 D | 
|---|
| 175 | ..S ^XTMP(SDKEY,"ERR",CNT,"APPT LINK",1)="Unable to update file 409.55" | 
|---|
| 176 | ..S ^XTMP(SDKEY,"ERR",CNT,"APPT LINK",2)=SDCHK | 
|---|
| 177 | .I SDCHK="" S ^XTMP(SDKEY,"ERR",CNT,"APPT LINK",3)="Link Already Exists:"_INFO | 
|---|
| 178 | .I +SDCHK=1 S GOOD=GOOD+1 | 
|---|
| 179 | Q GOOD | 
|---|
| 180 | CHKINFO(CNT,DFN,SDT,SDCLN,SDEXVN) ; | 
|---|
| 181 | I SDEXVN="" S ^XTMP(SDKEY,"ERR",CNT,"IDX",1)="NO IDX Vist Number:"_INFO | 
|---|
| 182 | ; | 
|---|
| 183 | I +DFN=0 S ^XTMP(SDKEY,"ERR",CNT,"PATIENT",1)="DFN Invalid or Missing" | 
|---|
| 184 | I +DFN>0 D | 
|---|
| 185 | .I $G(^DPT(DFN,0))="" S ^XTMP(SDKEY,"ERR",CNT,"PATIENT",2)="Invalid Patient: "_DFN | 
|---|
| 186 | ; | 
|---|
| 187 | I +SDT=0 S ^XTMP(SDKEY,"ERR",CNT,"APPT DT/TIME",1)="Appointment Date/Time Invalid or Missing" | 
|---|
| 188 | ; | 
|---|
| 189 | I +SDCLN=0 S ^XTMP(SDKEY,"ERR",CNT,"LOCATION",1)="Location Invalid or Missing" | 
|---|
| 190 | I +SDCLN>0 D | 
|---|
| 191 | .I $G(^SC(SDCLN,0))="" S ^XTMP(SDKEY,"ERR",CNT,"LOCATION",2)="Invalid Location:"_SDCLN | 
|---|
| 192 | Q $D(^XTMP(SDKEY,"ERR",CNT)) | 
|---|
| 193 | ; | 
|---|