25. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 10/23/2018 6:40:33 AM Central Daylight Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.

25.1 Files compared

# Location File Last Modified
1 docs TAS ePay US774 SDD - Copy.doc Mon Oct 22 16:27:48 2018 UTC
2 docs TAS ePay US774 SDD - Copy.doc Mon Oct 22 16:32:35 2018 UTC

25.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 5 3326
Changed 4 8
Inserted 0 0
Removed 0 0

25.3 Comparison options

Whitespace
Character case Differences in character case are significant
Line endings Differences in line endings (CR and LF characters) are ignored
CR/LF characters Not shown in the comparison detail

25.4 Active regular expressions

No regular expressions were active.

25.5 Comparison detail

  1   MCCF EDI T AS US774
  2   System Des ign Docume nt
  3   PRCA*4.5*x xx
  4  
  5   Department  of Vetera ns Affairs
  6   June 2017
  7   Version 1
  8   Story
  9   As an ePay ments user , I need t o research  payers th at have au to posted.  I want to  sort/filt er the Aut o Post Rep ort by pay er TIN. I  need new f ilters add ed to the  existing A P report 
  10   Conversati on
  11   7/21/17
  12   Need to ad d Payer TI N column a dded to AP  Report
  13   Need to ad d two new  prompts, T IN filter  and TIN so rt
  14   Summary
  15   Auto-Post  Report (AP )   [RCDPE  AUTO-POST  REPORT] m enu option
  16   Currently   the Auto- Post Repor t allows t he user to  filter by  name and  doesn not  provide an y sort opt ion. It so rts the re port by Di vision wit h a second ary sort o f Payer Na me.  The f ollowing a re the cur rent filte r options:
  17   Select div ision: ALL // 
  18   DISPLAY (S )UMMARY OR  (D)ETAIL  FORMAT?: D ETAIL// 
  19   (M)EDICAL,  (P)HARMAC Y, or (B)O TH: BOTH//  
  20   RUN REPORT  FOR (A)LL , (S)PECIF IC, OR (R) ANGE OF IN SURANCE CO MPANIES?:  ALL// 
  21   START DATE : T-100  ( MAR 21, 20 17)
  22   END DATE:  MAR 21,201 7// T  (JU N 29, 2017 )
  23   Export the  report to  Microsoft  Excel? NO // 
  24   This repor t requires  132 colum n display.
  25   DEVICE: HO ME//   HOM E  (CRT)     Right Ma rgin: 80//  
  26   A new prom pt will be  added bef ore the In surance Co mpany (Pay er Name fi lter) to a sk the use r if they  want to fi lter by Pa yer Name o r Payer TI N with a d efault of  PAYER TIN.   If the u ser select s PAYER TI N, the ‘RU N REPORT F OR (A)LL,  (S)PECIFC  OR (R)ANGE  OF INSURA NCE COMPAN IES’ will  be replace d with ‘Ru n Report f or (A)LL,  or (S)PECI FC Insuran ce Company  TINs’.  A dditionall y, a new s ort prompt  will be a dded befor e the STAR T DATE pro mpt: ‘Sort  by Insura nce Compan y Name or  TIN’ with  a default  of ‘TIN’.   
  27   Below is t he new sor t filter p rompts whe n the user  selects t o filter b y Insuranc e Company  Name:
  28   Select div ision: ALL // 
  29   Display (S )UMMARY or  (D)ETAIL  Format?: D ETAIL// 
  30   (M)EDICAL,  (P)HARMAC Y, or (B)O TH: BOTH//  
  31   Filter by  Insurance  Company NA ME or TIN:   TIN// NA ME
  32   Run Report  for (A)LL , (S)PECIF IC, OR (R) ANGE OF In surance Co mpanies?:  ALL// 
  33   Sort by In surance Co mpany NAME  or TIN:   TIN//
  34   Start Date : T-100  ( MAR 21, 20 17)
  35   End Date:  MAR 21,201 7// T  (JU N 29, 2017 )
  36   Export the  report to  Microsoft  Excel? NO // 
  37   This repor t requires  132 colum n display.
  38   DEVICE: HO ME//   HOM E  (CRT)     Right Ma rgin: 80//  
  39   Below is t he new sor t filter p rompts whe n the user  selects t o filter b y Insuranc e Company  TIN:
  40   Select div ision: ALL // 
  41   Display (S )UMMARY or  (D)ETAIL  Format?: D ETAIL// 
  42   (M)EDICAL,  (P)HARMAC Y, or (B)O TH: BOTH//  
  43   Filter by  Insurance  Company NA ME or TIN:   TIN// 
  44   Run Report  for (A)LL  or (S)PEC IFIC Insur ance Compa ny TINs: A LL// 
  45   Sort by In surance Co mpany NAME  or TIN:   TIN//
  46   Start Date : T-100  ( MAR 21, 20 17)
  47   End Date:  MAR 21,201 7// T  (JU N 29, 2017 )
  48   Export the  report to  Microsoft  Excel? NO // 
  49   This repor t requires  132 colum n display.
  50   DEVICE: HO ME//   HOM E  (CRT)     Right Ma rgin: 80//  
  51   NOTE: In b oth cases  the all up per case p rompts hav e been rep laced with  mixed cas e prompts
  52   Additional ly,  when  the Payer  Name is di splayed on  the repor t it will  now includ e the Paye r TIN.
  53   Below is a n example  of the the  current P ayer Name  Display:
  54   ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ------
  55   PAYER: AET NA -CONTIN ENTAL LIFE  INSURANCE  COMPANY O F BRENTWOO D
  56   ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ------
  57   Below is a n example  of the the  new Payer  Name Disp lay:
  58   ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ------
  59   PAYER: AET NA -CONTIN ENTAL LIFE  INSURANCE  COMPANY O F BRENTWOO D/12345678 90
  60   ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ------
  61   NOTE: The  report use s 132 char acters for  display s o there wi ll be plen ty of room  for the f ull Payer  Name and T IN.
  62   Routines c hanged
  63   RCDPEAPP –  This exis ting routi ne will be  modified  to add the  new promp ts and add  filtering /sorting b y Payer TI N if selec ted.  It w ill also a dd the Pay er TIN to  the Payer  Name displ ay on the  report. Th is routine  was also  extensivel y rewritte n to repla ce direct  global rea ds with $$ GET1^DIQ c alls, make  it more m odular, ad d missing  comments,  etc.  See  routine ZZ FARCDPEAPP  as a work ing exampl e
  64   RCDPEM9 –  This exist ing routin e will be  modified t o allow pa yer select ion by Pay er TIN.  T his routin e was also  extensive ly rewritt en to be m ore modula r, add mis sing comme nts, etc.   Take note  of the ot her report s that cal l this rou tine and t est for ba ckward com patibility .  See ZZF ARCDPEM9 a s a workin g example.
  65   New Style  Cross-refe rences for  Payer Nam e, Payer T IN and Pay er TIN, Pa yer Name f or files 3 44.4 and 3 44.31 – Se e modified  code in R CDPEM9 for  an exampl e of how t he indices  need to b e created.
  66   Resolution  – Added C hanged Obj ects 
  67   RoutinesAc tivitiesRo utine Name RCDPEAPPEn hancement  Category N ew Modify  Delete No  ChangeRTMR elated Opt ionsRCDPE  AUTO-POST  REPORTRela ted Routin esRoutines  “Called B y”Routines  “Called”    N/A$$PHA RM^RCDPEAP 1
  68   $$ENDORPT^ RCDPEARL
  69   INFO^RCDPE M6
  70   $$GETPAY^R CDPEM9
  71   $$RTYPE^RC DPESP2
  72   $$PNM4^RCD PEWL1
  73   DIVISION^V AUTOMA           Current Lo gicRCDPEAP P ;OI D N
S           /PJH - AUT O POST REP ORT ;Dec 2 0, 2014@18 :42
  74    ;;4.5;Acc ounts Rece ivable;**2 98,304**;M ar 20, 199 5;Build 10 4
  75    ;Per VA D irective 6 402, this  routine sh ould not b e modified .
  76    ;Read ^DG CR(399) vi a Private  IA 3820
  77    ;Read ^DG (40.8) via  Controlle d IA 417
  78    ;Read ^IB M(361.1) v ia Private  IA 4051
  79    ;Use DIVI SION^VAUTO MA via Con trolled IA  664
  80    ;
  81   RPT ; entr y point fo r Auto-Pos t Report [ RCDPE AUTO -POST REPO RT]
  82    N POP,RCD ISP,RCDIV, RCDTRNG,RC JOB,RCPAGE ,RCPARRAY, RCPAY,RCPR OG,RCRANGE ,RCTYPE,RC LAIM,STANA M,STANUM,V AUTD,X,Y
  83    ;Initiali ze page an d start po int
  84    S (RCDTRN G,RCPAGE)= 0,RCPROG=" RCDPEAPP", RCJOB=$J
  85    ;Select F ilter/Sort  by Divisi on
  86    D STADIV  Q:'RCDIV
  87    ;Select r eport type
  88    S DIR(0)= "SA^S:SUMM ARY;D:DETA IL;",DIR(" A")="DISPL AY (S)UMMA RY OR (D)E TAIL FORMA T?: ",DIR( "B")="DETA IL" D ^DIR  K DIR Q:$ D(DTOUT)!$ D(DUOUT)
  89    S RCTYPE= Y
  90    ;PRCA*4.5 *304 - Sel ect Filter  for Claim  Type ((M) edical, (P )harmacy,  or (B)oth)
  91    S RCLAIM= $$RTYPE^RC DPESP2() Q :RCLAIM=-1
  92    ;Select F ilter for  Payer - re turns arra y ^TMP("RC SELPAY",$J
  93    S RCPAY=$ $GETPAY^RC DPEM9(344. 4) Q:RCPAY <0
  94    ;Move ^TM P("RCSELPA Y",RCJOB)  into RCPAR RAY for lo okup, note  that paye r names fo r 344.4 ar e UPPER CA SE
  95    I $P(RCPA Y,U)'=2 D
  96    .N PSUB,P AYER S PSU B=0
  97    .F  S PSU B=$O(^TMP( "RCSELPAY" ,RCJOB,PSU B)) Q:'PSU B  D
  98    ..S PAYER =$G(^TMP(" RCSELPAY", RCJOB,PSUB ))
  99    ..S:PAYER '="" RCPAR RAY(PAYER) =""
  100    ;
  101    ;Select D ate Range  for Report
  102    S RCRANGE =$$DTRNG()  Q:RCRANGE =0
  103    ;Select D isplay Typ e
  104    S RCDISP= $$DISPTY()  Q:RCDISP= -1
  105    ;Display  capture in formation  for Excel
  106    I RCDISP  D INFO^RCD PEM6
  107    ;PRCA*4.5 *304 - If  not Excel,  inform us er to make  sure prin ter/screen  will disp lay 132 co lumns
  108    I 'RCDISP  W !,"This  report re quires 132  column di splay."
  109    ;Select o utput devi ce
  110    S %ZIS="Q M" D ^%ZIS  Q:POP
  111    ;Option t o queue
  112    I 'RCDISP ,$D(IO("Q" )) D  Q
  113    .N ZTDESC ,ZTQUEUED, ZTRTN,ZTSA VE,ZTSK
  114    .S ZTRTN= "REPORT^RC DPEAPP"
  115    .S ZTDESC ="EDI LOCK BOX AUTO P OST REPORT "
  116    .S ZTSAVE ("RC*")="" ,ZTSAVE("V AUTD")=""
  117    .D ^%ZTLO AD
  118    .I $D(ZTS K) W !!,"T ask number  "_ZTSK_"  was queued ."
  119    .E  W !!, "Unable to  queue thi s job."
  120    .K IO("Q" ) D HOME^% ZIS
  121    ;
  122    ;Compile  and Print  Report
  123    D REPORT
  124    Q
  125    ;
  126   REPORT ;Co mpile and  print repo rt
  127    N GLOB,GT OTAL,ZTREQ
  128    K ^TMP(RC PROG,$J),^ TMP("RCDPE APP2",$J)
  129    S GLOB=$N A(^TMP(RCP ROG,$J))
  130    ;Scan ERA  file for  entries in  date rang e
  131    D COMPILE
  132    ;Display  Report
  133    D DISP
  134    ;Clear ^T MP global
  135    K ^TMP(RC PROG,$J),^ TMP("RCSEL PAY",RCJOB ),^TMP("RC DPEAPP2",$ J)
  136    Q
  137    ;
  138   COMPILE ;G enerate th e Auto Pos ting repor t ^TMP arr ay
  139    N APDATE, END,IEN,RC RZ,RCECME, STA,STNAM, STNUM,CNT
  140    ;
  141    ;Date Ran ge
  142    S APDATE= $$FMADD^XL FDT($P(RCR ANGE,U,2), -1),END=$P (RCRANGE,U ,3),CNT=0
  143    ;Scan F i ndex for E RA within  date range
  144    F  S APDA TE=$O(^RCY (344.4,"F" ,APDATE))  Q:'APDATE   Q:(APDATE \1)>END  D
  145    .S ERAIEN =""
  146    .F  S ERA IEN=$O(^RC Y(344.4,"F ",APDATE,E RAIEN)) Q: 'ERAIEN  D
  147    ..;Check  division -  Note retu rn values  are set to  UNKNOWN i f not avai lable
  148    ..D ERAST A(ERAIEN,. STA,.STNUM ,.STNAM)
  149    ..I RCDIV =2,'$D(VAU TD(STA)) Q
  150    .. ; PRCA *4.5*304 -  Check if  we include  this ERA  in report
  151    .. I RCLA IM'="B" N  OKAY S OKA Y=1 D  Q:' OKAY  ; If  both not  specified  check for  inclusion
  152    ... S RCE CME=$$PHAR M^RCDPEAP1 (ERAIEN) ;  See if EC ME # exist s for this  ERA
  153    ... I RCE CME=1,RCLA IM="M" S O KAY=0 ; If  ECME # an d only wan t Medical  skip this  ERA
  154    ... I RCE CME=0,RCLA IM="P" S O KAY=0 ; If  no ECME #  and only  want Pharm acy skip t his ERA
  155    ..;Check  Payer, pay er names c ome from 3 44.4,06 "C " cross-re ference wh ich is UPP ER CASE
  156    ..I $P(RC PAY,U)'=2  N ERAPAY,M ATCH D  Q: 'MATCH
  157    ...S ERAP AY=$P($G(^ RCY(344.4, ERAIEN,0)) ,U,6),MATC H=0 Q:ERAP AY=""
  158    ...S:$D(R CPARRAY($$ UP^XLFSTR( ERAPAY)))  MATCH=1 ;  payer name s for 344. 4 are UPPE R CASE
  159    ..;If it  does not a lready exi st for thi s ERA, bui ld X-ref o f ERA deta il lines t o the line s in the w orklist
  160    ..I '$D(^ TMP("RCDPE APP2",$J,E RAIEN)) D  BUILD(ERAI EN)
  161    ..;Scan i ndex for a uto posted  claim lin es within  the ERA
  162    ..S RCRZ= ""
  163    ..F  S RC RZ=$O(^RCY (344.4,"F" ,APDATE,ER AIEN,RCRZ) ) Q:'RCRZ   D
  164    ...;Save  claim line  detail to  ^TMP glob al
  165    ...D SAVE
  166    ;
  167    Q
  168    ;
  169   SAVE ;Save  to ^TMP g lobal
  170    N REC0,RE C41,BILL,B AMT,BALANC E,CLAIMIEN ,COLLECT,E RANUM,ERAD ATE,EFTNUM ,EOBIEN,PA MT,PAYNAM, PTNAM,RECE IPT,TRACE, DATE
  171    N SEQ,SEQ 1,SEQ2,REC 49,TOTBAMT ,TOTBAL,TO TPAMT
  172    ;
  173    ;Get ERA  header and  detail da ta
  174    S REC0=$G (^RCY(344. 4,ERAIEN,0 )),REC41=$ G(^RCY(344 .4,ERAIEN, 1,RCRZ,0))
  175    ;
  176    ;Payer na me from ER A record
  177    S PAYNAM= $P(REC0,U, 6)
  178    I PAYNAM= "" S PAYNA M="UNKNOWN "
  179    S (TOTBAM T,TOTBAL,T OTPAMT)=0
  180    ;
  181    ;If they  want detai l, get the se extra f ields
  182    I RCTYPE= "D" D
  183    . ;Trace  #
  184    . S TRACE =$P(REC0,U ,2)
  185    . ;Patien t name fro m claim fi le #399
  186    . S PTNAM =$$PNM4^RC DPEWL1(ERA IEN,RCRZ)
  187    . ;ERA# f rom header
  188    . S ERANU M=$P(REC0, U)
  189    . ;Date r eceived (f ile date/t ime)
  190    . S ERADA TE=$$FMTE^ XLFDT($P(R EC0,U,7)," 2D")
  191    . ;Format  Auto Post  Date
  192    . S DATE= $$FMTE^XLF DT(APDATE, "2D")
  193    . ;EFT#
  194    . S EFTNU M=$O(^RCY( 344.31,"AE RA",ERANUM ,"")) S:EF TNUM EFTNU M=$P($G(^R CY(344.31, EFTNUM,0)) ,U)
  195    . ;Receip t
  196    . S RECEI PT=$$EXTER NAL^DILFD( 344.41,.25 ,,$P($G(^R CY(344.4,E RAIEN,1,RC RZ,4)),U,3 ))
  197    ;
  198    ; Get lin k to the s cratchpad  detail lin e
  199    ; If the  worklist d etail reco rds exist,  loop thro ugh the on es with th e same pre fix to get  the data  (this will  have spli t-edits)
  200    S SEQ=$G( ^TMP("RCDP EAPP2",$J, ERAIEN,RCR Z))
  201    I SEQ D
  202    . S SEQ1= SEQ F  S S EQ1=$O(^RC Y(344.49,E RAIEN,1,"B ",SEQ1)) Q :'SEQ1!(SE Q1\1'=SEQ)  D
  203    .. S SEQ2 =$O(^RCY(3 44.49,ERAI EN,1,"B",S EQ1,""))
  204    .. I SEQ2 ="" Q
  205    .. S REC4 9=$G(^RCY( 344.49,ERA IEN,1,SEQ2 ,0))
  206    .. S (BAM T,BALANCE, COLLECT)=" "
  207    .. S CLAI MIEN=$P(RE C49,U,7)
  208    .. S BILL =$P(REC49, U,2)
  209    .. I BILL ="" S BILL ="<blank>"
  210    .. ;Amoun t Paid on  Claim
  211    .. S PAMT =$P(REC49, U,6)
  212    .. ;If th ere is a c laim, get  billed amo unt and ba lance from  the claim
  213    .. I CLAI MIEN S BAM T=$J(+$P($ G(^PRCA(43 0,CLAIMIEN ,0)),U,3), 0,2),BALAN CE=$J(+$P( $G(^PRCA(4 30,CLAIMIE N,7)),U),0 ,2)
  214    .. ;Updat e total am ounts
  215    .. S TOTB AMT=TOTBAM T+BAMT,TOT BAL=TOTBAL +BALANCE,T OTPAMT=TOT PAMT+PAMT
  216    .. ;If th ey want de tail, get  extra data  and then  update the  detail gl obal
  217    .. I RCTY PE="D" D
  218    ... S PTN AM=$S('CLA IMIEN:"",1 :$$PNM4^RC DPEWL1(ERA IEN,RCRZ))
  219    ... S:BAM T COLLECT= $J(PAMT/BA MT*100,0,2 )_"%"
  220    ... ;Upda te ^TMP gl obal for d etail repo rt
  221    ... S CNT =CNT+1
  222    ... S @GL OB@(STNAM, PAYNAM,CNT )=STNAM_U_ STNUM_U_PA YNAM_U_PTN AM_U_ERANU M_U_ERADAT E_U_DATE_U _EFTNUM_U_ RECEIPT_U_ BILL_U_BAM T_U_PAMT_U _BALANCE_U _COLLECT_U _TRACE
  223    .. ; Upda te totals
  224    ;
  225    ; If the  worlist de tail recor d does not  exist, ge t data fro m ERA deta il
  226    I 'SEQ D
  227    . S (TOTB AMT,TOTBAL ,COLLECT,C LAIMIEN)=0
  228    . ;Get po inter to E OB file #3 61.1 from  ERA DETAIL
  229    . S EOBIE N=$P($G(^R CY(344.4,E RAIEN,1,RC RZ,0)),U,2 )
  230    . ;Get ^D GCR(399 po inter (DIN UM for #43 0 file)
  231    . S:EOBIE N CLAIMIEN =$P($G(^IB M(361.1,EO BIEN,0)),U )
  232    . ;Bill n umber
  233    . S BILL= $$EXTERNAL ^DILFD(344 .41,.02,,E OBIEN)
  234    . ;Billed  Amount fr om AR (Ori ginal Bala nce)
  235    . S:CLAIM IEN TOTBAM T=$J(+$P($ G(^PRCA(43 0,CLAIMIEN ,0)),U,3), 0,2)
  236    . ;Amount  Paid on C laim
  237    . S TOTPA MT=$P(REC4 1,U,3)
  238    . ;Balanc e from AR  (Principal  Balance)
  239    . S:CLAIM IEN TOTBAL =$J(+$P($G (^PRCA(430 ,CLAIMIEN, 7)),U),0,2 )
  240    . ;If the y want det ail, get e xtra data  and then u pdate the  detail glo bal
  241    . I RCTYP E="D" D
  242    .. S PTNA M=$S('CLAI MIEN:"",1: $$PNM4^RCD PEWL1(ERAI EN,RCRZ))
  243    .. S:TOTB AMT COLLEC T=$J(TOTPA MT/TOTBAMT *100,0,2)_ "%"
  244    .. ;Updat e ^TMP glo bal for de tail repor t
  245    .. S CNT= CNT+1
  246    .. S @GLO B@(STNAM,P AYNAM,CNT) =STNAM_U_S TNUM_U_PAY NAM_U_PTNA M_U_ERANUM _U_ERADATE _U_DATE_U_ EFTNUM_U_R ECEIPT_U_B ILL_U_TOTB AMT_U_TOTP AMT_U_TOTB AL_U_COLLE CT_U_TRACE
  247    ;
  248    ;Update t otals for  individual  division
  249    S $P(@GLO B@(STNAM), U)=$P($G(@ GLOB@(STNA M)),U)+1,$ P(@GLOB@(S TNAM),U,2) =$P($G(@GL OB@(STNAM) ),U,2)+TOT BAMT
  250    S $P(@GLO B@(STNAM), U,3)=$P($G (@GLOB@(ST NAM)),U,3) +TOTPAMT,$ P(@GLOB@(S TNAM),U,4) =$P($G(@GL OB@(STNAM) ),U,4)+TOT BAL
  251    ;
  252    ;Update t otals for  individual  division/ payer
  253    S $P(@GLO B@(STNAM,P AYNAM),U,1 )=$P($G(@G LOB@(STNAM ,PAYNAM)), U,1)+1
  254    S $P(@GLO B@(STNAM,P AYNAM),U,2 )=$P($G(@G LOB@(STNAM ,PAYNAM)), U,2)+TOTBA MT
  255    S $P(@GLO B@(STNAM,P AYNAM),U,3 )=$P($G(@G LOB@(STNAM ,PAYNAM)), U,3)+TOTPA MT
  256    S $P(@GLO B@(STNAM,P AYNAM),U,4 )=$P($G(@G LOB@(STNAM ,PAYNAM)), U,4)+TOTBA L
  257    ;
  258    ;Update g rand total s
  259    S $P(GTOT AL,U)=$P($ G(GTOTAL), U)+1,$P(GT OTAL,U,2)= $P($G(GTOT AL),U,2)+T OTBAMT
  260    S $P(GTOT AL,U,3)=$P ($G(GTOTAL ),U,3)+TOT PAMT,$P(GT OTAL,U,4)= $P($G(GTOT AL),U,4)+T OTBAL
  261    Q
  262    ;
  263   DISP ; For mat the di splay for  screen/pri nter or MS  Excel
  264    N FILTERD ,FILTERP,L INE1,LINE2 ,RCDATA,RC HDRDT,RCST OP,SUB,SUB 1,SUB2
  265    S RCHDRDT =$$FMTE^XL FDT($$NOW^ XLFDT,"2S" ) ; date/t ime for he ader
  266    S LINE1=$ TR($J("",1 31)," ","- "),LINE2=$ TR(LINE1," -","=")
  267    ;
  268    U IO
  269    ;
  270    ;Report b y division  or 'ALL'
  271    ;Format D ivision fi lter
  272    S FILTERD =$S(RCDIV= 2:$$LINE(. VAUTD),1:" ALL")
  273    ;Format P ayer filte r
  274    S FILTERP =$S($P(RCP AY,U)'=2:$ $LINE1(),1 :"ALL")
  275    S SUB="", RCSTOP=0
  276    F  S SUB= $O(@GLOB@( SUB)) Q:SU B=""  D  Q :RCSTOP
  277    .;Display  Header
  278    .D HDR
  279    .I 'RCDIS P W !,"DIV ISION: ",S UB W:RCTYP E="S" !,LI NE1
  280    .S SUB1=" "
  281    .F  S SUB 1=$O(@GLOB @(SUB,SUB1 )) Q:SUB1= ""  D  Q:R CSTOP
  282    ..;Displa y payer su b-header f or detail  report onl y
  283    ..I 'RCDI SP,RCTYPE= "D" D HDRP (SUB1)
  284    ..S SUB2= ""
  285    ..F  S SU B2=$O(@GLO B@(SUB,SUB 1,SUB2)) Q :SUB2=""   D  Q:RCSTO P
  286    ...S RCDA TA=@GLOB@( SUB,SUB1,S UB2)
  287    ...I 'RCD ISP D  Q:R CSTOP
  288    ....;Auto  Posted ER A
  289    ....I $Y> (IOSL-6) D  HDR Q:RCS TOP
  290    ....W !,$ P(RCDATA,U ,4) ;Patie nt Name
  291    ....W ?31 ,$P(RCDATA ,U,5) ;ERA #
  292    ....W ?38 ,$P(RCDATA ,U,6) ;DAT E RECEIVED
  293    ....W ?49 ,$P(RCDATA ,U,7) ;DAT E AUTOPOST ED
  294    ....W ?60 ,$P(RCDATA ,U,8) ;EFT #
  295    ....W ?67 ,$P(RCDATA ,U,9) ;"TR " RECEIPT
  296    ....W ?79 ,$E($P(RCD ATA,U,10), 1,12) ;BIL L#
  297    ....W ?91 ,$J($P(RCD ATA,U,11), 8) ;ORIGIN AL BILLED  AMOUNT
  298    ....W ?10 3,$J($P(RC DATA,U,12) ,8) ;PAYED  AMOUNT
  299    ....W ?11 3,$J($P(RC DATA,U,13) ,8) ;BALAN CE
  300    ....W ?12 3,$P(RCDAT A,U,14) ;%  COLLECTED
  301    ....W !,? 8,"TRACE#: ",$P(RCDAT A,U,15)
  302    ....;Subt otals for  Payer on d etail repo rt
  303    ....I 'RC DISP,$O(@G LOB@(SUB,S UB1,SUB2)) ="" D TOTA LDP(SUB,SU B1)
  304    ...I RCDI SP D
  305    ....W !,R CDATA
  306    ..;Subtot als for Di vision on  detail rep ort
  307    ..I 'RCDI SP,RCTYPE= "D",$O(@GL OB@(SUB,SU B1))="" D  TOTALD(SUB )
  308    .;
  309    ;Grand to tals
  310    I $D(GTOT AL),'RCSTO P D
  311    .;Print g rand only  total if d etail repo rt
  312    .I 'RCDIS P,RCTYPE=" D" D TOTAL G
  313    .;Print a ll totals  if summary  report
  314    .I 'RCDIS P,RCTYPE=" S" D TOTAL S
  315    .;Report  finished
  316    .W !,$$EN DORPRT^RCD PEARL D:'$ G(ZTSK) AS K(.RCSTOP)
  317    ;
  318    ;Null Rep ort
  319    I '$D(GTO TAL) D
  320    .D HDR
  321    .W !!,?26 ,"*** NO R ECORDS TO  PRINT ***" ,!
  322    ;
  323    ;Close de vice
  324    I '$D(ZTQ UEUED) D ^ %ZISC
  325    I $D(ZTQU EUED) S ZT REQ="@"
  326    Q
  327    ;
  328   ASK(STOP)  ; Ask to c ontinue
  329    ; If pass ed by refe rence ,RCS TOP is ret urned as 1  if print  is aborted
  330    I $E(IOST ,1,2)'["C- " Q
  331    N DIR,DIR OUT,DIRUT, DTOUT,DUOU T
  332    S DIR("A" )="Press E NTER to co ntinue: "
  333    S DIR(0)= "EA" D ^DI R
  334    I ($D(DIR UT))!($D(D UOUT)) S S TOP=1
  335    Q
  336    ;
  337   DATES(BDAT E,EDATE) ; Get a date  range.
  338    S (BDATE, EDATE)=0
  339    S DIR("?" )="ENTER T HE EARLIES T AUTO POS TING DATE  TO INCLUDE  ON THE RE PORT"
  340    S DIR(0)= "DAO^:"_DT _":APE",DI R("A")="ST ART DATE:  " D ^DIR K  DIR
  341    I $D(DTOU T)!$D(DUOU T)!(Y="")  S BDATE=-1  Q
  342    S BDATE=Y
  343    S DIR("?" )="ENTER T HE LATEST  AUTO POSTI NG DATE TO  INCLUDE O N THE REPO RT"
  344    S DIR("B" )=Y(0)
  345    S DIR(0)= "DAO^"_BDA TE_":"_DT_ ":APE",DIR ("A")="END  DATE: " D  ^DIR K DI R
  346    I $D(DTOU T)!$D(DUOU T)!(Y="")  S BDATE=-1  Q
  347    S EDATE=Y
  348    Q
  349    ;
  350   DISPTY() ;  Get displ ay/output  type
  351    N DIR,DUO UT,Y
  352    S DIR(0)= "Y"
  353    S DIR("A" )="Export  the report  to Micros oft Excel"
  354    S DIR("B" )="NO"
  355    D ^DIR I  $G(DUOUT)  Q -1
  356    Q Y
  357    ;
  358   DTRNG() ;  Get the da te range f or the rep ort
  359    N DIR,DUO UT,RNGFLG, X,Y,RCSTAR T,RCEND
  360    D DATES(. RCSTART,.R CEND)
  361    Q:RCSTART =-1 0
  362    Q:RCSTART  "1^"_RCST ART_"^"_RC END
  363    Q:'RCSTAR T "0^^"
  364    Q 0
  365    ;
  366   ERASTA(ERA IEN,STA,ST NUM,STNAM)  ; Get the  station f or this ER A
  367    N ERAEOB, ERABILL,FO UND,STAIEN
  368    S (ERAEOB ,ERABILL,F OUND)=""
  369    S (STA,ST NUM,STNAM) ="UNKNOWN"
  370    D
  371    .S ERAEOB =$P($G(^RC Y(344.4,ER AIEN,1,1,0 )),U,2) Q: 'ERAEOB
  372    .S ERABIL L=$P($G(^I BM(361.1,E RAEOB,0)), U,1) Q:'ER ABILL
  373    .S STAIEN =$P($G(^DG CR(399,ERA BILL,0)),U ,22) Q:'ST AIEN
  374    .S STA=ST AIEN
  375    .S STNAM= $$EXTERNAL ^DILFD(399 ,.22,,STA)
  376    .S STNUM= $P($G(^DG( 40.8,STAIE N,0)),U,2)
  377    Q
  378    ;
  379   HDR ; Prin t the repo rt header
  380    N START,E ND,MSG,Y
  381    S START=$ $FMTE^XLFD T($P(RCRAN GE,U,2),2)
  382    S END=$$F MTE^XLFDT( $P(RCRANGE ,U,3),2)
  383    ;
  384    I 'RCDISP ,'RCSTOP D
  385    .I RCPAGE  D ASK(.RC STOP) Q:RC STOP
  386    .S RCPAGE =RCPAGE+1
  387    .W @IOF
  388    .S MSG(1) ="EDI LOCK BOX AUTO-P OST REPORT  - "_$S(RC TYPE="D":" DETAIL ",1 :"SUMMARY" )_$J("",47 )_"Print D ate: "_RCH DRDT_" Pag e: "_RCPAG E
  389    .S MSG(2) ="DIVISION S: "_$E(FI LTERD,1,72 )_$J("",74 -$L(FILTER D))_"CLAIM  TYPE: "_$ S(RCLAIM=" P":"PHARMA CY",RCLAIM ="M":"MEDI CAL",1:"ME DICAL & PH ARMACY")
  390    .S MSG(3) ="PAYERS:  "_FILTERP
  391    .S MSG(4) ="AUTOPOST  POSTING R ESULTS FOR  DATE RANG E: "_START _" - "_END
  392    .S MSG(5) =LINE2
  393    .S MSG(6) ="PATIENT  NAME/SSN E RA# DT REC 'D DT POST  EFT# RECE IPT# BILL#  AMT BILLE D AMT PAID  BALANCE % COLL"
  394    .S MSG(7) =LINE2
  395    .D EN^DDI OL(.MSG)
  396    I RCDISP  D
  397    .W !,"STA TION^STATI ON NUMBER^ PAYER^PATI ENT NAME/S SN^ERA#^DT  REC'D^DT  POST^EFT#^ RECEIPT#^B ILL#^AMT B ILLED^AMT  PAID^BALAN CE^%COLL^T RACE#"
  398    Q
  399    ;
  400   HDRP(PAYNA M) ; Print  Payer Sub -header
  401    W !,LINE1 ,!,"PAYER:  ",PAYNAM, !,LINE1
  402    Q
  403    ;
  404   LINE(VAUTD ) ;List se lected sta tions
  405    N LINE,SU B
  406    S LINE="" ,SUB=""
  407    F  S SUB= $O(VAUTD(S UB)) Q:'SU B  D
  408    .S LINE=L INE_$G(VAU TD(SUB))_" , "
  409    Q $E(LINE ,1,$L(LINE )-2)
  410    ;
  411   LINE1() ;L ist select ed payers
  412    N PAYR,LI NE
  413    S PAYR="" ,LINE=""
  414    F  S PAYR =$O(RCPARR AY(PAYR))  Q:PAYR=""   D
  415    .S LINE=L INE_PAYR_" , "
  416    Q $E(LINE ,1,$L(LINE )-2)
  417    ;
  418   SELDIV(VAU TD,Z) ;Div isions are  organized  as Z(1)=" DIV1,DIV2, ..., Z(2)= "DIVN,DIVN +1,... etc .
  419    ; Input:
  420    ; VAUTD ( required/p ass-by-ref ) - Divisi on(s) arra y; result  of call to  DIVISION^ VAUTOMA
  421    ; Output:
  422    ; Z (requ ired/pass- by-ref) -  reformatte d array of  divisions
  423    ;
  424    N SUB,CNT
  425    S CNT=1,Z (CNT)="DIV ISIONS: "
  426    I $D(VAUT D)=1 D  Q
  427    . S Z(CNT )=Z(CNT)_" ALL"
  428    . S Z(CNT )=$J("",80 -$L(Z(CNT) )\2)_Z(CNT )
  429    I $D(VAUT D)>1,'VAUT D D
  430    . S SUB=V AUTD
  431    . F  S SU B=$O(VAUTD (SUB)) Q:' SUB  D
  432    . . I Z(C NT)="DIVIS IONS: " S  Z(CNT)=Z(C NT)_VAUTD( SUB) Q
  433    . . S Z(C NT)=Z(CNT) _$S(Z(CNT) ]"":",",1: "")_VAUTD( SUB)
  434    . . I $L( Z(CNT))>50  D
  435    . . . S Z (CNT)=$J(" ",80-$L(Z( CNT))\2)_Z (CNT)
  436    . . . S C NT=CNT+1,Z (CNT)=""
  437    I Z(CNT)] "" D
  438    . S Z(CNT )=$J("",80 -$L(Z(CNT) )\2)_Z(CNT )
  439    I Z(CNT)= "" K Z(CNT )
  440    Q
  441    ;
  442   STADIV ;Di vision/Sta tion Filte r/Sort
  443    ;
  444    ;Sort sel ection
  445    N DIR,DUO UT,Y
  446    S RCDIV=0
  447    ;
  448    ;Division  selection  - IA 664
  449    ;RETURNS  Y=-1 (quit ), VAUTD=1  (for all) ,VAUTD=0 ( selected d ivisions i n VAUTD)
  450    D DIVISIO N^VAUTOMA  Q:Y<0
  451    ;
  452    ;If ALL s elected
  453    I VAUTD=1  S RCDIV=1  Q
  454    ;If some  DIVISIONS  selected
  455    S RCDIV=2
  456    Q
  457    ;
  458   TOTALS ;Pr int totals  for summa ry report
  459    N DIV,DBA L,DBAMT,DC NT,DPAMT,P AYNAM
  460    S DIV=""
  461    F  S DIV= $O(@GLOB@( DIV)) Q:DI V=""  D  Q :RCSTOP
  462    .;Get pay er totals  within div ision firs t
  463    .S PAYNAM =""
  464    .F  S PAY NAM=$O(@GL OB@(DIV,PA YNAM)) Q:P AYNAM=""   D TOTALDP( DIV,PAYNAM )
  465    .;Divisio n totals
  466    .D TOTALD (DIV)
  467    ;Grand To tals
  468    D TOTALG
  469    Q
  470    ;
  471   TOTALD(DIV ) ;Total f or a divis ion
  472    N DCNT,DB AMT,DPAMT, DBAL
  473    S DCNT=$P (@GLOB@(DI V),U),DBAM T=$P(@GLOB @(DIV),U,2 ),DPAMT=$P (@GLOB@(DI V),U,3),DB AL=$P(@GLO B@(DIV),U, 4)
  474    I 'RCDISP ,$Y>(IOSL- 6) D HDR Q :RCSTOP
  475    W !,"DIVI SION TOTAL S FOR ",DI V,?90,$J(D BAMT,10,2) ,$J(DPAMT, 10,2),$J(D BAL,10,2)
  476    W:DBMT’=0 ,$J(DPAMT/ DBAMT*100, 7,2),"%"
  477    W !,?8,"C OUNT",?90, $J(DCNT,10 ,0),$J(DCN T,10,0),$J (DCNT,10,0 )
  478    W !,?8,"M EAN",?90,$ J(DBAMT/DC NT,10,2),$ J(DPAMT/DC NT,10,2),$ J(DBAL/DCN T,10,2)
  479    W !,LINE1
  480    Q
  481    ;
  482   TOTALDP(DI V,PAYNAM)  ;Total for  a payer w ithin a di vision
  483    N DCNT,DB AL,DBAMT,D CNT,DPAMT
  484    I 'RCDISP ,$Y>(IOSL- 6) D HDR Q :RCSTOP
  485    S DCNT=$P (@GLOB@(DI V,PAYNAM), U),DBAMT=$ P(@GLOB@(D IV),U,2),D PAMT=$P(@G LOB@(DIV), U,3),DBAL= $P(@GLOB@( DIV),U,4)
  486    W:RCTYPE= "D" !,?92, "--------- ---------- ---------- -------"
  487    W !,"SUBT OTALS FOR  PAYER: ",P AYNAM,?90, $J(DBAMT,1 0,2),$J(DP AMT,10,2), $J(DBAL,10 ,2),$J(DPA MT/DBAMT*1 00,7,2),"% "
  488    W !,?8,"C OUNT",?90, $J(DCNT,10 ,0),$J(DCN T,10,0),$J (DCNT,10,0 )
  489    W !,?8,"M EAN",?90,$ J(DBAMT/DC NT,10,2),$ J(DPAMT/DC NT,10,2),$ J(DBAL/DCN T,10,2)
  490    W !,LINE1
  491    Q
  492    ;
  493   TOTALG ;Ov erall repo rt total
  494    I 'RCDISP ,$Y>(IOSL- 6) D HDR Q :RCSTOP
  495    W !,"GRAN D TOTALS F OR ALL DIV ISIONS",?9 0,$J(+$P(G TOTAL,U,2) ,10,2),$J( +$P(GTOTAL ,U,3),10,2 ),$J(+$P(G TOTAL,U,4) ,10,2),$J( $P(GTOTAL, U,3)/$P(GT OTAL,U,2)* 100,7,2)," %"
  496    W !,?8,"C OUNT",?90, $J(+$P(GTO TAL,U),10, 0),$J(+$P( GTOTAL,U), 10,0),$J(+ $P(GTOTAL, U),10,0)
  497    W !,?8,"M EAN",?90,$ J($P(GTOTA L,U,2)/$P( GTOTAL,U), 10,2),$J($ P(GTOTAL,U ,3)/$P(GTO TAL,U),10, 2),$J($P(G TOTAL,U,4) /$P(GTOTAL ,U),10,2)
  498    W !,LINE1
  499    Q
  500    ;
  501   BUILD(RCSC R) ;
  502    ; Build c ross-refer ence of ER A detail l ines to ER A scratch- pad lines
  503    ; Input
  504    ; RCSCR =  ien of fi le 344.4/3 44.49
  505    ;
  506    ; Check p arameters
  507    I '$G(RCS CR) Q
  508    ; Check t hat scratc hpad entry  exists fo r this ERA
  509    I '$D(^RC Y(344.49,R CSCR)) Q
  510    ;
  511    N SUB,SUB 1,ERALINE, CNT,ERADET
  512    S SUB=0 F   S SUB=$O (^RCY(344. 49,RCSCR,1 ,"B",SUB))  Q:SUB=""   I SUB'[". " D
  513    . ; Get s cratchpad  ^RCY(344.4 9,RCSCR,1)  node
  514    . S SUB1= $O(^RCY(34 4.49,RCSCR ,1,"B",SUB ,""))
  515    . I 'SUB1  Q
  516    . ; Get p ointer bac k to ERA d etail line (s) - This  can be a  set of com ma pieces
  517    . S ERALI NE=$P($G(^ RCY(344.49 ,RCSCR,1,S UB1,0)),U, 9)
  518    . F CNT=1 :1:$L(ERAL INE,",") S  ERADET=$P (ERALINE," ,",CNT) I  ERADET S ^ TMP("RCDPE APP2",$J,R CSCR,ERADE T)=+$G(^RC Y(344.49,R CSCR,1,SUB 1,0))
  519    QModified  Logic (Ch anges are  in bold)RC DPEAPP ;OI D N
S           /PJH - AUT O POST REP ORT ;Dec 2 0, 2014@18 :42
  520    ;;4.5;Acc ounts Rece ivable;**2 98,304**;M ar 20, 199 5;Build 10 4
  521    ;Per VA D irective 6 402, this  routine sh ould not b e modified .
  522    ;Read ^DG CR(399) vi a Private  IA 3820
  523    ;Read ^DG (40.8) via  Controlle d IA 417
  524    ;Read ^IB M(361.1) v ia Private  IA 4051
  525    ;Use DIVI SION^VAUTO MA via Con trolled IA  664
  526    ;
  527   RPT ; entr y point fo r Auto-Pos t Report [ RCDPE AUTO -POST REPO RT]
  528    N POP,RCD ISP,RCDIV, RCDIVS,RCD TRNG,RCJOB ,RCLAIM,RC PAGE,RCPAR RAY,RCPAY, RCPROG,RCR ANGE
  529    N RCSORT, RCTYPE,RCW HICH,STANA M,STANUM,X ,Y
  530    S (RCDTRN G,RCPAGE)= 0,RCPROG=" RCDPEAPP", RCJOB=$J     ; Initia lize page  and start  point
  531    S RCDIV=$ $STADIV(.R CDIVS) Q:' RCDIV                   ; Select  Filter/So rt by Divi sion
  532    S RCTYPE= $$DETORSUM () Q:RCTYP E=-1 ; Det ail or Sum mary mode
  533    S RCLAIM= $$RTYPE^RC DPESP2() Q :RCLAIM=-1  ; PRCA*4. 5*304 Clai m Type fil ter
  534    S RCWHICH =$$NMORTIN () Q:RCWHI CH=-1 ; Fi lter by Pa yer Name o r TIN
  535    S RCPAY=$ $GETPAY^RC DPEM9(344. 4,1,0,RCWH ICH,1) Q:R CPAY<0 ; P ayer Name  filter
  536    D:$P(RCPA Y,U,1)'=2  SELPAY(RCJ OB,RCWHICH ,.RCPARRAY ) ; Create  local Pay er array
  537    S RCSORT= $$SORTT()  Q:RCSORT=- 1 ; Select  Sort
  538    S RCRANGE =$$DTRNG()  Q:RCRANGE =0 ; Selec t Date Ran ge for Rep ort
  539    S RCDISP= $$DISPTY()  Q:RCDISP= -1 ; Outpu t to Excel
  540    I RCDISP  D INFO^RCD PEM6 ; Dis play captu re informa tion for E xcel
  541    ;
  542    ; PRCA*4. 5*304 - If  not Excel , inform u ser to mak e sure pri nter/scree n will dis play 132
  543    ; columns
  544    I 'RCDISP  W !,"This  report re quires 132  column di splay."
  545    S %ZIS="Q M" D ^%ZIS  Q:POP                             ; Select  output de vice
  546    ;
  547    ; Option  to queue
  548    I 'RCDISP ,$D(IO("Q" )) D  Q
  549    . N ZTDES C,ZTQUEUED ,ZTRTN,ZTS AVE,ZTSK
  550    . S ZTRTN ="REPORT^R CDPEAPP"
  551    . S ZTDES C="EDI LOC KBOX AUTO  POST REPOR T"
  552    . S ZTSAV E("RC*")=" ",ZTSAVE(" VAUTD")=""
  553    . D ^%ZTL OAD
  554    . I $D(ZT SK) W !!," Task numbe r "_ZTSK_"  was queue d."
  555    . E  W !! ,"Unable t o queue th is job."
  556    . K IO("Q ")
  557    . D HOME^ %ZIS
  558    ;
  559    D REPORT                                                ; Compil e and prin t report
  560    Q
  561    ;
  562   STADIV() ;  Division/ Station Fi lter/Sort
  563    ; Input:  None
  564    ; Output:  DIVS(A1)= A1^A3 Sele cted Divis ions (if n ot 'ALL')  Where:
  565    ; A1 - Di vision IEN
  566    ; A2 - Di vision Nam e
  567    ; A3 - St ation Numb er
  568    ; Returns : -1 - Use r ^ or tim ed out
  569    ; 1 - All  divisions  selected
  570    ; 2 - Sel ected Divi sions
  571    N DIR,DIR UT,DIROUT, DIV,DTOUT, DUOUT,STNU M,VAUTD,Y
  572    D DIVISIO N^VAUTOMA  Q:Y<0 -1 ;  IA 664
  573    K DIVS
  574    I VAUTD=1  S RCDIV=1  Q 1 ; All  Divisions  selected  S DIV=""
  575    F  D  Q:D IV=""
  576    . S DIV=$ O(VAUTD(DI V))
  577    . Q:DIV=" "
  578    . S STNUM =$$GET1^DI Q(40.8,DIV ,1,"E")
  579    . S:STNUM ="" STNUM= "UNKNOWN"
  580    . S DIVS( DIV)=VAUTD (DIV)_"^"_ STNUM
  581    Q 2 ; Som e Division s selected
  582    ;
  583   DETORSUM()  ; Ask the  user want s to see t he detail  or summary  report
  584    ; Input:  None
  585    ; Returns : -1 - Use r ^ or tim ed out
  586    ; D - Det ail Mode
  587    ; S - Sum mary Mode
  588    N DIR,DIR OUT,DIRUT, DTOUT,DUOU T,X,XX,Y
  589    S DIR(0)= "SA^S:SUMM ARY;D:DETA IL;",DIR(" A")="Displ ay (S)UMMA RY or (D)E TAIL Forma t?: "
  590    S DIR("B" )="DETAIL"
  591    S XX="Sel ect 'SUMMA RY' to see  the summa ry report  or "
  592    S DIR("?" )=XX_"'DET AIL' to se e the deta il report"
  593    D ^DIR
  594    Q:$D(DTOU T)!$D(DUOU T) -1
  595    Q Y
  596    ;
  597   NMORTIN()  ; Ask the  user if th ey want to  filter by  Payer Nam e or TIN
  598    ; Input:  None
  599    ; Returns : -1 - Use r ^ or tim ed out
  600    ; 0 - Fil ter by Pay er Name
  601    ; 1 - Fil ter by Pay er TIN
  602    N DIR,DIR OUT,DIRUT, DTOUT,DUOU T,X,Y
  603    S DIR(0)= "SA^N:NAME ;T:TIN;"
  604    S DIR("A" )="Filter  by Insuran ce Company  NAME or T IN: "
  605    S DIR("B" )="TIN"
  606    S DIR("?" )="Select  'NAME' to  filter Pay ers by nam e or TIN t o filters  Payers by  TIN"
  607    D ^DIR
  608    Q:$D(DTOU T)!$D(DUOU T) -1
  609    Q:Y="N" 0
  610    Q 1
  611    ;
  612   SELPAY(RCJ OB,RCHWICH ,RCPARRAY)  ; Move ^T MP("RCSELP AY",RCJOB)  into RCPA RRAY for l ookup
  613    ; note th at payer n ames for 3 44.4 are U PPER CASE
  614    ; Input:  RCJOB - $J
  615    ; RCWHICH  - 0 - fil ter by Pay er Name, 1  - filter  by Payer T IN
  616    ; ^TMP("R CSELPAY",R CJOB,) - T emp array  of selecte d Payers
  617    ; Output:  RCPARRAY( A1,A2)=A3/ A4 - Array  of select ed Payers  Where:
  618    ; A1 - Pa yer Name i f RCWHICH= 0, TIN oth erwise
  619    ; A2 - Co unter
  620    ; A3 - Pa yer Name i f RCWHICH= 0, TIN oth erwise
  621    ; A4 - TI N if RCWHI CH=0, Paye r Name oth erwise
  622    N PAYER,P SUB
  623    S PSUB=0
  624    F  S PSUB =$O(^TMP(" RCSELPAY", RCJOB,PSUB )) Q:'PSUB   D
  625    . S PAYER =$G(^TMP(" RCSELPAY", RCJOB,PSUB ))
  626    . S:PAYER '="" RCPAR RAY($P(PAY ER,"/",1), PSUB)=PAYE R
  627    Q
  628    ;
  629   SORTT() ;  Ask the us er if they  want to s ort by Pay er Name or  Payer TIN
  630    ; Input:  None
  631    ; Returns : -1 - Use r ^ or tim ed out
  632    ; 0 - Sor t by Payer  Name
  633    ; 1 - Sor t by Payer  TIN
  634    N DIR,DIR OUT,DIRUT, DTOUT,DUOU T,X,Y
  635    S DIR(0)= "SA^N:NAME ;T:TIN;"
  636    S DIR("A" )="Sort by  Insurance  Company N AME or TIN : "
  637    S DIR("B" )="TIN"
  638    S DIR("?" ,1)="Selec t 'NAME' t o sort by  Division/P ayer Name  or"
  639    S DIR("?" )="select  'TIN' to s ort by Div ision/Paye r TIN"
  640    D ^DIR
  641    Q:$D(DTOU T)!$D(DUOU T) -1
  642    Q:Y="N" 0
  643    Q 1
  644    ;
  645   DTRNG() ;  Get the da te range f or the rep ort
  646    ; Input:  None
  647    ; Returns : 0 - User  ^ or time d out
  648    ; 1^Start  Date^End  Date
  649    N DIR,DIR OUT,DIRUT, DTOUT,DUOU T,RCEND,RN GFLG,RCSTA RT,X,Y
  650    D DATES(. RCSTART,.R CEND)
  651    Q:RCSTART =-1 0
  652    Q:RCSTART  "1^"_RCST ART_"^"_RC END
  653    Q:'RCSTAR T "0^^"
  654    Q 0
  655    ;
  656   DISPTY() ;  Get displ ay/output  type
  657    ; Input:  None
  658    ; Return: : -1 - Use r ^ or tim ed out
  659    ; 0 - Not  to Excel
  660    ; 1 - Out put to Exc el
  661    N DIR,DIR OUT,DIRUT, DTOUT,DUOU T,X,Y
  662    S DIR(0)= "Y"
  663    S DIR("A" )="Export  the report  to Micros oft Excel"
  664    S DIR("B" )="NO"
  665    D ^DIR
  666    Q:$D(DTOU T)!$D(DUOU T) -1
  667    Q Y
  668    ;
  669   DATES(BDAT E,EDATE) ;  Get a dat e range.
  670    ; Input:  None
  671    ; Output:  BDATE - I nternal Be gin date
  672    ; EDATE -  Internal  End date
  673    N DIR,DIR OUT,DIRUT, DTOUT,DUOU T,X,Y
  674    S (BDATE, EDATE)=0
  675    S DIR("?" )="Enter t he earlies t Auto-Pos ting date  to include  on the re port"
  676    S DIR(0)= "DAO^:"_DT _":APE",DI R("A")="St art Date:  "
  677    D ^DIR K  DIR
  678    I $D(DTOU T)!$D(DUOU T)!(Y="")  S BDATE=-1  Q
  679    S BDATE=Y
  680    S DIR("?" )="Enter t he latest  Auto-Posti ng date to  include o n the repo rt"
  681    S DIR("B" )=Y(0)
  682    S DIR(0)= "DAO^"_BDA TE_":"_DT_ ":APE",DIR ("A")="End  Date: "
  683    D ^DIR K  DIR
  684    I $D(DTOU T)!$D(DUOU T)!(Y="")  S BDATE=-1  Q
  685    S EDATE=Y
  686    Q
  687    ;
  688   REPORT ; C ompile and  print rep ort
  689    ; Input:  RCDISP - 0  - Output  to paper o r screen,  1 - Output  to Excel
  690    ; RCDIV -  1 - All d ivisions,  2 - Select ed divisio ns
  691    ; RCDIVS( )- Array o f selected  divisions  if RCDIV= 2
  692    ; RCRANGE  - 1^Start  Date^End  Date
  693    ; RCJOB -  $J
  694    ; RCLAIM  - "M" - Me dical Clai ms, "P" -  Pharmacy C laims, "B"  - Both
  695    ; RCPAGE  - Initiali zed to 0
  696    ; RCPARRA Y- Array o f selected  payers 
  697    ; RCPROG  - "RCDPEAP P"
  698    ; RCSORT  - 0 - Sort  by Payer  Name, 1 -  Sort by Pa yer TIN
  699    ; RCTYPE  - 'D' for  detail rep ort, 'S' f or summary
  700    ; RCWHICH  - 0 - Fil ter by Pay er Name, 1  - Filter  by Payer T IN 
  701    ; ^TMP("R CSELPAY",R CJOB,A1)=A 2/A3 Where :
  702    ; A1 - CT R
  703    ; A2 - Pa yer Name i f RCWHICH= 0 else Pay er TIN
  704    ; A3 - Pa yer TIN if  RCWHICH=0  else Paye r Name
  705    N GLOB,GT OTAL,ZTREQ
  706    K ^TMP(RC PROG,$J),^ TMP("RCDPE APP2",$J)
  707    S GLOB=$N A(^TMP(RCP ROG,$J))
  708    D COMPILE                                      ; Scan  ERA file  for entrie s in date  range
  709    D DISP                                         ; Disp lay the Re port
  710    ;
  711    ; Clear ^ TMP global
  712    K ^TMP(RC PROG,$J),^ TMP("RCSEL PAY",RCJOB ),^TMP("RC DPEAPP2",$ J)
  713    Q
  714    ;
  715   COMPILE ;  Generate t he Auto Po sting repo rt ^TMP ar ray
  716    ; Input:  GLOB - "^T MP("RCDPEA PP",$J)"
  717    ; RCDISP  - 0 - Outp ut to pape r or scree n, 1 - Out put to Exc el
  718    ; RCDIV -  1 - All d ivisions,  2 - Select ed divisio ns
  719    ; RCDIVS( )- Array o f selected  divisions  if RCDIV= 2
  720    ; RCRANGE  - 1^Start  Date^End  Date
  721    ; RCJOB -  $J
  722    ; RCLAIM  - "M" - Me dical Clai ms, "P" -  Pharmacy C laims, "B"  - Both
  723    ; RCPAGE  - Initiali zed to 0
  724    ; RCPARRA Y- Array o f selected  payers 
  725    ; RCPROG  - "RCDPEAP P"
  726    ; RCSORT  - 0 - Sort  by Payer  Name, 1 -  Sort by Pa yer TIN
  727    ; RCWHICH  - 0 - Fil ter by Pay er Name, 1  - Filter  by Payer T IN
  728    ; RCTYPE  - 'D' for  detail rep ort, 'S' f or summary
  729    ; ^TMP("R CSELPAY",R CJOB) - Se lected Pay er Names o r TINs
  730    ; Ouput:  GTOTAL - A 1^A2^A3^A4  Where:
  731    ; A1 - To tal Count
  732    ; A2 - To tal Origin al Amounts
  733    ; A3 - To tal Paymen t Amounts
  734    ; A4 - To tal Balanc e
  735    ; ^TMP("R CSELPAY",R CJOB,A1)=A 2/A3 Where :
  736    ; A1 - CT R
  737    ; A2 - Pa yer Name i f RCWHICH= 0 else Pay er TIN
  738    ; A3 - Pa yer TIN if  RCWHICH=0  else Paye r Name
  739    N APDATE, CNT,END,ER AIEN,IEN,O KAY,RCECME ,RCRZ,STA, STNAM,STNU M
  740    S APDATE= $$FMADD^XL FDT($P(RCR ANGE,U,2), -1)
  741    S END=$P( RCRANGE,U, 3),CNT=0
  742    ;
  743    ; Scan F  index for  ERA within  date rang e
  744    F  S APDA TE=$O(^RCY (344.4,"F" ,APDATE))  Q:'APDATE   Q:(APDATE \1)>END  D
  745    . S ERAIE N=""
  746    . F  S ER AIEN=$O(^R CY(344.4," F",APDATE, ERAIEN)) Q :'ERAIEN   D
  747    . . ;
  748    . . ; Che ck divisio n - Note r eturn valu es are set  to UNKNOW N if not a vailable
  749    . . D ERA STA(ERAIEN ,.STA,.STN UM,.STNAM)
  750    . . I RCD IV=2,'$D(R CDIVS(STA) ) Q
  751    . . ;
  752    . . ; PRC A*4.5*304  - Check if  we includ e this ERA  in report
  753    . . I RCL AIM'="B" D   Q:'OKAY   ; If both  not speci fied check  for inclu sion
  754    . . . S O KAY=1
  755    . . . S R CECME=$$PH ARM^RCDPEA P1(ERAIEN)  ; See if  ECME # exi sts for th is ERA
  756    . . . I R CECME=1,RC LAIM="M" S  OKAY=0 ;  If ECME #  and only w ant Medica l skip thi s ERA
  757    . . . I R CECME=0,RC LAIM="P" S  OKAY=0 ;  If no ECME  # and onl y want Pha rmacy skip  this ERA
  758    . . ;
  759    . . ; Che ck Payer N ame
  760    . . I RCW HICH=0,$P( RCPAY,U)'= 2 N ERAPAY ,MATCH D   Q:'MATCH
  761    . . . S E RAPAY=$$GE T1^DIQ(344 .4,ERAIEN, .06,"E"),M ATCH=0
  762    . . . Q:E RAPAY=""
  763    . . . S:$ D(RCPARRAY ($$UP^XLFS TR(ERAPAY) )) MATCH=1  ; payer n ames for 3 44.4 are U PPER CASE
  764    . . ;
  765    . . ; Che ck Payer T IN
  766    . . I RCW HICH=1,$P( RCPAY,U)'= 2 N ERATIN ,MATCH D   Q:'MATCH
  767    . . . S E RATIN=$$GE T1^DIQ(344 .4,ERAIEN, .03,"E"),M ATCH=0
  768    . . . Q:E RATIN=""
  769    . . . S:$ D(RCPARRAY (ERATIN))  MATCH=1
  770    . . ;
  771    . . ; If  it does no t already  exist for  this ERA,  build X-re f of ERA d etail line s to the l ines in th e worklist
  772    . . I '$D (^TMP("RCD PEAPP2",$J ,ERAIEN))  D BUILD(ER AIEN)
  773    . . ;
  774    . . ; Sca n index fo r auto pos ted claim  lines with in the ERA
  775    . . S RCR Z=""
  776    . . F  S  RCRZ=$O(^R CY(344.4," F",APDATE, ERAIEN,RCR Z)) Q:'RCR Z  D
  777    . . . D S AVE(ERAIEN ,RCRZ,RCTY PE,APDATE, RCSORT) ;  Save claim  line deta il to ^TMP  global
  778    Q
  779    ;
  780   SAVE(ERAIE N,RCRZ,RCT YPE,APDATE ,RCSORT) ;  Save to ^ TMP global
  781    ; Input:  ERAIEN - I nternal IE N into fil e 344.4
  782    ; RCRZ -  Internal I EN into su b-file 344 .41
  783    ; RCTYPE  - 'D' for  detail rep ort, 'S' f or summary
  784    ; APDATE  - Internal  Auto-Post ing date
  785    ; RCSORT  - 0 - Sort  by Payer  Name, 1 -  Sort by Pa yer TIN
  786    ; STNAM -  Division  Name (Prim ary Sort)
  787    ; STNUM -  Station N umber
  788    ; ^TMP("R CDPEAPP2", $J,ERAIEN, RCRZ) - Ar ray of det ail lines
  789    ; Ouput:  GTOTAL - A 1^A2^A3^A4  Where:
  790    ; A1 - To tal Count
  791    ; A2 - To tal Origin al Amounts
  792    ; A3 - To tal Paymen t Amounts
  793    ; A4 - To tal Balanc e
  794    N BALANCE ,BAMT,BILL ,CLAIMIEN, COLLENT,DA TE,EFTNUM, EOBIEN,ERA DATE,ERANU M
  795    N PAMT,PA YIX1,PAYIX 2,PAYNAM,P TNAM,RECEI PT,SEQ,SEQ 1,SEQ2,STI X
  796    N TIN,TOT BAL,TOTBAM T,TOTPAMT, TRACE,XX
  797    S PAYNAM= $$GET1^DIQ (344.4,ERA IEN,.06,"E ") ; Payer  Name from  ERA Recor d
  798    S TIN=$$G ET1^DIQ(34 4.4,ERAIEN ,.03,"E")  ; Payer TI N from ERA  Record
  799    S:RCSORT= 0 PAYIX1=P AYNAM,PAYI X2=TIN
  800    S:RCSORT= 1 PAYIX1=T IN,PAYIX2= PAYNAM
  801    S:PAYNAM= "" PAYNAM= "UNKNOWN"
  802    S STIX=ST NAM_"/"_ST NUM
  803    S (TOTBAM T,TOTBAL,T OTPAMT)=0
  804    ;
  805    ; Detail  mode, get  these extr a fields
  806    I RCTYPE= "D" D
  807    . S TRACE =$$GET1^DI Q(344.4,ER AIEN,.02," E") ; Trac e Number
  808    . S PTNAM =$$PNM4^RC DPEWL1(ERA IEN,RCRZ)  ; Patient  name from  claim file  #399
  809    . S ERANU M=$$GET1^D IQ(344.4,E RAIEN,.01, "E") ; ERA  Number
  810    . S ERADA TE=$$GET1^ DIQ(344.4, ERAIEN,.07 ,"I") ; Da te receive d (file da te/time)
  811    . S ERADA TE=$$FMTE^ XLFDT(ERAD ATE,"2DZ")
  812    . S DATE= $$FMTE^XLF DT(APDATE, "2DZ") ; A uto-Postin g DATE
  813    . S EFTNU M=$O(^RCY( 344.31,"AE RA",ERANUM ,"")) ; EF T Number
  814    . S:EFTNU M EFTNUM=$ $GET1^DIQ( 344.31,EFT NUM,.01,"I ")
  815    . S XX=$$ GET1^DIQ(3 44.41,RCRZ _","_ERAIE N,.25,"I")  ; Receipt  IEN
  816    . S RECEI PT=$$EXTER NAL^DILFD( 344.41,.25 ,,XX)
  817    ;
  818    ; Get lin k to the s cratchpad  detail lin e. If the  worklist d etail reco rds exist,  
  819    ; loop th rough the  ones with  the same p refix to g et the dat a (this wi ll have sp lit-edits)
  820    S SEQ=$G( ^TMP("RCDP EAPP2",$J, ERAIEN,RCR Z))
  821    I SEQ D
  822    . S SEQ1= SEQ
  823    . F  S SE Q1=$O(^RCY (344.49,ER AIEN,1,"B" ,SEQ1)) Q: 'SEQ1!(SEQ 1\1'=SEQ)  D
  824    . . S SEQ 2=$O(^RCY( 344.49,ERA IEN,1,"B", SEQ1,""))
  825    . . Q:SEQ 2=""
  826    . . S (BA MT,BALANCE ,COLLECT)= ""
  827    . . S CLA IMIEN=$$GE T1^DIQ(344 .491,SEQ2_ ","_ERAIEN ,.07,"I")  ; AR Bill
  828    . . S BIL L=$$GET1^D IQ(344.491 ,SEQ2_","_ ERAIEN,.02 ,"I") ; Cl aim #
  829    . . I BIL L="" S BIL L="<blank> "
  830    . . S PAM T=$$GET1^D IQ(344.491 ,SEQ2_","_ ERAIEN,.06 ,"I") ; Am ount Paid  on Claim
  831    . . ;
  832    . . ; If  there is a  claim, ge t billed a mount and  balance fr om the cla im
  833    . . I CLA IMIEN D
  834    . . . S B AMT=$J(+$$ GET1^DIQ(4 30,CLAIMIE N,3,"I"),0 ,2) ; Orig inal Amoun t
  835    . . . S B ALANCE=$J( +$$GET1^DI Q(430,CLAI MIEN,71,"I "),0,2) ;  Principal  Balance
  836    . . ;
  837    . . ; Upd ate total  amounts
  838    . . S TOT BAMT=TOTBA MT+BAMT,TO TBAL=TOTBA L+BALANCE, TOTPAMT=TO TPAMT+PAMT
  839    . . I RCT YPE="D" D                            ; Get  extra data  for detai l report
  840    . . . S P TNAM=$S('C LAIMIEN:"" ,1:$$PNM4^ RCDPEWL1(E RAIEN,RCRZ ))
  841    . . . S:B AMT COLLEC T=$J(PAMT/ BAMT*100,0 ,2)_"%"
  842    . . . S C NT=CNT+1
  843    . . . S X X=STNAM_U_ STNUM_U_PA YNAM_U_PTN AM_U_ERANU M_U_ERADAT E_U_DATE_U _EFTNUM
  844    . . . S X X=XX_U_REC EIPT_U_BIL L_U_BAMT_U _PAMT_U_BA LANCE_U_CO LLECT_U_TR ACE
  845    . . . S @ GLOB@(STIX ,PAYIX1,PA YIX2,CNT)= XX ; Add d ata for de tail repor t
  846    ;
  847    ; If the  worlist de tail recor d does not  exist, ge t data fro m ERA deta il
  848    I 'SEQ D
  849    . S (TOTB AMT,TOTBAL ,COLLECT,C LAIMIEN)=0
  850    . S EOBIE N=$$GET1^D IQ(344.41, RCRZ_","_E RAIEN,.02, "I") ; IEN  for 361.1
  851    . S:EOBIE N CLAIMIEN =$$GET1^DI Q(361.1,EO BIEN,.01," I") ; IEN  for 399
  852    . S BILL= $$EXTERNAL ^DILFD(344 .41,.02,,E OBIEN) ; B ill Number
  853    . ;
  854    . ; Get B illed Amou nt from AR  (Original  Balance)
  855    . I CLAIM IEN D                                             
  856    . . S TOT BAMT=$J(+$ $GET1^DIQ( 430,CLAIMI EN,3,"I"), 0,2) ; Ori ginal Amou nt
  857    . S TOTPA MT=$$GET1^ DIQ(344.41 ,RCRZ_","_ ERAIENP,.0 3,"I") ; A mount Paid  on Claim
  858    . ;
  859    . ; Balan ce from AR  (Principa l Balance)
  860    . S:CLAIM IEN TOTBAL =$J(+$$GET 1^DIQ(430, CLAIMIEN,7 1,"I"),0,2 ) ; Princi pal Balanc e
  861    . ;
  862    . ; Detai l Report,  get extra  data and t hen update  the detai l global
  863    . I RCTYP E="D" D
  864    . . S PTN AM=$S('CLA IMIEN:"",1 :$$PNM4^RC DPEWL1(ERA IEN,RCRZ))
  865    . . S:TOT BAMT COLLE CT=$J(TOTP AMT/TOTBAM T*100,0,2) _"%"
  866    . . S CNT =CNT+1
  867    . . S XX= STNAM_U_ST NUM_U_PAYN AM_U_PTNAM _U_ERANUM_ U_ERADATE_ U_DATE_U_E FTNUM
  868    . . S XX= XX_U_RECEI PT_U_BILL_ U_TOTBAMT_ U_TOTPAMT_ U_TOTBAL_U _COLLECT_U _TRACE
  869    . . S @GL OB@(STIX,P AYIX1,PAYI X2,CNT)=XX
  870    ;
  871    ; Update  totals for  individua l division
  872    S $P(@GLO B@(STIX),U ,1)=$P($G( @GLOB@(STI X)),U,1)+1
  873    S $P(@GLO B@(STIX),U ,2)=$P($G( @GLOB@(STI X)),U,2)+T OTBAMT
  874    S $P(@GLO B@(STIX),U ,3)=$P($G( @GLOB@(STI X)),U,3)+T OTPAMT
  875    S $P(@GLO B@(STIX),U ,4)=$P($G( @GLOB@(STI X)),U,4)+T OTBAL
  876    ;
  877    ; Update  totals for  individua l division /payer
  878    S $P(@GLO B@(STIX,PA YIX1,PAYIX 2),U,1)=$P ($G(@GLOB@ (STIX,PAYI X1,PAYIX2) ),U,1)+1
  879    S $P(@GLO B@(STIX,PA YIX1,PAYIX 2),U,2)=$P ($G(@GLOB@ (STIX,PAYI X1,PAYIX2) ),U,2)+TOT BAMT
  880    S $P(@GLO B@(STIX,PA YIX1,PAYIX 2),U,3)=$P ($G(@GLOB@ (STIX,PAYI X1,PAYIX2) ),U,3)+TOT PAMT
  881    S $P(@GLO B@(STIX,PA YIX1,PAYIX 2),U,4)=$P ($G(@GLOB@ (STIX,PAYI X1,PAYIX2) ),U,4)+TOT BAL
  882    ;
  883    ; Update  grand tota ls
  884    S $P(GTOT AL,U,1)=$P ($G(GTOTAL ),U,1)+1,$ P(GTOTAL,U ,2)=$P($G( GTOTAL),U, 2)+TOTBAMT
  885    S $P(GTOT AL,U,3)=$P ($G(GTOTAL ),U,3)+TOT PAMT,$P(GT OTAL,U,4)= $P($G(GTOT AL),U,4)+T OTBAL
  886    Q
  887    ;
  888   DISP ; For mat the di splay for  screen/pri nter or MS  Excel
  889    ; Input:  GLOB - "^T MP("RCDPEA PP",$J)
  890    ; RCDISP   - 1 - Out put to Exc el, 0 othe rwise
  891    ; RCDIV    - 1 - All  Divisions  selected
  892    ; RCDIVS   - 1 – Arr ary of sel ected Divi sions (if  all not se lected)
  893    ; RCPARRA Y- Array o f selected  Payers
  894    ; RCPAY -  1 - All P ayers sele cted
  895    N DIVS,LI NE1,LINE2, PAYERS,RCD ATA,RCHDRD T,RCSTOP,S UB,SUB1,SU B2,SUB3
  896    S RCHDRDT =$$FMTE^XL FDT($$NOW^ XLFDT,"2SZ ") ; Date/ time for h eader
  897    S LINE1=$ TR($J("",1 31)," ","- "),LINE2=$ TR(LINE1," -","=")
  898    U IO
  899    ;
  900    ; Report  by divisio n or 'ALL'
  901    D LINED(R CDIV,.VAUT D,.DIVS) ;  Format Di vision fil ter
  902    D LINEP(R CPAY,.RCPA RRAY,.PAYE RS) ; Form at Payer f ilter
  903    S SUB="", RCSTOP=0
  904    F  S SUB= $O(@GLOB@( SUB)) Q:SU B=""  D  Q :RCSTOP
  905    . D HDR(. DIVS,.PAYE RS) ; Disp lay Header
  906    . I 'RCDI SP D
  907    . . W !," DIVISION:  ",SUB
  908    . . W:RCT YPE="S" !, LINE1
  909    . S SUB1= ""                                       ;  Division
  910    . F  S SU B1=$O(@GLO B@(SUB,SUB 1)) Q:SUB1 =""  D  Q: RCSTOP
  911    . . S SUB 2=""
  912    . . F  S  SUB2=$O(@G LOB@(SUB,S UB1,SUB2))  Q:SUB2=""   D  Q:RCS TOP
  913    . . . ;
  914    . . . ; D isplay pay er sub-hea der for de tail repor t only
  915    . . . I ' RCDISP,RCT YPE="D" D  HDRP(SUB1_ "/"_SUB2)
  916    . . . S S UB3=""
  917    . . . F   S SUB3=$O( @GLOB@(SUB ,SUB1,SUB2 ,SUB3)) Q: SUB3=""  D   Q:RCSTOP
  918    . . . . S  RCDATA=@G LOB@(SUB,S UB1,SUB2,S UB3)
  919    . . . . I  'RCDISP D   Q:RCSTOP
  920    . . . . .  I $Y>(IOS L-6) D HDR (.DIVS,.PA YERS) Q:RC STOP
  921    . . . . .  W !,$P(RC DATA,U,4)  ; Patient  Name
  922    . . . . .  W ?31,$P( RCDATA,U,5 ) ; ERA#
  923    . . . . .  W ?38,$P( RCDATA,U,6 ) ; Date R eceived
  924    . . . . .  W ?49,$P( RCDATA,U,7 ) ; Date A utposted
  925    . . . . .  W ?60,$P( RCDATA,U,8 ) ; EFT#
  926    . . . . .  W ?67,$P( RCDATA,U,9 ) ; "TR" R eceipt
  927    . . . . .  W ?79,$E( $P(RCDATA, U,10),1,12 ) ; Bill #
  928    . . . . .  W ?91,$J( $P(RCDATA, U,11),8) ;  Original  Billed Amo unt
  929    . . . . .  W ?103,$J ($P(RCDATA ,U,12),8)  ; Paid Amo unt
  930    . . . . .  W ?113,$J ($P(RCDATA ,U,13),8)  ; Balance
  931    . . . . .  W ?123,$P (RCDATA,U, 14) ; % CO LLECTED
  932    . . . . .  W !,?8,"T RACE#:",$P (RCDATA,U, 15) ; Trac e #
  933    . . . . .  ;
  934    . . . . .  ; Subtota ls for Pay er on deta il report
  935    . . . . .  I 'RCDISP ,$O(@GLOB@ (SUB,SUB1, SUB2,SUB3) )="" D TOT ALDP(SUB,S UB1,SUB2)
  936    . . . . I  RCDISP D
  937    . . . . .  W !,RCDAT A
  938    . . . ;
  939    . . . ; S ubtotals f or Divisio n on detai l report
  940    . . . I ' RCDISP,RCT YPE="D",$O (@GLOB@(SU B,SUB1))=" " D TOTALD (SUB)
  941    ;
  942    ; Grand t otals
  943    I $D(GTOT AL),'RCSTO P D
  944    . I 'RCDI SP,RCTYPE= "D" D TOTA LG                 ;  Print gran d only tot al if deta il report
  945    . I 'RCDI SP,RCTYPE= "S" D TOTA LS                 ;  Print all  totals if  summary re port
  946    . W !,$$E NDORPRT^RC DPEARL D:' $G(ZTSK) A SK(.RCSTOP )
  947    ;
  948    I '$D(GTO TAL) D                                   ;  Null Repor t
  949    . D HDR
  950    . W !!,?2 6,"*** NO  RECORDS TO  PRINT *** ",!
  951    ;
  952    ; Close d evice
  953    I '$D(ZTQ UEUED) D ^ %ZISC
  954    I $D(ZTQU EUED) S ZT REQ="@"
  955    Q
  956    ;
  957   ASK(STOP)  ; Ask to c ontinue
  958    ; Output:  STOP - 1  if display  is aborte d
  959    I $E(IOST ,1,2)'["C- " Q                           ;  Not displa ying to sc reen, quit
  960    N DIR,DIR OUT,DIRUT, DTOUT,DUOU T
  961    S DIR("A" )="Press E NTER to co ntinue: "
  962    S DIR(0)= "EA"
  963    D ^DIR
  964    I ($D(DIR UT))!($D(D UOUT)) S S TOP=1
  965    Q
  966    ;
  967   ERASTA(ERA IEN,STA,ST NUM,STNAM)  ; Get the  station ( Division)  for this E RA
  968    ; Input:  ERAIEN – I nternal IE N for file  344.4
  969    ; Output:  STA - Int ernal Divi sion IEN
  970    ; STNUM -  Division  Number
  971    ; STNAME  - Division  Name
  972    N ERAEOB, ERABILL,FO UND,STAIEN
  973    S (ERAEOB ,ERABILL,F OUND)=""
  974    S (STA,ST NUM,STNAM) ="UNKNOWN"
  975    D
  976    . S ERAEO B=$$GET1^D IQ(344.41, "1,"_ERAIE N_",",.02, "I") Q:'ER AEOB
  977    . S ERABI LL=$$GET1^ DIQ(361.1, ERAEOB,.01 ,"I") Q:'E RABILL
  978    . S STAIE N=$$GET1^D IQ(399,ERA BILL,.22," I") Q:'STA IEN
  979    . S STA=S TAIEN
  980    . S STNAM =$$EXTERNA L^DILFD(39 9,.22,,STA )
  981    . S STNUM =$$GET1^DI Q(40.8,STA IEN,1,"E")
  982    Q
  983    ;
  984   HDR(DIVS,P AYERS) ; P rint the r eport head er
  985    ; Input:  DIVS() - A rray of se lected Div ision line s for Head er
  986    ; PAYERS( ) - Array  of selecte d Payer li nes for He ader
  987    ; RCDISP  - 1 - Outp ut to Exce l, 0 other wise
  988    ; RCHDRDT  - Externa l Print Da te/Tim
  989    ; RCPAGE  - Current  Page numbe r
  990    ; RCRANGE  - Selecte d Date Ran ge
  991    ; RCSORT  - 0 - Sort  by Payer  Name, 1 -  Sort by Pa yer TIN
  992    ; RCSTOP  - 1 if dis play abort ed
  993    ; Output:  RCPAGE -  Updated Pa ge Number
  994    ; RCSTOP  - 1 if dis play abort ed
  995    N END,LN, MSG,START, XX,Y
  996    Q:RCSTOP
  997    S START=$ $FMTE^XLFD T($P(RCRAN GE,U,2),"2 DZ")
  998    S END=$$F MTE^XLFDT( $P(RCRANGE ,U,3),"2DZ ")
  999    I RCDISP  D  Q           ; Outp ut to Exce l
  1000    . S XX="S TATION^STA TION NUMBE R^PAYER^PA TIENT NAME /SSN^ERA#^ DT REC'D"
  1001    . S XX=XX _"^DT POST ^EFT#^RECE IPT#^BILL# ^AMT BILLE D^AMT PAID ^BALANCE^% COLL^TRACE #"
  1002    . W !,XX
  1003    I RCPAGE  D ASK(.RCS TOP) Q:RCS TOP
  1004    S RCPAGE= RCPAGE+1
  1005    W @IOF
  1006    S MSG(1)= "EDI LOCKB OX AUTO-PO ST REPORT  - "_$S(RCT YPE="D":"D ETAIL ",1: "SUMMARY")
  1007    S MSG(1)= MSG(1)_$J( "",47)_"Pr int Date:  "_RCHDRDT_ " Page: "_ RCPAGE
  1008    ;
  1009    S LN=2,XX =""
  1010    F  D  Q:X X=""                                 ; Disp lay Divisi on filters
  1011    . S XX=$O (DIVS(XX))
  1012    . Q:XX=""
  1013    . S MSG(L N)=DIVS(XX ),LN=LN+1
  1014    ;
  1015    S MSG(LN) ="CLAIM TY PE: "
  1016    S MSG(LN) =MSG(LN)_$ S(RCLAIM=" P":"PHARMA CY",RCLAIM ="M":"MEDI CAL",1:"ME DICAL & PH ARMACY")
  1017    S MSG(LN) =MSG(LN)_$ J("",55-XX )_"SORTED  BY: "_$S(R CSORT=0:"P AYER NAME" ,1:"PAYER  TIN")
  1018    S LN=LN+1
  1019    ;
  1020    S XX=""
  1021    F  D  Q:X X=""                                 ; Disp lay Payer  filters
  1022    . S XX=$O (PAYERS(XX ))
  1023    . Q:XX=""
  1024    . S MSG(L N)=PAYERS( XX),LN=LN+ 1
  1025    S LN=LN+1
  1026    S MSG(LN) ="AUTOPOST  POSTING R ESULTS FOR  DATE RANG E: "_START _" - "_END
  1027    S LN=LN+1 ,MSG(LN)=L INE2
  1028    S LN=LN+1
  1029    S MSG(LN) ="PATIENT  NAME/SSN E RA# DT REC 'D DT POST  EFT# RECE IPT#"
  1030    S MSG(LN) =MSG(LN)_"  BILL# AMT  BILLED AM T PAID BAL ANCE %COLL "
  1031    S LN=LN+1 ,MSG(LN)=L INE2
  1032    D EN^DDIO L(.MSG)
  1033    Q
  1034    ;
  1035   HDRP(PAYNA M) ; Print  Payer Sub -header
  1036    ; Input:  LINE1 - 13 1 '-'s
  1037    ; PAYNAM  - TIN/Paye r Name or  Payer NAME /TIN depen ding on so rt
  1038    W !,LINE1 ,!,"PAYER:  ",PAYNAM, !,LINE1
  1039    Q
  1040    ;
  1041   LINED(RCDI V,VAUTD,DI VS) ; List  selected  Divisions
  1042    ; Input:  RCDIV - 1  - All Divi sions Sele cted,
  1043    ; VAUTD()  - Array o f selected  Divisions
  1044    ; Output  DIVS() - A rray of li nes to pri nt the Div isions
  1045    ; Returns : Comma De limitted l ist of Div isions
  1046    N LN,SUB, XX
  1047    K DIVS
  1048    S SUB="", LN=1,DIVS( 1)="DIVISI ONS: "
  1049    I RCDIV=1  S DIVS(1) =DIVS(1)_" ALL" Q
  1050    F  S SUB= $O(VAUTD(S UB)) Q:'SU B  D
  1051    . S XX=$P (RCDIVS(SU B),"^",2)
  1052    . I $L(XX ))+$L(DIVS (LN))+2>13 2 D
  1053    . . S LN= LN+1,DIVS( LN)=" "_XX
  1054    . E  S DI VS(LN)=$S( $L(DIVS(LN ))=12:DIVS (LN)_XX,1: DIVS(LN)_" , "_XX)
  1055    Q
  1056    ;
  1057   LINEP(RCPA Y,RCPARRAY ,RCWHICH,P AYERS) ; L ist select ed Payers
  1058    ; Input:  RCPAY - 2  - All Paye rs selecte d
  1059    ; RCPARRA Y - Array  of selecte d Payers
  1060    ; RCWHICH  - 0 - Fil ter by Pay er Name, 1  - Filter  by Payer T IN
  1061    ; Output:  PAYERS()  - Array of  lines to  Print the  Payers
  1062    ; Returns : Comma de limitted l ist of Pay er Names
  1063    N CTR,DPA YS,LN,PAYR ,PCE,XX
  1064    K PAYERS
  1065    S PAYR="" ,LINE="",L N=1,PAYERS (1)="PAYER S: "
  1066    S PCE=$S( RCWHICH=0: 2,1:1)
  1067    I $P(RCPA Y,U,1)=2 S  PAYERS(1) =PAYERS(1) _"ALL" Q
  1068    F  D  Q:P AYR=""
  1069    . S PAYR= $O(RCPARRA Y(PAYR))
  1070    . Q:PAYR= ""
  1071    . S CTR=" "
  1072    . F  D  Q :CTR=""
  1073    . . S CTR =$O(RCPARR AY(PAYR,CT R))
  1074    . . Q:CTR =""
  1075    . . S XX= $P(RCPARRA Y(PAYR,CTR ),”/”,PCE)
  1076    . . Q:$D( DPAYS(XX))  ; Already  displayed
  1077    . . S DPA YS(XX)=""
  1078    . . I $L( XX)+$L(PAY ERS(LN))+2 >132 D
  1079    . . . S L N=LN+1,PAY ERS(LN)="  "_XX
  1080    . . E  S  PAYERS(LN) =$S($L(PAY ERS(LN))=1 2:PAYERS(L N)_XX,1:PA YERS(LN)_" , "_XX)
  1081    Q
  1082    ;
  1083   TOTALS ; P rint total s for summ ary report
  1084    ; Input:  GLOB - "^T MP("RCPDEA PP",$J)
  1085    N DBAL,DB AMT,DCNT,D IV,DPAMT,P AYIX1,PAYI X2
  1086    S DIV=""
  1087    F  D  Q:D IV=""  Q:R CSTOP
  1088    . S DIV=$ O(@GLOB@(D IV))
  1089    . Q:DIV=" "
  1090    . S PAYIX 1=""
  1091    . F  D  Q :PAYIX1=""   Q:RCSTOP
  1092    . . S PAY IX1=$O(@GL OB@(DIV,PA YIX1))
  1093    . . Q:PAY IX1=""
  1094    . . S PAY IX2=""
  1095    . . F  D   Q:PAYIX2= ""  Q:RCST OP
  1096    . . . S P AYIX2=$O(@ GLOB@(DIV, PAYIX1,PAY IX2))
  1097    . . . Q:P AYIX2=""
  1098    . . . D T OTALDP(DIV ,PAYIX1,PA YIX2) ; Pa yer Totals
  1099    . D TOTAL D(DIV) ; D ivision To tals
  1100    D TOTALG                                       ; Gran d Totals
  1101    Q
  1102    ;
  1103   TOTALD(DIV ) ; Duspla y totals f or a divis ion
  1104    ; Input:  DIV - Divi sion Name
  1105    ; GLOB -  "^TMP("RCP DEAPP",$J)
  1106    ; DIVS()  - Array of  selected  Division l ines for H eader
  1107    ; PAYERS( )- Array o f selected  Payer lin es for Hea der
  1108    ; LINE1 -  131 '-'s
  1109    ; RCDISP  - 1 - Outp ut to Exce l, 0 other wise
  1110    ; Output:  RCSTOP -  1 if displ ay aborted , 0 otherw ise
  1111    N DBAL,DB AMT,DCNT,D PAMTL
  1112    S DCNT=$P (@GLOB@(DI V),U),DBAM T=$P(@GLOB @(DIV),U,2 )
  1113    S DPAMT=$ P(@GLOB@(D IV),U,3),D BAL=$P(@GL OB@(DIV),U ,4)
  1114    I 'RCDISP ,$Y>(IOSL- 6) D HDR(. DIVS,.PAYE RS) Q:RCST OP
  1115    W !,"DIVI SION TOTAL S FOR ",DI V,?90,$J(D BAMT,10,2)
  1116    W $J(DPAM T,10,2),$J (DBAL,10,2 )
  1117    W:DBMT’=0  $J(DPAMT/ DBAMT*100, 7,2),"%"
  1118    W !,?8,"C OUNT",?90, $J(DCNT,10 ,0),$J(DCN T,10,0),$J (DCNT,10,0 )
  1119    W !,?8,"M EAN",?90,$ J(DBAMT/DC NT,10,2),$ J(DPAMT/DC NT,10,2),$ J(DBAL/DCN T,10,2)
  1120    W !,LINE1
  1121    Q
  1122    ;
  1123   TOTALDP(DI V,PAYIX1,P AYIX2) ; D isplay tot als for a  payer with in a divis ion
  1124    ; Input:  DIV - Divi sion Name
  1125    ; PAYIX1  - Payer Na me OR TIN
  1126    ; PAYIX2  - TIN OR P ayer Name
  1127    ; GLOB -  "^TMP("RCP DEAPP",$J)
  1128    ; DIVS()  - Array of  selected  Division l ines for H eader
  1129    ; PAYERS( )- Array o f selected  Payer lin es for Hea der
  1130    ; LINE1 -  131 '-'s
  1131    ; RCDISP  - 1 - Outp ut to Exce l, 0 other wise
  1132    ; Output:  RCSTOP -  1 if displ ay aborted , 0 otherw ise
  1133    N DBAL,DB AMT,DCNT,D PAMT
  1134    I 'RCDISP ,$Y>(IOSL- 6) D HDR(. DIVS,.PAYE RS) Q:RCST OP
  1135    S DCNT=$P (@GLOB@(DI V,PAYIX1,P AYIX2),U), DBAMT=$P(@ GLOB@(DIV) ,U,2)
  1136    S DPAMT=$ P(@GLOB@(D IV),U,3),D BAL=$P(@GL OB@(DIV),U ,4)
  1137    W:RCTYPE= "D" !,?92, "--------- ---------- ---------- -------"
  1138    W !,"SUBT OTALS FOR  PAYER: ",P AYIX1,"/", PAYIX2,?90 ,$J(DBAMT, 10,2),$J(D PAMT,10,2)
  1139    W $J(DBAL ,10,2)
  1140    W:DBAMT'= 0 $J(DPAMT /DBAMT*100 ,7,2),"%"
  1141    W !,?8,"C OUNT",?90, $J(DCNT,10 ,0),$J(DCN T,10,0),$J (DCNT,10,0 )
  1142    W !,?8,"M EAN",?90,$ J(DBAMT/DC NT,10,2),$ J(DPAMT/DC NT,10,2),$ J(DBAL/DCN T,10,2)
  1143    W !,LINE1
  1144    Q
  1145    ;
  1146   TOTALG ;Di splay over all report  total
  1147    ; Input:  DIVS() - A rray of se lected Div ision line s for Head er
  1148    ; PAYERS( )- Array o f selected  Payer lin es for Hea der
  1149    ; GTOTAL  - Grand To tals
  1150    ; LINE1 -  131 '-'s
  1151    ; RCDISP  - 1 - Outp ut to Exce l, 0 other wise
  1152    ; Output:  RCSTOP -  1 if displ ay aborted , 0 otherw ise
  1153    I 'RCDISP ,$Y>(IOSL- 6) D HDR(. DIVS,.PAYE RS) Q:RCST OP
  1154    W !,"GRAN D TOTALS F OR ALL DIV ISIONS",?9 0,$J(+$P(G TOTAL,U,2) ,10,2)
  1155    W $J(+$P( GTOTAL,U,3 ),10,2),$J (+$P(GTOTA L,U,4),10, 2)
  1156    W $J($P(G TOTAL,U,3) /$P(GTOTAL ,U,2)*100, 7,2),"%"
  1157    W !,?8,"C OUNT",?90, $J(+$P(GTO TAL,U),10, 0),$J(+$P( GTOTAL,U), 10,0),$J(+ $P(GTOTAL, U),10,0)
  1158    W !,?8,"M EAN",?90,$ J($P(GTOTA L,U,2)/$P( GTOTAL,U), 10,2)
  1159    W $J($P(G TOTAL,U,3) /$P(GTOTAL ,U),10,2), $J($P(GTOT AL,U,4)/$P (GTOTAL,U) ,10,2)
  1160    W !,LINE1
  1161    Q
  1162    ;
  1163   BUILD(RCSC R) ; Build  cross-ref erence of  ERA detail  lines to  ERA scratc h-pad line s
  1164    ; Input:  RCSCR - In ternal IEN  of file 3 44.4/344.4 9
  1165    N CNT,ERA DET,ERALIN E,SUB,SUB1
  1166    Q:'$G(RCS CR) ; No E RA IEN
  1167    Q:'$D(^RC Y(344.49,R CSCR)) ; N o scratch  pad entry  for ERA
  1168    S SUB=0
  1169    F  S SUB= $O(^RCY(34 4.49,RCSCR ,1,"B",SUB )) Q:SUB=" "  D
  1170    . Q:SUB[" ."                                   ; Skip  split edi t lines
  1171    . S SUB1= $O(^RCY(34 4.49,RCSCR ,1,"B",SUB ,"")) ; Ge t scratchp ad ^RCY(34 4.49,RCSCR ,1) node
  1172    . Q:'SUB1
  1173    . ;
  1174    . ; Get p ointer bac k to ERA d etail line (s) - This  can be a  set of com ma pieces
  1175    . S ERALI NE=$P($G(^ RCY(344.49 ,RCSCR,1,S UB1,0)),U, 9)
  1176    . F CNT=1 :1:$L(ERAL INE,",") D
  1177    . . S ERA DET=$P(ERA LINE,",",C NT)
  1178    . . I ERA DET S ^TMP ("RCDPEAPP 2",$J,RCSC R,ERADET)= +$G(^RCY(3 44.49,RCSC R,1,SUB1,0 ))
  1179    QRoutines Activities Routine Na meRCDPEM9E nhancement  Category  New Modify  Delete No  ChangeRTM Related Op tionsRCDPE  AUTO-POST  REPORT, R CDPE ERA A GING REPOR T, RCDPE A UTO-POST R ECEIPT REP ORT, RCDPE  EDI LOCKB OX ACT REP ORT, Relat ed Routine sRoutines  “Called By ”Routines  “Called”    RCDPEAPP
  1180   RCDPEAR1
  1181   RCDPEAR2
  1182   RCDPEDAR
  1183   RCDPELAR       Current Lo gicRCDPEM9  ;OI D N
S           /PJH - PAY ER SELECTI ON ;10/18/ 11 6:17pm
  1184    ;;4.5;Acc ounts Rece ivable;**2 76,284,318 **;Mar 20,  1995;Buil d 35
  1185    ;;Per VHA  Directive  2004-038,  this rout ine should  not be mo dified.
  1186    ;
  1187    ; PRCA*4. 5*318 - Ad ded parame ters MIXED  and BLANK LN
  1188   GETPAY(FIL E,MIXED,BL ANKLN) ; L et user se lect payer  for filte r
  1189    ; Input:  FILE - Fil e to retri eve Payers  from eith er #344.4  OR ##344.3 1
  1190    ; MIXED -  1 to disp lay prompt s in mixed  case
  1191    ; Optiona l, default s to 0
  1192    ; BLANKLN  - 0 skip  initial bl ank line
  1193    ; Optiona l, default s to 1
  1194    ;
  1195    ; Returne d RTNFLG v alue
  1196    ;
  1197    ; PRCA*4. 5*284 - Ad ded pieces  2 & 3 to  provide ba ckground j obs inform ation to r e-calculat e payer li st.
  1198    ;
  1199    ; Piece 1 : -1 = non e selected
  1200    ; 1 = ran ge of paye rs
  1201    ; 2 = all  payers se lected
  1202    ; 3 = spe cific paye rs
  1203    ; Piece 2 : From Ran ge (When a  from/thru  range is  selected b y user)
  1204    ; Piece 3 : Thru Ran ge (When a  from/thru  range is  selected b y user)
  1205    ;
  1206    ; Payers  selected a re returne d in ^TMP( "RCSELPAY" ,$J
  1207    ;
  1208    N RCPAY,R CINC,CNT,R TNFLG,I,RC ANS,INDX,X ,RCANS2,DI R,Y,DTOUT, DUOUT,RCIN SF
  1209    N RCINST, RNG1,RNG2
  1210    S:'$D(MIX ED) MIXED= 0 ; PRCA*4 .5*318 - A dded logic  for MIXED  and BLANK LN
  1211    S:'$D(BLA NKLN) BLAN KLN=1
  1212    ;
  1213    S RTNFLG= 0,INDX=1,R NG1="",RNG 2=""
  1214    ;
  1215    ;Clear li st of sele cted payer s
  1216    K ^TMP("R CSELPAY",$ J)
  1217    ;
  1218    ;Select o ption requ ired (All,  Selected  or Range)
  1219    S DIR(0)= "SA^A:ALL; S:SPECIFIC ;R:RANGE"
  1220    S DIR("A" )="RUN REP ORT FOR (A )LL, (S)PE CIFIC, OR  (R)ANGE OF  INSURANCE  COMPANIES ?: "
  1221    S DIR("B" )="ALL"
  1222    S DIR("?" ,1)="Enter  'ALL' to  select all  Insurance  Companies ."
  1223    S DIR("?" ,2)="Enter  'RANGE' t o select a n Insuranc e Company  range."
  1224    S DIR("?" )="Enter ' SPECIFIC'  to select  specific I nsurance C ompanies."
  1225    I MIXED D             ; PRCA*4. 5*318 - Ad ded logic  for MIXED  and BLANKL N
  1226    . N XX
  1227    . S XX="R un Report  for (A)LL,  (S)PECIFI C, or (R)A NGE of Ins urance Com panies?: "
  1228    . S DIR(0 )="SA^A:AL L;S:SPECIF IC;R:RANGE "
  1229    . S DIR(" A")=XX,DIR ("B")="ALL "
  1230    W:BLANKLN  ! ; PRCA* 4.5*318 -  Added cond ition for  BLANKLN
  1231    D ^DIR K  DIR
  1232    ;
  1233    ;Abort on  ^ exit or  timeout
  1234    I $D(DTOU T)!$D(DUOU T) S RTNFL G=-1 Q RTN FLG
  1235    ;
  1236    ;ALL paye rs
  1237    I Y="A" D
  1238    .; Build  list of AL L stations
  1239    .S CNT=0, RCPAY="",R TNFLG=2
  1240    .F  S RCP AY=$O(^RCY (FILE,"C", RCPAY)) Q: RCPAY=""   D
  1241    ..S CNT=C NT+1,^TMP( "RCSELPAY" ,$J,CNT)=R CPAY
  1242    ;
  1243    ;Selected  Payers
  1244    I Y="S" D
  1245    .D GLIST( FILE),GETP AYS(CNT,MI XED) ; PRC A*4.5*318  - Added pa rameter MI XED
  1246    ;
  1247    ;Range of  Payers
  1248    I Y="R" D
  1249    .D GLIST( FILE),GETP AYR(MIXED, BLANKLN) ;  PRCA*4.5* 318 - Adde d paramete rs MIXED a nd BLANKLN
  1250    ;
  1251    ;Clear li st of all  payers
  1252    K:RTNFLG' =2 ^TMP("R CPAYER",$J )
  1253    ;If abort ing also c lear any s elected pa yers
  1254    K:RTNFLG= -1 ^TMP("R CSELPAY",$ J)
  1255    ;
  1256    ;Return v alue
  1257    ; PRCA*4. 5*284 - Up date retur n value to  include f rom/thru r ange. See  above for  documentat ion
  1258    Q RTNFLG_ "^"_RNG1_" ^"_RNG2
  1259    ;
  1260   GLIST(FILE ) ;Build l ist for th is file
  1261    ;
  1262    ;Clear wo rkfile
  1263    K ^TMP("R CPAYER",$J )
  1264    ;
  1265    ; Build l ist of ava ilable sta tions
  1266    S CNT=0,R CPAY=""
  1267    F  S RCPA Y=$O(^RCY( FILE,"C",R CPAY)) Q:R CPAY=""  D
  1268    .S CNT=CN T+1
  1269    .S ^TMP(" RCPAYER",$ J,CNT)=RCP AY
  1270    .S ^TMP(" RCPAYER",$ J,"B",RCPA Y,CNT)=""
  1271    ;
  1272    Q
  1273    ;
  1274    ; PRCA*4. 5*318 - Ad ded parame ter & logi c for MIXE D
  1275   GETPAYS(CN T,MIXED) ; select pay er for fil ter, speci fic
  1276    ; Input:  CNT - Numb er of Paye rs
  1277    ; MIXED -  1 to disp lay prompt s in mixed  case
  1278    ; Optiona l, default s to 0
  1279    ;
  1280    S:'$D(MIX ED) MIXED= 0
  1281    ;
  1282    N PNAME
  1283    ;
  1284    K ^TMP("R CDPEM9",$J )
  1285    ;
  1286    F  Q:RTNF LG'=0 D
  1287    .N DIR,X, Y,DTOUT,DU OUT,DIRUT, DIROUT
  1288    .S DIR("A ")="SELECT  INSURANCE  COMPANY"
  1289    .S:MIXED  DIR("A")=" Select Ins urance Com pany"   ;  PRCA*4.5*3 18
  1290    .S DIR(0) ="FO^1:30"
  1291    .S DIR("? ")="ENTER  THE NAME O F THE PAYE R OR '??'  TO LIST PA YERS"
  1292    .; PRCA*4 .5*318 - A dded MIXED
  1293    .S:MIXED  DIR("?")=" Enter the  name of th e payer or  '??' to l ist payers "
  1294    .S DIR("? ?")="^D LI ST^RCDPEM9 (CNT)"
  1295    .D ^DIR K  DIR
  1296    .;User pr essed ENTE R
  1297    .I Y="",' $D(DTOUT)  S RTNFLG=$ S($D(^TMP( "RCSELPAY" )):3,1:-1)  Q
  1298    .;First c heck for e xits
  1299    .I $D(DUO UT)!$D(DTO UT)!$D(DIR UT)!$D(DIR OUT) S RTN FLG=-1 Q
  1300    .;Check f or help
  1301    .S (RCANS ,RCANS2)=" "
  1302    .S RCANS= Y
  1303    .; Now ch eck for ex otic user  input
  1304    .I '(RCAN S?.N) S RC ANS2=$O(^T MP("RCPAYE R",$J,"B", RCANS,RCAN S2)) D:'RC ANS2 PART  Q:'$G(RCAN S2)
  1305    .S:$G(RCA NS2) RCANS =RCANS2 I  RCANS="" W  " ??" Q
  1306    .I RCANS? .N&((+RCAN S<1)!(+RCA NS>CNT)) W  " ??" Q
  1307    .I RCANS' ?.N W " ?? " Q
  1308    .I $D(^TM P("RCDPEM9 ",$J,RCANS )) W " ??  PAYER ALRE ADY SELECT ED" Q
  1309    .S ^TMP(" RCDPEM9",$ J,RCANS)=" "
  1310    .S PNAME= $G(^TMP("R CPAYER",$J ,RCANS))
  1311    .W " "_PN AME
  1312    .S ^TMP(" RCSELPAY", $J,INDX)=$ G(^TMP("RC PAYER",$J, RCANS))
  1313    .S INDX=I NDX+1
  1314    ;
  1315    K ^TMP("R CDPEM9",$J )
  1316    Q
  1317    ;
  1318   LIST(CNT)  ;
  1319    ; Prompt  users for  stations t o be used  for filter ing
  1320    N I
  1321    F I=1:1:C NT D
  1322    .W !,I,". ",?5,$G(^T MP("RCPAYE R",$J,I))
  1323    Q
  1324    ;
  1325   PART ;
  1326    N RCPAR,C NT,IEN
  1327    S RCPAR=0 ,CNT=0
  1328    F  S RCPA R=$O(^TMP( "RCPAYER", $J,"B",RCP AR)) Q:RCP AR=""  D
  1329    .S IEN=$O (^TMP("RCP AYER",$J," B",RCPAR," "))
  1330    .I $E(RCP AR,1,$L(RC ANS))[RCAN S W !,?10, IEN,".",^T MP("RCPAYE R",$J,IEN)  S CNT=1
  1331    I 'CNT W  " ??"
  1332    Q
  1333    ;
  1334    ; PRCA*4. 5*318 - Ad ded parame ters & log ic for MIX ED & BLANK LN
  1335   GETPAYR(MI XED,BLANKL N) ;select  payer for  filter, r ange
  1336    ; called  from ^RCDP EAR1
  1337    ; Input:  MIXED - 1  to display  prompts i n mixed ca se
  1338    ; Optiona l, default s to 0
  1339    ; BLANKLN  - 0 skip  initial bl ank line
  1340    ; Optiona l, default s to 1 
  1341    ;
  1342    S:'$D(MIX ED) MIXED= 0 ; PRCA*4 .5*318
  1343    S:'$D(BLA NKLN) BLAN KLN=1
  1344    ;
  1345    N DIR,DTO UT,DUOUT,D IRUT,DIROU T,INDX,X,Y ,RCINSF,RC INST,NUM
  1346    S DIR("?" )="ENTER T HE NAME OF  THE PAYER  OR '??' T O LIST PAY ERS"
  1347    S DIR("?? ")="^D LIS T^RCDPEM9( CNT)"
  1348    S DIR(0)= "FA^1:30^K :X'?1.U.E  X"
  1349    S DIR("A" )="START W ITH INSURA NCE COMPAN Y NAME: "
  1350    S DIR("B" )=$E($O(^T MP("RCPAYE R",$J,"B", "")),1,30)
  1351    I MIXED D          ; PRCA*4.5*3 18
  1352    . S DIR(" ?")="Enter  the name  of the pay er or '??'  to list p ayers"
  1353    . S DIR(" A")="Start  with Insu rance Comp any name:  "
  1354    D ^DIR K  DIR
  1355    I $D(DTOU T)!$D(DUOU T)!$D(DIRU T)!$D(DIRO UT)!(Y="")  S RTNFLG= -1 Q
  1356    S RCINSF= Y
  1357    S DIR("?" )="ENTER T HE NAME OF  THE PAYER  OR '??' T O LIST PAY ERS"
  1358    S DIR("?? ")="^D LIS T^RCDPEM9( CNT)"
  1359    S DIR(0)= "FA^1:30^K :X'?1.U.E  X"
  1360    S DIR("A" )="GO TO I NSURANCE C OMPANY NAM E: "
  1361    I MIXED D          ; PRCA*4.5*3 18
  1362    . S DIR(" ?")="Enter  the name  of the pay er or '??'  to list p ayers"
  1363    . S DIR(" A")="Go to  Insurance  Company n ame: "
  1364    S DIR("B" )=$E($O(^T MP("RCPAYE R",$J,"B", ""),-1),1, 30)
  1365    ; PRCA*4. 5*318 - ad ded condit ional for  MIXED & BL ANKLN
  1366    F  W:BLAN KLN ! D ^D IR Q:$S($D (DTOUT)!$D (DUOUT):1, 1:RCINSF'] Y) D
  1367    . W:'MIXE D !,"'GO T O' NAME MU ST COME AF TER 'START  WITH' NAM E"
  1368    . W:MIXED  !,"'GO TO ' name mus t come aft er 'START  WITH' name "
  1369    K DIR
  1370    I $D(DTOU T)!$D(DUOU T)!$D(DIRU T)!$D(DIRO UT)!(Y="")  S RTNFLG= -1 Q
  1371    S RCINST= Y_"Z"  ;en try of "AB C" will pi ck up "ABC  INSURANCE " if "Z" i s appended
  1372    ;If the f irst name  is an exac t match, b ack up to  the previo us entry
  1373    I $D(^TMP ("RCPAYER" ,$J,"B",RC INSF)) S R CINSF=$O(^ TMP("RCPAY ER",$J,"B" ,RCINSF),- 1)
  1374    ; PRCA*4. 5*284 - Sa ve from/th ru user re sponses in  RNG1 & RN G2 to rebu ild after  report is  queued. Wi ll be retu rned to th e calling  program.
  1375    S RNG1=RC INSF,RNG2= RCINST
  1376    S INDX=1  F  S RCINS F=$O(^TMP( "RCPAYER", $J,"B",RCI NSF)) Q:RC INSF=""  Q :RCINSF]RC INST  D
  1377    . S NUM=$ O(^TMP("RC PAYER",$J, "B",RCINSF ,""))
  1378    . S ^TMP( "RCSELPAY" ,$J,INDX)= $G(^TMP("R CPAYER",$J ,NUM))
  1379    . S INDX= INDX+1
  1380    ;Set retu rn value
  1381    I INDX=1  S RTNFLG=- 1 Q  ; no  entries in  selected  range
  1382    S RTNFLG= 1
  1383    QModified  Logic (Ch anges are  in bold)RC DPEM9 ;OI D N
S           /PJH - PAY ER SELECTI ON ;10/18/ 11 6:17pm
  1384    ;;4.5;Acc ounts Rece ivable;**2 76,284,318 **;Mar 20,  1995;Buil d 35
  1385    ;;Per VHA  Directive  2004-038,  this rout ine should  not be mo dified.
  1386    ;
  1387    ; PRCA*4. 5*318 - Ad ded parame ters MIXED  and BLANK LN
  1388   GETPAY(FIL E,MIXED,BL ANKLN,NMOR TIN,SHOWTI N) ; Let u ser select  payer for  filter
  1389    ; Input:  FILE - Fil e to retri eve Payers  from eith er #344.4  OR ##344.3 1
  1390    ; MIXED -  1 to disp lay prompt s in mixed  case
  1391    ; Optiona l, default s to 0
  1392    ; BLANKLN  - 0 skip  initial bl ank line
  1393    ; Optiona l, default s to 1
  1394    ; NMORTIN  - 0 to lo ok-up Paye r by Pater  Name, 1 t o look-up  by TIN
  1395    ; Optiona l, default s to 0
  1396    ; SHOWTIN  - 1 to ap pend the P ayer Name  or Payer T IN when di splaying p ayers
  1397    ; Optiona l, default s to 0
  1398    ; Output:  ^TMP("RCS ELPAY",$J)  - Array o f selected  Payers
  1399    ; Returns : A1^A2^A3  Where:
  1400    ; A1 - -1  - None se lected
  1401    ; 1 - Ran ge of paye rs
  1402    ; 2 - All  payers se lected
  1403    ; 3 - Spe cific paye rs
  1404    ; A2 - Fr om Range ( When a fro m/thru ran ge is sele cted by us er)
  1405    ; A3 - Th ru Range ( When a fro m/thru ran ge is sele cted by us er)
  1406    N CNT,DIR ,DIROUT,DI RUT,DTOUT, DUOUT,I,IE N,INDX
  1407    N RCANS,R CANS2,RCIN C,RCINSF,R CINST,RCPA Y,RNG1,RNG 2,RTNFLG,T IN,X,XX,Y
  1408    S:'$D(MIX ED) MIXED= 0 ; PRCA*4 .5*318 - A dded logic  for MIXED  and BLANK LN
  1409    S:'$D(BLA NKLN) BLAN KLN=1
  1410    S:'$D(NMO RTIN) NMOR TIN=0
  1411    S:'$D(SHO WTIN) SHOW TIN=0
  1412    ;
  1413    S RTNFLG= 0,INDX=1,R NG1="",RNG 2=""
  1414    K ^TMP("R CSELPAY",$ J) ; Clear  list of s elected Pa yers
  1415    ;
  1416    ; Select  option req uired (All , Selected  or Range)
  1417    I NMORTIN  D
  1418    . S DIR(0 )="SA^A:AL L;S:SPECIF IC"
  1419    . S:MIXED  DIR("A")= "Run Repor t for (A)L L or (S)PE CIFIC Insu rance Comp anies?: "
  1420    . S:'MIXE D DIR("A") ="RUN REPO RT FOR (A) LL OR (S)P ECIFIC INS URANCE COM PANIES?: "
  1421    E  D
  1422    . S DIR(0 )="SA^A:AL L;S:SPECIF IC;R:RANGE "
  1423    . S:MIXED  DIR("A")= "Run Repor t for (A)L L, (S)PECI FIC, or (R )ANGE of I nsurance C ompanies?:  "
  1424    . S:'MIXE D DIR("A") ="RUN REPO RT FOR (A) LL, (S)PEC IFIC, OR ( R)ANGE OF  INSURANCE  COMPANIES? : "
  1425    . S DIR(" ?",2)="Ent er 'RANGE'  to select  an Insura nce Compan y range."
  1426    S DIR("B" )="ALL"
  1427    S DIR("?" ,1)="Enter  'ALL' to  select all  Insurance  Companies ."
  1428    S DIR("?" )="Enter ' SPECIFIC'  to select  specific I nsurance C ompanies."
  1429    W:BLANKLN  ! ; PRCA* 4.5*318 -  Added cond ition for  BLANKLN
  1430    D ^DIR K  DIR
  1431    ;
  1432    ; Abort o n ^ exit o r timeout
  1433    I $D(DTOU T)!$D(DUOU T) S RTNFL G=-1 Q RTN FLG
  1434    ;
  1435    ; ALL pay ers 
  1436    ; Switch  to use new  Payer Nam e/Payer TI N index
  1437    I Y="A" D
  1438    . S CNT=0 ,RCPAY="", RTNFLG=2
  1439    . F  S RC PAY=$O(^RC Y(FILE,"C" ,RCPAY)) Q :RCPAY=""   D
  1440    . . S CNT =CNT+1,IEN =$O(^RCY(F ILE,"C",RC PAY,""))
  1441    . . S TIN =$$GET1^DI Q(FILE,IEN ,.03,"E")
  1442    . . S XX= $S(NMORTIN :TIN_"/"_R CPAY,1:RCP AY_"/"_TIN )
  1443    . . S ^TM P("RCSELPA Y",$J,CNT) =XX
  1444    ;
  1445    ; Selecte d Payers
  1446    I Y="S" D
  1447    . D GLIST (FILE,NMOR TIN),GETPA YS(CNT,MIX ED,NMORTIN ) ; PRCA*4 .5*318 - A dded param eter MIXED
  1448    ;
  1449    ; Range o f Payers
  1450    I Y="R" D
  1451    . D GLIST (FILE,NMOR TIN),GETPA YR(MIXED,B LANKLN) ;  PRCA*4.5*3 18 - Added  parameter s MIXED an d BLANKLN
  1452    ;
  1453    K:RTNFLG' =2 ^TMP("R CPAYER",$J ) ; Clear  list of al l payers
  1454    K:RTNFLG= -1 ^TMP("R CSELPAY",$ J) ; Abort ing, clear  any selec ted payers
  1455    ;
  1456    ; PRCA*4. 5*284 - Up date retur n value to  include f rom/thru r ange. See  above for  documentat ion
  1457    Q RTNFLG_ "^"_RNG1_" ^"_RNG2                   ; Retu rn value
  1458    ;
  1459   GLIST(FILE ,NMORTIN)  ; Build li st for thi s file
  1460    ; Input:  FILE - Fil e to retri eve Payers  from eith er #344.4  OR ##344.3 1
  1461    ; NMORTIN  - 1 - loo kup by TIN , 0 - look up by Paye r Name
  1462    ; Output:  ^TMP("RCP AYER",$J,A 1)=A2/A3 W here:
  1463    ; A1 - Co unter
  1464    ; A2 - Pa yer Name i f NMORTIN= 0, else Pa yer TIN
  1465    ; A3 - Pa yer TIN if  NMORTIN=0 , else Pay er Name
  1466    ; ^TMP("R CPAYER",$J ,"B",B1,B2 )=B3 Where :
  1467    ; B1 - Pa yer TIN if  NMORTIN=0 , else Pay er Name
  1468    ; B2 - Co unter
  1469    ; B3 - Pa yer Name i f NMORTIN= 0, else Pa yer TIN
  1470    N IEN,TIN
  1471    K ^TMP("R CPAYER",$J ) ; Clear  workfile ;
  1472    ; **FA**  switch to  use actual  cross-ref erences
  1473    I NMORTIN  D  Q                                ; Buil d list of  Payers by  TIN
  1474    . S CNT=0 ,TIN=""
  1475    . F  S TI N=$O(^TMP( "ZZFRED",1 ,TIN)) Q:T IN=""  D
  1476    . . S PAY NAM=""
  1477    . . F  S  PAYNAM=$O( ^TMP("ZZFR ED",1,TIN, PAYNAM)) Q :PAYNAM=""   D
  1478    . . . S C NT=CNT+1
  1479    . . . S ^ TMP("RCPAY ER",$J,CNT )=TIN_"/"_ PAYNAM
  1480    . . . S ^ TMP("RCPAY ER",$J,"B" ,TIN,CNT)= PAYNAM
  1481    ;
  1482    S CNT=0,P AYNAM=""
  1483    F  S PAYN AM=$O(^TMP ("ZZFRED", 0,PAYNAM))  Q:PAYNAM= ""  D
  1484    . S TIN=" "
  1485    . F  S TI N=$O(^TMP( "ZZFRED",0 ,PAYNAM,TI N)) Q:TIN= ""  D
  1486    . . S CNT =CNT+1
  1487    . . S ^TM P("RCPAYER ",$J,CNT)= PAYNAM_"/" _TIN
  1488    . . S ^TM P("RCPAYER ",$J,"B",P AYNAM,CNT) =TIN
  1489    Q
  1490    ;
  1491    ; PRCA*4. 5*318 - Ad ded parame ter & logi c for MIXE D
  1492   GETPAYS(CN T,MIXED,NM ORTIN) ; S elect Spec ific payer  for filte r
  1493    ; Input:  CNT - Numb er of Paye rs
  1494    ; MIXED -  1 to disp lay prompt s in mixed  case
  1495    ; Optiona l, default s to 0
  1496    ; NMORTIN  - 1 to lo okup by TI N, 0 to lo okup by Pa yer
  1497    ; Optiona l, default s to 0
  1498    ; Output:  RTNFLG -1  - No Paye r selected
  1499    ; 3 - At  least one  Payer sele cted
  1500    S:'$D(MIX ED) MIXED= 0
  1501    S:'$D(NMO RTIN) NMOR TIN=0
  1502    K ^TMP("R CDPEM9",$J )
  1503    F  Q:RTNF LG'=0 D
  1504    . N DIR,D IROUT,DIRU T,DTOUT,DU OUT,X,Y
  1505    . S DIR(" A")="SELEC T INSURANC E COMPANY"
  1506    . S:MIXED  DIR("A")= "Select In surance Co mpany"   ;  PRCA*4.5* 318
  1507    . S DIR(0 )="FO^1:30 "
  1508    . S DIR(" ?")="ENTER  THE NAME  OF THE PAY ER OR '??'  TO LIST P AYERS"
  1509    . ; PRCA* 4.5*318 -  Added MIXE D
  1510    . S:MIXED  DIR("?")= "Enter the  name of t he payer o r '??' to  list payer s"
  1511    . S DIR(" ??")="^D L IST^RCDPEM 9(CNT)"
  1512    . D ^DIR  K DIR
  1513    . ;
  1514    . ; User  pressed EN TER
  1515    . I Y="", '$D(DTOUT)  S RTNFLG= $S($D(^TMP ("RCSELPAY ")):3,1:-1 ) Q
  1516    . ;
  1517    . ; First  check for  exits
  1518    . I $D(DU OUT)!$D(DT OUT)!$D(DI RUT)!$D(DI ROUT) S RT NFLG=-1 Q
  1519    . S (RCAN S,RCANS2)= "",RCANS=Y
  1520    . I NMORT IN D  Q                                  ;  TIN lookup
  1521    . . I '$D (^TMP("RCP AYER",$J," B",RCANS))  D  Q
  1522    . . . W "  ??"
  1523    . . I $D( ^TMP("RCDP EM9",$J,RC ANS)) D  Q
  1524    . . . W:' MIXED " ??  PAYER ALR EADY SELEC TED"
  1525    . . . W:M IXED " ??  Payer alre ady select ed"
  1526    . . D SEL TIN(RCANS, .INDX)
  1527    . ;
  1528    . ; Check  for Parti al Match o n user inp ut
  1529    . I '(RCA NS?.N) D    Q:'$G(RCA NS2)
  1530    . . S RCA NS2=$O(^TM P("RCPAYER ",$J,"B",R CANS,RCANS 2))
  1531    . . D:'RC ANS2 PART( NMORTIN,RC ANS)
  1532    . S:$G(RC ANS2) RCAN S=RCANS2
  1533    . I RCANS ="" W " ?? " Q
  1534    . I RCANS ?.N,((+RCA NS<1)!(+RC ANS>CNT))  W " ??" Q
  1535    . I RCANS '?.N W " ? ?" Q
  1536    . I $D(^T MP("RCDPEM 9",$J,RCAN S)) D  Q
  1537    . . W:'MI XED " ?? P AYER ALREA DY SELECTE D"
  1538    . . W:MIX ED " ?? Pa yer alread y selected "
  1539    . S ^TMP( "RCDPEM9", $J,RCANS)= ""
  1540    . W " ",^ TMP("RCPAY ER",$J,RCA NS)
  1541    . S ^TMP( "RCSELPAY" ,$J,INDX)= $G(^TMP("R CPAYER",$J ,RCANS))
  1542    . S INDX= INDX+1
  1543    K ^TMP("R CDPEM9",$J )
  1544    Q
  1545    ;
  1546   SELTIN(TIN ,INDX) ; S how all th e payers w ith the se lected TIN  and ask t he user
  1547    ; if they  want to s elect the  TIN
  1548    ; Input:  TIN - User  Selected  TIN
  1549    ; INDX -  Current #  of selecte d Payers
  1550    ; ^TMP("R CPAYER",$J ,"B") - Ar ray of TIN s on file
  1551    ; ^TMP("R CSELPAY",$ J,A1)= A2/ A3 Current  Selected  Payers Whe re:
  1552    ; A1 - Co unter
  1553    ; A2 - Se lected TIN
  1554    ; A3 - Se lected PAY ER
  1555    ; Output:  INDX - Up dated # of  selected  Payers 
  1556    ; ^TMP("R CSELPAY",$ J,A1)= A2/ A3 Updated  Selected  Payers Whe re:
  1557    ; A1 - Co unter
  1558    ; A2 - Se lected TIN
  1559    ; A3 - Se lected PAY ER
  1560    N CTR,DIR ,DIROUT,DI RUT,DTOUT, DUOUT,SELP AY,X,Y
  1561    W !,"The  following  Payers wit h TIN ",TI N," have E RAs on fil e"
  1562    D PART(1, TIN,INDX,. SELPAY)
  1563    S DIR(0)= "Y"
  1564    S DIR("A" )="Select  this TIN"
  1565    S DIR("B" )="YES"
  1566    D ^DIR
  1567    Q:$D(DTOU T)!$D(DUOU T)
  1568    Q:Y=0
  1569    M ^TMP("R CSELPAY",$ J)=SELPAY( "RCSELPAY" )
  1570    S INDX=$O (SELPAY("R CSELPAY"," "),-1)+1
  1571    Q
  1572    ;
  1573   LIST(CNT)  ; Display  all the Pa yers
  1574    ; Prompt  users for  stations t o be used  for filter ing
  1575    ; Input:  CNT - Tota l # of Pay ers in tmp  file
  1576    ; ^TMP("R CPAYER",$J ,A1)=A2/A3  Where:
  1577    ; A1 - Co unter
  1578    ; A2 - Pa yer Name i f NMORTIN= 0, else Pa yer TIN
  1579    ; A3 - Pa yer TIN if  NMORTIN=0 , else Pay er Name
  1580    N I
  1581    F I=1:1:C NT D
  1582    . W !,I," .",?5,$G(^ TMP("RCPAY ER",$J,I))
  1583    Q
  1584    ;
  1585   PART(NMORT IN,RCANS,I NDX,SELPAY ) ; Give t he user a  list of pa rtial matc hes
  1586    ; Input:  NMORTIN -  1 - Lookup  by Payer  TIN, 0 - L ookup by P ayer Name
  1587    ; RCANS -  User Paye r or TIN s election
  1588    ; INDX -  Current #  of selecte d Payers ( only passe d if NMORT IN=1)
  1589    ; Output:  SELPAY()-  Array of  selected P ayers (onl y returned  if NMORTI N=1)
  1590    ; ^TMP("R CPAYER",$J ,A1)=A2/A3  Where:
  1591    ; A1 - Co unter
  1592    ; A2 - Pa yer Name i f NMORTIN= 0, else Pa yer TIN
  1593    ; A3 - Pa yer TIN if  NMORTIN=0 , else Pay er Name
  1594    ; ^TMP("R CPAYER",$J ,"B",B1,B2 )=B3 Where :
  1595    ; B1 - Pa yer TIN if  NMORTIN=0 , else Pay er Name
  1596    ; B2 - Co unter
  1597    ; B3 - Pa yer Name i f NMORTIN= 0, else Pa yer TIN
  1598    ; Output:  List of P ayers that  meet the  partial ma tch
  1599    N RCPAR,C NT,CTR
  1600    S CNT=0,R CPAR=RCANS ,RCPAR=$O( ^TMP("RCPA YER",$J,"B ",RCPAR),- 1)
  1601    F  D  Q:R CPAR=""
  1602    . S RCPAR =$O(^TMP(" RCPAYER",$ J,"B",RCPA R))
  1603    . Q:RCPAR =""
  1604    . I $E(RC PAR,1,$L(R CANS))'[RC ANS S RCPA R="" Q
  1605    . S CTR=0
  1606    . F  D  Q :CTR=""
  1607    . . S CTR =$O(^TMP(" RCPAYER",$ J,"B",RCPA R,CTR))
  1608    . . Q:CTR =""
  1609    . . W !,? 5
  1610    . . W:'NM ORTIN CTR, "."
  1611    . . W ^TM P("RCPAYER ",$J,CTR)
  1612    . . I NMO RTIN D
  1613    . . . S S ELPAY("RCS ELPAY",IND X)=^TMP("R CPAYER",$J ,CTR),INDX =INDX+1
  1614    . . S CNT =1
  1615    W:'CNT "  ??"
  1616    Q
  1617    ;
  1618    ; PRCA*4. 5*318 - Ad ded parame ters & log ic for MIX ED & BLANK LN
  1619   GETPAYR(MI XED,BLANKL N) ;select  payer for  filter, r ange
  1620    ; called  from ^RCDP EAR1
  1621    ; Input:  MIXED - 1  to display  prompts i n mixed ca se
  1622    ; Optiona l, default s to 0
  1623    ; BLANKLN  - 0 skip  initial bl ank line
  1624    ; Optiona l, default s to 1 
  1625    ;
  1626    S:'$D(MIX ED) MIXED= 0 ; PRCA*4 .5*318
  1627    S:'$D(BLA NKLN) BLAN KLN=1
  1628    ;
  1629    N DIR,DTO UT,DUOUT,D IRUT,DIROU T,INDX,X,Y ,RCINSF,RC INST,NUM
  1630    S DIR("?" )="ENTER T HE NAME OF  THE PAYER  OR '??' T O LIST PAY ERS"
  1631    S DIR("?? ")="^D LIS T^RCDPEM9( CNT)"
  1632    S DIR(0)= "FA^1:30^K :X'?1.U.E  X"
  1633    S DIR("A" )="START W ITH INSURA NCE COMPAN Y NAME: "
  1634    S DIR("B" )=$E($O(^T MP("RCPAYE R",$J,"B", "")),1,30)
  1635    I MIXED D          ; PRCA*4.5*3 18
  1636    . S DIR(" ?")="Enter  the name  of the pay er or '??'  to list p ayers"
  1637    . S DIR(" A")="Start  with Insu rance Comp any name:  "
  1638    D ^DIR K  DIR
  1639    I $D(DTOU T)!$D(DUOU T)!$D(DIRU T)!$D(DIRO UT)!(Y="")  S RTNFLG= -1 Q
  1640    S RCINSF= Y
  1641    S DIR("?" )="ENTER T HE NAME OF  THE PAYER  OR '??' T O LIST PAY ERS"
  1642    S DIR("?? ")="^D LIS T^RCDPEM9( CNT)"
  1643    S DIR(0)= "FA^1:30^K :X'?1.U.E  X"
  1644    S DIR("A" )="GO TO I NSURANCE C OMPANY NAM E: "
  1645    I MIXED D          ; PRCA*4.5*3 18
  1646    . S DIR(" ?")="Enter  the name  of the pay er or '??'  to list p ayers"
  1647    . S DIR(" A")="Go to  Insurance  Company n ame: "
  1648    S DIR("B" )=$E($O(^T MP("RCPAYE R",$J,"B", ""),-1),1, 30)
  1649    ; PRCA*4. 5*318 - ad ded condit ional for  MIXED & BL ANKLN
  1650    F  W:BLAN KLN ! D ^D IR Q:$S($D (DTOUT)!$D (DUOUT):1, 1:RCINSF'] Y) D
  1651    . W:'MIXE D !,"'GO T O' NAME MU ST COME AF TER 'START  WITH' NAM E"
  1652    . W:MIXED  !,"'GO TO ' name mus t come aft er 'START  WITH' name "
  1653    K DIR
  1654    I $D(DTOU T)!$D(DUOU T)!$D(DIRU T)!$D(DIRO UT)!(Y="")  S RTNFLG= -1 Q
  1655    S RCINST= Y_"Z"  ;en try of "AB C" will pi ck up "ABC  INSURANCE " if "Z" i s appended
  1656    ;If the f irst name  is an exac t match, b ack up to  the previo us entry
  1657    I $D(^TMP ("RCPAYER" ,$J,"B",RC INSF)) S R CINSF=$O(^ TMP("RCPAY ER",$J,"B" ,RCINSF),- 1)
  1658    ; PRCA*4. 5*284 - Sa ve from/th ru user re sponses in  RNG1 & RN G2 to rebu ild after  report is  queued. Wi ll be retu rned to th e calling  program.
  1659    S RNG1=RC INSF,RNG2= RCINST
  1660    S INDX=1  F  S RCINS F=$O(^TMP( "RCPAYER", $J,"B",RCI NSF)) Q:RC INSF=""  Q :RCINSF]RC INST  D
  1661    . S NUM=$ O(^TMP("RC PAYER",$J, "B",RCINSF ,""))
  1662    . S ^TMP( "RCSELPAY" ,$J,INDX)= $G(^TMP("R CPAYER",$J ,NUM))
  1663    . S INDX= INDX+1
  1664    ;Set retu rn value
  1665    I INDX=1  S RTNFLG=- 1 Q  ; no  entries in  selected  range
  1666    S RTNFLG= 1
  1667    Q