IBCNERPF ;BP/YMG - IBCNE eIV AUTO UPDATE REPORT ;09-MAY-2023
;;2.0;INTEGRATED BILLING;**416,528,549,595,668,737,763,794**;21-MAR-94;Build 9
;;Per VA Directive 6402, this routine should not be modified.
;
; NOTE:
; IB*2.0*763 is a major re-write of this report. The comments from the previous patches
; have either been removed or modified to remove the patch number if the comment is relevant.
;
; Variables:
; IBCNESPC("BEGDT") = start date for date range
; IBCNESPC("ENDDT") = end date for date range
; IBCNESPC("IBOUT") = "R" for Report format or "E" for Excel format
; IBCNESPC("ICODETL") = 1 for displaying Ins Co Detail
; IBCNESPC("INSCO") = "A" (All ins. cos.) OR "S" (Selected ins. cos.)
; IBCNESPC("PYR",ien) - payer iens for report, if IBCNESPC("PYR")="A", then include all
; = (1) ^ (2)
; (1) Display insurance company detail - 0 = No / 1 = Yes
; (2) Display all or some insurance companies - A = All companies/
; S = Specified companies
; IBCNESPC("PYR",ien,coien) - payer iens and company ien for report
; = Count for insurance company
; IBCNESPC("PAT",ien) = patient iens for report, if IBCNESPC("PAT")="A", then include all
; IBCNESPC("TYPE") = report type: "S" - summary, "D" - detailed
;
Q
EN ; entry point
N IBCNESPC,STOP,TYPE
;
S STOP=0
W @IOF
W !,"eIV Auto Update Report"
;
; Report Type - Summary or Detailed
TYPE ;Type of Report
N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
W !
S DIR(0)="SA^S:Summary;D:Detailed"
S DIR("A")="Run a (S)ummary or (D)etailed Report: "
S DIR("B")="Summary"
D ^DIR
I $D(DIRUT)!$D(DIRUT)!$D(DTOUT)!$D(DUOUT) G EXIT
S (TYPE,IBCNESPC("TYPE"))=Y
I TYPE="S" G SUMMARY
;
DETAIL ; Prompts in specific order for Detail report.
S IBCNESPC("ICODETL")=1
;
D10 ; Payer Selection parameter
D PAYER I STOP G:$$STOP EXIT G TYPE
;
D20 ; Date Range parameters
D DTRANGE I STOP G:$$STOP EXIT G D10
;
D30 ; Patient Selection parameter
D PATIENT I STOP G:$$STOP EXIT G D20
;
G IBOUT
;
SUMMARY ;Prompts in specific order for Summary report
;
S IBCNESPC("INSCO")="A" ;All insurance companies
S IBCNESPC("PAT")="A" ;All Patients
S IBCNESPC("PYR")="A" ;All Payers
;
S10 ;Select Payer or Source of Information
N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
W !
S DIR(0)="SA^P:Payer;S:Source of Information"
S DIR("A")="Run for (P)ayer or (S)ource of Information: "
S DIR("?",1)="When selecting '(P)ayer', the report displays the breakout of auto updated"
S DIR("?",2)="entries based on the Payer name."
S DIR("?",3)=""
S DIR("?",4)="When selecting '(S)ource of Information', the report displays the breakout of"
S DIR("?")="auto updated entries based on the Source of Information of the entry."
D ^DIR I $D(DIRUT) G:$$STOP EXIT G TYPE
S IBCNESPC("PS")=Y
I Y="S" D G S40 ;Source of Information does not prompt for Ins Co or Payer.
. S (IBCNESPC("PYR"),IBCNESPC("PAT"))="A"
. S IBCNESPC("ICODETL")=1
;
S20 ;Prompt for Insurance Company Detail
D ICODETL I STOP G:$$STOP EXIT G S10
;
S30 ;Prompt for Payer Selection
D PAYER I STOP G:$$STOP EXIT G S20
;
S40 ; Response Received Date
D DTRANGE I STOP G:$$STOP EXIT G S10:(IBCNESPC("PS")="S") G S30
;
IBOUT ;
N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
W !
S DIR(0)="SA^E:Excel;R:Report"
S DIR("A")="(E)xcel Format or (R)eport Format: "
S DIR("B")="Report"
D ^DIR I $D(DIRUT) S STOP=1 G:$$STOP EXIT G S40:TYPE="S" G D30
S IBCNESPC("IBOUT")=Y
I Y="E" D
. W !!,"For CSV output, turn logging or capture on now. To avoid undesired wrapping"
. W !,"of the data saved to the file, please enter ""0;"_$S(TYPE="S":"132",1:"256")_";99999"" at the ""DEVICE:"""
. W !,"prompt.",!
I $G(IBCNESPC("TYPE"))="D" W:$G(IBCNESPC("IBOUT"))="R" !!!,"*** This report is 132 characters wide ***",!
;
; Select the output device
DEVICE ; Device Handler and possible TaskManager calls
;
; Output params:
; STOP = Flag to stop routine
;
; Init vars
N POP,ZTDESC,ZTRTN,ZTSAVE
;
S ZTRTN="COMPILE^IBCNERPF(.IBCNESPC)"
S ZTDESC="IBCNE eIV Auto Update Report"
S ZTSAVE("IBCNESPC(")=""
D EN^XUTMDEVQ(ZTRTN,ZTDESC,.ZTSAVE,"QM",1)
;
EXIT ;
Q
;
COMPILE(IBCNESPC) ;
; Entry point called from EN^XUTMDEVQ in either direct or queued mode.
; Input params:
; IBCNESPC = Array passed by ref of the report params
;
; Init scratch globals
N ALLPAT,ALLPYR
K ^TMP($J,"IBCNERPF")
N IBOUT
; Compile
S IBOUT=$G(IBCNESPC("IBOUT"))
D EN^IBCNERPG(.IBCNESPC)
; Print
I '$G(ZTSTOP) D PRINT^IBCNERPG(.IBCNESPC)
; Close device
D ^%ZISC
; Kill scratch globals
K ^TMP($J,"IBCNERPF")
; Purge task record
I $D(ZTQUEUED) S ZTREQ="@"
;
COMPILX ; COMPILE exit pt
Q
;
PAYER ;
N DIC,DIR,DIROUT,DIRUT,DTOUT,DUOUT,PIEN,X,Y
W !
S DIR("A")="Run for (A)ll Payers or (S)elected Payers: "
S DIR("A",1)="PAYER SELECTION:"
S DIR(0)="SA^A:All;S:Selected",DIR("B")="A"
D ^DIR
I $D(DIRUT) S STOP=1 Q
S IBCNESPC("PYR")=Y I Y="A" Q ; "All Payers" selected
S DIC(0)="ABEQ"
W !
S DIC("A")="Select Payer: "
; Only include payers with eIV Auto Update flag = Yes
S DIC("S")="I $$AUTOUPDT^IBCNERPF($P($G(Y),U,1))"
S DIC="^IBE(365.12,"
;
PAYER1 ;
D ^DIC
I $D(DUOUT)!$D(DTOUT)!(Y=-1) S STOP=1 K IBCNESPC("PYR") Q
S PIEN=$P(Y,U,1) K IBCNESPC("PYR",PIEN) S IBCNESPC("PYR",PIEN)=""
I $G(IBCNESPC("ICODETL")) D GETCOMPS(PIEN,.IBCNESPC)
W !
I $$ANOTHER("Payer") W ! G PAYER1
Q
;
AUTOUPDT(PIEN) ; Lookup screen to determine if the Auto update flag for payer = Yes
; Input: PIEN - IEN of the Payer (file 365.12)
; Returns 1 - Auto update flag is set to 'Y', 0 otherwise
N AUTOUPDT,IENS,MULT
S AUTOUPDT=0
S MULT=$$PYRAPP^IBCNEUT5("EIV",PIEN)
I MULT D
. S IENS=MULT_","_PIEN_","
. S AUTOUPDT=$$GET1^DIQ(365.121,IENS,4.01,"I")
Q AUTOUPDT
;
GETCOMPS(PIEN,IBCNESPC) ; Get companies linked to payer
; Get associated insurance companies
; If user wants to display insurance companies, prompt only for those linked to payer
; Allow the user to select none, one, or multiple insurance companies associated with a given payer
;
; Input
; PIEN - Payer ID
; IBCNESPC - Array holding payer id and related insurance companies
; Output
; IBCNESPC - Array holding payer id and related insurance companies
; IBCNESPC("PYR",PIEN) = (1)
; (1) Display all or some insurance companies - A = All companies/ S = Specified companies
;
N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
W !
K DIR
S DIR("A")="Run for (A)ll Insurance Companies or (S)elected Insurance Companies: "
S DIR("B")="A"
S DIR(0)="SA^A:All;S:Selected" D ^DIR
Q:$D(DIRUT)
S $P(IBCNESPC("PYR",PIEN),U)=Y
I Y="A" Q ; Run for all companies
S IBCNESPC("INSCO")="S"
K ^TMP("IBCNILKA",$J)
D EN^IBCNILK(2,PIEN,5)
I $D(^TMP("IBCNILKA",$J)) D
. M IBCNESPC("PYR",PIEN)=^TMP("IBCNILKA",$J)
K ^TMP("IBCNILKA",$J)
Q
;
ICODETL ;Display Insurance Company Detail.
N DIR,DIROUT,DIRUT,DTOUT,DUOUT,IBCNS,X,Y
W !
S DIR("A")="Do you want to display insurance company detail"
S DIR("B")="NO"
S DIR(0)="Y" D ^DIR
I $D(DIRUT) S STOP=1 G ICODETLX
S IBCNESPC("ICODETL")=Y=1
ICODETLX ;
Q
;
DTRANGE ;
N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y,IBDT180
; Default start date to T-180
T180 ;
W !
S IBDT180=$$FMADD^XLFDT($$DT^XLFDT(),-180)
S DIR(0)="D^::EX",DIR("B")=$$FMTE^XLFDT(IBDT180,"D")
S DIR("A")="Earliest Date Received"
S DIR("A",1)="RESPONSE RECEIVED DATE RANGE SELECTION:"
D ^DIR I $D(DIRUT) S STOP=1 Q
I Y>DT W !!,"Future dates not allowed." G T180
I Y<IBDT180 W !!,"Response must not be previous to "_$$FMTE^XLFDT(IBDT180,"D")_"." G T180
S IBCNESPC("BEGDT")=Y
; End date
DTRANGE1 ;
S DIR("B")="Today"
K DIR("A") S DIR("A")=" Latest Date Received"
D ^DIR I $D(DIRUT) S STOP=1 Q
I Y>DT W !!,"Future dates not allowed." G DTRANGE1
I Y<IBCNESPC("BEGDT") W !," Latest Date must not precede the Earliest Date." G DTRANGE1
S IBCNESPC("ENDDT")=Y
Q
;
PATIENT ;
N DIC,DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
; summary report is always run for all patients
I $G(IBCNESPC("TYPE"))="S" S IBCNESPC("PAT")="A" Q
W !
S DIR("A")="Run for (A)ll Patients or (S)elected Patients: "
S DIR("A",1)="PATIENT SELECTION:"
S DIR(0)="SA^A:All;S:Selected",DIR("B")="A"
D ^DIR
I $D(DIRUT) S STOP=1 Q
I Y="A" S IBCNESPC("PAT")="A" Q ; "All Patients" selected
S DIC(0)="AMEQ" ;IB*794/DTG change ABEQ to AMEQ to allow for ssn lookup (multi-indexes)
S DIC("A")="Select Patient: "
S DIC="^DPT("
PATIENT1 ;
D ^DIC
I $D(DUOUT)!$D(DTOUT)!(Y=-1) S STOP=1 K IBCNESPC("PAT") Q
S IBCNESPC("PAT",$P(Y,U,1))=""
I $$ANOTHER("Patient") G PATIENT1
Q
;
ANOTHER(TYPE) ; "Select Another" prompt
; returns 1, if response was "YES", returns 0 otherwise
N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
S DIR("A")="Select Another "_TYPE S DIR(0)="Y",DIR("B")="NO"
D ^DIR I $D(DIRUT) S STOP=1
Q Y
;
STOP() ; Determine if user wants to exit out of the whole option
; Init vars
N DIR,X,Y,DIRUT
;
W !
S DIR(0)="Y"
S DIR("A")="Do you want to exit out of this option entirely"
S DIR("B")="YES"
S DIR("?",1)=" Enter YES to immediately exit out of this option."
S DIR("?")=" Enter NO to return to the previous question."
D ^DIR K DIR
I $D(DIRUT)!$D(DTOUT) S (STOP,Y)=1 G STOPX
I 'Y S STOP=0
;
STOPX ; STOP exit pt
Q Y
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBCNERPF 9519 printed Dec 13, 2024@02:15:12 Page 2
IBCNERPF ;BP/YMG - IBCNE eIV AUTO UPDATE REPORT ;09-MAY-2023
+1 ;;2.0;INTEGRATED BILLING;**416,528,549,595,668,737,763,794**;21-MAR-94;Build 9
+2 ;;Per VA Directive 6402, this routine should not be modified.
+3 ;
+4 ; NOTE:
+5 ; IB*2.0*763 is a major re-write of this report. The comments from the previous patches
+6 ; have either been removed or modified to remove the patch number if the comment is relevant.
+7 ;
+8 ; Variables:
+9 ; IBCNESPC("BEGDT") = start date for date range
+10 ; IBCNESPC("ENDDT") = end date for date range
+11 ; IBCNESPC("IBOUT") = "R" for Report format or "E" for Excel format
+12 ; IBCNESPC("ICODETL") = 1 for displaying Ins Co Detail
+13 ; IBCNESPC("INSCO") = "A" (All ins. cos.) OR "S" (Selected ins. cos.)
+14 ; IBCNESPC("PYR",ien) - payer iens for report, if IBCNESPC("PYR")="A", then include all
+15 ; = (1) ^ (2)
+16 ; (1) Display insurance company detail - 0 = No / 1 = Yes
+17 ; (2) Display all or some insurance companies - A = All companies/
+18 ; S = Specified companies
+19 ; IBCNESPC("PYR",ien,coien) - payer iens and company ien for report
+20 ; = Count for insurance company
+21 ; IBCNESPC("PAT",ien) = patient iens for report, if IBCNESPC("PAT")="A", then include all
+22 ; IBCNESPC("TYPE") = report type: "S" - summary, "D" - detailed
+23 ;
+24 QUIT
EN ; entry point
+1 NEW IBCNESPC,STOP,TYPE
+2 ;
+3 SET STOP=0
+4 WRITE @IOF
+5 WRITE !,"eIV Auto Update Report"
+6 ;
+7 ; Report Type - Summary or Detailed
TYPE ;Type of Report
+1 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
+2 WRITE !
+3 SET DIR(0)="SA^S:Summary;D:Detailed"
+4 SET DIR("A")="Run a (S)ummary or (D)etailed Report: "
+5 SET DIR("B")="Summary"
+6 DO ^DIR
+7 IF $DATA(DIRUT)!$DATA(DIRUT)!$DATA(DTOUT)!$DATA(DUOUT)
GOTO EXIT
+8 SET (TYPE,IBCNESPC("TYPE"))=Y
+9 IF TYPE="S"
GOTO SUMMARY
+10 ;
DETAIL ; Prompts in specific order for Detail report.
+1 SET IBCNESPC("ICODETL")=1
+2 ;
D10 ; Payer Selection parameter
+1 DO PAYER
IF STOP
if $$STOP
GOTO EXIT
GOTO TYPE
+2 ;
D20 ; Date Range parameters
+1 DO DTRANGE
IF STOP
if $$STOP
GOTO EXIT
GOTO D10
+2 ;
D30 ; Patient Selection parameter
+1 DO PATIENT
IF STOP
if $$STOP
GOTO EXIT
GOTO D20
+2 ;
+3 GOTO IBOUT
+4 ;
SUMMARY ;Prompts in specific order for Summary report
+1 ;
+2 ;All insurance companies
SET IBCNESPC("INSCO")="A"
+3 ;All Patients
SET IBCNESPC("PAT")="A"
+4 ;All Payers
SET IBCNESPC("PYR")="A"
+5 ;
S10 ;Select Payer or Source of Information
+1 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
+2 WRITE !
+3 SET DIR(0)="SA^P:Payer;S:Source of Information"
+4 SET DIR("A")="Run for (P)ayer or (S)ource of Information: "
+5 SET DIR("?",1)="When selecting '(P)ayer', the report displays the breakout of auto updated"
+6 SET DIR("?",2)="entries based on the Payer name."
+7 SET DIR("?",3)=""
+8 SET DIR("?",4)="When selecting '(S)ource of Information', the report displays the breakout of"
+9 SET DIR("?")="auto updated entries based on the Source of Information of the entry."
+10 DO ^DIR
IF $DATA(DIRUT)
if $$STOP
GOTO EXIT
GOTO TYPE
+11 SET IBCNESPC("PS")=Y
+12 ;Source of Information does not prompt for Ins Co or Payer.
IF Y="S"
Begin DoDot:1
+13 SET (IBCNESPC("PYR"),IBCNESPC("PAT"))="A"
+14 SET IBCNESPC("ICODETL")=1
End DoDot:1
GOTO S40
+15 ;
S20 ;Prompt for Insurance Company Detail
+1 DO ICODETL
IF STOP
if $$STOP
GOTO EXIT
GOTO S10
+2 ;
S30 ;Prompt for Payer Selection
+1 DO PAYER
IF STOP
if $$STOP
GOTO EXIT
GOTO S20
+2 ;
S40 ; Response Received Date
+1 DO DTRANGE
IF STOP
if $$STOP
GOTO EXIT
if (IBCNESPC("PS")="S")
GOTO S10
GOTO S30
+2 ;
IBOUT ;
+1 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
+2 WRITE !
+3 SET DIR(0)="SA^E:Excel;R:Report"
+4 SET DIR("A")="(E)xcel Format or (R)eport Format: "
+5 SET DIR("B")="Report"
+6 DO ^DIR
IF $DATA(DIRUT)
SET STOP=1
if $$STOP
GOTO EXIT
if TYPE="S"
GOTO S40
GOTO D30
+7 SET IBCNESPC("IBOUT")=Y
+8 IF Y="E"
Begin DoDot:1
+9 WRITE !!,"For CSV output, turn logging or capture on now. To avoid undesired wrapping"
+10 WRITE !,"of the data saved to the file, please enter ""0;"_$SELECT(TYPE="S":"132",1:"256")_";99999"" at the ""DEVICE:"""
+11 WRITE !,"prompt.",!
End DoDot:1
+12 IF $GET(IBCNESPC("TYPE"))="D"
if $GET(IBCNESPC("IBOUT"))="R"
WRITE !!!,"*** This report is 132 characters wide ***",!
+13 ;
+14 ; Select the output device
DEVICE ; Device Handler and possible TaskManager calls
+1 ;
+2 ; Output params:
+3 ; STOP = Flag to stop routine
+4 ;
+5 ; Init vars
+6 NEW POP,ZTDESC,ZTRTN,ZTSAVE
+7 ;
+8 SET ZTRTN="COMPILE^IBCNERPF(.IBCNESPC)"
+9 SET ZTDESC="IBCNE eIV Auto Update Report"
+10 SET ZTSAVE("IBCNESPC(")=""
+11 DO EN^XUTMDEVQ(ZTRTN,ZTDESC,.ZTSAVE,"QM",1)
+12 ;
EXIT ;
+1 QUIT
+2 ;
COMPILE(IBCNESPC) ;
+1 ; Entry point called from EN^XUTMDEVQ in either direct or queued mode.
+2 ; Input params:
+3 ; IBCNESPC = Array passed by ref of the report params
+4 ;
+5 ; Init scratch globals
+6 NEW ALLPAT,ALLPYR
+7 KILL ^TMP($JOB,"IBCNERPF")
+8 NEW IBOUT
+9 ; Compile
+10 SET IBOUT=$GET(IBCNESPC("IBOUT"))
+11 DO EN^IBCNERPG(.IBCNESPC)
+12 ; Print
+13 IF '$GET(ZTSTOP)
DO PRINT^IBCNERPG(.IBCNESPC)
+14 ; Close device
+15 DO ^%ZISC
+16 ; Kill scratch globals
+17 KILL ^TMP($JOB,"IBCNERPF")
+18 ; Purge task record
+19 IF $DATA(ZTQUEUED)
SET ZTREQ="@"
+20 ;
COMPILX ; COMPILE exit pt
+1 QUIT
+2 ;
PAYER ;
+1 NEW DIC,DIR,DIROUT,DIRUT,DTOUT,DUOUT,PIEN,X,Y
+2 WRITE !
+3 SET DIR("A")="Run for (A)ll Payers or (S)elected Payers: "
+4 SET DIR("A",1)="PAYER SELECTION:"
+5 SET DIR(0)="SA^A:All;S:Selected"
SET DIR("B")="A"
+6 DO ^DIR
+7 IF $DATA(DIRUT)
SET STOP=1
QUIT
+8 ; "All Payers" selected
SET IBCNESPC("PYR")=Y
IF Y="A"
QUIT
+9 SET DIC(0)="ABEQ"
+10 WRITE !
+11 SET DIC("A")="Select Payer: "
+12 ; Only include payers with eIV Auto Update flag = Yes
+13 SET DIC("S")="I $$AUTOUPDT^IBCNERPF($P($G(Y),U,1))"
+14 SET DIC="^IBE(365.12,"
+15 ;
PAYER1 ;
+1 DO ^DIC
+2 IF $DATA(DUOUT)!$DATA(DTOUT)!(Y=-1)
SET STOP=1
KILL IBCNESPC("PYR")
QUIT
+3 SET PIEN=$PIECE(Y,U,1)
KILL IBCNESPC("PYR",PIEN)
SET IBCNESPC("PYR",PIEN)=""
+4 IF $GET(IBCNESPC("ICODETL"))
DO GETCOMPS(PIEN,.IBCNESPC)
+5 WRITE !
+6 IF $$ANOTHER("Payer")
WRITE !
GOTO PAYER1
+7 QUIT
+8 ;
AUTOUPDT(PIEN) ; Lookup screen to determine if the Auto update flag for payer = Yes
+1 ; Input: PIEN - IEN of the Payer (file 365.12)
+2 ; Returns 1 - Auto update flag is set to 'Y', 0 otherwise
+3 NEW AUTOUPDT,IENS,MULT
+4 SET AUTOUPDT=0
+5 SET MULT=$$PYRAPP^IBCNEUT5("EIV",PIEN)
+6 IF MULT
Begin DoDot:1
+7 SET IENS=MULT_","_PIEN_","
+8 SET AUTOUPDT=$$GET1^DIQ(365.121,IENS,4.01,"I")
End DoDot:1
+9 QUIT AUTOUPDT
+10 ;
GETCOMPS(PIEN,IBCNESPC) ; Get companies linked to payer
+1 ; Get associated insurance companies
+2 ; If user wants to display insurance companies, prompt only for those linked to payer
+3 ; Allow the user to select none, one, or multiple insurance companies associated with a given payer
+4 ;
+5 ; Input
+6 ; PIEN - Payer ID
+7 ; IBCNESPC - Array holding payer id and related insurance companies
+8 ; Output
+9 ; IBCNESPC - Array holding payer id and related insurance companies
+10 ; IBCNESPC("PYR",PIEN) = (1)
+11 ; (1) Display all or some insurance companies - A = All companies/ S = Specified companies
+12 ;
+13 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
+14 WRITE !
+15 KILL DIR
+16 SET DIR("A")="Run for (A)ll Insurance Companies or (S)elected Insurance Companies: "
+17 SET DIR("B")="A"
+18 SET DIR(0)="SA^A:All;S:Selected"
DO ^DIR
+19 if $DATA(DIRUT)
QUIT
+20 SET $PIECE(IBCNESPC("PYR",PIEN),U)=Y
+21 ; Run for all companies
IF Y="A"
QUIT
+22 SET IBCNESPC("INSCO")="S"
+23 KILL ^TMP("IBCNILKA",$JOB)
+24 DO EN^IBCNILK(2,PIEN,5)
+25 IF $DATA(^TMP("IBCNILKA",$JOB))
Begin DoDot:1
+26 MERGE IBCNESPC("PYR",PIEN)=^TMP("IBCNILKA",$JOB)
End DoDot:1
+27 KILL ^TMP("IBCNILKA",$JOB)
+28 QUIT
+29 ;
ICODETL ;Display Insurance Company Detail.
+1 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,IBCNS,X,Y
+2 WRITE !
+3 SET DIR("A")="Do you want to display insurance company detail"
+4 SET DIR("B")="NO"
+5 SET DIR(0)="Y"
DO ^DIR
+6 IF $DATA(DIRUT)
SET STOP=1
GOTO ICODETLX
+7 SET IBCNESPC("ICODETL")=Y=1
ICODETLX ;
+1 QUIT
+2 ;
DTRANGE ;
+1 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y,IBDT180
+2 ; Default start date to T-180
T180 ;
+1 WRITE !
+2 SET IBDT180=$$FMADD^XLFDT($$DT^XLFDT(),-180)
+3 SET DIR(0)="D^::EX"
SET DIR("B")=$$FMTE^XLFDT(IBDT180,"D")
+4 SET DIR("A")="Earliest Date Received"
+5 SET DIR("A",1)="RESPONSE RECEIVED DATE RANGE SELECTION:"
+6 DO ^DIR
IF $DATA(DIRUT)
SET STOP=1
QUIT
+7 IF Y>DT
WRITE !!,"Future dates not allowed."
GOTO T180
+8 IF Y<IBDT180
WRITE !!,"Response must not be previous to "_$$FMTE^XLFDT(IBDT180,"D")_"."
GOTO T180
+9 SET IBCNESPC("BEGDT")=Y
+10 ; End date
DTRANGE1 ;
+1 SET DIR("B")="Today"
+2 KILL DIR("A")
SET DIR("A")=" Latest Date Received"
+3 DO ^DIR
IF $DATA(DIRUT)
SET STOP=1
QUIT
+4 IF Y>DT
WRITE !!,"Future dates not allowed."
GOTO DTRANGE1
+5 IF Y<IBCNESPC("BEGDT")
WRITE !," Latest Date must not precede the Earliest Date."
GOTO DTRANGE1
+6 SET IBCNESPC("ENDDT")=Y
+7 QUIT
+8 ;
PATIENT ;
+1 NEW DIC,DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
+2 ; summary report is always run for all patients
+3 IF $GET(IBCNESPC("TYPE"))="S"
SET IBCNESPC("PAT")="A"
QUIT
+4 WRITE !
+5 SET DIR("A")="Run for (A)ll Patients or (S)elected Patients: "
+6 SET DIR("A",1)="PATIENT SELECTION:"
+7 SET DIR(0)="SA^A:All;S:Selected"
SET DIR("B")="A"
+8 DO ^DIR
+9 IF $DATA(DIRUT)
SET STOP=1
QUIT
+10 ; "All Patients" selected
IF Y="A"
SET IBCNESPC("PAT")="A"
QUIT
+11 ;IB*794/DTG change ABEQ to AMEQ to allow for ssn lookup (multi-indexes)
SET DIC(0)="AMEQ"
+12 SET DIC("A")="Select Patient: "
+13 SET DIC="^DPT("
PATIENT1 ;
+1 DO ^DIC
+2 IF $DATA(DUOUT)!$DATA(DTOUT)!(Y=-1)
SET STOP=1
KILL IBCNESPC("PAT")
QUIT
+3 SET IBCNESPC("PAT",$PIECE(Y,U,1))=""
+4 IF $$ANOTHER("Patient")
GOTO PATIENT1
+5 QUIT
+6 ;
ANOTHER(TYPE) ; "Select Another" prompt
+1 ; returns 1, if response was "YES", returns 0 otherwise
+2 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
+3 SET DIR("A")="Select Another "_TYPE
SET DIR(0)="Y"
SET DIR("B")="NO"
+4 DO ^DIR
IF $DATA(DIRUT)
SET STOP=1
+5 QUIT Y
+6 ;
STOP() ; Determine if user wants to exit out of the whole option
+1 ; Init vars
+2 NEW DIR,X,Y,DIRUT
+3 ;
+4 WRITE !
+5 SET DIR(0)="Y"
+6 SET DIR("A")="Do you want to exit out of this option entirely"
+7 SET DIR("B")="YES"
+8 SET DIR("?",1)=" Enter YES to immediately exit out of this option."
+9 SET DIR("?")=" Enter NO to return to the previous question."
+10 DO ^DIR
KILL DIR
+11 IF $DATA(DIRUT)!$DATA(DTOUT)
SET (STOP,Y)=1
GOTO STOPX
+12 IF 'Y
SET STOP=0
+13 ;
STOPX ; STOP exit pt
+1 QUIT Y
+2 ;