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

IBACCWLEE4.m

Go to the documentation of this file.
IBACCWLEE4 ;EDE/TPF - ACC (Automated Community Care) Encounters - Action Item Expand Encounter Display Formats ; 12-SEP-2023 ; 12-SEP-2023
 ;;2.0;INTEGRATED BILLING;**770**;21-MAR-2024;Build 119
 ;;Per VA Directive 6402, this routine should not be modified.
 ;
 ; Reference to $G(^PRCA(430,+IBFN,7)) in ICR #389
 ; Reference to $O(^PRCA(430,"B",IBFN,0)) in ICR #389
 ; Reference to $P($G(^PRCA(430,+RCIBFN,0)),"^",8) in ICR #389
 ; Reference to $P($G(^PRCA(430.3,+RCSTAT,0)),"^",2) in ICR #3337
 Q
 ;
 ;CLONED FROM RTN IBJTBB - TPI BILL DIAGNOSIS SCREEN
 ;CALLED FROM IBACCWLEE
DIAGBLD(IBIFN,IBLN,VALMCNT) ;
 N IBADX,IBI,IBX,IBCNT,IBSTR,IBDATE
 S IBDATE=$$BDATE^IBACSV(IBIFN)
 ;D SET^IBCSC4D(IBIFN,"",.IBADX) I $D(IBADX)'>1 S IBLN=1 F IBSTR="","Bill contains no diagnosis." S IBLN=$$SET(IBSTR,IBLN,1,80)
 D SET^IBCSC4D(IBIFN,"",.IBADX)
 I $D(IBADX)'>1 S IBLN=IBLN+1 F IBSTR="","Bill contains no diagnosis." S IBLN=$$DIAGSET(IBSTR,IBLN,1,80)
 S IBI=""
 S IBLN=IBLN+1
 S IBCNT=0
 F  S IBI=$O(IBADX(IBI)) Q:'IBI  D  S IBLN=$$DIAGSET(IBSTR,IBLN,1,80)
 . S IBCNT=IBCNT+1,IBX=$$ICD9^IBACSV(+IBADX(IBI),IBDATE)
 . S IBSTR=$J("",1)_$J(IBCNT,3)_")  "_$P(IBX,U,1)_$J("",(10-$L($P(IBX,U,1))))_$P(IBX,U,3)
 ;
 S VALMCNT=IBLN-1
 Q
 ;
DIAGSET(STR,LN,COL,WD,RV) ; set up TMP array with screen data
 D SET^VALM10(LN,STR)
 S LN=LN+1
 Q LN
 ;
 ;CLONED FROM RTN IBJTBC TPI BILL PROCEDURES SCREEN
 ;CALLED FROM IBACCWLEE
PROCBLD(IBIFN,IBLN,VALMCNT) ;
 N IB,IBI,IBJ,IBX,IBY,IBDXI,IBSTR,IBD,IBT,IBPRC,IBXDATA,IBZPRC,IBZDX
 D F^IBCEF("N-UB-04 PROCEDURES","IBZPRC",,IBIFN)
 S IBSTR=""
 ;I +$O(IBZPRC(0))=0 F IBSTR="","Bill contains no procedures." S IBLN=$$PROCSET(IBSTR,IBLN)
 I +$O(IBZPRC(0))=0 F IBSTR="","Bill contains no procedures.","" S IBLN=$$PROCSET(IBSTR,IBLN)  ;TPF;IB*2*770v48;EBILL-6073 ADD A BLANK LINE FOR READABILITY
 ;
 D F^IBCEF("N-DIAGNOSES","IBZDX",,IBIFN)
 S IBX=0,IBI="" F  S IBI=$O(IBZDX(IBI)) Q:'IBI  S IBDXI($P(IBZDX(IBI),U,2))=IBI
 ;S IBLN=IBLN+1  ;TPF;IB*2*770v48;EBILL-6073
 S IBI=""
 F  S IBI=$O(IBZPRC(IBI)) Q:'IBI  D  S IBLN=$$PROCSET(IBSTR,IBLN)
 . N IBDATE ; Date of procedure
 . S IBX=IBZPRC(IBI)
 . S IBDATE=$P(IBX,U,2) I 'IBDATE S IBDATE=$$BDATE^IBACSV(IBIFN) ; The bills date
 . S IBPRC=$$PRCD^IBCEF1($P(IBX,U),1,IBDATE) Q:IBPRC=""
 . S IBT=0,IBSTR=" "_$P(IBPRC,U,2)
 . ;
 . I IBX["ICD0" D  Q
 .. S IBT=11,IBD=$P(IBPRC,U,3) S IBSTR=$$PROCSETLN(IBD,IBSTR,IBT,60)
 .. S IBT=72,IBD=$$DATE^IBJU1(+$P(IBX,U,2)) S IBSTR=$$PROCSETLN(IBD,IBSTR,IBT,8)
 . ;
 . I +$P(IBZPRC(IBI),U,15) S IBSTR=IBSTR_" "_$$MODLST^IBEFUNC2($P(IBZPRC(IBI),U,15))
 . S IBT=20,IBD=$P(IBPRC,U,3) S IBSTR=$$PROCSETLN(IBD,IBSTR,IBT,20)
 . S IBT=41,IBD=$$DATE^IBJU1(+$P(IBX,U,2)) S IBSTR=$$PROCSETLN(IBD,IBSTR,IBT,8)
 . ;
 . S IBT=51,IBY=$P(IBX,U,5) I IBY'="" S IBD="BASC:   Yes" D
 .. S IBSTR=$$PROCSETLN(IBD,IBSTR,IBT,29),IBLN=$$PROCSET(IBSTR,IBLN),IBSTR=""
 . S IBY=$P(IBX,U,6) I IBY'="" S IBD="DIV:    "_$P($G(^DG(40.8,+IBY,0)),U,1) D  ;ICR #417
 .. S IBSTR=$$PROCSETLN(IBD,IBSTR,IBT,29),IBLN=$$PROCSET(IBSTR,IBLN),IBSTR=""
 . S IBY=$P(IBX,U,7) I IBY'="" S IBD="CLINIC: "_$P($G(^SC(+IBY,0)),U,1) D   ;ICR #401
 .. S IBSTR=$$PROCSETLN(IBD,IBSTR,IBT,29),IBLN=$$PROCSET(IBSTR,IBLN),IBSTR=""
 . S IBY=$P(IBX,U,9) I IBY'="" D
 .. S IBT=51,IBY=$G(^IBE(353.1,+IBY,0)),IBD="POS:    "_$P(IBY,U,1) S IBSTR=$$PROCSETLN(IBD,IBSTR,IBT,11)
 .. S IBT=63,IBD=$P(IBY,U,2) S IBSTR=$$PROCSETLN(IBD,IBSTR,IBT,12),IBLN=$$PROCSET(IBSTR,IBLN),IBSTR=""
 . S IBY=$P(IBX,U,10) I IBY'="" D
 .. S IBT=51,IBY=$G(^IBE(353.2,+IBY,0)),IBD="TOS:    "_$P(IBY,U,1) S IBSTR=$$PROCSETLN(IBD,IBSTR,IBT,11)
 .. S IBT=63,IBD=$P(IBY,U,2) S IBSTR=$$PROCSETLN(IBD,IBSTR,IBT,17),IBLN=$$PROCSET(IBSTR,IBLN),IBSTR=""
 . S IBT=51,IBD=$P(IBX,U,16) I IBD,$P(IBX,U,10)=7 S IBSTR=$$PROCSETLN("MINUTES: "_$P(IBX,U,16),IBSTR,IBT,15)
 . ;
 . S IBT=51 F IBJ=11:1:14 S IBY=$P(IBX,U,IBJ) I IBY'="" D  S IBLN=$$PROCSET(IBSTR,IBLN),IBSTR=""
 .. S IBY=$G(IBDXI(+IBY)) Q:'IBY  S IBD="DX ("_IBY_"): "
 .. S IBY=+$G(IBZDX(+IBY)) Q:'IBY  S IBY=$$ICD9^IBACSV(+IBY,IBDATE)
 .. S IBT=51,IBD=IBD_$P(IBY,U,1) S IBSTR=$$PROCSETLN(IBD,IBSTR,IBT,16)
 .. S IBT=68,IBD=$P(IBY,U,3) S IBSTR=$$PROCSETLN(IBD,IBSTR,IBT,12)
 ;
 S VALMCNT=IBLN-1
 Q
 ;
PROCSETLN(STR,IBX,COL,WD) ;
 S IBX=$$SETSTR^VALM1(STR,IBX,COL,WD)
 Q IBX
 ;
PROCSET(STR,LN) ; set up TMP array with screen data
 N IBX,IBI
 D SET^VALM10(LN,STR)
 S LN=LN+1
PROCSETQ Q LN
 Q
 ;
 ;A
PRINT2 ;Print the detail line for a first party bill - IB*2*516
 N IBDAT,IBFN  ;TPF XINDEX
 N IBTC,IBTW,IBSW  ;MJL XINDEX
 S IBTC(1)=0,IBTW(1)=0,IBSW(1)=80,IBLR=1
 S IBDAT=$G(^TMP("IBRBF",$J,IBIFN,IBCIFN)),IBD=""
 S IBX=$P(IBDAT,"^",4) S:IBX="" IBX="Not Assigned" S IBD=$$SLINE(IBD,IBX,0,13)
 S IBX=$P(IBDAT,"^",6),IBD=$$SLINE(IBD,IBX,14,12)
 S IBX=$$GET1^DIQ(350,IBCIFN_",",.05) S:IBX="" IBX="Incomplete" S IBD=$$SLINE(IBD,IBX,27,11)
 S IBFN=$P(IBDAT,"^",4) I IBFN S IBFN=$O(^PRCA(430,"B",IBFN,0)) ;ICR #389
 S IBX=$J($P(IBDAT,"^",5),9,2),IBD=$$SLINE(IBD,IBX,40,10)
 S IBX=$P(IBDAT,"^",7),IBD=$$SLINE(IBD,IBX,53,10)
 S IBX=$J($S($G(^PRCA(430,+IBFN,7)):+($P(^(7),"^")+$P(^(7),"^",2)+$P(^(7),"^",3)+$P(^(7),"^",4)+$P(^(7),"^",5)),1:0),9,2),IBD=$$SLINE(IBD,IBX,63,10) ;ICR #389
 S IBLN=$$SET(IBT,IBD,IBLN,1)
 Q
 ;
STAT(RCIBFN) ;AR Status
 I '$G(RCIBFN) Q ""
 N RCSTAT
 S RCSTAT=$P($G(^PRCA(430,+RCIBFN,0)),"^",8),RCSTAT=$P($G(^PRCA(430.3,+RCSTAT,0)),"^",2)  ;ICR #389 ;ICR #3337
 Q RCSTAT
 ;
DATE(X) ; Convert FileMan date to mm/dd/yy
 Q $S($G(X):$E(X,4,5)_"/"_$E(X,6,7)_"/"_$E(X,2,3),1:"")
 ;
EMPL(DFN) ; returns employer name
 Q $P($G(^DPT(+DFN,.311)),U,1)  ;;ICR #426
 ;
 ;SET(TTL,DATA,LN,LR) ;
 N IBY
 S IBY=$J(TTL,IBTW(LR))_DATA D SET1(IBY,LN,IBTC(LR),(IBTW(LR)+IBSW(LR)))
 S LN=LN+1
 Q LN
 ;
 ;SETN(TTL,LN,LR,RV) ;
 N IBY
 S IBY=" "_TTL_" " D SET1(IBY,LN,IBNC(LR),$L(IBY),$G(RV))
 S LN=LN+1
 S VALMCNT=LN  ;TPF
 Q LN
 ;
 ;SET1(STR,LN,COL,WD,RV) ; set up TMP array with screen data
 N IBX S IBX=$G(@VALMAR@(LN,0))
 S IBX=$$SETSTR^VALM1(STR,IBX,COL,WD)
 D SET^VALM10(LN,IBX) I $G(RV)'="" D CNTRL^VALM10(LN,COL,WD,IORVON,IORVOFF)
 Q
SET(IBT,IBD,IBLN,IBLR) ;
 N LN S LN=$$SET2(IBT,IBD,IBLN,IBLR)  ;TPF
 S VALMCNT=IBLN
 Q LN
 ;
SET1(STR,LN,COL,WD,RV) ; set up TMP array with screen data
 N IBX S IBX=$G(@VALMAR@(LN,0))
 S IBX=$$SETSTR^VALM1(STR,IBX,COL,WD)
 D SET^VALM10(LN,IBX) I $G(RV)'="" D CNTRL^VALM10(LN,COL,WD,IORVON,IORVOFF)
 Q
 ;
SET2(TTL,DATA,LN,LR) ;EP -
 N IBY
 S IBY=$J(TTL,IBTW(LR))_DATA D SET1(IBY,LN,IBTC(LR),(IBTW(LR)+IBSW(LR)))
 S LN=LN+1
 Q LN
 ;
SLINE(IBD,DATA,COL,WD) ; format a single line with multiple data fields
 S IBD=$E(IBD,1,(COL-1)),IBD=IBD_$J("",(COL-$L(IBD))),IBD=IBD_$E(DATA,1,WD)
 Q IBD
 ;
SETN(TTL,LN,LR,RV) ;EP -
 N IBY
 S IBY=" "_TTL_" " D SET1(IBY,LN,IBNC(LR),$L(IBY),$G(RV))
 S LN=LN+1
 Q LN