| [613] | 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 | 
|---|