Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: IBRBUL

IBRBUL.m

Go to the documentation of this file.
  1. IBRBUL ;ALB/CJM - CAT C HOLD CHARGE BULLETIN ; 02-MAR-92
  1. ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
  1. ;;Per VHA Directive 10-93-142, this routine should not be modified.
  1. ; This bulletin is sent even if the local site has chosen
  1. ; not to hold Cat C charges. In that case, IBHOLDP should be set = 0.
  1. ; requires: IBDD() = internal node in patient file of valid ins.
  1. ; DUZ
  1. ; X = 0 node of IB BILLING ACTION
  1. ; IBHOLDP = 1 if charge on hold, = 0 otherwise
  1. ; IBSEQNO = 1 if the charges are new, 3 if updated
  1. BULL N IBT,IBC,XMSUB,XMY,XMDUZ,XMTEXT,IBX,IBDUZ,IBNAME,IBPID,IBBID,IBAGE,DFN
  1. S IBC=1,IBX=X,IBDUZ=DUZ
  1. D PAT,HDR,PATLINE,CHRG,INS,MAIL^IBAERR1
  1. Q
  1. MAIL ; for testing
  1. ; W !,XMSUB
  1. ; F IBC=1:1 Q:'$D(IBT(IBC)) W !,IBT(IBC)
  1. Q
  1. HDR ; formated for held charges
  1. N T,U,SL S T=$S('IBHOLDP:"NOT ON HOLD",1:"ON HOLD"),U=$S(IBSEQNO=1:"NEW ",IBSEQNO=3:"UPDATED ",1:"")
  1. ; if the parent event should have the soft-link that is needed to find
  1. ; the division
  1. S SL=$P(X,"^",16) S:SL SL=$G(^IB(SL,0)) S:'SL SL=X S SL=$P(SL,"^",4)
  1. S XMSUB=$E(IBNAME,1,8)_"("_IBBID_")"_"CATC CHRG W/INS"_"-"_$E($$DIV(SL),1,11)
  1. S IBT(IBC)="The following patient has active insurance and "_U_"Cat C charges "_T_".",IBC=IBC+1
  1. S IBT(IBC)="You need to immediately process the charges to the insurance company.",IBC=IBC+1
  1. Q
  1. PAT ; gets patient demographic data
  1. N VAERR,VADM,X
  1. S DFN=+$P(IBX,"^",2) D DEM^VADPT I VAERR K VADM
  1. S IBNAME=$$PR($G(VADM(1)),26),IBAGE=$$PR($G(VADM(4)),3),IBPID=$G(VA("PID")),IBBID=$G(VA("BID"))
  1. Q
  1. PATLINE ; sets up lines with patient data
  1. S IBT(IBC)="",IBC=IBC+1,IBT(IBC)="Name: "_IBNAME_" Age : "_IBAGE_" Pt. ID: "_IBPID,IBC=IBC+1
  1. Q
  1. CHRG ; gets charge data and sets up charge lines
  1. N TP,FR,TO
  1. S Y=$P(IBX,"^",14) D:Y DD^%DT S FR=Y
  1. S Y=$P(IBX,"^",15) D:Y DD^%DT S TO=Y
  1. S TP=$P(IBX,"^",3) S:TP TP=$P($G(^IBE(350.1,TP,0)),"^",3) S:TP TP=$P($$CATN^PRCAFN(TP),"^",2)
  1. S IBT(IBC)="Type: "_$$PR(TP,28)_" Amount : $"_+$P(IBX,"^",7),IBC=IBC+1
  1. S IBT(IBC)="From: "_$$PR(FR,28)_" To : "_TO,IBC=IBC+1
  1. Q
  1. INS ; gets insurance data and sets up insurance lines
  1. N I,CO,P,G,GNB,W,E,Y,C
  1. S IBT(IBC)="",IBC=IBC+1,IBT(IBC)="INSURANCE INFORMATION:",IBC=IBC+1
  1. S I="" F S I=$O(IBDD(I)) Q:'I D
  1. .S CO=$P(IBDD(I),"^",1),CO=$P(^DIC(36,CO,0),"^",1),CO=$$PR(CO,25)
  1. .S P=$$PR($P(IBDD(I),"^",2),21)
  1. .S Y=$P(IBDD(I),"^",6),C=$P(^DD(2.312,6,0),"^",2) D Y^DIQ S W=$$PR(Y,25)
  1. .S Y=$P(IBDD(I),"^",4) D:Y DD^%DT S E=Y
  1. .S G=$$PR($P(IBDD(I),"^",15),25)
  1. .S GNB=$P(IBDD(I),"^",3)
  1. .S IBT(IBC)="Company: "_CO_" Policy#: "_P,IBC=IBC+1
  1. .S IBT(IBC)="Whose : "_W_" Expires: "_E,IBC=IBC+1
  1. .S IBT(IBC)="Group : "_G_" Group# : "_GNB,IBC=IBC+1
  1. .S IBT(IBC)="",IBC=IBC+1
  1. Q
  1. PR(STR,LEN) ; pad right
  1. N B S STR=$E(STR,1,LEN),$P(B," ",LEN-$L(STR))=" "
  1. Q STR_$G(B)
  1. DIV(SL) ; returns the division with the softlink as input
  1. N IBDIV,IBWARD,IBFILE,IBIEN
  1. S:SL[";" SL=$P(SL,";",1)
  1. S IBFILE=$P(SL,":",1),IBIEN=$P(SL,":",2)
  1. S IBDIV=""
  1. I IBFILE=409.68,IBIEN S IBDIV=$P($G(^SCE(IBIEN,0)),"^",11)
  1. I IBFILE=44,IBIEN S IBDIV=$P($G(^SC(IBIEN,0)),"^",15)
  1. I IBFILE=405,IBIEN S IBWARD=$P($G(^DGPM(IBIEN,0)),"^",6) I IBWARD S IBDIV=$P($G(^DIC(42,IBWARD,0)),"^",11)
  1. I IBDIV S IBDIV=$P($G(^DG(40.8,IBDIV,0)),"^",1)
  1. I IBDIV="" S IBDIV="DIV UNKNWN"
  1. Q IBDIV