| 1 | PRPFDR2 ;BAYPINES/MJE  VPFS DATA MIGRATION ROUTINE 2 ;05/15/03 | 
|---|
| 2 | ;;3.0;PATIENT FUNDS DIAG V5.9;**15**;JUNE 1, 1989 | 
|---|
| 3 | ;ENTRY AT LINETAG ONLY | 
|---|
| 4 | Q | 
|---|
| 5 | LEG ;ENTRY POINT FOR LEGACY SYSTEM | 
|---|
| 6 | D SETUP | 
|---|
| 7 | D SUM | 
|---|
| 8 | W ! | 
|---|
| 9 | W !,"NOTE: In addition to the summary report there is an available detail" | 
|---|
| 10 | W !,"report, this report can be sent to any device or flat file if required." | 
|---|
| 11 | W !,"" | 
|---|
| 12 | W !,">>>>> The detail diagnostic report will contain "_CNTERR(100)_" lines." | 
|---|
| 13 | W !,"" | 
|---|
| 14 | W !,"If you still desire the detail report, then please input the name of the" | 
|---|
| 15 | W !,"device that the report will be sent to." | 
|---|
| 16 | W !,"" | 
|---|
| 17 | W !,"If the detail report is not desired then input ""^"" at the device prompt and the detail report will not print." | 
|---|
| 18 | W !,"" | 
|---|
| 19 | D REP | 
|---|
| 20 | K ^TMP("PRPF_DIAGX") | 
|---|
| 21 | D KILLIT^PRPFDR4 | 
|---|
| 22 | Q | 
|---|
| 23 | REP S (PFX,PFY,PFZ,PFNAME)="" | 
|---|
| 24 | S %ZIS("B")="",%ZIS("HFSMODE")="W" D ^%ZIS K XION R X:2 | 
|---|
| 25 | I POP K ^TMP("PRPF_DIAGX") Q | 
|---|
| 26 | U IO | 
|---|
| 27 | D SUM | 
|---|
| 28 | F  S PFX=$O(^TMP("PRPF_DIAGX",$J,PFX)) Q:PFX=""  D | 
|---|
| 29 | .F  S PFY=$O(^TMP("PRPF_DIAGX",$J,PFX,PFY)) Q:PFY=""  D | 
|---|
| 30 | ..F  S PFZ=$O(^TMP("PRPF_DIAGX",$J,PFX,PFY,PFZ)) Q:PFZ=""  D | 
|---|
| 31 | ...S PFTEMP=^TMP("PRPF_DIAGX",$J,PFX,PFY,PFZ) | 
|---|
| 32 | ...W !,"STATION ID="_PFX_"^ERR#="_PFY_"^NAME="_PFZ_"^DESC="_$P(PFTEMP,"^",2)_"^VALUE=>"_$P(PFTEMP,"^",3)_"<" | 
|---|
| 33 | D ^%ZISC | 
|---|
| 34 | Q | 
|---|
| 35 | SUM W !,"**************************************************************************" | 
|---|
| 36 | W !,"**      Patient Funds Diagnostic Summary      (version 5.9)             **" | 
|---|
| 37 | W !,"**************************************************************************" | 
|---|
| 38 | D NOW^%DTC S Y=% D DD^%DT | 
|---|
| 39 | W !,"Run Date: "_$P(Y,"@",1)_"  Run Time: "_$P(Y,"@",2),?72,"**" | 
|---|
| 40 | W !,"Total accounts processed = "_CNTREC,?72,"**" | 
|---|
| 41 | W !,"Total balance of accounts for migration = $"_$FN(CNTBAL,",",2),?72,"**" | 
|---|
| 42 | W !,"**************************************************************************" | 
|---|
| 43 | W !,"Err#    Field           Error                                        Total" | 
|---|
| 44 | W !," #      Name            Description                                  Count" | 
|---|
| 45 | W !,"**************************************************************************" | 
|---|
| 46 | W !," #1     NAME            Name is blank",?72,CNTERR(1) | 
|---|
| 47 | W !," #2     NAME            Name contains invalid data",?72,CNTERR(2) | 
|---|
| 48 | W !," #3     SSN             SSN is blank",?72,CNTERR(3) | 
|---|
| 49 | W !," #4     SSN             SSN contains invalid data",?72,CNTERR(4) | 
|---|
| 50 | W !," #5     SSN             SSN contains duplicate value",?72,CNTERR(5) | 
|---|
| 51 | W !," #6     SSN             SSN contains Pseudo SSN value",?72,CNTRPSU | 
|---|
| 52 | W !," #7     DOB             DOB is blank",?72,CNTERR(7) | 
|---|
| 53 | W !," #8     DOB             DOB contains invalid date",?72,CNTERR(8) | 
|---|
| 54 | W !," #9     WARD            Ward loc invalid length",?72,CNTERR(9) | 
|---|
| 55 | W !," #10    CLAIM           Claim # contains invalid data",?72,CNTERR(10) | 
|---|
| 56 | W !," #11    ZIP             Zipcode contains invalid data",?72,CNTERR(11) | 
|---|
| 57 | W !," #12    REGION OFFICE   Regional Office ID invalid data",?72,CNTERR(12) | 
|---|
| 58 | W !," #13    ICN             ICN Duplicate",?72,CNTERR(13) | 
|---|
| 59 | W !," #14    ICN             ICN unassigned or invalid",?72,CNTERR(14) | 
|---|
| 60 | W !," #15    PROVIDER AUTHR  Provider Name contains invalid data",?72,CNTERR(15) | 
|---|
| 61 | W !,"*#16    PROVID AUTH DT  Date of current restriction invalid date",?72,CNTERR(16) | 
|---|
| 62 | W !,"*#17    NO DEMO RECORD  No demographic record for account",?72,CNTERR(17) | 
|---|
| 63 | W !,"*#18    ACCOUNT STATUS  Account status not (A),I,Blank="_PRPFBC18,?72,CNTERR(18) | 
|---|
| 64 | W !,"*#19    PATIENT TYPE    Patient type not L,R,(U),X,Blank="_PRPFBC19,?72,CNTERR(19) | 
|---|
| 65 | W !,"*#20    PAT TYPE/PHY    Patient type L or R without Phy name",?72,CNTERR(20) | 
|---|
| 66 | W !,"*#21    PATIENT STATUS  Patient Status not A,R,C,N,(X),Blank="_PRPFBC21,?72,CNTERR(21) | 
|---|
| 67 | W !,"*#22    INDIGENT        Indigent status not (N),Y,Blank="_PRPFBC22,?72,CNTERR(22) | 
|---|
| 68 | W !,"*#23    APPORTIONEE $   Apportionee amount invalid or < $0 or > $99,999",?72,CNTERR(23) | 
|---|
| 69 | W !,"*#24    GUARDIAN $      Guardian amount invalid or < $0 or > $99,999",?72,CNTERR(24) | 
|---|
| 70 | W !,"*#25    INSTITUT AWARD  Institut award invalid or < $0 or > $99,999",?72,CNTERR(25) | 
|---|
| 71 | W !,"*#26    OTHER ASSETS    Other assets invalid or < $0 or > $99,999",?72,CNTERR(26) | 
|---|
| 72 | W !,"*#27    STORED BALANCE  Stored balance invalid or < $0 or > $99,999",?72,CNTERR(27) | 
|---|
| 73 | W !,"*#28    STORED PRIVATE  Stored private invalid or < $0 or > $99,999",?72,CNTERR(28) | 
|---|
| 74 | W !,"*#29    STORED GRATUIT  Stored gratuitous invalid or < $0 or > $99,999",?72,CNTERR(29) | 
|---|
| 75 | W !,"*#30    RESTRCT MONTH   Restricted Monthly invalid or < $0 or > $99,999",?72,CNTERR(30) | 
|---|
| 76 | W !,"*#31    RESTRCT WEEKLY  Restricted Weekly invalid or < $0 or > $99,999",?72,CNTERR(31) | 
|---|
| 77 | W !,"*#32    RESTRCT AMT ER  Restrict Mnthly amount < (5X) weekly amt",?72,CNTERR(32) | 
|---|
| 78 | W !,"*#33    RESTRCT AMT ER  Restrict Mnthly amount < weekly amt",?72,CNTERR(33) | 
|---|
| 79 | W !,"*#34    MINIMUM BAL     Minimum balance #1 invalid or < $0 or > $99,999",?72,CNTERR(34) | 
|---|
| 80 | W !,"*#35    MAXIMUM BAL     Maximum balance #1 invalid or < $0 or > $99,999",?72,CNTERR(35) | 
|---|
| 81 | W !,"*#36    NO BALANCE REC  Balance record missing for account",?72,CNTERR(36) | 
|---|
| 82 | W !,"*#37    INCOME PAYEE    Income payee blank, Income source present",?72,CNTERR(37) | 
|---|
| 83 | W !,"*#38    INCOME AMOUNT   Income amount error, Income source present",?72,CNTERR(38) | 
|---|
| 84 | W !,"*#39    INCOME AMOUNT   Income amount < $1 or > $99,999",?72,CNTERR(39) | 
|---|
| 85 | W !,"*#40    INCOME FREQCY   Income frequency not D,W,M,Y,X,V,O,Blank="_PRPFBC40,?72,CNTERR(40) | 
|---|
| 86 | W !,"*#41    STATION ID      Station ID blank or unassigned",?72,CNTERR(41) | 
|---|
| 87 | W !," #42    STATION ID      Station ID invalid",?72,CNTERR(42) | 
|---|
| 88 | W !,"*#43    SUSPENSE DATE   Suspense date has invalid date",?72,CNTERR(43) | 
|---|
| 89 | W !,"*#44    SUSPENSE ID     Suspense ID has Invalid data",?72,CNTERR(44) | 
|---|
| 90 | W !,"*#45    SUSPENSE TEXT   Suspense text is < 1 or > 255 characters",?72,CNTERR(45) | 
|---|
| 91 | W !,"*#46    DEFERRED TRANS  There are "_PRPFDEFR_" deferred transactions",?72,PRPFDEFR | 
|---|
| 92 | W !,"*#47    TRANSACTION REC Transaction record missing, blank or ID invalid",?72,CNTERR(47) | 
|---|
| 93 | W !,"*#48    PATIENT NAME    Patient name does not match deferred trans",?72,CNTERR(48) | 
|---|
| 94 | W !,"*#49    PATIENT TRANS # Patient transaction # invalid",?72,CNTERR(49) | 
|---|
| 95 | W !,"*#50    DEFR AMOUNT     Deferred amount invalid",?72,CNTERR(50) | 
|---|
| 96 | W !,"*#51    TRANSACTN DATE  Transaction date Invalid",?72,CNTERR(51) | 
|---|
| 97 | W !,"*#52    DT TRAN ENTD    Date transaction entered Invalid",?72,CNTERR(52) | 
|---|
| 98 | W !,"*#53    REFERENCE       Reference Invalid < 1 or > 10 in length",?72,CNTERR(53) | 
|---|
| 99 | W !,"*#54    DEPOSIT/WTHDRWL Deposit/Withdrawal status Invalid",?72,CNTERR(54) | 
|---|
| 100 | W !,"*#55    CASH/CHECK/OTR  Cash/Check/Other status Invalid",?72,CNTERR(55) | 
|---|
| 101 | W !,"*#56    SOURCE          Transaction source invalid",?72,CNTERR(56) | 
|---|
| 102 | W !,"*#57    FORM            Form does not match",?72,CNTERR(57) | 
|---|
| 103 | W !,"*#58    PRVT SOURCE AMT Private source amount invalid or < 0 or > 99999",?72,CNTERR(58) | 
|---|
| 104 | W !,"*#59    GRATUITOUS AMT  Gratuitous amount invalid or < 0 or > 99999",?72,CNTERR(59) | 
|---|
| 105 | W !,"*#60    PFUNDS CLERK    PFunds clerk invalid",?72,CNTERR(60) | 
|---|
| 106 | W !,"**************************************************************************" | 
|---|
| 107 | Q | 
|---|
| 108 | SETUP ;SETUP PARAMS GET DATA | 
|---|
| 109 | K ^TMP("PRPF_DIAGX") | 
|---|
| 110 | S ^TMP("PRPF_DIAGX",$J,0)=DTIME_"^"_"DTIME"_"^"_"PRPF MIGRATION DIAGNOSTIC TEMP DATA" | 
|---|
| 111 | S (PRPFDEFR,PRPFBBAL,PRPFBDMO,PRPFHLD1,PRPFHLD2,PRPFHLD3,PRPFHLD4,CNTBAL,CNTREC,CNTRPSU,PFG,PFSTDBAL)=0 | 
|---|
| 112 | S (PRPFBC18,PRPFBC19,PRPFBC21,PRPFBC22,PRPFBC40)=0 | 
|---|
| 113 | F I=1:1:100 D | 
|---|
| 114 | .S CNTERR(I)=0 | 
|---|
| 115 | F  S PRPFHLD1=$O(^PRPF(470,PRPFHLD1)) Q:'PRPFHLD1  D | 
|---|
| 116 | .S PFG=PFG+1 I PFG=100 W "." S PFG=0 | 
|---|
| 117 | .S ND="" | 
|---|
| 118 | .S CNTREC=CNTREC+1 | 
|---|
| 119 | .D:$G(^PRPF(470,PRPFHLD1,0))'="" COMPU | 
|---|
| 120 | .I $D(^PRPF(470,PRPFHLD1,12)) I $G(^PRPF(470,PRPFHLD1,12))'="" D | 
|---|
| 121 | ..I $D(^DIC(4,^PRPF(470,PRPFHLD1,12),99)) I $P(^DIC(4,^PRPF(470,PRPFHLD1,12),99),"^",1)'="" D | 
|---|
| 122 | ...S PFSTAID=^PRPF(470,PRPFHLD1,12) | 
|---|
| 123 | ...D NODE12^PRPFDR1 | 
|---|
| 124 | ..I $D(^DIC(4,^PRPF(470,PRPFHLD1,12),99)) I $P(^DIC(4,^PRPF(470,PRPFHLD1,12),99),"^",1)="" D | 
|---|
| 125 | ...S PFSTAID="ERRBADID1" | 
|---|
| 126 | ...D NODE12^PRPFDR1 | 
|---|
| 127 | ..I '$D(^DIC(4,^PRPF(470,PRPFHLD1,12),99)) D | 
|---|
| 128 | ...S PFSTAID="ERRBADID" | 
|---|
| 129 | ...D NODE12^PRPFDR1 | 
|---|
| 130 | .I '$D(^PRPF(470,PRPFHLD1,12)) S PFSTAID="ERRNOID" D NODE12X^PRPFDR1 | 
|---|
| 131 | .I $D(^PRPF(470,PRPFHLD1,12)) I $G(^PRPF(470,PRPFHLD1,12))="" D | 
|---|
| 132 | ..S PFSTAID="ERRNOID1" | 
|---|
| 133 | ..D NODE12X^PRPFDR1 | 
|---|
| 134 | .D:$G(^PRPF(470,PRPFHLD1,0))'="" NODE0^PRPFDR5 | 
|---|
| 135 | .D:$G(^PRPF(470,PRPFHLD1,0))="" NODE0X^PRPFDR5 | 
|---|
| 136 | .D:$G(^PRPF(470,PRPFHLD1,1))'="" NODE1^PRPFDR4 | 
|---|
| 137 | .D:$G(^PRPF(470,PRPFHLD1,1))="" NODE1X^PRPFDR4 | 
|---|
| 138 | .D:$G(^PRPF(470,PRPFHLD1,2))'="" NODE2^PRPFDR4 | 
|---|
| 139 | .D:$O(^PRPF(470,PRPFHLD1,4,0))>0 NODE4^PRPFDR1 | 
|---|
| 140 | .D:$O(^PRPF(470,PRPFHLD1,5,0))>0 NODE5^PRPFDR1 | 
|---|
| 141 | .D:$O(^PRPF(470,PRPFHLD1,6,0))>0 NODE6^PRPFDR4 | 
|---|
| 142 | Q | 
|---|
| 143 | ;*************************************************************** | 
|---|
| 144 | COMPU ; SPECIFIC PATIENT INFO LOOKUP | 
|---|
| 145 | S PFNAME=$P($G(^DPT(PRPFHLD1,0)),"^",1) | 
|---|
| 146 | S PFSSN=$P($G(^DPT(PRPFHLD1,0)),"^",9) | 
|---|
| 147 | I PFNAME="" I PFSSN'="" S PFNAME="NAME-MISSING-SSN#"_PFSSN | 
|---|
| 148 | I PFNAME="" I PFSSN="" S PFNAME="NAME-MISSING-NO-SSN-IEN#"_PRPFHLD1 | 
|---|
| 149 | S PFDOB=$P($G(^DPT(PRPFHLD1,0)),"^",3) | 
|---|
| 150 | S PFWARD=$P($G(^DPT(PRPFHLD1,.1)),"^",1) | 
|---|
| 151 | S PFCLAIM=$P($G(^DPT(PRPFHLD1,.31)),"^",3) | 
|---|
| 152 | S PFADDR1=$P($G(^DPT(PRPFHLD1,.11)),"^",1) | 
|---|
| 153 | S PFADDR2=$P($G(^DPT(PRPFHLD1,.11)),"^",2) | 
|---|
| 154 | S PFADDR3=$P($G(^DPT(PRPFHLD1,.11)),"^",3) | 
|---|
| 155 | S PFCITY=$P($G(^DPT(PRPFHLD1,.11)),"^",4) | 
|---|
| 156 | S PFSTATE=$P($G(^DPT(PRPFHLD1,.11)),"^",5) | 
|---|
| 157 | S PFZIP=$P($G(^DPT(PRPFHLD1,.11)),"^",6) | 
|---|
| 158 | S PFSITE=$P($$SITE^VASITE(),"^",3) | 
|---|
| 159 | S:PFSITE="" PFSITE="###" | 
|---|
| 160 | S PFAUTH=$P(^PRPF(470,PRPFHLD1,0),"^",13) | 
|---|
| 161 | Q | 
|---|