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

IBACCWLPREV.m

Go to the documentation of this file.
IBACCWLPREV  ;EDE/TPF - ACC (Automated Community Care) Encounters - Action Item Previous Activity ; 12-SEP-2023
 ;;2.0;INTEGRATED BILLING;**770**;21-MAR-2024;Build 119
 ;;Per VA Directive 6402, this routine should not be modified.
 Q
 ;
 ;D EN^IBACCWLPREV(IBDA,IBIFN)
EN(IBENCIFN,IBIFN) ; -- main entry point for IBACC WL GENERIC VIEWER
 D EN^VALM("IBACC WL PREV. ACTIVITY VIEWER")
 Q
 ;
HDR ; -- header code
 ;
 N ENCOUNTER
 S VALMHDR(1)="Previous Activity for Bill#/Encounter #: "_$$GET1^DIQ(399,IBIFN_",",.01,"E")_"/"_$$GET1^DIQ(364.9,IBENCIFN_",",.15,"E")  ;TPF;IB*2*770v17;EBILL-4734
 ;
 Q
 ;
 ;CAN BE CALLED FROM RTN ACCENCCOM^IBJTTC OPTION:IBJ THIRD PARTY JOINT INQUIRY
 ;OR PREVACT^IBACCWLAI, ACTION ITEM: IBACC WL IBACCCOMMON PREV ACTIVITY
 ;OR PREVREVIEW^IBACCWLAIVIEW
INIT(IBENCIFN,IBIFN,IBLN) ; -- init variables and list array
 ;
 N ABORT,I,IBIFNIEN,IBTPJI,LINE,RECORDNUM  ;SET UP COLUMN ARRAY FOR THIS RTN CODE
 ;
 S $P(LINE,"-",81)=""
 S RECORDNUM=0
 S IBENCIFN=$G(IBENCIFN)
 S IBIFN=$G(IBIFN)
 ;
 ;THIS IS CURRENTLY BEING CALLED ONLY BY "IBACC WL ACC CLAIMS WORKLIST" BUT LETS NOT ASSUME IT WILL BE THE ONLY ONE
 I ($P($G(XQY0),U)'="IBACC WL ACC CLAIMS WORKLIST"),(IBIFN&$D(IBLN)) N VALMDDF,LISTIEN
 I ($P($G(XQY0),U)'="IBACC WL ACC CLAIMS WORKLIST"),(IBIFN&$D(IBLN)) D  Q:$G(ABORT)
 .S IBTPJI=1
 .S LISTIEN=$O(^SD(409.61,"B","IBACC WL PREV. ACTIVITY VIEWER",""))
 .I LISTIEN="" W !!,"'IBACC WL PREV. ACTIVITY VIEWER' LIST TEMPLATE CAN NOT BE FOUND!!" S ABORT=1 Q
 .S I=0  ;SET UP COLUMN DATA ARRAY
 .F  S I=$O(^SD(409.61,LISTIEN,"COL",I)) Q:'I  I $D(^(I,0)) S VALMDDF($P(^(0),U))=^(0)
 E  S IBTPJI=0 K @VALMAR
 ;
 ;BILL CAN HAVE SEVERAL ENCOUNTERS ASSOCIATED WITH IT.
 I $G(IBTPJI) S IBENCIFN=0 D  Q
 .F  S IBENCIFN=$O(^IBA(364.9,"C",IBIFN,IBENCIFN)) Q:IBENCIFN=""  D
 ..D SETIBTPJIHDR(.IBLN,.RECORDNUM,IBENCIFN,IBIFN)
 ..D ENCOUNTERS(IBENCIFN,IBIFN,.RECORDNUM)
 ..;
 ;
 I '$G(IBENCIFN) D  Q
 .W !!,"ENCOUNTER ENTRY IN FILE #364.9 UNDEFINED!!"
 .N DIR  ;TPF;IB*2*770v47;EBILL-6042
 .D PAUSE^VALM1
 ;
 D ENCOUNTERS(IBENCIFN,IBIFN)
 ;
 Q
 ;
ENCOUNTERS(IBENCIFN,IBIFN,RECORDNUM) ;EP - PULL PREV. ACTIVITY FOR EACH ENCOUNTER
 ;
 N IBBILL,PREVACTLSTDT  ;TPF;IB*2*770v18; DISCOVERED BUG
 N LINENUM   ;TPF XINDEX
 ;
 I IBIFN'="" D
 .S DFN=$P($G(^DGCR(399,+$G(IBIFN),0)),U,2)
 .S IBBILL=$P($G(^DGCR(399,IBIFN,0)),U)
 E  D
 .W !!,"This encounter does not have a K#."
 W:$G(IBBILL)'="" !,"ACC CLAIM/BILL "_$G(IBBILL)_" SELECTED" H 2
 ;
 S VALMCNT=0
 I $G(IBLN)'="" S VALMCNT=IBLN
 E  S VALMCNT=0
 S PREVACTLSTDT=$O(^IBA(364.9,IBENCIFN,4,"B",""),-1)  ;PREVIOUS ACTIVITY LAST DATE  ;IF REVERSE ORDER
 ;
 I PREVACTLSTDT="" D  Q
 .S RECORDNUM=$G(RECORDNUM)+1
 .S RECORD=""
 .S RECORD=$$SETFLD^VALM1(RECORDNUM,RECORD,"LINENUM")
 .S DATA="NO PREVIOUS ACTIVITY DATA FOUND"
 .S RECORD=$$SETFLD^VALM1(DATA,RECORD,"RECORD")
 .D SET(RECORD,.VALMCNT,.RECORDNUM,$G(PREVACTIENS),1)
 .N DIR,DIRUT,DUOUT,DTOUT
 .D PAUSE^VALM1
 .S VALMBCK="R"
 ;
 S PREVACTLSTDT=PREVACTLSTDT+.0001
 F  S PREVACTLSTDT=$O(^IBA(364.9,IBENCIFN,4,"B",PREVACTLSTDT),-1) Q:'PREVACTLSTDT  D
 .S PREVACTIEN=$O(^IBA(364.9,IBENCIFN,4,"B",PREVACTLSTDT,0))
 .S PREVACTIENS=PREVACTIEN_","_IBENCIFN_","
 .D GETS^DIQ(364.94,PREVACTIENS,"**","EIR","PREVACTRET","ERROR")
 .D CAPTION(364.94,PREVACTIENS,.PREVACTRET,.VALMCNT,.LINENUM,.RECORDNUM,1)
 .K PREVACTRET,ERROR
 ;
 I '$D(@VALMAR) W !!,"NO PREVIOUS ACTIVITY DATA FOUND" D
 .N DIR,DIRUT,DUOUT,DTOUT
 .D PAUSE^VALM1
 ;
 S IBLN=$G(VALMCNT)
 S VALMBCK="R"
 Q
 ;
CAPTION(FILENUM,PREVACTIENS,PREVACTRET,VALMCNT,LINENUM,RECORDNUM,SET) ;EP - CATPIONS FOR FIELD DATA
 ;
 N ACTDESC,ACTIEN,CAPTION,CAPOFFSET,RECORD
 S CAPOFFSET=20
 F FIELDNAME="DATE/TIME ENTERED","ACTIVITY CODE","ENTERED BY","ASSIGNING GROUP","REASSIGNED TO GROUP" D
 .;
 .S RECORD=""
 .;
 .I FIELDNAME="DATE/TIME ENTERED" D
 ..S RECORDNUM=$G(RECORDNUM)+1
 ..S RECORD=$$SETFLD^VALM1(RECORDNUM,RECORD,"LINENUM")
 .;
 .I FIELDNAME="ACTIVITY CODE" D  Q
 ..S ACTIEN=$G(PREVACTRET(364.94,PREVACTIENS,FIELDNAME,"I"))
 ..S:ACTIEN ACTDESC=$P($G(^IBA(364.92,ACTIEN,0)),U,2)
 ..;
 ..S CAPTION=$J(FIELDNAME_": ",CAPOFFSET)
 ..S DATA=$G(PREVACTRET(FILENUM,PREVACTIENS,FIELDNAME,"E"))_"  "_$G(ACTDESC)
 ..S DATA=CAPTION_DATA
 ..S RECORD=$$SETFLD^VALM1(DATA,RECORD,"RECORD")
 ..;
 ..D SET(RECORD,.VALMCNT,.RECORDNUM,PREVACTIENS,SET)
 ..;
 .S CAPTION=$J(FIELDNAME_": ",CAPOFFSET)
 .S DATA=$G(PREVACTRET(FILENUM,PREVACTIENS,FIELDNAME,"E"))
 .S DATA=CAPTION_DATA
 .S RECORD=$$SETFLD^VALM1(DATA,RECORD,"RECORD")
 .D SET(RECORD,.VALMCNT,.RECORDNUM,PREVACTIENS,SET)
 ;
 D COMMENTS(.PREVACTRET,.VALMCNT,.RECORDNUM,SET)
 ;
 S RECORD=""
 D SET(RECORD,.VALMCNT,.RECORDNUM,PREVACTIENS,SET)
 ;
 Q
 ;
CAPITALIZE(COLHEADER) ;EP - CONVERT COLUMNS FROM UPPERCASE
 ;
 N PIECE,NEWSTR,OLDSTR
 ;ASSUME FIELD NAMES MAY BE DELIMITED BY SPACES OR /
 S NEWSTR=""
 F PIECE=1:1 S OLDSTR=$P(COLHEADER," ",PIECE) Q:OLDSTR=""  D
 .S NEWSTR=NEWSTR_$$SENTENCE^XLFSTR(OLDSTR)
 S COLHEADER=NEWSTR
 ;
 Q
 ;
COMMENTS(PRECOMARRAY,VALMCNT,RECORDNUM,SET) ;EP - PROCESS COMMENTS
 N CHAR,COMMENT,COMMENTS,COMNUM,LINE,NEXTLINE,PREVCOMIEN,WINDOW
 S NEXTLINE=""
 S PREVCOMIEN=0
 N CAPOFFSET    ;TPF;IB*2*770v51;EBILL-6174
 S CAPOFFSET=0  ;TPF;IB*2*770v51;EBILL-6174
 ;
 F COMNUM=1:1 S PREVCOMIEN=$O(PRECOMARRAY(FILENUM,PREVACTIENS,"PREVIOUS ACTIVITY COMMENTS",PREVCOMIEN)) Q:'PREVCOMIEN  D
 .;
 .S COMMENT=""
 .I COMNUM=1 D
 ..;
 ..S COMMENT=$$SETFLD^VALM1($J("COMMENTS:",CAPOFFSET),COMMENT,"RECORD")
 ..D SET(COMMENT,.VALMCNT,RECORDNUM,PREVACTIENS,SET)
 .;
 .S LINE=$G(PRECOMARRAY(FILENUM,PREVACTIENS,"PREVIOUS ACTIVITY COMMENTS",PREVCOMIEN))
 .;
 .I $L(LINE)>81 D WORDWRAP(LINE,20)  ;TPF;IB*2*770v51;EBILL-6174
 .;BEGIN TPF;IB*2*770v51;EBILL-6174
 .;I COMNUM'=1 S LINE=NEXTLINE_" "_LINE
 .;S WINDOW=80-CAPOFFSET
 .;S CHAR=1
 .;I $L(LINE)>WINDOW D    ;LINE > WINDOW SIZE
 .;.S CHAR=0
 .;.I $E(LINE,WINDOW+CHAR)'=" " D
 .;..F CHAR=1:1 Q:$E(LINE,WINDOW-CHAR)=" "!((WINDOW-CHAR)=0)   ;FIND A SPACE TO CHOP THE LINE
 .;.S NEXTLINE=$E(LINE,WINDOW-CHAR+1,80)
 .;.S LINE=$E(LINE,1,WINDOW-2)
 .;END TPF;IB*2*770v51;EBILL-6174
 .;
 .S COMMENT=""
 .S COMMENT=$$SETFLD^VALM1($J("",CAPOFFSET)_LINE,COMMENT,"RECORD")
 .D SET(COMMENT,.VALMCNT,RECORDNUM,PREVACTIENS,SET)
 .S LINE=""
 .;
 Q
 ;
SETIBTPJIHDR(IBLN,RECORDNUM,IBENCIFN,IBIFN) ;EP - SET TPJIJ COMMENT HEADER FOR ACC ENCOUNTER PREVIOUS ACTIVITY
 ;
 N IBBILL,IBENC
 ;
 S VALMCNT=IBLN
 ;
 S:$G(IBIFN) IBBILL=$P($G(^DGCR(399,IBIFN,0)),U)
 S:$G(IBENCIFN) IBENC=$$GET1^DIQ(364.9,IBENCIFN_",",.01)
 ;
 S (DATA,RECORD)=""
 S DATA=$$SETSTR^VALM1("ACC ENCOUNTER COMMENTS FOR",DATA,25,54)
 S RECORD=$$SETFLD^VALM1(DATA,RECORD,"RECORD")
 D SET(RECORD,.VALMCNT,.RECORDNUM,"",1)
 ;
 S (DATA,RECORD)=""
 S DATA=$$SETSTR^VALM1("BILL: "_$G(IBBILL),DATA,25,54)
 S RECORD=$$SETFLD^VALM1(DATA,RECORD,"RECORD")
 D SET(RECORD,.VALMCNT,.RECORDNUM,"",1)
 ;
 S (DATA,RECORD)=""
 S DATA=$$SETSTR^VALM1("ENCOUNTER DATE: "_$G(IBENC),DATA,25,54)
 S RECORD=$$SETFLD^VALM1(DATA,RECORD,"RECORD")
 D SET(RECORD,.VALMCNT,.RECORDNUM,"",1)
 ;
 S (DATA,RECORD)=""
 S DATA=$$SETSTR^VALM1(LINE,DATA,1,80)
 S RECORD=$$SETFLD^VALM1(DATA,RECORD,"RECORD")
 D SET(RECORD,.VALMCNT,.RECORDNUM,"",1)
 S IBLN=VALMCNT
 ;
 Q
 ;
SET(X,VALMCNT,RECORDNUM,IEN,SET) ;EP -
 ;
 I '$G(SET) D  Q
 .W !,X
 ;
 S VALMCNT=VALMCNT+1
 S @VALMAR@(VALMCNT,0)=X
 S @VALMAR@("IDX",VALMCNT,RECORDNUM)=""
 S:$G(IEN)'="" @VALMAR@(VALMCNT)=$G(IEN)
 ;
 Q
 ;
HELP ; -- help code
 ;
 D PROTOCOL^IBACCWLUTIL
 ;
 Q
 ;
EXIT ; -- exit code
 K @VALMAR
 Q
 ;
EXPND ; -- expand code
 Q
 ;
 ;IF LINE >80 THE USE WP UTILITY
 ;D WORDWRAP^IBACCWLPREV("   At least one Rendering Provider's Specialty Code of 99 is invalid for Medicare  ")
 ;NEW TPF;IB*2*770v51;EBILL-6174
WORDWRAP(LINE,INDENT) ;EP - TAKE LONG LINE AND APPLY WORD PROCESSOR TO IT
 N COMMENT,DIWL,DIWPIEN,DIWR,DIWF,OFFSET
 K ^UTILITY($J,"W")
 S DIWL=1,DIWR=80,DIWF=""  ;ACCUMULATE MODE
 S $P(OFFSET," ",INDENT)=""
 S X=LINE
 D ^DIWP       ;OUR OWN LITTLE VISTA WORD PROCESSOR
 S WPIEN=$O(^UTILITY($J,"W",""))
 S DIWPIEN=0
 F  S DIWPIEN=$O(^UTILITY($J,"W",WPIEN,DIWPIEN)) Q:DIWPIEN=""  D
 .S COMMENT=$G(^UTILITY($J,"W",WPIEN,DIWPIEN,0))
 .I DIWPIEN=1 W !,COMMENT
 .E  W !,OFFSET_COMMENT
 K ^UTILITY($J,"W")
 Q