| 1 | IBCNRP5 ;BHAM ISC/CMW - Group Plan Status Report ;01-NOV-2004
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**276**;21-MAR-94
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | EN ;
|
---|
| 6 | ; Initialize variables
|
---|
| 7 | N STOP,IBCNRRTN,IBCNRSPC,RESORT,IBCNTYP,IBSEL
|
---|
| 8 | D:'$D(IOF) HOME^%ZIS
|
---|
| 9 | ;
|
---|
| 10 | S STOP=0,IBPXT=$G(IBPXT)
|
---|
| 11 | W @IOF
|
---|
| 12 | W !,"ePHARM GROUP PLAN STATUS REPORT",!
|
---|
| 13 | W !,"NCPDP process requires that the users match Group Plans to Pharmacy Plans."
|
---|
| 14 | W !,"This report will assist users in matching Group Insurance Plans to Pharmacy"
|
---|
| 15 | W !," Plans by searching through GIPF file for Group Plans that "
|
---|
| 16 | W !," are linked to an Insurance with active Pharmacy Plan coverage."
|
---|
| 17 | ;
|
---|
| 18 | ; Prompts
|
---|
| 19 | ; lock global
|
---|
| 20 | S IBCNRRPT=1
|
---|
| 21 | N IBCNRDEV S IBCNRDEV=1
|
---|
| 22 | L +^XTMP("IBCNRP5"):5 I '$T W !!,"Sorry, Status Report in use." H 2 G EXIT
|
---|
| 23 | ;Check for prior compile
|
---|
| 24 | P10 D RESORT(.RESORT) I STOP G EXIT
|
---|
| 25 | I $G(RESORT) G P30
|
---|
| 26 | K ^XTMP("IBCNRP5")
|
---|
| 27 | ; compile valid insurance file
|
---|
| 28 | P20 D GIPF
|
---|
| 29 | ; select insurance company
|
---|
| 30 | P30 D INS I $G(IBSEL)="" G EXIT
|
---|
| 31 | D TYPE I $G(IBCNTYP)="" G EXIT
|
---|
| 32 | ; perform sort/selection
|
---|
| 33 | P40 D INSEL
|
---|
| 34 | I '$D(^TMP("IBCNRP5")) G EXIT
|
---|
| 35 | ; print selection
|
---|
| 36 | P50 D PRINT^IBCNRP5P
|
---|
| 37 | ;
|
---|
| 38 | EXIT ; unlock global
|
---|
| 39 | L -^XTMP("IBCNRP5")
|
---|
| 40 | K IBPXT
|
---|
| 41 | K IBCNSP,IBCPOL,IBIND,IBMULT,IBSEL,IBW,IBALR,IBGRP,IBCNGP
|
---|
| 42 | K IBCNRRPT,IBCNTYP,IBCNRDEV,ZTDESC,ZTSTOP
|
---|
| 43 | K IBCNRP,IBCNRI,IBCNRGP
|
---|
| 44 | K IBICPT,IBICF,IBICL,IBIC,IBINA,IBIEN,INIEN
|
---|
| 45 | K ^TMP("IBCNRP5",$J)
|
---|
| 46 | Q
|
---|
| 47 | ;
|
---|
| 48 | RESORT(RESORT) ; check for prior compile
|
---|
| 49 | NEW DIR,BDT,EDT,RDT,HDR,IBDT,X,Y,DIRUT
|
---|
| 50 | I '$D(^XTMP("IBCNRP5")) Q
|
---|
| 51 | S RDT=$P($G(^XTMP("IBCNRP5",0)),U,2)
|
---|
| 52 | S RESORT=0
|
---|
| 53 | S HDR=$$FMTE^XLFDT(RDT,"5Z")
|
---|
| 54 | W !!,"Current Insurance company list compiled on: ",HDR,!
|
---|
| 55 | S DIR(0)="Y"
|
---|
| 56 | S DIR("A")="Do you want to use the existing compiled file"
|
---|
| 57 | S DIR("B")="YES"
|
---|
| 58 | S DIR("?",1)=" Enter YES to use the existing compiled file."
|
---|
| 59 | S DIR("?")=" Enter NO to DELETE existing file and recompile,"
|
---|
| 60 | D ^DIR K DIR
|
---|
| 61 | I $D(DIRUT) S STOP=1 G RESRTX
|
---|
| 62 | S RESORT=Y
|
---|
| 63 | S IBCNRSPC("RESORT")=Y
|
---|
| 64 | ;
|
---|
| 65 | RESRTX ;RESORT EXIT
|
---|
| 66 | Q
|
---|
| 67 | ;
|
---|
| 68 | GIPF ; compiler valid insurance
|
---|
| 69 | W !,"*** COMPILING ......"
|
---|
| 70 | N GST1,GP0,GP6,IBCOV,LIM,IBCVRD,IBIEN
|
---|
| 71 | N GPIEN,GPNAM,GPNUM,IBINA
|
---|
| 72 | S GST1=1,(GPIEN,INIEN)=""
|
---|
| 73 | S ^XTMP("IBCNRP5",0)=($$NOW^XLFDT+30)_"^"_$$NOW^XLFDT_"^"_"Group Plan Status Report"
|
---|
| 74 | F S INIEN=$O(^IBA(355.3,"B",INIEN)) Q:INIEN="" D
|
---|
| 75 | . S IBINA=$P($G(^DIC(36,+INIEN,0)),U)
|
---|
| 76 | . ; company does not reimburse
|
---|
| 77 | . I $P($G(^DIC(36,+INIEN,0)),U,2)="N" Q
|
---|
| 78 | . ; company is inactive
|
---|
| 79 | . I $P($G(^DIC(36,INIEN,0)),U,5) Q
|
---|
| 80 | . ;
|
---|
| 81 | . F S GPIEN=$O(^IBA(355.3,"B",INIEN,GPIEN)) Q:GPIEN="" D
|
---|
| 82 | .. ;chk for active group
|
---|
| 83 | .. S GP0=$G(^IBA(355.3,GPIEN,0)),GP6=$G(^IBA(355.3,GPIEN,6))
|
---|
| 84 | .. I $P(GP0,U,11)=1 Q
|
---|
| 85 | .. ;
|
---|
| 86 | .. ;chk for pharm plan coverage
|
---|
| 87 | .. S IBCOV=$O(^IBE(355.31,"B","PHARMACY",""))
|
---|
| 88 | .. S LIM="",IBCVRD=0
|
---|
| 89 | .. F S LIM=$O(^IBA(355.32,"B",GPIEN,LIM)) Q:LIM="" D
|
---|
| 90 | ... I $P(^IBA(355.32,LIM,0),U,2)'=IBCOV Q
|
---|
| 91 | ... ;chk covered status
|
---|
| 92 | ... S IBCVRD=$P(^IBA(355.32,LIM,0),U,4)
|
---|
| 93 | ... I IBCVRD=0 Q
|
---|
| 94 | ... ;set valid insurance/group array
|
---|
| 95 | ... S ^XTMP("IBCNRP5",IBINA,INIEN,GPIEN)=""
|
---|
| 96 | Q
|
---|
| 97 | ;
|
---|
| 98 | INS ;
|
---|
| 99 | S IBSEL=""
|
---|
| 100 | W !,"Run Report "
|
---|
| 101 | W " for (S)PECIFIC insurance companies or a (R)ANGE: RANGE// "
|
---|
| 102 | R X:DTIME Q:'$T!(X["^")
|
---|
| 103 | S:X="" X="R" S X=$E(X)
|
---|
| 104 | I "RSrs"'[X W !,"Enter <CR> for Range; 'S' for specific insurance; '^' to quit." G INS
|
---|
| 105 | W " ",$S("Ss"[X:"SPECIFIC",1:"RANGE") G:"Rr"[X INSO1
|
---|
| 106 | INSO S DIC="^DIC(36,",DIC(0)="AEQMZ",DIC("S")="I '$G(^(5))"
|
---|
| 107 | S DIC("A")=" Select "_$S($G(IBICPT):"another ",1:"")_"INSURANCE CO.: "
|
---|
| 108 | D ^DIC K DIC I Y'>0 G INS:'$G(IBICPT) S IBSEL=1 Q
|
---|
| 109 | I $D(IBICPT(+Y)) D G INSO
|
---|
| 110 | .W !!?3,"Already selected. Choose another insurance company.",!,*7
|
---|
| 111 | S IBICPT(+Y)="",IBICPT=$G(IBICPT)+1 G INSO
|
---|
| 112 | ;
|
---|
| 113 | INSO1 W !?3,"Start with INSURANCE COMPANY: FIRST// " R X:DTIME
|
---|
| 114 | G:'$T!(X["^") INS
|
---|
| 115 | I $E(X)="?" W !,"Enter value up to 40 char; <CR> to start with 'first' value; '^' to quit." G INSO1
|
---|
| 116 | S IBICF=X
|
---|
| 117 | INSO2 W !?8,"Go to INSURANCE COMPANY: LAST// " R X:DTIME
|
---|
| 118 | G:'$T!(X["^") INSO1
|
---|
| 119 | I $E(X)="?" W !,"Enter value up to 40 char; <CR> to go to 'last' value; '^' to quit." G INSO1
|
---|
| 120 | I X="" S IBICL="zzzzz" S:IBICF="" IBIC="ALL" S IBSEL=1 Q
|
---|
| 121 | I IBICF]X D G INSO2
|
---|
| 122 | .W *7,!!?3,"The LAST value must follow the FIRST.",!
|
---|
| 123 | S IBICL=X,IBSEL=1
|
---|
| 124 | Q
|
---|
| 125 | ;
|
---|
| 126 | TYPE ; Prompt to allow users to inquire for All group plans, or Matched group plans
|
---|
| 127 | N DIR,X,Y,DIRUT
|
---|
| 128 | S IBCNTYP="A"
|
---|
| 129 | S DIR(0)="S^A:All Group Plans;M:Matched Group Plans"
|
---|
| 130 | S DIR("A")=" Select the type of Group Plans you want to see for Insurance selected."
|
---|
| 131 | S DIR("B")="A"
|
---|
| 132 | S DIR("?",1)=" A - All Group Plans"
|
---|
| 133 | S DIR("?",2)=" M - Matched Group Plans"
|
---|
| 134 | D ^DIR K DIR
|
---|
| 135 | I $D(DIRUT) G TYPEX
|
---|
| 136 | S IBCNTYP=Y
|
---|
| 137 | TYPEX Q
|
---|
| 138 | ;
|
---|
| 139 | INSEL ; - Perform selection for insurance company.
|
---|
| 140 | S VALMCNT=0,VALMBG=1,IBCNGP=0
|
---|
| 141 | K ^TMP("IBCNRP5",$J)
|
---|
| 142 | ; check for specific insurance companies
|
---|
| 143 | I $G(IBICPT) D Q
|
---|
| 144 | . S (IBINA,IBIEN)=""
|
---|
| 145 | . F S IBIEN=$O(IBICPT(IBIEN)) Q:IBIEN="" D
|
---|
| 146 | .. S IBINA=$P($G(^DIC(36,+IBIEN,0)),U)
|
---|
| 147 | .. I '$D(^XTMP("IBCNRP5",IBINA,IBIEN)) D Q
|
---|
| 148 | ... W *7,!?3,"**NO pharmacy data found for "
|
---|
| 149 | ... W $P(^DIC(36,IBIEN,0),U)_" "_$P(^DIC(36,IBIEN,.11),U),! R X:2
|
---|
| 150 | .. D INIT
|
---|
| 151 | ;
|
---|
| 152 | ; check for range of insurance companies
|
---|
| 153 | I '$D(IBICL) Q
|
---|
| 154 | S IBIEN=0,IBINA=""
|
---|
| 155 | F S IBINA=$O(^XTMP("IBCNRP5",IBINA)) Q:IBINA="" D
|
---|
| 156 | . F S IBIEN=$O(^XTMP("IBCNRP5",IBINA,IBIEN)) Q:IBIEN="" D
|
---|
| 157 | ..; for selection "ALL"
|
---|
| 158 | .. I $G(IBIC)="ALL" D INIT Q
|
---|
| 159 | .. ;
|
---|
| 160 | .. ;check for match within first/last range
|
---|
| 161 | .. I (IBICF]IBINA)!(IBINA]IBICL) Q
|
---|
| 162 | .. D INIT
|
---|
| 163 | Q
|
---|
| 164 | ;
|
---|
| 165 | INIT ; -- init variables and create list array or report array
|
---|
| 166 | N IBGP0,IBCPOLD,X,IBCPD6,IBCNRPP,IBCOV,IBCVRD,LIM
|
---|
| 167 | F S IBCNGP=$O(^XTMP("IBCNRP5",IBINA,IBIEN,IBCNGP)) Q:'IBCNGP D
|
---|
| 168 | . I '$D(^IBA(355.3,+IBCNGP,0)) Q
|
---|
| 169 | . ; if we want all plans, let it pass
|
---|
| 170 | . I IBCNTYP="A" D Q
|
---|
| 171 | . . D SETPLAN(IBCNGP)
|
---|
| 172 | . ; if we want Matched plans, check for existence of Plan ID
|
---|
| 173 | . I IBCNTYP="M" D Q
|
---|
| 174 | . . I $P($G(^IBA(355.3,IBCNGP,6)),U)'="" D SETPLAN(IBCNGP)
|
---|
| 175 | I VALMCNT=0 D
|
---|
| 176 | . S ^TMP("IBCNRP5",$J,"DSPDATA",1)=IBIEN
|
---|
| 177 | . S ^TMP("IBCNRP5",$J,"DSPDATA",2)="No data for this Insurance"
|
---|
| 178 | Q
|
---|
| 179 | ;
|
---|
| 180 | SETPLAN(IBCNGP) ;
|
---|
| 181 | ; create text
|
---|
| 182 | N IBGPZ,I,IBPLN,IBPLNA,LINE
|
---|
| 183 | S VALMCNT=VALMCNT+1,$P(LINE,"-",80)=""
|
---|
| 184 | S IBGPZ=^IBA(355.3,+IBCNGP,0)
|
---|
| 185 | ; Group Name, Group #, Group Type, Plan ID, Plan Status
|
---|
| 186 | S X=$$FO^IBCNEUT1($P(IBGPZ,U,3),18)
|
---|
| 187 | S X=X_" "_$$FO^IBCNEUT1($P(IBGPZ,U,4),17)
|
---|
| 188 | S X=X_" "_$$FO^IBCNEUT1($$EXPAND^IBTRE(355.3,.09,$P(IBGPZ,U,9)),13)
|
---|
| 189 | S IBPLN=$P($G(^IBA(355.3,+IBCNGP,6)),U)
|
---|
| 190 | ; check for plan
|
---|
| 191 | I IBPLN="" D Q
|
---|
| 192 | . S ^TMP("IBCNRP5",$J,"DSPDATA",VALMCNT)=IBIEN_"^"_X
|
---|
| 193 | . S VALMCNT=VALMCNT+1,^TMP("IBCNRP5",$J,"DSPDATA",VALMCNT)=IBIEN_"^"_"No Plan Found."
|
---|
| 194 | . S VALMCNT=VALMCNT+1,^TMP("IBCNRP5",$J,"DSPDATA",VALMCNT)=IBIEN_"^"_LINE
|
---|
| 195 | ; check plan status information
|
---|
| 196 | S IBPLNA=$P($G(^IBCNR(366.03,IBPLN,0)),U)
|
---|
| 197 | S X=X_" "_$$FO^IBCNEUT1(IBPLNA,13)
|
---|
| 198 | ;
|
---|
| 199 | N ARRAY D STCHK^IBCNRU1(IBPLN,.ARRAY)
|
---|
| 200 | S X=X_" "_$$FO^IBCNEUT1($S($G(ARRAY(1))="I":"INACTIVE",1:"ACTIVE"),8)
|
---|
| 201 | S ^TMP("IBCNRP5",$J,"DSPDATA",VALMCNT)=IBIEN_"^"_X
|
---|
| 202 | I $G(ARRAY(6)) D
|
---|
| 203 | . N STATAR
|
---|
| 204 | . D STATAR^IBCNRU1(.STATAR)
|
---|
| 205 | . F I=1:1:$L(ARRAY(6),",") D
|
---|
| 206 | .. S VALMCNT=VALMCNT+1
|
---|
| 207 | .. S ^TMP("IBCNRP5",$J,"DSPDATA",VALMCNT)=IBIEN_"^"_" "_$G(STATAR($P(ARRAY(6),",",I)))
|
---|
| 208 | . S VALMCNT=VALMCNT+1,^TMP("IBCNRP5",$J,"DSPDATA",VALMCNT)=IBIEN_"^"_LINE
|
---|
| 209 | ;
|
---|
| 210 | Q
|
---|