IBCEBUL ;ALB/TMP - 837 EDI SPECIAL BULLETINS PROCESSING ;19-SEP-96
;;2.0;INTEGRATED BILLING;**137,250,377**;21-MAR-94;Build 23
;;Per VHA Directive 2004-038, this routine should not be modified.
;
NOTSENT ; Check for batches in pending status (no confirmation from Austin)
; from yesterday or before
N XMTO,XMSUBJ,XMBODY,XMDUZ,IBT,IB,IBE,IBCT,IBI,IB0,IB1,Z,IBTYP
K ^TMP($J,"IBNOTSENT")
S (IBCT,IBI)=0
F S IBI=$O(^IBA(364.1,"ASTAT","P",IBI)) Q:'IBI D
. I $$BCHCHK(IBI) Q ; Batch check function
. S IBCT=IBCT+1
. S IBTYP=$P($G(^IBA(364.1,IBI,0)),U,7)
. I IBCT'>10,IBTYP'="" S ^TMP($J,"IBNOTSENT",IBTYP,IBI)=""
. Q
;
I IBCT D
.S IBT(1)="There are "_IBCT_" EDI batch(es) still pending Austin receipt "
.S IBT(2)="for more than 1 day. Please investigate why they have not yet been confirmed"
.S IBT(3)="as being received by Austin."
.S IBT(4)=" "
.I IBCT>10 S IBT(5)="Since there were more than 10 batches found, please run the ",IBT(6)=" EDI BATCHES PENDING RECEIPT report to get a list of these batches."
.I IBCT'>10 D
..S IBT(5)=" BATCH # PENDING SINCE MAIL MESSAGE #",IBT(6)="",$P(IBT(6),"-",76)="",IBT(6)=" "_IBT(6),IBE=6
..S IBTYP=""
..F S IBTYP=$O(^TMP($J,"IBNOTSENT",IBTYP)) Q:IBTYP="" D
...S Z=$$EXPAND^IBTRE(364.1,.07,IBTYP) S:Z="" Z="??"
...I $O(^TMP($J,"IBNOTSENT",IBTYP),-1)'="" S IBE=IBE+1,IBT(IBE)=" "
...S IBE=IBE+1,IBT(IBE)=" BATCH TYPE: "_Z
...S IBI=0 F S IBI=$O(^TMP($J,"IBNOTSENT",IBTYP,IBI)) Q:'IBI D
....S IBE=IBE+1,IB0=$G(^IBA(364.1,IBI,0)),IB1=$G(^(1))
....S IBT(IBE)=" "_$E($P(IB0,U)_$J("",10),1,10)_" "_$E($$FMTE^XLFDT($P(IB1,U,6),1)_$J("",20),1,20)_" "_$P(IB0,U,4),IBE=IBE+1,IBT(IBE)=$J("",8)_$E($P(IB0,U,8),1,72)
.S XMSUBJ="EDI BATCHES WAITING AUSTIN RECEIPT FOR OVER 1 DAY",XMBODY="IBT",XMDUZ="",XMTO("I:G.IB EDI")=""
.D SENDMSG^XMXAPI(XMDUZ,XMSUBJ,XMBODY,.XMTO)
K ^TMP($J,"IBNOTSENT")
Q
;
UPDBCH(BCHIEN) ; update the status of this batch to show A0:received in Austin
NEW DIE,DA,DR
S DIE=364.1,DA=+BCHIEN,DR=".02///A0"
I $D(^IBA(DIE,DA,0)) D ^DIE
UPDBCHX ;
Q
;
BCHCHK(BCHIEN) ; This function will check the EDI claims associated with this
; batch and determine if this batch has been received in Austin or not.
;
; ** This function is also called by routine IBCERP3 **
;
; Function value = 1 if we can determine that the batch was received in Austin, or
; = 1 if there are no claims in this batch, or
; = 1 if the batch is less than 24 hours old - too new to worry about
; = 1 means don't display on report or MailMan message
;
; Function value = 0 if the batch has not yet been received in Austin
; = 0 means we need to display batch on report and in MailMan message
;
NEW IBEDI,IBOK,IBZ,IBIFN,IB0,AR,IBSECS
S IBEDI=0,IBOK=1,BCHIEN=+$G(BCHIEN)
;
; if the batch transmission is still less than 24 hours old, skip this batch and get out
S IBSECS=$$FMDIFF^XLFDT($$NOW^XLFDT,$P($G(^IBA(364.1,BCHIEN,1)),U,6),2)
I IBSECS<86400 G BCHCHKX ; # seconds in a day
;
; if no edi claims in this batch, update batch status and get out
I '$O(^IBA(364,"C",BCHIEN,0)) D UPDBCH(BCHIEN) G BCHCHKX
;
F S IBEDI=$O(^IBA(364,"C",BCHIEN,IBEDI)) Q:'IBEDI D Q:'IBOK
. S IBZ=$G(^IBA(364,IBEDI,0))
. S IBIFN=+IBZ,IB0=$G(^DGCR(399,IBIFN,0))
. I $P(IB0,U,13)=7 Q ; cancelled in IB
. I $P(IBZ,U,3)'="P" Q ; edi claim status is not pending
. S AR=$P($$BILL^RCJIBFN2(IBIFN),U,2) ; AR status DBIA 1452
. I $F(".22.26.39.","."_AR_".") Q ; collected/closed or cancelled
. ;
. ; if we get to this point, then we have found an EDI claim in this batch
. ; that is not cancelled in IB, the EDI claim status is "P", and the
. ; AR status is not collected/closed nor cancelled in AR. So therefore
. ; this claim didn't get to Austin, so the batch didn't get to Austin.
. S IBOK=0
. Q
;
; If we find the batch has been received in Austin, then change the batch status.
I IBOK D UPDBCH(BCHIEN)
;
BCHCHKX ;
Q IBOK
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBCEBUL 4125 printed Oct 16, 2024@18:10:17 Page 2
IBCEBUL ;ALB/TMP - 837 EDI SPECIAL BULLETINS PROCESSING ;19-SEP-96
+1 ;;2.0;INTEGRATED BILLING;**137,250,377**;21-MAR-94;Build 23
+2 ;;Per VHA Directive 2004-038, this routine should not be modified.
+3 ;
NOTSENT ; Check for batches in pending status (no confirmation from Austin)
+1 ; from yesterday or before
+2 NEW XMTO,XMSUBJ,XMBODY,XMDUZ,IBT,IB,IBE,IBCT,IBI,IB0,IB1,Z,IBTYP
+3 KILL ^TMP($JOB,"IBNOTSENT")
+4 SET (IBCT,IBI)=0
+5 FOR
SET IBI=$ORDER(^IBA(364.1,"ASTAT","P",IBI))
if 'IBI
QUIT
Begin DoDot:1
+6 ; Batch check function
IF $$BCHCHK(IBI)
QUIT
+7 SET IBCT=IBCT+1
+8 SET IBTYP=$PIECE($GET(^IBA(364.1,IBI,0)),U,7)
+9 IF IBCT'>10
IF IBTYP'=""
SET ^TMP($JOB,"IBNOTSENT",IBTYP,IBI)=""
+10 QUIT
End DoDot:1
+11 ;
+12 IF IBCT
Begin DoDot:1
+13 SET IBT(1)="There are "_IBCT_" EDI batch(es) still pending Austin receipt "
+14 SET IBT(2)="for more than 1 day. Please investigate why they have not yet been confirmed"
+15 SET IBT(3)="as being received by Austin."
+16 SET IBT(4)=" "
+17 IF IBCT>10
SET IBT(5)="Since there were more than 10 batches found, please run the "
SET IBT(6)=" EDI BATCHES PENDING RECEIPT report to get a list of these batches."
+18 IF IBCT'>10
Begin DoDot:2
+19 SET IBT(5)=" BATCH # PENDING SINCE MAIL MESSAGE #"
SET IBT(6)=""
SET $PIECE(IBT(6),"-",76)=""
SET IBT(6)=" "_IBT(6)
SET IBE=6
+20 SET IBTYP=""
+21 FOR
SET IBTYP=$ORDER(^TMP($JOB,"IBNOTSENT",IBTYP))
if IBTYP=""
QUIT
Begin DoDot:3
+22 SET Z=$$EXPAND^IBTRE(364.1,.07,IBTYP)
if Z=""
SET Z="??"
+23 IF $ORDER(^TMP($JOB,"IBNOTSENT",IBTYP),-1)'=""
SET IBE=IBE+1
SET IBT(IBE)=" "
+24 SET IBE=IBE+1
SET IBT(IBE)=" BATCH TYPE: "_Z
+25 SET IBI=0
FOR
SET IBI=$ORDER(^TMP($JOB,"IBNOTSENT",IBTYP,IBI))
if 'IBI
QUIT
Begin DoDot:4
+26 SET IBE=IBE+1
SET IB0=$GET(^IBA(364.1,IBI,0))
SET IB1=$GET(^(1))
+27 SET IBT(IBE)=" "_$EXTRACT($PIECE(IB0,U)_$JUSTIFY("",10),1,10)_" "_$EXTRACT($$FMTE^XLFDT($PIECE(IB1,U,6),1)_$JUSTIFY("",20),1,20)_" "_$PIECE(IB0,U,4)
SET IBE=IBE+1
SET IBT(IBE)=$JUSTIFY("",8)_$EXTRACT($PIECE(IB0,U,8),1,72)
End DoDot:4
End DoDot:3
End DoDot:2
+28 SET XMSUBJ="EDI BATCHES WAITING AUSTIN RECEIPT FOR OVER 1 DAY"
SET XMBODY="IBT"
SET XMDUZ=""
SET XMTO("I:G.IB EDI")=""
+29 DO SENDMSG^XMXAPI(XMDUZ,XMSUBJ,XMBODY,.XMTO)
End DoDot:1
+30 KILL ^TMP($JOB,"IBNOTSENT")
+31 QUIT
+32 ;
UPDBCH(BCHIEN) ; update the status of this batch to show A0:received in Austin
+1 NEW DIE,DA,DR
+2 SET DIE=364.1
SET DA=+BCHIEN
SET DR=".02///A0"
+3 IF $DATA(^IBA(DIE,DA,0))
DO ^DIE
UPDBCHX ;
+1 QUIT
+2 ;
BCHCHK(BCHIEN) ; This function will check the EDI claims associated with this
+1 ; batch and determine if this batch has been received in Austin or not.
+2 ;
+3 ; ** This function is also called by routine IBCERP3 **
+4 ;
+5 ; Function value = 1 if we can determine that the batch was received in Austin, or
+6 ; = 1 if there are no claims in this batch, or
+7 ; = 1 if the batch is less than 24 hours old - too new to worry about
+8 ; = 1 means don't display on report or MailMan message
+9 ;
+10 ; Function value = 0 if the batch has not yet been received in Austin
+11 ; = 0 means we need to display batch on report and in MailMan message
+12 ;
+13 NEW IBEDI,IBOK,IBZ,IBIFN,IB0,AR,IBSECS
+14 SET IBEDI=0
SET IBOK=1
SET BCHIEN=+$GET(BCHIEN)
+15 ;
+16 ; if the batch transmission is still less than 24 hours old, skip this batch and get out
+17 SET IBSECS=$$FMDIFF^XLFDT($$NOW^XLFDT,$PIECE($GET(^IBA(364.1,BCHIEN,1)),U,6),2)
+18 ; # seconds in a day
IF IBSECS<86400
GOTO BCHCHKX
+19 ;
+20 ; if no edi claims in this batch, update batch status and get out
+21 IF '$ORDER(^IBA(364,"C",BCHIEN,0))
DO UPDBCH(BCHIEN)
GOTO BCHCHKX
+22 ;
+23 FOR
SET IBEDI=$ORDER(^IBA(364,"C",BCHIEN,IBEDI))
if 'IBEDI
QUIT
Begin DoDot:1
+24 SET IBZ=$GET(^IBA(364,IBEDI,0))
+25 SET IBIFN=+IBZ
SET IB0=$GET(^DGCR(399,IBIFN,0))
+26 ; cancelled in IB
IF $PIECE(IB0,U,13)=7
QUIT
+27 ; edi claim status is not pending
IF $PIECE(IBZ,U,3)'="P"
QUIT
+28 ; AR status DBIA 1452
SET AR=$PIECE($$BILL^RCJIBFN2(IBIFN),U,2)
+29 ; collected/closed or cancelled
IF $FIND(".22.26.39.","."_AR_".")
QUIT
+30 ;
+31 ; if we get to this point, then we have found an EDI claim in this batch
+32 ; that is not cancelled in IB, the EDI claim status is "P", and the
+33 ; AR status is not collected/closed nor cancelled in AR. So therefore
+34 ; this claim didn't get to Austin, so the batch didn't get to Austin.
+35 SET IBOK=0
+36 QUIT
End DoDot:1
if 'IBOK
QUIT
+37 ;
+38 ; If we find the batch has been received in Austin, then change the batch status.
+39 IF IBOK
DO UPDBCH(BCHIEN)
+40 ;
BCHCHKX ;
+1 QUIT IBOK
+2 ;