1 | IBECUS21 ;RLM/DVAMC - FILE TRICARE PHARMACY TRANSACTIONS ; 14-AUG-96
|
---|
2 | ;;2.0;INTEGRATED BILLING;**52,240,274**;21-MAR-94
|
---|
3 | ;
|
---|
4 | TRAN ; File a Pharmacy Billing transaction in file #351.5.
|
---|
5 | ; Input: DFN -- Pointer to the patient in file #2
|
---|
6 | ; IBLINE -- Array of data transmitted to the FI
|
---|
7 | ; IBRESP -- Array of data received from the FI
|
---|
8 | ; IBKEY -- 1 ; 2, where
|
---|
9 | ; 1 = Pointer to the prescription in file #52
|
---|
10 | ; 2 = Pointer to the refill in file #52.1, or
|
---|
11 | ; 0 for the original fill
|
---|
12 | ; IBKEYD -- 1 ^ 2 ^ 3 ^ 4, where
|
---|
13 | ; 1 = Rx label printing device
|
---|
14 | ; 2 = Pointer to the Pharmacy in file #59
|
---|
15 | ; 3 = Pointer to the Pharmacy user in file #200
|
---|
16 | ; 4 = Pointer to the billing transaction
|
---|
17 | ; in file #351.5 (cancellations only)
|
---|
18 | ;
|
---|
19 | ; - don't process duplicate transactions
|
---|
20 | I $E(IBRESP(1),17)="D" Q
|
---|
21 | ;
|
---|
22 | ; - find transaction entry or create a new one
|
---|
23 | S IBCHTRN=$O(^IBA(351.5,"B",IBKEY,0))
|
---|
24 | I 'IBCHTRN D
|
---|
25 | .S I=$P(^IBA(351.5,0),"^",3)
|
---|
26 | .F S I=I+1 L +^IBA(351.5,I):1 Q:$T&'$D(^IBA(351.5,I)) L -^IBA(351.5,I)
|
---|
27 | .S ^IBA(351.5,I,0)=IBKEY,^IBA(351.5,"B",IBKEY,I)=""
|
---|
28 | .S ^IBA(351.5,0)=$P(^IBA(351.5,0),"^",1,2)_"^"_I_"^"_($P(^IBA(351.5,0),"^",4)+1)
|
---|
29 | .S IBCHTRN=I L -^IBA(351.5,IBCHTRN)
|
---|
30 | ;
|
---|
31 | ; - prepare i/o for filing
|
---|
32 | S IBPROC("I")="" F IBI=1:1:2 S IBPROC("I")=IBPROC("I")_$G(IBRESP(IBI))
|
---|
33 | S IBPROC("O")="" F IBI=1:1:5 S IBPROC("O")=IBPROC("O")_$G(IBLINE(IBI))
|
---|
34 | S IBPROC("O")=$E(IBPROC("O"),3,999)
|
---|
35 | ;
|
---|
36 | ; - file transaction data
|
---|
37 | S $P(^IBA(351.5,IBCHTRN,0),"^",2,6)=DFN_"^"_$P(IBCDFND,"^",2)_"^"_$TR(IBDRX("NDC"),"-","")_"^"_$J((+IBUAC/100),0,2)_"^"_IBDRX("QTY")
|
---|
38 | F IBI=1:1 S IBTABLE=$T(TABLE+IBI) Q:$P(IBTABLE,";",3)="$END" D
|
---|
39 | .Q:$P(IBTABLE,";",4)<2
|
---|
40 | .;
|
---|
41 | .; - file only the 0th node for rejects
|
---|
42 | .I $E(IBRESP(1),17)="R",$P(IBTABLE,";",4)>1 Q
|
---|
43 | .;
|
---|
44 | .S X="" I $P(IBTABLE,";",6)'?1.N X $P(IBTABLE,";",6)
|
---|
45 | .I X="" S X=$E(IBPROC($P(IBTABLE,";",3)),$P(IBTABLE,";",6),$P(IBTABLE,";",7))
|
---|
46 | .I $P(IBTABLE,";",2)["D" Q:'X D DOLLAR
|
---|
47 | .;
|
---|
48 | .; - file each field individually
|
---|
49 | .I X]"" S $P(^IBA(351.5,IBCHTRN,$P(IBTABLE,";",4)),"^",$P(IBTABLE,";",5))=X
|
---|
50 | ;
|
---|
51 | ; - delete cancellation authorization number
|
---|
52 | S $P(^IBA(351.5,IBCHTRN,6),"^")=""
|
---|
53 | ;
|
---|
54 | ; - handle rejects, update transaction date and cross reference
|
---|
55 | D REJECT
|
---|
56 | N DIQUIET S DIQUIET=1 D DT^DICRW S $P(^IBA(351.5,IBCHTRN,0),U,7)=DT
|
---|
57 | S DA=IBCHTRN,DIK="^IBA(351.5," D IX^DIK
|
---|
58 | Q
|
---|
59 | ;
|
---|
60 | ;
|
---|
61 | DOLLAR ; Convert cents to dollars.
|
---|
62 | S X=$E(X,1,($L(X)-2))_"."_$E(X,($L(X)-1),$L(X))
|
---|
63 | F Q:$E(X,1)'=0 S X=$E(X,2,999)
|
---|
64 | Q
|
---|
65 | ;
|
---|
66 | ;
|
---|
67 | REJECT ; Act on billing rejects.
|
---|
68 | ;
|
---|
69 | ; - file reject information
|
---|
70 | S IBREJ="" I $E(IBRESP(1),17)="R" D
|
---|
71 | .F IBJ=20:2 S IBJA=$E(IBRESP(1),IBJ,IBJ+1) Q:IBJA=" "!(IBJA="") D
|
---|
72 | ..S IBERRP=$$ERRIEN^IBECUS22("UNIVERSAL",IBJA)
|
---|
73 | ..I IBERRP S IBREJ=IBREJ_","_IBERRP
|
---|
74 | S:$L(IBREJ) IBREJ=$E(IBREJ,2,999)
|
---|
75 | S ^IBA(351.5,IBCHTRN,5)=IBREJ
|
---|
76 | ;
|
---|
77 | ; - if the transaction was not rejected, delete the existing
|
---|
78 | ; reject entry if it exists
|
---|
79 | S IBCHREJ=$O(^IBA(351.52,"B",IBKEY,0))
|
---|
80 | I IBREJ="" D G REJECTQ
|
---|
81 | .I IBCHREJ S DA=IBCHREJ,DIK="^IBA(351.52," D ^DIK K DA,DIK
|
---|
82 | ;
|
---|
83 | ; - add a new reject entry if necessary
|
---|
84 | I 'IBCHREJ D ADDREJ
|
---|
85 | ;
|
---|
86 | ; - update reject file
|
---|
87 | S DA=IBCHTRN,DIE="^IBA(351.52,",DR=".02////"_IBCHTRN_";.03////"_DT
|
---|
88 | D ^DIE K DA,DIE,DR
|
---|
89 | S ^IBA(351.52,IBCHREJ,1)=IBREJ
|
---|
90 | ;
|
---|
91 | ; - generate a reject alert
|
---|
92 | S XQA("G.IB CHAMP RX REJ")="",XQA(+$P(IBKEYD,"^",3))=""
|
---|
93 | S XQAMSG="Prescription #"_IBDRX("RX#")_" rejected for reason #"_IBREJ
|
---|
94 | S XQADATA=IBDRX("RX#")_"^"_IBREJ_"^"_DFN,XQAROU="DISP^IBECUS22"
|
---|
95 | D SETUP^XQALERT
|
---|
96 | ;
|
---|
97 | ; - remove prescription from queue
|
---|
98 | I $P($G(^IBE(351.51,+IBREJ,0)),"^",2)<89 K ^IBA(351.5,"APOST",IBKEY)
|
---|
99 | REJECTQ Q
|
---|
100 | ;
|
---|
101 | ;
|
---|
102 | ADDREJ ; Add stub entry to the Reject file.
|
---|
103 | S I=$P(^IBA(351.52,0),"^",3)
|
---|
104 | F S I=I+1 L +^IBA(351.52,I):1 Q:$T&'$D(^IBA(351.52,I)) L -^IBA(351.52,I)
|
---|
105 | S ^IBA(351.52,I,0)=IBKEY,^IBA(351.52,"B",IBKEY,I)=""
|
---|
106 | S ^IBA(351.52,0)=$P(^IBA(351.52,0),"^",1,2)_"^"_I_"^"_($P(^IBA(351.52,0),"^",4)+1)
|
---|
107 | S IBCHREJ=I L -^IBA(351.52,I)
|
---|
108 | Q
|
---|
109 | ;
|
---|
110 | ;
|
---|
111 | TABLE ; Table of field positions and file locations in file #351.5.
|
---|
112 | ;;O;0;2;S X=DFN
|
---|
113 | ;;O;0;3;48;65
|
---|
114 | ;;O;0;4;268;278
|
---|
115 | ;D;O;0;5;280;285
|
---|
116 | ;;O;0;6;259;263
|
---|
117 | ;D;I;2;1;18;23
|
---|
118 | ;D;I;2;2;24;29
|
---|
119 | ;D;I;2;3;30;35
|
---|
120 | ;D;I;2;4;36;41
|
---|
121 | ;D;I;2;5;42;47
|
---|
122 | ;;I;2;6;48;61
|
---|
123 | ;;I;2;7;62;101
|
---|
124 | ;D;I;3;1;102;109
|
---|
125 | ;D;I;3;2;110;117
|
---|
126 | ;D;I;3;3;118;125
|
---|
127 | ;D;I;3;4;126;131
|
---|
128 | ;D;I;3;5;132;137
|
---|
129 | ;D;I;3;6;138;143
|
---|
130 | ;D;I;3;7;144;149
|
---|
131 | ;D;I;3;8;150;155
|
---|
132 | ;;I;3;9;156;157
|
---|
133 | ;D;I;3;10;158;163
|
---|
134 | ;;I;7;1;164;323
|
---|
135 | ;;I;8;1;324;403
|
---|
136 | ;;$END
|
---|