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

IB20P663.m

Go to the documentation of this file.
  1. IB20P663 ;/Albany - IB*2.0*663 POST INSTALL;07/25/19 2:10pm
  1. ;;2.0;Integrated Billing;**663**;Mar 20, 1995;Build 27
  1. ;Per VA Directive 6402, this routine should not be modified.
  1. Q
  1. ;
  1. POSTINIT ;Post Install for IB*2.0*663
  1. D BMES^XPDUTL(" >> Starting the Post-Initialization routine for IB*2.0*663")
  1. ; Adding AR CATEGORIES and REVENUE SOURCE CODES
  1. ;D QUEUEINT
  1. D INITUCDB ; Load initial data into Visit tracking DB
  1. D NEWCREAS ; Add more UC reason codes.
  1. D IBUPD ; Inactivate CHOICE and CC MTF Action Types
  1. D TSKPUSH ; add the nightly task
  1. D BMES^XPDUTL(" >> End of the Post-Initialization routine for IB*2.0*663")
  1. Q
  1. ;
  1. QUEUEINT ; Run the UC Visit DB initialization in the background.
  1. ;
  1. N ZTRTN,ZTDTH,ZTDESC,ZTIO,ZTSK
  1. ;
  1. ; Set up the other TaskManager variables
  1. S ZTRTN="INITUCDB^IB20P663"
  1. S ZTDTH=$$NOW^XLFDT
  1. S ZTDESC="IB*2.0*663 Initialize File 351.82 - Urgent Care Visit Tracking DB"
  1. S ZTIO=""
  1. D ^%ZTLOAD ; Call TaskManager
  1. D BMES^XPDUTL(" >> Task "_ZTSK_" started to update the Urgent Care Visit Tracking DB")
  1. Q
  1. ;
  1. INITUCDB ; Loop through the Copay file (350) to find any Urgent Care visits and update the UC database
  1. ;
  1. N LOOP,FDA,FDAIEN,IBUCIEN1,IBUCIEN2,IBQUIT,IBN,IBDATA,IBDFN,IBVST,IBERR1,IBERR2
  1. N IBVSTIEN,IBSTAT,IBBILL,IBBLST,IBREAS,IBLSDTA,IBSITE,IBUCIEN3,IBUCIEN4
  1. N X,Y,DIE,DA,DR,DLAYGO,DIC,DINUM
  1. ;
  1. ; Check to see if previously installed. If so, exit with message.
  1. I $O(^IBUC(351.82,0))]"" D Q
  1. . D BMES^XPDUTL(" >> Urgent Care Visit Tracking Database present. Initialization not tasked.")
  1. ;
  1. ;Looping through initially for adds
  1. S IBUCIEN1=$O(^IBE(350.1,"B","CC URGENT CARE (OPT) NEW",""))
  1. S IBUCIEN2=$O(^IBE(350.1,"B","DG FEE SERVICE (OPT) NEW",""))
  1. S IBUCIEN3=$O(^IBE(350.1,"B","CC URGENT CARE (OPT) CANCEL",""))
  1. S IBUCIEN4=$O(^IBE(350.1,"B","DG FEE SERVICE (OPT) CANCEL",""))
  1. S IBERR1=$O(^IBE(350.3,"B","UC - ENTERED IN ERROR",""))
  1. S IBERR2=$O(^IBE(350.3,"B","UC - DUPLICATE VISIT",""))
  1. D SITE^IBAUTL ;Defines variable IBSITE
  1. ;
  1. S IBQUIT=0
  1. ;
  1. ;Initialize process tracking array in case initialization stops
  1. N X,X2,X1,DT
  1. S DT=$$DT^XLFDT,X1=DT,X2=30 D C^%DTC
  1. S ^XTMP("IB20P663",0)=X_U_DT_U_"IB*2.0*663 Post install Urgent Care Visit Tracking Initialization"
  1. ;
  1. F LOOP=IBUCIEN1,IBUCIEN2,IBUCIEN3,IBUCIEN4 D Q:IBQUIT
  1. . ;
  1. . S IBN=0
  1. . ;
  1. . ;See if the initialization was halted. If so, restore loop variables to last entry processed.
  1. . I $D(^XTMP("IB20P663",1)) S IBLSDTA=$G(^XTMP("IB20P663",1)),LOOP=$P(IBLSDTA,U),IBN=$P(IBLSDTA,U,2)
  1. . ;
  1. . F S IBN=$O(^IB("AE",LOOP,IBN)) Q:'IBN D
  1. . . S IBDATA=$G(^IB(IBN,0)) ; Get the data
  1. . . Q:IBDATA=""
  1. . . S IBDFN=$P(IBDATA,U,2),IBVST=$P(IBDATA,U,14),IBVSTIEN=0
  1. . . Q:IBVST<3190606 ;Do not count UC visits prior to the start of the UC program on 6/6/2019
  1. . . S IBVSTIEN=$$DBCHK(IBDFN,IBVST)
  1. . . I ((LOOP=IBUCIEN1)!(LOOP=IBUCIEN2)),+IBVSTIEN Q ;don't process if visit already in DB and adding a new paid visit
  1. . . S IBSTAT=2,(IBBILL,IBREAS)="" ;init variables
  1. . . S IBBLST=$P(IBDATA,U,5) ; Get the bill status
  1. . . ;If Bill cancelled because UC entered in error, then set status to not counted, reason to Entered In Error.
  1. . . I IBBLST=10 D
  1. . . . I ($P(IBDATA,U,10)=IBERR1) S IBSTAT=3,IBREAS=3 ;UC-ENTERED IN ERROR
  1. . . . I ($P(IBDATA,U,10)=IBERR2) S IBSTAT=3,IBREAS=4 ;UC-DUPLICATE EVENT
  1. . . S:IBBLST'=10 IBBILL=$P(IBDATA,U,11) ;Billing Number
  1. . . I (IBBLST=8),(IBBILL="") S IBBILL="ON HOLD"
  1. . . I (LOOP=IBUCIEN2),($P(IBDATA,U,7)'=30) Q ;Captures all of the DG FEE NEW entries from 6/6/2019 to install of IB*2.0*656
  1. . . I (LOOP=IBUCIEN4),($P(IBDATA,U,7)'=30) Q ;Captures all of the DG FEE CANCEL entries from 6/6/2019 to install of IB*2.0*656
  1. . . ;Add new entry to the tracking database
  1. . . I (IBVSTIEN=0) D Q
  1. . . . K FDA
  1. . . . ;Store in array for adding to the file (#351.82)
  1. . . . S FDA(351.82,"+1,",.01)=IBDFN ;Patient
  1. . . . S FDA(351.82,"+1,",.02)=IBSITE ;Site
  1. . . . S FDA(351.82,"+1,",.03)=IBVST ;Visit Date
  1. . . . S FDA(351.82,"+1,",.04)=IBSTAT ;Status (2 - Billed or 3- Not Counted)
  1. . . . S FDA(351.82,"+1,",1.01)=1 ;Status (2 - Billed or 3- Not Counted)
  1. . . . S:$G(IBBILL)'="" FDA(351.82,"+1,",.05)=IBBILL
  1. . . . S:$G(IBREAS)'="" FDA(351.82,"+1,",.06)=IBREAS ;Reason (Not counted)
  1. . . . S FDA(351.82,"+1,",1.01)=1
  1. . . . ;Add to the file.
  1. . . . D UPDATE^DIE(,"FDA","FDAIEN")
  1. . . . S FDAIEN=FDAIEN(1) K FDAIEN(1)
  1. . . ;
  1. . . ;Otherwise Taking a canceled visit and updating the reason, bill no, and status fields
  1. . . I IBVSTIEN'=0 D
  1. . . . S DLAYGO=351.82,DIC="^IBUC(351.82,",DIC(0)="L"
  1. . . . I '+$G(IBVSTIEN) D FILE^DICN S LIEN=+IBVSTIEN K DIC,DINUM,DLAYGO
  1. . . . S DR=".04////"_IBSTAT ; Visit Tracking Status
  1. . . . S DR=DR_";.05////"_IBBILL ; Bill Number (should reset to NULL)
  1. . . . S DR=DR_";.06////"_IBREAS ; Reason (should be UC-ENTERED IN ERROR or UC-Duplicate Event)
  1. . . . S DR=DR_";1.01////1" ; Flag for multi-site transmission
  1. . . . ;
  1. . . . S DIE="^IBE(350.3,",DA=IBVSTIEN
  1. . . . D ^DIE
  1. . . ;Save the entry just processed
  1. . . S ^XTMP("IB20P663",1)=LOOP_U_IBN
  1. . . I $$S^%ZTLOAD() D Q
  1. . . . ;
  1. . . . N ZTRTN,ZTDTH,ZTDESC,ZTIO
  1. . . . ;
  1. . . . ;requeue for later
  1. . . . S ZTRTN="INITUCDB^IB20P663"
  1. . . . S ZTDTH=$$NOW^XLFDT+.01 ; reschedule for 1 hr after time process stopped
  1. . . . S ZTDESC="IB*2.0*663 Initialize File 351.82 - Urgent Care Visit Tracking DB"
  1. . . . S ZTIO=""
  1. . . . D ^%ZTLOAD ; Call TaskManager
  1. . . . S IBQUIT=1
  1. K DR ;Clear update array before next use
  1. Q
  1. ;
  1. NEWCREAS ; New Cancellation Reasons
  1. N LOOP,LIEN,IBDATA,IBCNNM
  1. N X,Y,DIE,DA,DR,DTOUT,DATA,IBDATAB,DIK
  1. ;
  1. N CANIEN,UPDIEN,SVCIEN,CHGIEN
  1. ;
  1. ; Grab all of the entries to update
  1. D MES^XPDUTL(" -> Adding new Cancellation Reasons to the IB CHARGE REMOVE REASON file (350.3).")
  1. S Y=-1
  1. F LOOP=1:1 S IBDATA=$T(REASDAT+LOOP) Q:$P(IBDATA,";",3)="END" D
  1. . S DR=""
  1. . ;Extract the new ACTION TYPE to be added.
  1. . ;Store in array for adding to the file (#350.1).
  1. . Q:IBDATA="" ;go to next entry if Category is not to be updated.
  1. . ;
  1. . S IBCNNM=$P(IBDATA,";",3)
  1. . S LIEN=$O(^IBE(350.3,"B",IBCNNM,""))
  1. . ; File the update along with inactivate the ACTION TYPE
  1. . S DLAYGO=350.3,DIC="^IBE(350.3,",DIC(0)="L",X=IBCNNM
  1. . I '+LIEN D FILE^DICN S LIEN=+Y K DIC,DINUM,DLAYGO
  1. . S DR=".02////"_$P(IBDATA,";",4) ; ABBREVIATION
  1. . S DR=DR_";.03////"_$P(IBDATA,";",5) ; LIMIT
  1. . ;
  1. . S DIE="^IBE(350.3,",DA=LIEN
  1. . D ^DIE
  1. . ;re-index new entry here
  1. . S DA=LIEN,DIK="^IBE(350.3," D IX^DIK
  1. . K DR
  1. Q
  1. ;
  1. ;350.3,.01 3 NAME 0;1 FREE TEXT (Required)
  1. ;350.3,.02 4 ABBREVIATION 0;2 FREE TEXT
  1. ;350.3,.03 5 LIMIT 0;3 Code (3 - Generic)
  1. ;
  1. REASDAT ; Fee Service to inactivate
  1. ;;UC - DUPLICATE VISIT;UCDUP;3
  1. ;;UC - SEQUENCE UPDATE;UCSEQ;3
  1. ;;END
  1. Q
  1. ;
  1. DBCHK(IBDFN,IBVDT) ; Check to see if the visit is already in the DB.
  1. ;
  1. N IBLP,IBQUIT,IBDATA,IBDT
  1. ; Returns IBQUIT - the IEN of the Visit OR 0
  1. ;loop through the patient's visits to see if it has already been recorded.
  1. S IBLP=0,IBQUIT=0
  1. F S IBLP=$O(^IBUC(351.82,"B",IBDFN,IBLP)) Q:'IBLP D Q:IBQUIT
  1. . S IBDATA=$G(^IBUC(351.82,IBLP,0))
  1. . S IBDT=$P(IBDATA,U,3)
  1. . ; quit if there is a visit already stored on that day.
  1. . I IBDT=IBVDT S IBQUIT=IBLP
  1. Q IBQUIT
  1. ;
  1. IBUPD ; Inactivate FEE Service Entries
  1. ;
  1. N LOOP,LIEN,IBDATA
  1. N X,Y,DIE,DA,DR,DTOUT,DATA
  1. ;
  1. ; Grab all of the entries to update
  1. F LOOP=1:1:36 D
  1. . ;Extract the new ACTION TYPE to be added.
  1. . S IBDATA=$T(IBDDAT+LOOP)
  1. . S IBDATA=$P(IBDATA,";;",2)
  1. . ;Store in array for adding to the file (#350.1).
  1. . Q:IBDATA="" ;go to next entry if Category is not to be updated.
  1. . S LIEN=$O(^IBE(350.1,"B",IBDATA,"")) ; find ACTION TYPE entry
  1. . Q:LIEN=""
  1. . ;
  1. . ; File the update along with inactivate the ACTION TYPE
  1. . S DR=".12////1;"
  1. . S DIE="^IBE(350.1,",DA=LIEN
  1. . D ^DIE
  1. . K DR ;Clear update array before next use
  1. ;
  1. S DR=""
  1. D MES^XPDUTL(" -> Data CHOICE and CC MTF Action Types in the ACTION TYPE file (#350.1) inactiavated.")
  1. Q
  1. ;
  1. IBDDAT ; Fee Service to inactivate
  1. ;;CC MTF (INPT) CANCEL
  1. ;;CC MTF (INPT) NEW
  1. ;;CC MTF (INPT) UPDATE
  1. ;;CC MTF (OPT) CANCEL
  1. ;;CC MTF (OPT) NEW
  1. ;;CC MTF (OPT) UPDATE
  1. ;;CC MTF (PER DIEM) CANCEL
  1. ;;CC MTF (PER DIEM) NEW
  1. ;;CC MTF (PER DIEM) UPDATE
  1. ;;CC MTF (RX) CANCEL
  1. ;;CC MTF (RX) NEW
  1. ;;CC MTF (RX) UPDATE
  1. ;;LTC CHOICE INPT CNH CANCEL
  1. ;;LTC CHOICE INPT CNH NEW
  1. ;;LTC CHOICE INPT CNH UPDATE
  1. ;;LTC CHOICE INPT RESPITE CANCEL
  1. ;;LTC CHOICE INPT RESPITE NEW
  1. ;;LTC CHOICE INPT RESPITE UPDATE
  1. ;;LTC CHOICE OPT ADHC CANCEL
  1. ;;LTC CHOICE OPT ADHC NEW
  1. ;;LTC CHOICE OPT ADHC UPDATE
  1. ;;LTC CHOICE OPT RESPITE CANCEL
  1. ;;LTC CHOICE OPT RESPITE NEW
  1. ;;LTC CHOICE OPT RESPITE UPDATE
  1. ;;CHOICE (INPT) CANCEL
  1. ;;CHOICE (INPT) NEW
  1. ;;CHOICE (INPT) UPDATE
  1. ;;CHOICE (OPT) CANCEL
  1. ;;CHOICE (OPT) NEW
  1. ;;CHOICE (OPT) UPDATE
  1. ;;CHOICE (PER DIEM) CANCEL
  1. ;;CHOICE (PER DIEM) NEW
  1. ;;CHOICE (PER DIEM) UPDATE
  1. ;;CHOICE (RX) CANCEL
  1. ;;CHOICE (RX) NEW
  1. ;;CHOICE (RX) UPDATE
  1. ;;END
  1. ;
  1. ;
  1. TSKPUSH ; task the routine as a Night Job using TaskMan.
  1. ;
  1. N DIC,DLAYGO,TSTAMP,X,Y
  1. D MES^XPDUTL("Tasking Nightly Copay Synch ... ")
  1. ;
  1. I $$FIND1^DIC(19.2,,"B","IBUC MULTI FAC COPAY SYNCH","B") D MES^XPDUTL(" Already scheduled") Q ; don't overwrite existing schedule
  1. S (DLAYGO,DIC)=19.2,DIC(0)="L"
  1. S X="IBUC MUTLI FAC COPAY SYNCH"
  1. S TSTAMP=$$FMADD^XLFDT($$NOW^XLFDT(),1),$P(TSTAMP,".",2)="0200"
  1. S DIC("DR")="2////"_TSTAMP_";6////D@2AM"
  1. D ^DIC
  1. Q