| 1 | IBCNSMR7 ;ALB/TJK - MRA EXTRACT ;2/20/01  9:55 AM ;2/14/01  10:25 AM | 
|---|
| 2 | ;;2.0;INTEGRATED BILLING;**146**;21-MAR-94 | 
|---|
| 3 | ;Compiles MRA Extract data | 
|---|
| 4 | DQ ; -- entry point from task manager | 
|---|
| 5 | N IBINSCO,DFN,DATACNT,SSN,PATNM,DOB,DIQ,DA,DIC,DR,ININSCON,INS,IBTR | 
|---|
| 6 | N IBINSCON,Y2 K ^TMP("IBCNSMR7",$J) | 
|---|
| 7 | ;Loop through list of insurance companies involved | 
|---|
| 8 | S IBINSCO=0 | 
|---|
| 9 | F  S IBINSCO=$O(^IBE(350.9,1,99,"B",IBINSCO)) Q:'IBINSCO  D | 
|---|
| 10 | .S DIC=36,DA=IBINSCO,DR=.01,DIQ="INS(" D EN^DIQ1 | 
|---|
| 11 | .S IBINSCON=INS(36,IBINSCO,.01) K INS | 
|---|
| 12 | .;Get subscribers for insurance company | 
|---|
| 13 | .S DFN=0 F  S DFN=$O(^DPT("AB",IBINSCO,DFN)) Q:'DFN  D | 
|---|
| 14 | ..; Gather patient infor | 
|---|
| 15 | ..D ^VADPT S PATNM=VADM(1),SSN=+VADM(2),DOB=$P(VADM(3),"^") | 
|---|
| 16 | ..K VADM | 
|---|
| 17 | ..N IBN,IBX,IBCNT,IBFLG,Y,Y1,CHG,TCHG,ARBILL,EVDATE,PAREVENT,NEV | 
|---|
| 18 | ..N IBCHDT | 
|---|
| 19 | ..S NEV="" F  S NEV=$O(^IB("AFDT",DFN,NEV)) Q:'NEV  I -NEV'>IBAEND S PAREVENT=0 F  S PAREVENT=$O(^IB("AFDT",DFN,NEV,PAREVENT)) Q:'PAREVENT  D | 
|---|
| 20 | ...S (TCHG,IBN,IBFLG,IBCNT,ARBILL)=0,EVDATE=-NEV | 
|---|
| 21 | ...S IBN=0 F  S IBN=$O(^IB("AF",PAREVENT,IBN)) Q:'IBN  D | 
|---|
| 22 | ....Q:'$D(^IB(IBN,0))  S IBX=^(0) | 
|---|
| 23 | ....Q:$P(IBX,"^",8)["ADMISSION" | 
|---|
| 24 | ....Q:$P(IBX,"^",10) | 
|---|
| 25 | ....Q:$P(IBX,"^",11)="" | 
|---|
| 26 | ....Q:$P(IBX,"^",17)<IBABEG | 
|---|
| 27 | ....N DIC,Y | 
|---|
| 28 | ....S DIC=430,X=$P(IBX,"^",11),DIC(0)="MZ" D ^DIC Q:'Y | 
|---|
| 29 | ....I ($P(Y(0),U,8)=39)!($P(Y(0),U,8)=26) Q | 
|---|
| 30 | ....S ARBILL=+Y | 
|---|
| 31 | ....Q:$D(^TMP("IBCNSMR7",$J,"BILL",ARBILL)) | 
|---|
| 32 | ....S (Y,Y2)=0 | 
|---|
| 33 | ....;check for valid insurance | 
|---|
| 34 | ....F  S Y=$O(^DPT(DFN,.312,"B",IBINSCO,Y)) Q:'Y  S Y1=$G(^DPT(DFN,.312,Y,0)),Y2=$$CHK^IBCNS1(Y1,EVDATE,2) Q:Y2 | 
|---|
| 35 | ....Q:'Y2 | 
|---|
| 36 | ....D TRANS | 
|---|
| 37 | ....Q | 
|---|
| 38 | ...Q | 
|---|
| 39 | ..Q | 
|---|
| 40 | .Q | 
|---|
| 41 | ;calls IBCSNMR8 to make .dat file and send completion message to user | 
|---|
| 42 | K ^TMP("IBCNSMR7",$J,"BILL") D ^IBCNSMR8 | 
|---|
| 43 | END K ^TMP("IBCNSMR7",$J) | 
|---|
| 44 | Q | 
|---|
| 45 | TRANS ; | 
|---|
| 46 | N T1,T0,TRAN,TDATA,TTYPE,TAMT,TCNT,IBCHDT,PAYM,DATA,EVNO,TOTP,PDATE | 
|---|
| 47 | S (TRAN,TOTP)=0 | 
|---|
| 48 | F  S TRAN=$O(^PRCA(433,"C",ARBILL,TRAN)) Q:'TRAN  D | 
|---|
| 49 | .S (IBCHDT,PDATE)=0 | 
|---|
| 50 | .S T0=$G(^PRCA(433,TRAN,0)),T1=$G(^(1)) | 
|---|
| 51 | .Q:$P(T0,"^",4)'=2 | 
|---|
| 52 | .S TTYPE=$P(T1,"^",2) | 
|---|
| 53 | .S TAMT=$P(T1,"^",5) | 
|---|
| 54 | .I (TTYPE=2)!(TTYPE=34) S TOTP=TOTP+TAMT,PDATE=+T1 | 
|---|
| 55 | .S EVNO=$O(^IB("AT",TRAN,0)) S:'EVNO IBX="" | 
|---|
| 56 | .I EVNO D | 
|---|
| 57 | ..S IBX=$G(^IB(EVNO,0)) | 
|---|
| 58 | ..S IBCHDT=$P(IBX,"^",17),IBX=$P(IBX,"^") | 
|---|
| 59 | ..Q | 
|---|
| 60 | .I 'IBCHDT S IBCHDT=+T1 | 
|---|
| 61 | .;sets data in global ^TMP("IBCNSMR7",$J,"DATA") | 
|---|
| 62 | .S DATACNT=$G(DATACNT)+1 | 
|---|
| 63 | .S DATA=SITE_TRAN_"^"_PATNM_"^"_SSN_"^"_IBINSCON_"^"_$$DTCONV(IBCHDT) | 
|---|
| 64 | .S DATA=DATA_"^"_$J(TAMT,0,2)_"^"_$S(PDATE:$$DTCONV(PDATE),1:"") | 
|---|
| 65 | .S DATA=DATA_"^"_$S(PDATE:$J(TAMT,0,2),1:"")_"^"_$$DTCONV(DOB)_"^"_SITE | 
|---|
| 66 | .S DATA=DATA_"^"_$P(^PRCA(430,ARBILL,0),"^")_"^"_IBX | 
|---|
| 67 | .S DATA=DATA_"^"_$P(^PRCA(430.3,TTYPE,0),"^")_"^" | 
|---|
| 68 | .I '$O(^PRCA(433,"C",ARBILL,TRAN)) S DATA=DATA_$J(TOTP,0,2) | 
|---|
| 69 | .S ^TMP("IBCNSMR7",$J,"DATA",DATACNT)=DATA | 
|---|
| 70 | .Q | 
|---|
| 71 | S ^TMP("IBCNSMR7",$J,"BILL",ARBILL)="" | 
|---|
| 72 | Q | 
|---|
| 73 | DTCONV(DATE)    ;Converts dates from Fileman to Oracle format | 
|---|
| 74 | N MON | 
|---|
| 75 | S MON=+$E(DATE,4,5),MON=$S(MON=1:"JAN",MON=2:"FEB",MON=3:"MAR",MON=4:"APR",MON=5:"MAY",MON=6:"JUN",MON=7:"JUL",MON=8:"AUG",MON=9:"SEP",MON=10:"OCT",MON=11:"NOV",1:"DEC") | 
|---|
| 76 | S DATE=$E(DATE,6,7)_"-"_MON_"-"_($E(DATE,1,3)+1700) | 
|---|
| 77 | Q DATE | 
|---|