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
|
---|