IBCNERP5 ;DAOU/BHS - IBCNE eIV PAYER REPORT COMPILE ;03-JUN-2002
;;2.0;INTEGRATED BILLING;**184,271,300,416,668**;21-MAR-94;Build 28
;;Per VHA Directive 6402, this routine should not be modified.
;
; eIV - Insurance Verification Interface
;
; Input variables from IBCNERP4:
; IBCNERTN = "IBCNERP4"
; IBCNESPC("BEGDT") = Start Date for date range
; IBCNESPC("ENDDT") = End Date for date range
; IBCNESPC("PYR") = Payer IEN for report, if = "", then include all
; IBCNESPC("SORT") = 1 - Payer OR 2 - Total Inquiries
; IBCNESPC("DTL") = 1 - YES OR 0 - NO - include Rejection Detail?
; Output variables passed to IBCNERP6:
; ^TMP($J,IBCNERTN,SORT1,SORT2,SORT3)=InqCreatedCount^InqCancelledCt^
; InqQueuedCt^1stTransCount^
; RetryTransCt^Non-ErrorRespCt^
; ErrorRespCount^TotRespTime-days^
; CommFailRespCount^PendRespCount^
; eIVDeactivatedDt
; IBCNERTN = "IBCNERP4"
; SORT1 = PayerName (SORT=1) or -InquiryCount(SORT=2)
; SORT2 = PayerIEN (SORT=1) or PayerName (SORT=2)
; SORT3 = "*" (SORT=1) or PayerIEN (SORT=2)
; ^TMP($J,IBCNERTN,SORT1,SORT2,SORT3,ERRCD)=RespCount
; (see above)
; ERRCD = Error Condition code (ptr to 365.018) or Error Text
; from the Eligibility Communicator (4.01)
;
; Must call at EN tag
Q
;
EN(IBCNERTN,IBCNESPC) ; Entry point
;
; Initialize variables
NEW IBCNEDT,IBCNEDT1,IBCNEDT2,IBCNEPY,IBCNEPYR,IBCNEPTR
NEW IBCNETOT,IBCNESRT,IBCNEDTL,RPTDATA,PYRIEN,INQS,IEN
NEW IBPNM,IBPIEN,ERR,PC,PYR
;
I '$D(ZTQUEUED),$G(IOST)["C-" W !!,"Compiling report data ..."
;
; Total responses selected
S IBCNETOT=0
;
; Kill scratch globals
KILL ^TMP($J,IBCNERTN),^TMP($J,IBCNERTN_"X")
;
; Initialize looping variables
S IBCNEDT2=$G(IBCNESPC("ENDDT"))
S IBCNEDT1=$G(IBCNESPC("BEGDT"))
S IBCNEPY=$G(IBCNESPC("PYR"))
S IBCNESRT=$G(IBCNESPC("SORT"))
S IBCNEDTL=$G(IBCNESPC("DTL"))
;
; Loop through the eIV Transmission Queue File (#365.1)
; by Date/Time Created Cross-Reference
S IBCNEDT=$O(^IBCN(365.1,"AE",IBCNEDT1),-1)
F S IBCNEDT=$O(^IBCN(365.1,"AE",IBCNEDT)) Q:IBCNEDT=""!($P(IBCNEDT,".",1)>IBCNEDT2) D Q:$G(ZTSTOP)
. S IBCNEPTR=0
. F S IBCNEPTR=$O(^IBCN(365.1,"AE",IBCNEDT,IBCNEPTR)) Q:'IBCNEPTR D Q:$G(ZTSTOP)
. . ; Update selected count
. . S IBCNETOT=IBCNETOT+1
. . I $D(ZTQUEUED),IBCNETOT#100=0,$$S^%ZTLOAD() S ZTSTOP=1 QUIT
. . ; Determine Payer name from Payer File (#365.12)
. . S PYRIEN=$P($G(^IBCN(365.1,IBCNEPTR,0)),U,3)
. . I 'PYRIEN Q
. . ; Check payer filter
. . I IBCNEPY'="",PYRIEN'=IBCNEPY Q
. . S IBCNEPYR=$P($G(^IBE(365.12,PYRIEN,0)),U)
. . I IBCNEPYR="" Q
. . ; Now get the data for the report - build RPTDATA
. . KILL RPTDATA
. . D GETDATA(IBCNEPTR,.RPTDATA,IBCNEDTL,IBCNEPYR,PYRIEN,IBCNEPY)
. . ; Loop through results by Payer Name, Payer IEN
. . S IBPNM=""
. . F S IBPNM=$O(RPTDATA(IBPNM)) Q:IBPNM="" D
. . . S IBPIEN=0
. . . F S IBPIEN=$O(RPTDATA(IBPNM,IBPIEN)) Q:'IBPIEN D
. . . . ; Store totals in global
. . . . F PC=1:1:10 S $P(^TMP($J,IBCNERTN,IBPNM,IBPIEN,"*"),U,PC)=$P($G(^TMP($J,IBCNERTN,IBPNM,IBPIEN,"*")),U,PC)+$P(RPTDATA(IBPNM,IBPIEN),U,PC)
. . . . ; Store deactivation date/time
. . . . S $P(^TMP($J,IBCNERTN,IBPNM,IBPIEN,"*"),U,11)=$P(RPTDATA(IBPNM,IBPIEN),U,11)
. . . . I 'IBCNEDTL Q
. . . . ; Store rejection detail
. . . . S ERR=""
. . . . F S ERR=$O(RPTDATA(IBPNM,IBPIEN,ERR)) Q:ERR="" D
. . . . . S ^TMP($J,IBCNERTN,IBPNM,IBPIEN,"*",ERR)=$G(^TMP($J,IBCNERTN,IBPNM,IBPIEN,"*",ERR))+$G(RPTDATA(IBPNM,IBPIEN,ERR))
. . Q
. Q
;
; Call tag to find good/bad/rejection detail data from response file
D DATA^IBCNERP4
;
I $G(ZTSTOP)!(IBCNESRT=1) G EXIT
;
; Resort if sorted by Total Inquiries
M ^TMP($J,IBCNERTN_"X")=^TMP($J,IBCNERTN)
KILL ^TMP($J,IBCNERTN)
S PYR=""
F S PYR=$O(^TMP($J,IBCNERTN_"X",PYR)) Q:PYR="" D
. S IEN=0
. F S IEN=$O(^TMP($J,IBCNERTN_"X",PYR,IEN)) Q:'IEN D
. . S INQS=-$G(^TMP($J,IBCNERTN_"X",PYR,IEN,"*"))
. . M ^TMP($J,IBCNERTN,INQS,PYR,IEN)=^TMP($J,IBCNERTN_"X",PYR,IEN,"*")
. . QUIT
. QUIT
; KILL temporary report global - used to resort
KILL ^TMP($J,IBCNERTN_"X")
;
EXIT ; EN Exit point
Q
;
;
GETDATA(IEN,RPTDATA,DTL,PYNM,PYIEN,PYR) ; Retrieve data for this inquiry and response(s)
; Output:
; RPTDATA(PayerName,PayerIEN) = Created(1)^Cancelled(0/1)^Queued(0/1)^
; #1stTrans^#Retries^#Non-ErrorResponses^#ErrorResponses^
; #ofDaysforResponses^#Timeouts^#Pending^DeactivationDTM
; RPTDATA(PayerName,PayerIEN,ErrCond OR ErrText) = #ErrorResps subtotal
; Initialize variables
NEW DEACT,HLIEN,HLID,RIEN,RDATA0,RPYIEN,RPYNM,RDATA1,ERRTXT,X1,X2,FIRST
;
S RPTDATA(PYNM,PYIEN)=1
;IB*668/TAZ - Call PYRDEACT to get Payer Deactivated from new file location.
; Determine Deactivation DTM for eIV application
S DEACT=$$PYRDEACT^IBCNINSU(PYIEN)
I +DEACT S $P(RPTDATA(PYNM,PYIEN),U,11)=$P(DEACT,U,2)
; Logic by Transmission Status
; Cancelled (7) - Payer deactivated
I $P($G(^IBCN(365.1,IEN,0)),U,4)=7 S $P(RPTDATA(PYNM,PYIEN),U,2)=1 Q
; Queued - no HL7 messages (# Transmissions = 0) - no multiples exist
I '$P($G(^IBCN(365.1,IEN,2,0)),U,3) S $P(RPTDATA(PYNM,PYIEN),U,3)=1 Q
; Sent processing - HL7 messages associated (# Transmissions > 0)
S HLIEN=0,FIRST=1
F S HLIEN=$O(^IBCN(365.1,IEN,2,HLIEN)) Q:'HLIEN D
. I 'FIRST S $P(RPTDATA(PYNM,PYIEN),U,5)=$P(RPTDATA(PYNM,PYIEN),U,5)+1
. I FIRST S $P(RPTDATA(PYNM,PYIEN),U,4)=$P(RPTDATA(PYNM,PYIEN),U,4)+1,FIRST=0
. ; Process response based on HL7 Message ID
. S HLID=$P($G(^IBCN(365.1,IEN,2,HLIEN,0)),U,2) I HLID="" Q
. ; Lookup responses by HL7 Message ID
. S RIEN=0
. F S RIEN=$O(^IBCN(365,"B",HLID,RIEN)) Q:'RIEN D
. . S RDATA0=$G(^IBCN(365,RIEN,0))
. . S RPYIEN=$P(RDATA0,U,3) I RPYIEN="" Q
. . S RPYNM=$P($G(^IBE(365.12,RPYIEN,0)),U,1) I RPYNM="" Q
. . ; Apply payer filter here, too!
. . ; If there is a Payer filter, check against the IEN
. . I PYR'="",RPYIEN'=PYR Q
. . ;IB*668/TAZ - Call PYRDEACT to get Payer Deactivated from new file location.
. . ; Determine Deactivation DTM for eIV application
. . S DEACT=$$PYRDEACT^IBCNINSU(RPYIEN)
. . I +DEACT S $P(RPTDATA(RPYNM,RPYIEN),U,11)=$P(DEACT,U,2)
. . S RDATA1=$G(^IBCN(365,RIEN,1))
. . S ERRTXT=$G(^IBCN(365,RIEN,4))
. . ; Transmitted (Pending)
. . I $P(RDATA0,U,6)=2 D Q
. . . ; Increment for response pending
. . . S $P(RPTDATA(RPYNM,RPYIEN),U,10)=$P($G(RPTDATA(RPYNM,RPYIEN)),U,10)+1
. . ; Timeout (Communication Failure)
. . I $P(RDATA0,U,6)=5 D Q
. . . ; Increment for response timeout
. . . S $P(RPTDATA(RPYNM,RPYIEN),U,9)=$P($G(RPTDATA(RPYNM,RPYIEN)),U,9)+1
. . ; Response Received - gather additional information
. . I $P(RDATA0,U,6)=3 D Q
. . . ; Determine response time (in days) as difference between
. . . ; eIV Response File - Date/Time Response Received and
. . . ; Date/Time Response Created (based on HL7)
. . . S X1=$P(RDATA0,U,8)
. . . S X2=$P(RDATA0,U,7)
. . . ; Determine date difference in days
. . . S $P(RPTDATA(RPYNM,RPYIEN),U,8)=$P($G(RPTDATA(RPYNM,RPYIEN)),U,8)+$$FMDIFF^XLFDT(X2,X1,1)
;
GETDATX ; GETDATA exit point
Q
;
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBCNERP5 7551 printed Oct 16, 2024@18:15:42 Page 2
IBCNERP5 ;DAOU/BHS - IBCNE eIV PAYER REPORT COMPILE ;03-JUN-2002
+1 ;;2.0;INTEGRATED BILLING;**184,271,300,416,668**;21-MAR-94;Build 28
+2 ;;Per VHA Directive 6402, this routine should not be modified.
+3 ;
+4 ; eIV - Insurance Verification Interface
+5 ;
+6 ; Input variables from IBCNERP4:
+7 ; IBCNERTN = "IBCNERP4"
+8 ; IBCNESPC("BEGDT") = Start Date for date range
+9 ; IBCNESPC("ENDDT") = End Date for date range
+10 ; IBCNESPC("PYR") = Payer IEN for report, if = "", then include all
+11 ; IBCNESPC("SORT") = 1 - Payer OR 2 - Total Inquiries
+12 ; IBCNESPC("DTL") = 1 - YES OR 0 - NO - include Rejection Detail?
+13 ; Output variables passed to IBCNERP6:
+14 ; ^TMP($J,IBCNERTN,SORT1,SORT2,SORT3)=InqCreatedCount^InqCancelledCt^
+15 ; InqQueuedCt^1stTransCount^
+16 ; RetryTransCt^Non-ErrorRespCt^
+17 ; ErrorRespCount^TotRespTime-days^
+18 ; CommFailRespCount^PendRespCount^
+19 ; eIVDeactivatedDt
+20 ; IBCNERTN = "IBCNERP4"
+21 ; SORT1 = PayerName (SORT=1) or -InquiryCount(SORT=2)
+22 ; SORT2 = PayerIEN (SORT=1) or PayerName (SORT=2)
+23 ; SORT3 = "*" (SORT=1) or PayerIEN (SORT=2)
+24 ; ^TMP($J,IBCNERTN,SORT1,SORT2,SORT3,ERRCD)=RespCount
+25 ; (see above)
+26 ; ERRCD = Error Condition code (ptr to 365.018) or Error Text
+27 ; from the Eligibility Communicator (4.01)
+28 ;
+29 ; Must call at EN tag
+30 QUIT
+31 ;
EN(IBCNERTN,IBCNESPC) ; Entry point
+1 ;
+2 ; Initialize variables
+3 NEW IBCNEDT,IBCNEDT1,IBCNEDT2,IBCNEPY,IBCNEPYR,IBCNEPTR
+4 NEW IBCNETOT,IBCNESRT,IBCNEDTL,RPTDATA,PYRIEN,INQS,IEN
+5 NEW IBPNM,IBPIEN,ERR,PC,PYR
+6 ;
+7 IF '$DATA(ZTQUEUED)
IF $GET(IOST)["C-"
WRITE !!,"Compiling report data ..."
+8 ;
+9 ; Total responses selected
+10 SET IBCNETOT=0
+11 ;
+12 ; Kill scratch globals
+13 KILL ^TMP($JOB,IBCNERTN),^TMP($JOB,IBCNERTN_"X")
+14 ;
+15 ; Initialize looping variables
+16 SET IBCNEDT2=$GET(IBCNESPC("ENDDT"))
+17 SET IBCNEDT1=$GET(IBCNESPC("BEGDT"))
+18 SET IBCNEPY=$GET(IBCNESPC("PYR"))
+19 SET IBCNESRT=$GET(IBCNESPC("SORT"))
+20 SET IBCNEDTL=$GET(IBCNESPC("DTL"))
+21 ;
+22 ; Loop through the eIV Transmission Queue File (#365.1)
+23 ; by Date/Time Created Cross-Reference
+24 SET IBCNEDT=$ORDER(^IBCN(365.1,"AE",IBCNEDT1),-1)
+25 FOR
SET IBCNEDT=$ORDER(^IBCN(365.1,"AE",IBCNEDT))
if IBCNEDT=""!($PIECE(IBCNEDT,".",1)>IBCNEDT2)
QUIT
Begin DoDot:1
+26 SET IBCNEPTR=0
+27 FOR
SET IBCNEPTR=$ORDER(^IBCN(365.1,"AE",IBCNEDT,IBCNEPTR))
if 'IBCNEPTR
QUIT
Begin DoDot:2
+28 ; Update selected count
+29 SET IBCNETOT=IBCNETOT+1
+30 IF $DATA(ZTQUEUED)
IF IBCNETOT#100=0
IF $$S^%ZTLOAD()
SET ZTSTOP=1
QUIT
+31 ; Determine Payer name from Payer File (#365.12)
+32 SET PYRIEN=$PIECE($GET(^IBCN(365.1,IBCNEPTR,0)),U,3)
+33 IF 'PYRIEN
QUIT
+34 ; Check payer filter
+35 IF IBCNEPY'=""
IF PYRIEN'=IBCNEPY
QUIT
+36 SET IBCNEPYR=$PIECE($GET(^IBE(365.12,PYRIEN,0)),U)
+37 IF IBCNEPYR=""
QUIT
+38 ; Now get the data for the report - build RPTDATA
+39 KILL RPTDATA
+40 DO GETDATA(IBCNEPTR,.RPTDATA,IBCNEDTL,IBCNEPYR,PYRIEN,IBCNEPY)
+41 ; Loop through results by Payer Name, Payer IEN
+42 SET IBPNM=""
+43 FOR
SET IBPNM=$ORDER(RPTDATA(IBPNM))
if IBPNM=""
QUIT
Begin DoDot:3
+44 SET IBPIEN=0
+45 FOR
SET IBPIEN=$ORDER(RPTDATA(IBPNM,IBPIEN))
if 'IBPIEN
QUIT
Begin DoDot:4
+46 ; Store totals in global
+47 FOR PC=1:1:10
SET $PIECE(^TMP($JOB,IBCNERTN,IBPNM,IBPIEN,"*"),U,PC)=$PIECE($GET(^TMP($JOB,IBCNERTN,IBPNM,IBPIEN,"*")),U,PC)+$PIECE(RPTDATA(IBPNM,IBPIEN),U,PC)
+48 ; Store deactivation date/time
+49 SET $PIECE(^TMP($JOB,IBCNERTN,IBPNM,IBPIEN,"*"),U,11)=$PIECE(RPTDATA(IBPNM,IBPIEN),U,11)
+50 IF 'IBCNEDTL
QUIT
+51 ; Store rejection detail
+52 SET ERR=""
+53 FOR
SET ERR=$ORDER(RPTDATA(IBPNM,IBPIEN,ERR))
if ERR=""
QUIT
Begin DoDot:5
+54 SET ^TMP($JOB,IBCNERTN,IBPNM,IBPIEN,"*",ERR)=$GET(^TMP($JOB,IBCNERTN,IBPNM,IBPIEN,"*",ERR))+$GET(RPTDATA(IBPNM,IBPIEN,ERR))
End DoDot:5
End DoDot:4
End DoDot:3
+55 QUIT
End DoDot:2
if $GET(ZTSTOP)
QUIT
+56 QUIT
End DoDot:1
if $GET(ZTSTOP)
QUIT
+57 ;
+58 ; Call tag to find good/bad/rejection detail data from response file
+59 DO DATA^IBCNERP4
+60 ;
+61 IF $GET(ZTSTOP)!(IBCNESRT=1)
GOTO EXIT
+62 ;
+63 ; Resort if sorted by Total Inquiries
+64 MERGE ^TMP($JOB,IBCNERTN_"X")=^TMP($JOB,IBCNERTN)
+65 KILL ^TMP($JOB,IBCNERTN)
+66 SET PYR=""
+67 FOR
SET PYR=$ORDER(^TMP($JOB,IBCNERTN_"X",PYR))
if PYR=""
QUIT
Begin DoDot:1
+68 SET IEN=0
+69 FOR
SET IEN=$ORDER(^TMP($JOB,IBCNERTN_"X",PYR,IEN))
if 'IEN
QUIT
Begin DoDot:2
+70 SET INQS=-$GET(^TMP($JOB,IBCNERTN_"X",PYR,IEN,"*"))
+71 MERGE ^TMP($JOB,IBCNERTN,INQS,PYR,IEN)=^TMP($JOB,IBCNERTN_"X",PYR,IEN,"*")
+72 QUIT
End DoDot:2
+73 QUIT
End DoDot:1
+74 ; KILL temporary report global - used to resort
+75 KILL ^TMP($JOB,IBCNERTN_"X")
+76 ;
EXIT ; EN Exit point
+1 QUIT
+2 ;
+3 ;
GETDATA(IEN,RPTDATA,DTL,PYNM,PYIEN,PYR) ; Retrieve data for this inquiry and response(s)
+1 ; Output:
+2 ; RPTDATA(PayerName,PayerIEN) = Created(1)^Cancelled(0/1)^Queued(0/1)^
+3 ; #1stTrans^#Retries^#Non-ErrorResponses^#ErrorResponses^
+4 ; #ofDaysforResponses^#Timeouts^#Pending^DeactivationDTM
+5 ; RPTDATA(PayerName,PayerIEN,ErrCond OR ErrText) = #ErrorResps subtotal
+6 ; Initialize variables
+7 NEW DEACT,HLIEN,HLID,RIEN,RDATA0,RPYIEN,RPYNM,RDATA1,ERRTXT,X1,X2,FIRST
+8 ;
+9 SET RPTDATA(PYNM,PYIEN)=1
+10 ;IB*668/TAZ - Call PYRDEACT to get Payer Deactivated from new file location.
+11 ; Determine Deactivation DTM for eIV application
+12 SET DEACT=$$PYRDEACT^IBCNINSU(PYIEN)
+13 IF +DEACT
SET $PIECE(RPTDATA(PYNM,PYIEN),U,11)=$PIECE(DEACT,U,2)
+14 ; Logic by Transmission Status
+15 ; Cancelled (7) - Payer deactivated
+16 IF $PIECE($GET(^IBCN(365.1,IEN,0)),U,4)=7
SET $PIECE(RPTDATA(PYNM,PYIEN),U,2)=1
QUIT
+17 ; Queued - no HL7 messages (# Transmissions = 0) - no multiples exist
+18 IF '$PIECE($GET(^IBCN(365.1,IEN,2,0)),U,3)
SET $PIECE(RPTDATA(PYNM,PYIEN),U,3)=1
QUIT
+19 ; Sent processing - HL7 messages associated (# Transmissions > 0)
+20 SET HLIEN=0
SET FIRST=1
+21 FOR
SET HLIEN=$ORDER(^IBCN(365.1,IEN,2,HLIEN))
if 'HLIEN
QUIT
Begin DoDot:1
+22 IF 'FIRST
SET $PIECE(RPTDATA(PYNM,PYIEN),U,5)=$PIECE(RPTDATA(PYNM,PYIEN),U,5)+1
+23 IF FIRST
SET $PIECE(RPTDATA(PYNM,PYIEN),U,4)=$PIECE(RPTDATA(PYNM,PYIEN),U,4)+1
SET FIRST=0
+24 ; Process response based on HL7 Message ID
+25 SET HLID=$PIECE($GET(^IBCN(365.1,IEN,2,HLIEN,0)),U,2)
IF HLID=""
QUIT
+26 ; Lookup responses by HL7 Message ID
+27 SET RIEN=0
+28 FOR
SET RIEN=$ORDER(^IBCN(365,"B",HLID,RIEN))
if 'RIEN
QUIT
Begin DoDot:2
+29 SET RDATA0=$GET(^IBCN(365,RIEN,0))
+30 SET RPYIEN=$PIECE(RDATA0,U,3)
IF RPYIEN=""
QUIT
+31 SET RPYNM=$PIECE($GET(^IBE(365.12,RPYIEN,0)),U,1)
IF RPYNM=""
QUIT
+32 ; Apply payer filter here, too!
+33 ; If there is a Payer filter, check against the IEN
+34 IF PYR'=""
IF RPYIEN'=PYR
QUIT
+35 ;IB*668/TAZ - Call PYRDEACT to get Payer Deactivated from new file location.
+36 ; Determine Deactivation DTM for eIV application
+37 SET DEACT=$$PYRDEACT^IBCNINSU(RPYIEN)
+38 IF +DEACT
SET $PIECE(RPTDATA(RPYNM,RPYIEN),U,11)=$PIECE(DEACT,U,2)
+39 SET RDATA1=$GET(^IBCN(365,RIEN,1))
+40 SET ERRTXT=$GET(^IBCN(365,RIEN,4))
+41 ; Transmitted (Pending)
+42 IF $PIECE(RDATA0,U,6)=2
Begin DoDot:3
+43 ; Increment for response pending
+44 SET $PIECE(RPTDATA(RPYNM,RPYIEN),U,10)=$PIECE($GET(RPTDATA(RPYNM,RPYIEN)),U,10)+1
End DoDot:3
QUIT
+45 ; Timeout (Communication Failure)
+46 IF $PIECE(RDATA0,U,6)=5
Begin DoDot:3
+47 ; Increment for response timeout
+48 SET $PIECE(RPTDATA(RPYNM,RPYIEN),U,9)=$PIECE($GET(RPTDATA(RPYNM,RPYIEN)),U,9)+1
End DoDot:3
QUIT
+49 ; Response Received - gather additional information
+50 IF $PIECE(RDATA0,U,6)=3
Begin DoDot:3
+51 ; Determine response time (in days) as difference between
+52 ; eIV Response File - Date/Time Response Received and
+53 ; Date/Time Response Created (based on HL7)
+54 SET X1=$PIECE(RDATA0,U,8)
+55 SET X2=$PIECE(RDATA0,U,7)
+56 ; Determine date difference in days
+57 SET $PIECE(RPTDATA(RPYNM,RPYIEN),U,8)=$PIECE($GET(RPTDATA(RPYNM,RPYIEN)),U,8)+$$FMDIFF^XLFDT(X2,X1,1)
End DoDot:3
QUIT
End DoDot:2
End DoDot:1
+58 ;
GETDATX ; GETDATA exit point
+1 QUIT
+2 ;
+3 ;