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

IBACCWLAIREAS.m

Go to the documentation of this file.
IBACCWLAIREAS ;EDE/TPF - ACC (Automated Community Care) Encounters - Action Item Reassignment; 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 REASSIGN^IBACCWLRA
 ;CALLED BY ACTION PROTOCOLS:
 ;IBACC WL IBACCCOMMON REASSIGN ENCOUNTER
REASSIGN ;EP - REASSIGN CLAIM TO OTHER USER/GROUP. CREATES NEW ENTRY IN MULTIPLE #4 PREVIOUS ACTIVITY
 N ACTION,ACTIONCODE,ACTION101,ACTCODEIEN,ACTGRPIEN,ACTIVITYCODE,ACTCODES,ACTCODENUM,ALLOWEDGRPS,ASSIGNTOGRPIEN
 N BATCHITEM,BATCHCOMMENT,BATCHGROUP,IBDAIEN,ESCAPE,LASTONEPUBLISHED
 N DUOUT,DIROUT,DTOUT
 ;
 S VALMSG="* = In progress| ! = Patient not in VistA |??=Help"
 ;
 S ACTION=$G(Y(1))
 S ACTIONCODE=$$GET1^DIQ(101,$P(Y(1),U,2)_",",44,"E")  ;TPF;IB*2*770v22;EBILL-5021 
 S ACTION101=$P(ACTION,U,2)
 ;
 I '$G(IBDA) N IBDA D SEL(.IBDA,"L")
 ;
 I '$D(IBDA) S VALMBCK="R" Q
 ;
 Q:$G(IBDA(IBDA))["----------------------"
 ;
 D FULL^VALM1  ;TPF;IB*2*770v26;EBILL-5128
 ;CHECK SELECTED RECORDS TO SEE IF THEY HAVE BEEN REASSIGNED. IF IN THE "UNAVAILABLE STATUS' REMOVE FROM BATCH
 D AVAILABLECHK^IBACCWLUTIL1(.IBDA)
 ;
 ;BEGIN TPF;IB*2*770vPURPLE;EBILL-5466
 I ACTIONCODE="NB" D  Q:'$D(IBDA)  ;BEGIN TPF;IB*2*770v36;EBILL-5754
 .D NBSCREEN^IBACCWLUTIL1(.IBDA)
 .S VALMBCK="R"
 .Q:'$D(IBDA)
 .;END TPF;IB*2*770vPURPLE;EBILL-5466
 ;
 I '$D(IBDA) S VALMBCK="R" Q
 ;I IBDA=1,('$D(IBDA(IBDA))) S VALMBCK="R" Q   ;TPF;IB*2*770v20;BEGIN EBILL-4055 MOD RELEVANT TO THE RU ACTION WITH ACTIVITY CODE 508 FROM EE ONLY
 I IBDA("TOTAL")=1,('$D(IBDA(IBDA))) S VALMBCK="R" Q   ;TPF;IB*2*770v22;BEGIN EBILL-4920 CORRECTION TO ERROR RESOLUTION FOUND DURING EBILL-4055
 ;
 S ACTCODENUM=0
 S ACTCODES=0
 F  S ACTCODES=$O(^IBA(364.92,"AC",ACTIONCODE,USERGROUP,ACTCODES)) Q:ACTCODES=""  D  ;GET ACTIVITY CODES ALLOWED BY THIS ACTION AND USER GROUP
 .S ACTCODENUM=$G(ACTCODENUM)+1
 .;GET IEN FOR USE IN SCREEN
 .S ACTCODEIEN=$O(^IBA(364.92,"B",ACTCODES,0))
 .Q:$P($G(^IBA(364.92,ACTCODEIEN,0)),U,4)  ;SKIP INACTIVE ACTIVITY CODES
 .S ACTCODES(ACTCODEIEN)=ACTCODES
 ;
 I ACTCODENUM<0!(ACTCODENUM=0) D  Q
 .W !!,"THERE ARE NO ACTIVITY CODES SET UP FOR ACTION: "_ACTIONCODE_" AND USER GROUP: "_USERGROUP
 .W !,"PLEASE REPORT TO YOUR IB BILLING SUPERVISOR."
 .S VALMBCK="R"
 .N DIR
 .S DIR(0)="E"
 .D ^DIR
 ;
 I ACTCODENUM=1 D   ;TPF;IB*2*770v37;EBILL-5789
 .W !!,"THERE IS ONLY ONE ACTIVITY CODE SET UP FOR"
 .W !,"ACTION: "_ACTIONCODE
 .W !,"USER GROUP: "_USERGROUP
 .S ACTCODEIEN=$O(ACTCODES(0))
 .W !,"ACTIVITY CODE: ",$TR($P(^IBA(364.92,ACTCODEIEN,0),U,1,2),U," ")
 .W !,"SO IT WILL BE USED TO UPDATE THE WORKLIST."
 .;TPF;IB*2*770v37;EBILL-5789
 ;
 N DIC
 I ACTCODENUM>1 D  I Y<0 S VALMBCK="R" Q
 .S DIC("S")="I $D(ACTCODES(Y))"
 .S DIC(0)="AEMQ"
 .S DIC="^IBA(364.92,"
 .D ^DIC
 .Q:Y<0
 .S ACTCODEIEN=+Y
 ;
 ;BEGIN TPF;IB*2*770v34;EBILL-5715
 I $$GET1^DIQ(364.92,ACTCODEIEN_",",.01)=506 D  Q:'$D(IBDA)  ;BEGIN TPF;IB*2*770v36;EBILL-5754
 .D IPSCREEN^IBACCWLUTIL1(.IBDA)  ;INPATIENT SCREEN
 .S VALMBCK="R"
 .Q:'$D(IBDA)
 ;END TPF;IB*2*770v34;EBILL-5715
 ;
 ;BEGIN TPF;IB*2*770v37;EBILL-5795 CONFIRMATION PROMPT
 N DIR,DUOUT,DIROUT,DTOUT,X,Y
 I (U_23_U_26_U_27_U_508_U)'[(U_$$GET1^DIQ(364.92,ACTCODEIEN_",",.01)_U) D  I $D(DUOUT)!$D(DIROUT)!$D(DTOUT)!(Y=0) S VALMBCK="R" Q
 .W !
 .S DIR(0)="YO"
 .S DIR("A")="Are you sure you wish to continue"
 .S DIR("B")="Y"
 .D ^DIR
 ;END TPF;IB*2*770v37;EBILL-5795
 ;
 S LASTONEPUBLISHED=0
 S ESCAPE=0
 ;
 N TMPIBDA  ;TPF;IB*2*770v34;EBILL-5708
 S IBDAIEN=""
 F BATCHITEM=1:1 S IBDAIEN=$O(IBDA(IBDAIEN)) Q:'IBDAIEN!($G(ESCAPE))  D
 .Q:$G(IBDA(IBDAIEN))["----------------------"
 .;
 .;TPF;IB*2*770v20;BEGIN EBILL-4055
 .I (U_23_U_26_U_27_U_508_U)[(U_$$GET1^DIQ(364.92,ACTCODEIEN_",",.01)_U) D    ;TPF;IB*2*770v27;EBILL-5346
 ..M TMPIBDA=IBDA  ;TPF;IB*2*770v34;EBILL-5708
 ..D RESUBMITLOOP^IBACCWLAIBILL(IBDAIEN,BATCHITEM,.BATCHCOMMENT,.SUCCESS,.LASTONEPUBLISHED)    ;TPF;IB*2*770v34;EBILL-5708
 ..I '$D(IBDA) M IBDA=TMPIBDA  ;TPF;IB*2*770v34;EBILL-5708
 .E  D REASSIGNLOOP(IBDAIEN,ACTCODEIEN,ESCAPE,BATCHITEM,.BATCHCOMMENT,.BATCHGROUP,.LASTONEPUBLISHED)
 ;
 ;TPF;IB*2*770v38;EBILL-5485
 ;IF THE WL IS A PARENT OR DISPLAYS RECORDS WE RELOAD
 I $G(IBPARENT) K @VALMAR S:VALMBG=VALMLST VALMBG=VALMBG-VALM("LINES") D PULLLIST^IBACCWL1(.IBDAYSMAX,.IBBILLER,.IBDIV,.IBSORT,0) S VALMBCK="R" Q 
 E  S IBICAMEFROMEE=1 S VALMBCK="R" Q  ;TPF;IB*2*770v38;EBILL-5485
 ;
 S VALMBCK="R"
 ;
 Q
 ;
REASSIGNLOOP(IBDAIEN,ACTCODEIEN,ESCAPE,BATCHITEM,BATCHCOMMENT,BATCHGROUP,LASTONEPUBLISHED) ;LOOP THROUGH SELECTIONS
 ;
 N ADDFDA,ADDIENS,ADDERR,CURASSIGGRP,DEFSTATUS,DFN,DIC,EDITFDA,EDITIENS,EDITERR,FROMSTATUS
 N IBBILL,IBIFN,IBENCIFN,NOW,PREVACTIVITY,PUBSUCCESS,PREVACTIVITY,REP,X,Y
 ;
 ;IBPARENT=0 SHOWS IT IS A "CHILD" SCREEN!
 I $G(IBPARENT)=0 D  ;TPF;IB*2*770v38;EBILL-5485
 .S IBENCIFN=$G(@VALMAR@("IEN3649",1))
 .S IBIFN=$G(@VALMAR@("IEN399",1))
 E  D
 .S IBIFN=$G(@VALMAR@(IBDAIEN,"IEN399",1))
 .S IBENCIFN=$G(@VALMAR@(IBDAIEN,"IEN3649",1))
 ;
 S CURASSIGGRP=$$GET1^DIQ(364.9,IBENCIFN_",",3.01)
 S FROMSTATUS=$$GET1^DIQ(364.9,IBENCIFN_",",.16)
 ;
 I IBENCIFN S DFN=$P($G(^IBA(364.9,IBENCIFN,2)),U)
 E  S DFN="NOT FOUND"
 ;
 D FULL^VALM1  ;TPF;IB*2*770v32;EBILL-5503
 ;
 W !!,"PROCESSING RECORD(S): " N CNT,IEN S IEN=0 F CNT=1:1 S IEN=$O(IBDA(IEN)) Q:'IEN  W $S(CNT'=1:",",1:"")_IEN
 ;
 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
 .Q:$G(ACTIONCODE)="NB"  ;TPF;IB*2*770v37;EBILL-5755
 .W !!,"This encounter does not have a K#."
 ;
 I $G(IBBILL)'="" D
 .W !,"ACC CLAIM/BILL "_IBBILL_" SELECTED" H 2
 E  D
 .Q:$G(ACTIONCODE)="NB"  ;TPF;IB*2*770v37;EBILL-5755
 .W !,"X12 ENCOUNTER NUMBER: ",$P($G(^IBA(364.9,IBENCIFN,0)),U,15),!
 ;
 D FULL^VALM1
 ;
 S ACTGRPIEN=$O(^IBA(364.92,ACTCODEIEN,5,"B",USERGROUP,0))  ;IEN OF ASSIGNING GROUP
 S ASSIGNGRP=USERGROUP
 ;
 S:$G(ACTGRPIEN)'="" ASSIGNTOGRPIEN=$O(^IBA(364.92,ACTCODEIEN,5,ACTGRPIEN,5,0))
 S:$G(ASSIGNTOGRPIEN)'="" ASSIGNTOGRP=$G(^IBA(364.92,ACTCODEIEN,5,ACTGRPIEN,5,ASSIGNTOGRPIEN,0))
 ;
 S DEFSTATUS=$$GET1^DIQ(364.92,ACTCODEIEN,.03,"")
 ;
 I DEFSTATUS'="CLOSED",(ASSIGNTOGRPIEN="")!($P($G(^IBA(364.92,ACTCODEIEN,5,ACTGRPIEN,5,0)),U,3)>1),(BATCHITEM=1) D  I ASSIGNTOGRP=U S VALMBCK="R" Q  ;TPF;IB*2*7077V6;EBILL=????;10/15/2024
 .W !!,"YOU CAN REASSIGN THIS ENCOUNTER TO THE FOLLOWING GROUPS:"
 .N CODES,DA,DIR,ALLOWEDGRPS,CODESLIST
 .;S CODES=$P($G(^DD(364.925,.01,0)),U,3)
 .D FIELD^DID(364.925,.01,"","POINTER","CODESLIST")  ;MJL fix
 .S CODES=$G(CODESLIST("POINTER"))  ;MJL fix
 .S ALLOWEDGRPS=$P(CODES,";HIMS:HEALTH INFORMATION MANAGEMENT",1)_$P(CODES,";HIMS:HEALTH INFORMATION MANAGEMENT",2)
 .S DIR("S")="I Y'=ASSIGNGRP"       ;!(Y'=""HIMS"")"   ;TPF;IB*2*7077V6;EBILL=????;10/15/2024
 .S DIR(0)="S^"_ALLOWEDGRPS
 .D ^DIR
 .S (BATCHGROUP,ASSIGNTOGRP)=Y
 ;
 I $G(BATCHITEM)>1,$D(BATCHGROUP) S ASSIGNTOGRP=BATCHGROUP
 ;
 ;UPDATE PREVIOUS ACTIVITY
 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)
 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    ;TPF;IB*2*770v11;EBILL-4523  ;CHANGE TO SOP FOR ERROR CHECKS IN WL
 .W !!,"Problem adding Previous Activity Multiple for Encounter. Report to eBilling" S VALMBCK="R"
 .W !,$G(ADDERR("DIERR",1,"TEXT",1))
 .N DIR,DIRUT,DUOUT,DTOUT
 .D PAUSE^VALM1
 ;
 S DA=ADDIENS(1)
 S DA(1)=IBENCIFN
 D EDITPREVACT(.DA,.DEFSTATUS,.ASSIGNTOGRP,.ESCAPE,BATCHITEM,.BATCHCOMMENT)  ;EDIT PREVIOUS ACTIVITY
 ;
 D FULL^VALM1  ;TPF;IB*2*770v32;EBILL-5503
 ;AT THIS POINT THE UPDATE AND REASSIGNMENT IS SUCCESSFUL SO LETS UPDATE CURRENT SCREEN
 ;AND MOVE THE ENTRY TO OTHER SCREENS IF THEY ARE ACTIVE
 ;
 I $G(IBPARENT)=0 D EEPUBLISH^IBACCWLUTIL1(IBDAIEN,.IBFROMVALMDDF,"",.LASTONEPUBLISHED) S VALMBCK="R" Q  ;TPF;IB*2*770v38;EBILL-5485,5721
 ;
 ;UPDATE THIS USER'S SCREEN LIST
 D:$D(VALMDDF("ASSIGNEDGRP")) FLDTEXT^VALM10(IBDAIEN,"ASSIGNEDGRP",$G(ASSIGNTOGRP))
 D:$D(VALMDDF("INDICATOR")) FLDTEXT^VALM10(IBDAIEN,"INDICATOR","# ")      ;# MEANS ENCOUNTER HAS BEEN REASSIGNED OR SUCCESSFULLY RESUBMITTED AND UNAVAILABLE IN THE CURRENT WORKLIST
 I $D(VALMDDF("PREVACT")) S:$G(ACTCODEIEN) PREVACTIVITY=$P($G(^IBA(364.92,ACTCODEIEN,0)),U)_" "_$E($P($G(^IBA(364.92,ACTCODEIEN,0)),U,2),1,$P(VALMDDF("PREVACT"),U,3))
 D:$D(VALMDDF("PREVACT")) FLDTEXT^VALM10(IBDAIEN,"PREVACT",$G(PREVACTIVITY))
 ;
 I $G(ASSIGNTOGRP)'="" D
 .S @VALMAR@(IBDAIEN,"UNAVAILABLE")="RECORD HAS BEEN REASSIGNED. ON YOUR NEXT LOG IN YOU WILL NOT SEE THIS ENTRY."
 .D:$D(VALMDDF("DATEASSNED")) FLDTEXT^VALM10(IBDAIEN,"DATEASSNED",$$FMTE^XLFDT($$GET1^DIQ(364.9,IBENCIFN_",",3.03,"I"),"2ZD"))
 ;
 D:$G(PUBLISHINGON)&($G(ASSIGNTOGRP)'="") PUBLISH^IBACCWLUTIL(ASSIGNGRP,IBENCIFN,IBDAIEN,ASSIGNTOGRP,.VALMDDF,.PUBSUCCESS,IBDAIEN,.LASTONEPUBLISHED)  ;UPDATE OTHER USERS IN ASSIGNED TO GROUP
 ;
 S VALMBCK="R"
 ;
 Q
 ;
EDITPREVACT(DA,DEFSTATUS,ASSIGNTOGRP,ESCAPE,BATCHITEM,BATCHCOMMENT) ;EP- EDIT PREVIOUS ACTIVITY 
 N DIE,ERROR,PREVACTIENS,PREVACTRET,RETURN
 ;
 S ESCAPE=0
 ;
 ;CHANGE STATUS BASED ON ACTIVITY CODE
 I $G(DEFSTATUS)="" D EDITSTATUS^IBACCWLUTIL(DA(1),.DEFSTATUS)
 E  D UPDSTATUS^IBACCWLUTIL(DA(1),.DEFSTATUS)
 ;
 I DEFSTATUS'="CLOSED" D   ;IF STATUS CLOSED DO NOT ASK FOR A GROUP TO REASSIGN TO
 .I $G(ASSIGNTOGRP)="" D EDITAS2GRP^IBACCWLUTIL(DA(1),.ASSIGNTOGRP)
 .E  D UPDAS2GRP^IBACCWLUTIL(DA(1),.ASSIGNTOGRP,1)  ;TPF;IB*2*770v23;EBILL-5036
 ;
 ;TPF;IB*2*770v32;EBILL-5503
 I $G(ACTCODENUM)'=1,($G(ACTIONCODE)'="NB") D  ;TPF;IB*2*770v37;EBILL-5789
 .N DIR
 .S DIR(0)="E"
 .S DIR("A")="Type <Enter> to continue"  ; EBILL-5859;WCJ;v39
 .D ^DIR
 ;
 ;
 S PREVACTIENS=$$IENS^DILF(.DA)
 I BATCHITEM=1 D  Q
 .W !!,"Enter a comment so processing can fully be documented and the Reassignment"
 .W !,"Group knows what has already been done or might be requested to do."
 .W !,"This comment will be applied to "_$S($G(IBDA("TOTAL"))>1:"the entire batch.",1:"this encounter.")  ;TPF;IB*2*770v38;EBILL-5825
 .W !
 .;
 .S DIE="^IBA(364.9,"_DA(1)_",4,"
 .S DR=""
 .S DR=DR_"10"
 .D ^DIE
 .D GETS^DIQ(364.94,PREVACTIENS,"**","EIR","PREVACTRET","ERROR")
 .M BATCHCOMMENT=PREVACTRET(364.94,PREVACTIENS,"PREVIOUS ACTIVITY COMMENTS")
 .K BATCHCOMMENT("E")
 .K BATCHCOMMENT("I")
 ;
 I BATCHITEM>1,$D(BATCHCOMMENT)  D  Q  ;THIS MEANS WE HAVE ALREADY CREATED A COMMENT IF BATCHITEM=1
 .K WPERR D EDITPREVACT^IBACCWLUTIL(PREVACTIENS,.BATCHCOMMENT,.WPERR)
 .I $D(WPERR) D  ;TPF;IB*2*770v11;EBILL-4523  ;CHANGE TO SOP FOR ERROR CHECKS IN WL
 ..W !!,"Problem adding comment to Encounter. Report to eBilling"
 ..S VALMBCK="R"
 ..W !,$G(WPERR("DIERR",1,"TEXT",1))
 ..N DIR,DIRUT,DUOUT,DTOUT
 ..D PAUSE^VALM1
 ;
 S VALMBCK="R"
 Q
 ;
SEL(IBDA,OPTION) ;EP - 
 K IBDA,VALMY
 D FULL^VALM1
 D EN^VALM2($G(XQORNOD(0)),$S($G(OPTION)'="":OPTION,1:"S"))
 Q:'$D(VALMY)
 ;
 S IBDA("TOTAL")=0
 S IBDA=0
 F  S IBDA=$O(VALMY(IBDA)) Q:'IBDA  D
 .S IBDA(IBDA)=$G(@VALMAR@(+IBDA,0))
 .S IBDA("TOTAL")=IBDA("TOTAL")+1
 S IBDA=$O(IBDA(""))  ;ONLY IF ONE SELECTION. NEED A FOR LOOP FOR MULTIPLES
 ;
 Q