| [613] | 1 | IBCNSBL1 ;ALB/AAS - NEW INSURANCE POLICY BULLETIN ;29-AUG-93 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**6,28,82,249,276**;21-MAR-94 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | BULL ; -- send bulletin | 
|---|
|  | 6 | N IBCNT | 
|---|
|  | 7 | S XMSUB="New Insurance Policy For "_$E($P(IBP,"^"),1,20)_"   Pt. Id: "_$P(IBP,"^",2) | 
|---|
|  | 8 | S IBT(1)=" A new insurance policy has been added for:" | 
|---|
|  | 9 | S IBT(2)=" Patient: "_$E($P(IBP,"^")_"               ",1,25)_"  PT. ID: "_$P(IBP,"^",2) | 
|---|
|  | 10 | S IBT(3)="" | 
|---|
|  | 11 | S IBT(4)=" New Policy: " | 
|---|
|  | 12 | S IBCNT=4 D HDR,NPOL | 
|---|
|  | 13 | S IBCNT=IBCNT+1,IBT(IBCNT)="" | 
|---|
|  | 14 | S IBCNT=IBCNT+1,IBT(IBCNT)=" Previous Policy(s): " | 
|---|
|  | 15 | D HDR,OPOL | 
|---|
|  | 16 | S IBCNT=IBCNT+1,IBT(IBCNT)="" | 
|---|
|  | 17 | S IBCNT=IBCNT+1,IBT(IBCNT)=" Buffer Policy(s): " | 
|---|
|  | 18 | D BUFF | 
|---|
|  | 19 | S IBCNT=IBCNT+1,IBT(IBCNT)="" | 
|---|
|  | 20 | S IBCNT=IBCNT+1,IBT(IBCNT)=" Possible billable Inpt. Care: " | 
|---|
|  | 21 | D INPT | 
|---|
|  | 22 | S IBCNT=IBCNT+1,IBT(IBCNT)="" | 
|---|
|  | 23 | S IBCNT=IBCNT+1,IBT(IBCNT)=" Possible billable Opt. Care: " | 
|---|
|  | 24 | D OPT | 
|---|
|  | 25 | I $$ECMEBIL^IBNCPDPU(DFN,DT) D | 
|---|
|  | 26 | . S IBCNT=IBCNT+1,IBT(IBCNT)="" | 
|---|
|  | 27 | . S IBCNT=IBCNT+1,IBT(IBCNT)=" *** NOTE: Prescriptions for this patient are ECME BILLABLE and may be" | 
|---|
|  | 28 | . S IBCNT=IBCNT+1,IBT(IBCNT)=" processed using the GENERATE ECME RX BILLS option contained in the" | 
|---|
|  | 29 | . S IBCNT=IBCNT+1,IBT(IBCNT)=" Billing Clerk's Menu" | 
|---|
|  | 30 | ; | 
|---|
|  | 31 | S IBCNT=IBCNT+1,IBT(IBCNT)="" | 
|---|
|  | 32 | S IBCNT=IBCNT+1,IBT(IBCNT)=" Added by: "_$P($G(^VA(200,+$P(IBEVTA1,"^",2),0)),"^") | 
|---|
|  | 33 | S IBCNT=IBCNT+1,IBT(IBCNT)="       on: "_$$DAT1^IBOUTL(+IBEVTA1,"2P") | 
|---|
|  | 34 | S IBCNT=IBCNT+1,IBT(IBCNT)="   Option: " | 
|---|
|  | 35 | ; | 
|---|
|  | 36 | I $D(XQY0) S IBT(IBCNT)=IBT(IBCNT)_$P($G(XQY0),"^",2) | 
|---|
|  | 37 | I $D(ZTQUEUED),$P($G(XQY0),"^",2)="" S IBT(IBCNT)=IBT(IBCNT)_"Queued Job - "_$G(ZTDESC) | 
|---|
|  | 38 | D SEND | 
|---|
|  | 39 | BULLQ Q | 
|---|
|  | 40 | ; | 
|---|
|  | 41 | NPOL ; -- set up new policy | 
|---|
|  | 42 | S IBCNT=IBCNT+1 | 
|---|
|  | 43 | S IBT(IBCNT)=$$D1(IBEVTA0) | 
|---|
|  | 44 | Q | 
|---|
|  | 45 | ; | 
|---|
|  | 46 | OPOL ; -- set up old policies | 
|---|
|  | 47 | N J,X,IBPCNT | 
|---|
|  | 48 | S J=0 F  S J=$O(^DPT(DFN,.312,J)) Q:'J  I J'=IBCDFN S X=$G(^DPT(DFN,.312,J,0)) S IBCNT=IBCNT+1,IBT(IBCNT)=$$D1(X) S IBPCNT=$G(IBPCNT)+1 | 
|---|
|  | 49 | I $G(IBPCNT)<1 S IBCNT=IBCNT+1,IBT(IBCNT)="    No Previous Policies On file!" | 
|---|
|  | 50 | Q | 
|---|
|  | 51 | ; | 
|---|
|  | 52 | SEND S XMDUZ="INTEGRATED BILLING PACKAGE",XMTEXT="IBT(" | 
|---|
|  | 53 | K XMY S XMN=0 | 
|---|
|  | 54 | S IBGRP=$P($G(^XMB(3.8,+$P($G(^IBE(350.9,1,4)),"^",4),0)),"^") | 
|---|
|  | 55 | I IBGRP]"" S XMY("G."_IBGRP_"@"_^XMB("NETNAME"))="" | 
|---|
|  | 56 | D ^XMD | 
|---|
|  | 57 | K X,Y,IBI,IBT,IBGRP,XMDUZ,XMTEXT,XMY,XMSUB | 
|---|
|  | 58 | Q | 
|---|
|  | 59 | ; | 
|---|
|  | 60 | HDR ; -- print standard header | 
|---|
|  | 61 | D HDR1("=",76) | 
|---|
|  | 62 | Q | 
|---|
|  | 63 | ; | 
|---|
|  | 64 | HDR1(CHAR,LENG) ; -- print header, specify character | 
|---|
|  | 65 | S IBCNT=IBCNT+1 | 
|---|
|  | 66 | S IBT(IBCNT)="    Insurance Co.     Subscriber ID     Group       Holder  Effective Expires" | 
|---|
|  | 67 | S IBCNT=IBCNT+1,X="",$P(X,CHAR,LENG)="" | 
|---|
|  | 68 | S IBT(IBCNT)=X | 
|---|
|  | 69 | Q | 
|---|
|  | 70 | ; | 
|---|
|  | 71 | ; | 
|---|
|  | 72 | D1(IBINS) N X,IBX | 
|---|
|  | 73 | S IBX="" I '$G(IBINS) G DQ | 
|---|
|  | 74 | S IBX="    "_$E($S($D(^DIC(36,+IBINS,0)):$E($P(^(0),"^",1),1,16),1:"UNKNOWN")_"                 ",1,16)_"  " | 
|---|
|  | 75 | S IBX=IBX_$E($P(IBINS,"^",2)_"                ",1,16)_"  " | 
|---|
|  | 76 | S IBX=IBX_$E($$GRP^IBCNS($P(IBINS,"^",18))_"          ",1,10)_"  " | 
|---|
|  | 77 | S X=$P(IBINS,"^",6) S IBX=IBX_$E($S(X="v":"SELF",X="s":"SPOUSE",1:"OTHER")_"      ",1,8) | 
|---|
|  | 78 | S IBX=IBX_$E($$DAT1^IBOUTL($P(IBINS,"^",8))_"          ",1,10)_$$DAT1^IBOUTL($P(IBINS,"^",4)) | 
|---|
|  | 79 | DQ Q IBX | 
|---|
|  | 80 | ; | 
|---|
|  | 81 | OPT ; -- list opt treatment (sched appoints only) | 
|---|
|  | 82 | N CNT S CNT=0 | 
|---|
|  | 83 | ; | 
|---|
|  | 84 | I $D(^TMP($J,"SDAMA201","GETAPPT","ERROR")) S IBCNT=IBCNT+1,IBT(IBCNT)="    Unable to look-up Scheduled Appointments." D  Q | 
|---|
|  | 85 | . F  S CNT=$O(^TMP($J,"SDAMA201","GETAPPT","ERROR",CNT)) Q:'CNT  S IBCNT=IBCNT+1,IBT(IBCNT)="    "_$G(^TMP($J,"SDAMA201","GETAPPT","ERROR",CNT)) | 
|---|
|  | 86 | ; | 
|---|
|  | 87 | S OPT=0 F  S OPT=$O(^TMP($J,"SDAMA201","GETAPPT",OPT)) Q:'OPT  D | 
|---|
|  | 88 | .S IBCNT=IBCNT+1 | 
|---|
|  | 89 | .I IBCNT>100 S IBT(IBCNT)="Too many to list" S OPT=9999999 Q | 
|---|
|  | 90 | .S IBT(IBCNT)="   Outpatient Visit on "_$$DAT1^IBOUTL($G(^TMP($J,"SDAMA201","GETAPPT",OPT,1)))_" to "_$P($G(^TMP($J,"SDAMA201","GETAPPT",OPT,2)),"^",2) | 
|---|
|  | 91 | .S CNT=CNT+1 | 
|---|
|  | 92 | I 'CNT S IBCNT=IBCNT+1,IBT(IBCNT)="    No Scheduled appointments found." | 
|---|
|  | 93 | Q | 
|---|
|  | 94 | ; | 
|---|
|  | 95 | INPT ; -- list inpt. treatment (admissions only) | 
|---|
|  | 96 | N CNT S CNT=0 | 
|---|
|  | 97 | I $G(^DPT(DFN,.1))]"" S CNT=CNT+1,IBCNT=IBCNT+1,IBT(IBCNT)="    Currently an Inpatient on "_$G(^DPT(DFN,.1)) | 
|---|
|  | 98 | I $G(IBTADD) S IBCNT=IBCNT+1,IBT(IBCNT)="    Entry Added to Claims Tracking for Current Admission." | 
|---|
|  | 99 | I $G(VAIN(1)) S CNT=CNT+1,IBCNT=IBCNT+1,IBT(IBCNT)="    Previously an inpatient on ward "_$P(VAIN(4),"^",2)_" on "_$$DAT1^IBOUTL($P(START,".")) | 
|---|
|  | 100 | S INPT=START F  S INPT=$O(^DGPM("APTT1",DFN,INPT)) Q:'INPT!(INPT>END)  S DGPM=0 F  S DGPM=$O(^DGPM("APTT1",DFN,INPT,DGPM)) Q:'DGPM  D | 
|---|
|  | 101 | .Q:'$G(^DGPM(DGPM,0)) | 
|---|
|  | 102 | .S IBCNT=IBCNT+1 | 
|---|
|  | 103 | .S IBT(IBCNT)="    Inpatient Admission on "_$$DAT1^IBOUTL(+^DGPM(DGPM,0),"2P") | 
|---|
|  | 104 | .S CNT=CNT+1 | 
|---|
|  | 105 | I 'CNT S IBCNT=IBCNT+1,IBT(IBCNT)="    No Admissions found." | 
|---|
|  | 106 | Q | 
|---|
|  | 107 | ; | 
|---|
|  | 108 | BUFF ; -- list insurance buffer entries for the patient | 
|---|
|  | 109 | N IBBDA,IBX,IBY,IBB40,IBB60 | 
|---|
|  | 110 | I '$$BUFFER^IBCNBU1(DFN) S IBCNT=IBCNT+1,IBT(IBCNT)="    No Insurance Buffer entries for this Patient." Q | 
|---|
|  | 111 | ; | 
|---|
|  | 112 | S IBBDA=0 F  S IBBDA=$O(^IBA(355.33,"C",DFN,IBBDA)) Q:'IBBDA  D | 
|---|
|  | 113 | . S IBB40=$G(^IBA(355.33,IBBDA,40)),IBB60=$G(^IBA(355.33,IBBDA,60)) | 
|---|
|  | 114 | . ; | 
|---|
|  | 115 | . S IBY=$P($G(^IBA(355.33,+IBBDA,20)),U,1),IBX="    "_$E($S(IBY'="":IBY,1:"UNKNOWN")_"                 ",1,16)_"  " | 
|---|
|  | 116 | . S IBX=IBX_$E($P(IBB60,"^",4)_"                ",1,16)_"  " | 
|---|
|  | 117 | . S IBX=IBX_$E($S($P(IBB40,U,3)'="":$P(IBB40,U,3),$P(IBB40,U,2)'="":$P(IBB40,U,2),$P(IBB40,U,1)=0:"Ind. Plan",1:"")_"          ",1,10)_"  " | 
|---|
|  | 118 | . S IBY=$P(IBB60,"^",5) S IBX=IBX_$E($S(IBY="v":"SELF",IBY="s":"SPOUSE",1:"OTHER")_"      ",1,8) | 
|---|
|  | 119 | . S IBX=IBX_$E($$DAT1^IBOUTL($P(IBB60,"^",2))_"          ",1,10)_$$DAT1^IBOUTL($P(IBB60,"^",3)) | 
|---|
|  | 120 | . S IBCNT=IBCNT+1,IBT(IBCNT)=IBX | 
|---|
|  | 121 | Q | 
|---|