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

IBACCWLUTIL4.m

Go to the documentation of this file.
IBACCWLUTIL4 ;EDE/TPF - ACC (Automated Community Care) Encounters utility APIs (Cont.) ; 12-SEP-2023
 ;;2.0;INTEGRATED BILLING;**770**;21-MAR-2024;Build 119
 ;;Per VA Directive 6402, this routine should not be modified.
 ;
 Q
 ;
NEWPROVMAIN ;EP - PROVIDER MAINTENCE - HAD TO MOVE BECAUSE OF SIZE FROM IBACCWLAIVIEW
 ;
 N IBACCNEWNPI,DUOUT,DTOUT,DUROUT,NEWNPI,X,Y
 ;
 ;ARRAY HOLDING NEW PROV NPIs
 S IBACCNEWNPI("CALLER")="PROVMAIN^IBACCWUTIL4"  ;IS CALLER NEEDED? PERMISSION IN PROV. MAIN?
 ;
 D FULL^VALM1
 K IBNVPMIF  ;NEWED AND SET IN NP^IBCEP6 TPF;EBILL-??? TESTING
 ;
 D EN^IBCEP6  ;TAKES YOU TO [IBCE PROVIDER MAINT^Provider ID Maintenance
 ;
 D FULL^VALM1
 ;
 ;B:$G(DUZ)=561 "S+"
 ;S IBACCNEWNPI("NEWNPI",1003004318)=""  ;TPF;EBILL-9999;ISSUE #463
 ;S IBACCNEWNPI("NEWNPI",1003007311)=""
 ;S IBACCNEWNPI("NEWNPI",1003008533)=""
 ;S IBACCNEWNPI("NEWNPI",1417977760)=""
 ;S IBACCNEWNPI("NEWNPI",1003018086)=""
 ;S IBACCNEWNPI("NEWNPI",1003020116)=""
 ;
 I '$D(IBACCNEWNPI("NEWNPI")) D  Q
 .W !!,"A NEW ENTRY WAS NOT DETECTED SO AN NPI UPDATE WILL NOT OCCUR",!
 .N DIR
 .S DIR(0)="E"
 .D ^DIR
 ;
 W !!,"The following NPIs were added to the VistA database."
 W !
 S NEWNPI=0
 F  S NEWNPI=$O(IBACCNEWNPI("NEWNPI",NEWNPI)) Q:NEWNPI=""  D
 .W !,NEWNPI
 W !,""
 W !,"Encounters requiring these NPIs will be re-submitted."
 W !,"If an encounter successfully transmits it will be closed."
 W !,"Active work list displays will be updated appropriately."
 ;
 ;ALLOW BACKGROUND TASK
 ;N ZTSK D TASKMAN(.ZTSK)
 ;Q:$G(ZTSK)
 ;
 N DIR
 W !
 S DIR(0)="E"
 D ^DIR
 Q:$D(DUOUT)!$D(DUROUT)!$D(DTOUT)
 ;
 D NPIUPDATE(.IBACCNEWNPI)  ;CHECK "ANPI" X-REF AND PROCESS RESUBMISSIONS BASED ON NEW NPIs ENTERED IN PROV. MAIN. AND THOSE IN "ANPI"
 ;
 W !!,"Re-submissions completed!"
 ;
 N DIR
 W !
 S DIR(0)="E"
 D ^DIR
 ;
 Q
 ;
NPIUPDATE(IBACCNEWNPI) ;EP - RESUBMIT NPI IF USER ADDED AN NPI AND IT IS ALSO LISTED IN THE "ANPI" X-REF
NPIUPDATEQ ;EP - TASKMAN ENTRY POINT?
 ;
 Q:'$D(IBACCNEWNPI)  ;MAKE SURE TASK HAS AN ARRAY TO WORK WITH
 ;
 N IBENCIFN,NEWNPI,NEWORDER,ORDERBYENC,RESUBMITTED
 ;
 D ORDERBYENC(.ORDERBYENC,.IBACCNEWNPI)
 ;
 S NEWNPI=""
 F  S NEWNPI=$O(IBACCNEWNPI("NEWNPI",NEWNPI)) Q:NEWNPI=""  D
 .I '$D(^IBA(364.9,"ANPI",NEWNPI))  W !!!,"New NPI "_NEWNPI_" was not found in Missing NPI error list - no encounters to resubmit." Q
 .S IBENCIFN=0
 .F  S IBENCIFN=$O(^IBA(364.9,"ANPI",NEWNPI,IBENCIFN)) Q:'IBENCIFN  D
 ..Q:$D(RESUBMITTED(IBENCIFN))  ;DO NOT RESUBMIT IEN ALREADY SUBMITTED. NO MATTER HOW MANY NPIS IN THE "ANPI" X-REF
 ..Q:(U_0_U_1_U)'[(U_$$GET1^DIQ(364.9,IBENCIFN_",",.16,"I")_U)  ;PROCESS ONLY OPEN AND IN PROGRESS ENCOUNTERS
 ..D RESUBMIT(IBENCIFN,.ORDERBYENC,NEWNPI)
 ..S RESUBMITTED(IBENCIFN)=""
 ;
 Q
 ;
ORDERBYENC(ORDERBYENC,IBACCNEWNPI) ;EP - GET REDORDER FOR USE IN PREV ACT, COMMENTS
 ;
 N NPI,ENC,WL
 S NPI=0
 F  S NPI=$O(^IBA(364.9,"ANPI",NPI)) Q:NPI=""  D
 .Q:'$D(IBACCNEWNPI("NEWNPI",NPI))
 .S ENC=0
 .F  S ENC=$O(^IBA(364.9,"ANPI",NPI,ENC)) Q:ENC=""  D
 ..Q:$$GET1^DIQ(364.9,ENC_",",3.01,"I")=""  ;TPF;IB*2*770v44;EBILL-6009
 ..Q:$$GET1^DIQ(364.9,ENC_",",.16,"I")=""  ;TPF;IB*2*770v44;EBILL-6009
 ..Q:$$GET1^DIQ(364.9,ENC_",",.16,"I")>1   ;QUIT IF CLOSED OR PURGED
 ..;
 ..S ORDERBYENC(ENC,NPI)=""
 ..S WL=$$GET1^DIQ(364.9,ENC_",",3.01,"I")
 ..S ORDERBYENC("WL",ENC,WL)=""
 ;
 Q
 ;
RESUBMIT(IBENCIFN,ORDERBYENC,NEWNPI) ;EP - RESUBMIT
 ;
 N ADDFDA,ADDIENS,ADDERR,BILLNUM,IBENCIENS,SUCCESS,X12CLAIM
 ;
 S IBENCIENS=IBENCIFN_","
 ;GET PREVIOUS DATA BEFORE RESUBMIT
 S (ASSIGNGRP,ASSIGNTOGRP,PREASSIGNTOGRP)=$$GET1^DIQ(364.9,IBENCIENS,3.01,"I")
 ;
 S ADDIENS="+1,"_IBENCIFN_","
 S ADDFDA(364.94,ADDIENS,.01)="NOW"
 S ADDFDA(364.94,ADDIENS,.02)="`"_$G(DUZ)
 ;S ADDFDA(364.94,ADDIENS,.03)="`"_$G(ACTCODEIEN)    ;THERE IS NO ACIVITY CODE FOR A NPI UPDATE
 S ADDFDA(364.94,ADDIENS,.04)=$G(ASSIGNGRP)
 S ADDFDA(364.94,ADDIENS,.05)=$G(ASSIGNTOGRP)
 ;
 D UPDATE^DIE("ES","ADDFDA","ADDIENS","ADDERR")
 ;
 I $D(ADDERR) D  Q
 .W !!,"Problem adding Previous Activity multiple for Encounter ien: : "_$G(IBENCIFN)  ;TPF;IB*2*770v11;EBILL-4523  ;CHANGE TO SOP FOR ERROR CHECKS IN WL
 .W !,$G(ADDERR("DIERR",1,"TEXT",1))
 .N DIR,DIRUT,DUOUT,DTOUT
 .D PAUSE^VALM1
 ;
 S DA=ADDIENS(1)
 S DA(1)=IBENCIFN
 S DEFSTATUS="IN PROGRESS"
 D EDITPREVACT(.DA,DEFSTATUS,.ASSIGNTOGRP,.ORDERBYENC)  ;EDIT PREVIOUS ACTIVITY
 ;
 S X12CLAIM=$$GET1^DIQ(364.9,IBENCIFN_",",.15)
 S BILLNUM=$$GET1^DIQ(364.9,IBENCIFN_",",2.02)
 ;
 S SUCCESS=$$VAL^IBCE837ACCU(IBENCIFN)  ;returns a 1 for success, 0 for failure.  if failure, file 364.9 will have the reason(s)
 W !!,"Submitting ",$S(BILLNUM'="":"Bill #: "_BILLNUM,1:"Encounter #: "_X12CLAIM)
 W !,"New NPI entered "_$G(NEWNPI)
 W:SUCCESS !,"Resubmission succeeded!"  ;TPF;IB*2*770vPURPLE;EBILL-5700
 ; 
 D UPDATEWL(IBENCIFN,ASSIGNTOGRP,SUCCESS)  ;UPDATE ENCOUNTER INDICATOR ON RESUBMIT WORKGROUP DISPLAYS
 ;
 Q
 ;
 ;D UPDATEWL^IBACCWLUTIL4(28,1437191376,"RUR")
 ;UPDATEWL(IBENCIFN,NEWNPI,ASSIGNTOGRP,SUCCESS) ;EP - UPDATE ACTIVE WORK LISTS
UPDATEWL(IBENCIFN,ASSIGNTOGRP,SUCCESS) ;EP - UPDATE ACTIVE WORK LISTS
 ;
 N ABORT,CNR,IBDAIEN,IBWLGRP,JOB,VALMDDF,WLFOUND
 S ABORT=0
 ;
 S IBWLGRP="IBACCWL"
 S CNT=0
 F  S IBWLGRP=$O(^TMP(IBWLGRP)) Q:IBWLGRP=""!(IBWLGRP'[("IBACCWL"))  D    ;UPDATE ALL WRK GRPS WITH THIS ENCOUNTER
 .Q:IBWLGRP[("EE")  ;SKIP EE DISPLAYS
 .S JOB=0
 .F  S JOB=$O(^TMP(IBWLGRP,JOB)) Q:'JOB  D
 ..S IBDAIEN=$G(^TMP(IBWLGRP,JOB,"IEN3649",IBENCIFN))
 ..Q:IBDAIEN="" 
 ..K ORDERBYENC("WL",IBENCIFN)  ;ENCOUNTER IS NOT IN THIS WL  ;TPF;IB*2*770vPURPLE;EBILL-5700
 ..D NPIVALMDDF(IBWLGRP,.ABORT,.NPIVALMDDF)
 ..Q:$G(ABORT)
 ..S CNT=CNT+1
 ..;UPDATE THE APPROPRIATE FIELDS IN WL
 ..I SUCCESS D SUCCESS(IBENCIFN,IBDAIEN,.NPIVALMDDF,CNT)
 ..E  D NOTSUCCESS(IBENCIFN,IBDAIEN,.NPIVALMDDF,ASSIGNTOGRP,CNT)
 I $D(ORDERBYENC("WL",IBENCIFN)) D NOTINWLDISP(IBENCIFN) K ORDERBYENC("WL",IBENCIFN)  ;DISPLAY INFO IF NOT FOUND IN ANY WL
 ;
 Q
 ;
NOTINWLDISP(IBENCIFN) ;EP -DISPLAY FOR THOSE NOT FOUD IN WL
 ;
 N ASSIGNTOGRP,STATUS,BILLNUM
 S BILLNUM=$$GET1^DIQ(364.9,IBENCIFN_",",2.02,"E")
 I BILLNUM="" S BILLNUM=$$GET1^DIQ(364.9,IBENCIFN_",",.15,"E")
 S ASSIGNTOGRP=$$GET1^DIQ(364.9,IBENCIFN_",",3.01,"I")   ;TPF;IB*2&770v44;EBILL-5924
 S STATUS=$$GET1^DIQ(364.9,IBENCIFN_",",.16,"E")
 I STATUS'="CLOSED" W !,"Bill/Enc # "_$G(BILLNUM)_" has been assigned to "_$G(ASSIGNTOGRP)
 W !,"Status is "_$G(STATUS)
 ;
 Q
 ;
NPIVALMDDF(WLGRP,ABORT,NPIVALMDDF) ;EP - CREATE VALMDFF GIVEN WORK GROUP
 ;
 N LISTIEN,LISTNAME
 S LISTNAME="IBACC WL IBACC"_$P(WLGRP,"IBACCWL",2)
 S LISTIEN=$O(^SD(409.61,"B",LISTNAME,""))
 I LISTIEN="" W !!,"'"_LISTNAME_"' LIST TEMPLATE CAN NOT BE FOUND!!" S ABORT=1 Q
 ;
 S NPIVALMDDF("VALMAR")=$TR($P($G(^SD(409.61,LISTIEN,"ARRAY")),",")," ")
 ;
 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 NPIVALMDDF($P(^(0),U))=^(0)
 ;
 Q
 ;
NOTSUCCESS(IBENCIFN,IBDAIEN,VALMDDF,PREASSIGNTOGRP,CNT) ;EP - UPDATE DISPLAY FIELDS ONLY PERTINENT TO A FAILED RESUBMISSION
 ;
 N BILLNUM,STATUS,LINENUM,POSTASSIGNGRP,STATUS,VALMAR
 S VALMAR=$G(VALMDDF("VALMAR"))_","_JOB_")"
 Q:VALMAR=""
 ;
 S BILLNUM=$$GET1^DIQ(364.9,IBENCIFN_",",2.02,"E")
 I BILLNUM="" S BILLNUM=$$GET1^DIQ(364.9,IBENCIFN_",",.15,"E")
 S STATUS=$$GET1^DIQ(364.9,IBENCIFN_",",.16,"E")
 ;
 I $D(VALMDDF("BILLNUM")) D
 .D FLDTEXT^VALM10(IBDAIEN,"BILLNUM",BILLNUM)
 ;
 S POSTASSIGNGRP=$$GET1^DIQ(364.9,IBENCIFN_",",3.01,"I")
 ;
 D:$D(VALMDDF("INDICATOR")) FLDTEXT^VALM10(IBDAIEN,"INDICATOR","* ")
 D:$D(VALMDDF("REASCODE")) FLDTEXT^VALM10(IBDAIEN,"REASCODE",$$REASCODE^IBACCWLUTIL1(IBENCIFN))
 D:$D(VALMDDF("PREVACT")) FLDTEXT^VALM10(IBDAIEN,"PREVACT",$$PREVACT^IBACCWLUTIL1(IBENCIFN))
 ;
 D:$D(VALMDDF("INDICATOR")) FLDTEXT^VALM10(IBDAIEN,"INDICATOR","# ")
 W:$G(CNT)=1 !,"Bill/Enc # "_$G(BILLNUM)_" has been assigned to "_$G(POSTASSIGNGRP)  ;TPF;IB*2*770vPURPLE;EBILL-5700
 W:$G(CNT)=1 !,"Status is "_$G(STATUS)
 S @VALMAR@(IBDAIEN,"UNAVAILABLE")="IT HAS BEEN ASSIGNED TO A DIFFERENT WORK GROUP!"
 ;
 Q
 ;
SUCCESS(IBENCIFN,IBDAIEN,VALMDDF,CNT) ;EP - UPDATE DISPLAY FIELDS ONLY PERTINENT TO A SUCCSESSFUL RESUBMISSION
 ;
 N STATUS,VALMAR
 S VALMAR=$G(VALMDDF("VALMAR"))_","_JOB_")"
 Q:VALMAR=""
 ;
 ;DISPLAY STATUS SHOULD BE CLOSED IF SUBMISSION SUCCEEDED
 D:$D(VALMDDF("INDICATOR")) FLDTEXT^VALM10(IBDAIEN,"INDICATOR","C ")
 D:$D(VALMDDF("PREVACT")) FLDTEXT^VALM10(IBDAIEN,"PREVACT",$$PREVACT^IBACCWLUTIL1(IBENCIFN))
 S @VALMAR@(IBDAIEN,"UNAVAILABLE")="RECORD HAS BEEN SUCCESSFULLY TRANSMITTED! ON YOUR NEXT LOG IN YOU SHOULD NOT SEE THIS ENTRY"
 ;
 Q
 ;
EDITPREVACT(DA,DEFSTATUS,ASSIGNTOGRP,ORDERBYENC) ;EP- EDIT PREVIOUS ACTIVITY 
 ;
 N COMMENT,DIE,ENC,ERROR,LINE,NPI,PREVACTIENS,PREVACTRET,RETURN
 ;
 S ENC=DA(1)
 S PREVACTIENS=$$IENS^DILF(.DA)
 ;
 ;SET STANDARD NPI UPDATE COMMENT
 S COMMENT(1)=" "
 S COMMENT(2)="This encounter was resubmitted because required NPIs"
 S COMMENT(3)="were missing for auto-processing."
 S COMMENT(4)=" "
 S COMMENT(5)="The following NPIs were added using the"
 S COMMENT(6)="PM Provider Maintenance Menu ACTION:"
 S COMMENT(7)=" "
 ;
 S NPI="" F LINE=8:1 S NPI=$O(ORDERBYENC(ENC,NPI)) Q:'NPI  D
 .S COMMENT(LINE)="     "_$G(NPI)
 ;
 S COMMENT(LINE+1)=" "
 S COMMENT(LINE+2)="See Reasons not autobilled for updated results."
 ;
 K WPERR
 D EDITPREVACT^IBACCWLUTIL(PREVACTIENS,.COMMENT,.WPERR)
 ;
 I $D(WPERR) D
 .W !!,"Problem adding comment to Encounter. Report to eBilling"
 .W !,$G(WPERR("DIERR",1,"TEXT",1))
 .N DIR
 .S DIR(0)="E"
 .D ^DIR
 ;
 Q