3. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 11/9/2018 12:33:40 AM Central Standard 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.

3.1 Files compared

# Location File Last Modified
1 CPEE_Build9_Sprint27.zip\HAC_CPE_CH CH835DRV.m Mon Nov 5 16:43:32 2018 UTC
2 CPEE_Build9_Sprint27.zip\HAC_CPE_CH CH835DRV.m Tue Nov 6 21:24:37 2018 UTC

3.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 9 2468
Changed 8 22
Inserted 0 0
Removed 0 0

3.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

3.4 Active regular expressions

No regular expressions were active.

3.5 Comparison detail

  1   CH835DRV ; HR/JBM;Jun  26, 2018@ 12:29:07
  2    ;;1.0;CHA MPVA SYSTE M;**1**;JU LY 4, 1990 ;Build 1
  3    ;HR - Tea m Track #:  5592;;;;; Build 11
  4    ;HR - New  835 Routi ne that re places the  old CHEDI * Routines
  5    ;TT MTN01 5348: Adde d ADHOC ve ndor updat e - JEH 7/ 27/12
  6    ;TST15525  DLB BEEFE D UP THE " RERUN" CAP ABILITY TO  RE-GENERA TE LOST 83 5 FLAT FIL ES
  7    ; DLB ENH ANCEMENT:   12/5/2012  ADDED CAP ABILITY TO  SEND EMAI L TO TEST  ENGINEER T O REPORT B ALANCE ERR ORS
  8    ;                    RECORDED A ND SITTING  IN QUEUE  TO BE SENT  IN 835
  9    ; DLB 01/ 09/2013 DE V7820  MOD IFIED THE  "NEWFILE"  FUNCTION,  THE STATUS  CHANGE IS  NOW DONE
  10    ;               IN C H835F1.INT , IN FMSLO OP, EACH S TATUS IS C HANGED AS  THE RECORD  IS
  11    ;               WRIT TEN TO THE  FILE
  12    ; DLB 02/ 07/2013 MO VED FUNCTI ON FROM "D EV" TO "DE VSLA"
  13    ; SBB 11/ 22/2013 DE F016554 Mo dified Wri ting to a  file as pe r VHA stan dard.
  14    ; 12/11/2 013  DLB M ODIFIED TH E CHECK NU MBER TEST  TO HANDLE  "0" PAY (< 1.00 CALCU LATED PAYM ENT) FOR Q UEING 835s
  15    ; DLB 1/1 6/2014 ENA BLED CALL  TO BALRPT( ), WHICH S ENDS EMAIL  REPORTING  BALANCE E RRORS
  16    ; DLB 1/1 6/2014 DIS ABLED THE  CHKNUM() F UNCTION TO  INHIBIT 8 35 GENERAT ION UNTIL  CHECK/EFT  NUMBERS AV AILABLE
  17    ; 12/3/20 15 SLT ERA  COMPLIANC E - VALID  CARCS/RARC S
  18    Q
  19    ;
  20    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;
  21    ; EPALL L OOPS THROU GH ALL THE  ACTIVE EN TRIES IN T HE ^CHMEDI PA() GLOBA L
  22    ; AND CAL LS THE EP( ) FUNCTION  TO GENERA TE THE 835  FOR THE S UBMITTING
  23    ; ENTITY  FROM THE G LOBAL.
  24    ; 2/18/20 13 ^CHMEDI PA():
  25    ; ^CHMEDI PA(0)="HAC  EDI 835 E NTITY^7410 03^4^4"
  26    ; ^CHMEDI PA(1,0)="S XC PHARMAC Y^1^SXCNET ^SXCRX^CH8 35EI^HAC_H FS$:[X12OC R.IN]^SXCN ET^1559150 000"
  27    ; ^CHMEDI PA(2,0)="E MDEON CLAI MS^1^W8414 6^ENV^CH83 5EI^HAC_HF S$:[X12OCR .IN]^W8414 6^18414698 24"
  28    ; ^CHMEDI PA(3,0)="S XC 837P CL AIMS^0^S55 915^SXCACH ^CH835EI^H AC_HFS$:[X 12OCR.IN]^ S55915^155 9150000"
  29    ; ^CHMEDI PA(4,0)="E MDEON MEDC OB CLAIMS^ 1^C74161^M EDCOB^CH83 5EI^HAC_HF S$:[X12OCR .IN]^C7416 1^17416122 29"
  30    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;
  31    ; NOTE: F IELD 2=1 I NDICATES T HE ENTITY  IS "ACTIVE ". THIS FI ELD IS TES TED IN THE
  32    ; EP(ENTI TY INDEX)  FUNCTION S O AS NOT T O DUPLICAT E THE CHEC K.
  33    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;
  34    ;
  35   EPALL ;ENT RY POINT T O PROCESS  835 FILES  FOR ALL AC TIVE SUBMI TTER ENTIT IES
  36    N EI
  37    ;Get acti ve 835 ent ities to p rocess
  38    S EI=0
  39    F  S EI=$ O(^CHMEDIP A(EI)) Q:E I'?1N  D ;  HAC EDI 8 35 ENTITY  FILE
  40    .D EP(EI)                                  ; GENERATE  EACH SUBM ITTER'S FI LE
  41    Q
  42    ;
  43    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;
  44    ; ENTRY P OINT TO GE NERATE AN  835 FILE F OR A SPECI FIC SUBMIT TER ENTITY
  45    ; USER PR OVIDES THE  SUBMITTER  FOR WHICH  TO GENERA TE THE FIL E FROM ^CH MEDIPA()
  46    ;^CHMEDIP A(0)="HAC  EDI 835 EN TITY^74100 3^4^4"
  47    ;^CHMEDIP A(1,0)="SX C PHARMACY ^1^SXCNET^ SXCRX^CH83 5EI^HAC_HF S$:[X12OCR .IN]^SXCNE T^15591500 00"
  48    ;^CHMEDIP A(2,0)="EM DEON CLAIM S^1^W84146 ^ENV^CH835 EI^HAC_HFS $:[X12OCR. IN]^W84146 ^184146982 4"
  49    ;^CHMEDIP A(3,0)="SX C 837P CLA IMS^1^S559 15^SXCACH^ CH835EI^HA C_HFS$:[X1 2OCR.IN]^S 55915^1559 150000"
  50    ;^CHMEDIP A(4,0)="EM DEON MEDCO B CLAIMS^1 ^C74161^ME DCOB^CH835 EI^HAC_HFS $:[X12OCR. IN]^C74161 ^174161222 9"
  51    ;^CHMEDIP A("B","EMD EON CLAIMS ",2)=""
  52    ;^CHMEDIP A("B","EMD EON MEDCOB  CLAIMS",4 )=""
  53    ;^CHMEDIP A("B","SXC  837P CLAI MS",3)=""
  54    ;^CHMEDIP A("B","SXC  PHARMACY" ,1)=""
  55    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;
  56    ;
  57   EP(INEI) ;  Entry poi nt to run  a single 8 35 file
  58    ; INEI  -  ^CHMEDIPA (I) INDEX
  59    D INIT
  60    Q:'$D(^CH MEDIPA(INE I))                           ;  EXIT IF IN VALID INDE X PROVIDED
  61    Q:$P(^CHM EDIPA(INEI ,0),"^",2) '=1                ;  EXIT IF EN TITY ENTRY  IS NOT "A CTIVE"
  62    D MAIN(IN EI)                                      ;  GENERATE F ILE FOR EN TITY INDEX
  63    Q
  64    ;
  65    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;
  66    ; RERUN E NTRY POINT  TO RE-CRE ATE A PREV IOUSLY GEN ERATED 835  FILE
  67    ; THE TAR GET DIRECT ORY: HAC_H FS$:[X12OC R.IN]
  68    ; A MENU  LIST OF PR EVIOUSLY G ENERATED F ILES AND I NDEXES IS  DISPLAYED  TO
  69    ; ASSIST  THE USER I N SELECTIN G THE DESI RED FILE T O REGENERA TE.
  70    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;
  71    ;
  72   RERUN(FILE I) ;E.P. R erun 835 f ile for SX C Network  Pharmacy c laims
  73    N EI
  74    D INIT                                         ; HOUS ECLEANING  AND SETUP  FUNCTION
  75    S DT=TODA Y
  76    S:'$D(FIL EI) FILEI= $$GETFILE  Q:FILEI=""   ; USER S ELECTION F OR FILE TO  GENERATE
  77    S EI=$P($ G(^CHMEDIF (FILEI,0)) ,"^",3)      ; RETRIE VE THE ENT ITY INDEX  FOR THE FI LE
  78    D FCREATE (EI,FILEI, "R")                    ; RE-CRE ATE THE FI LE
  79    I ($D(^TM P($J,"BALE RR")))!($D (^TMP($J," NOEFT")))   D     ; L OG EFT/BAL ANCE ERROR  IN THIS R UN
  80    .D DMP835 ERR(FILEI)                         ; LOG EF T, BALANCE  ERRORS FO R THIS RUN
  81    Q
  82    ;
  83    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;
  84    ; EPREJ(R EJCODE)  C ONVERT THE  REJECT CO DE FROM ^C HMPAY() TO  THE "CROS SWALK"
  85    ; VALUES  EXPECTED I N THE 835  FILE
  86    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;;
  87    ;
  88   EPREJ(REJC ODE)
  89    ; REJCODE  INTERNAL  REJECT COD E FOR CLAI M FROM THE  ^CHMPAY()  FILE
  90    D CNVRJCD ^CH835F2(R EJCODE)
  91    Q
  92    ;
  93    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;
  94    ; EPCLMS( FILEI)  OU TPUT THE L IST OF CLA IM NUMBERS  FOR A GIV EN FILE IN DEX
  95    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;
  96    ;
  97   EPCLMS(FIL EI)
  98    ; FILEI I NDEX TO ^C HMEDIF() F ILE
  99    N EDII,ED IJ,PAYI,CI CMPDT,CNT
  100    S EDII=0, CNT=0
  101    F CNT=1:1   S EDII=$ O(^CHMEDI( "G",FILEI, EDII)) Q:+ (EDII)=0   D       ;  LOOP THRU  THE "EDI 8 35 FILE IN DEX #"s
  102    .S EDIJ=0
  103    .F  S EDI J=$O(^CHME DI(EDII,1, EDIJ)) Q:+ (EDIJ)=0   D                   ;  LOOP THRU  "J" INDEX ES
  104    ..S PAYI= $P($G(^CHM EDI(EDII,1 ,EDIJ,0)), "^",1)                         ;  RETRIEVIN G THE POIN TER->^CHMP AY()
  105    ..U 0 W ! ,"CLAIM SO RT FOR FIL EI= ",FILE I," EDII=  ",EDII,"   EDIJ= ",ED IJ," CLAIM  NUMBER= " ,$P(^CHMPA Y(PAYI,0), "^",1)
  106    Q
  107    ;
  108    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;
  109    ; INIT FU NCTION PER FORMS CLEA NUP AND FI LE RUN DAT E:TIME
  110    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;
  111    ;
  112   INIT ;
  113    K ^TMP($J )  ; temp  global sto re valid F MSdoc IDs  or those t hat have E FT error
  114    S POP=0
  115    D NOW^%DT C
  116    S TODAY=X                           ; DATE  OF 835 RE CORD/FILE  GENERATION
  117    Q
  118    ;
  119    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;
  120    ; MAIN PR OCESSING L OOP FOR TH E 835 GENE RATION
  121    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;
  122    ; 1/29/20 15  DLB  A DDED THE " ENTITY IND EX" VALUE  TO THE BAL RPT() FUNC TION CALL
  123    ; TO ALLO W THE CLAI M TYPE TO  BE ADDED T O THE BALA NCE ERROR  REPORT EMA IL
  124    ; BUSINES S GROUP WA S CONFUSED  AS TO THE  SOURCE OF  THE BALAN CE ERRORS
  125    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;
  126    ;
  127   MAIN(INEI)                                  ;Loop thru  CHMEDI()  "NEEDS SEN T" ENTRIES  FOR ENTIT Y
  128    N FILEI,C LMCNT
  129    D LOOP(IN EI)                              ;LOAD ^TMP ($J,"VALID 835",EI) w ith FMSDOC  ids that  need 835 s ent
  130    S FILEI=$ $NEWFILE(I NEI)         ; SET UP  ^CHMEDIF( ) FILE, ^T MP($J,"VAL ID835",EI, I)
  131    D FCREATE (INEI,FILE I,"P")       ; OPEN/C REATE THE  835 FILE F OR THE ENT ITY
  132    I $D(^TMP ($J,"NOEFT ")) D       ; JEH 7/2 7/12 MTN01 5348
  133    .D EFTERR ^CH835EFT                        ; SEND EMA IL NOTIFIC ATION OF M ISSING EFT  INFO
  134    .D ^CH835 VUP                              ; AUTOMATE D EFT UPDA TE FUNCTIO N
  135    I ($D(^TM P($J,"BALE RR")))!($D (^TMP($J," NOEFT")))  D ; LOG EF T/BALANCE/ CARC ERROR  IN THIS R UN
  136    .D BALRPT (INEI)                           ; CURRENTL Y BALANCE  ERRORS ARE  NOT REPOR TED (ENABL ED 1/16/20 14: DLB)
  137    I $D(^TMP ($J,"CARCE RR")) D
  138    .D CARCRP T(INEI)
  139    I $D(^TMP ($J,"RARCE RR")) D
  140    .D RARCRP T(INEI)
  141    I ($D(^TM P($J,"BALE RR")))!($D (^TMP($J," NOEFT")))! ($D(^TMP($ J,"CARCERR ")))!($D(^ TMP($J,"RA RCERR")))  D
  142    .D DMP835 ERR(FILEI)              ; LOG EF T, BALANCE  ERRORS FO R THIS RUN  IF NOT "L IVE" ENV
  143    D CLEANUP
  144    Q
  145    ;
  146   CLEANUP
  147    I $$ENVIR ^CHTFLIB=" LIVE"  K ^ TMP($J) ;  KILL ^TMP  ARRAY(S) C REATED FOR  THIS PROC ESS ($J) I F IN "LIVE "
  148    C:$D(LOG8 35) LOG835
  149    Q
  150    ;
  151    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;
  152    ; Loop th ru CHMEDI  nodes for  835 STATUS =NEEDS 835  SENT
  153    ; OPTIONA L: loop th ru those t hat have b alance err ors and tr y to send
  154    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;
  155    ; This is  the contr ol loop fo r generati ng the 835  records/f iles (CHME DI(I,0))
  156    ; 1) LOOP  THROUGH T HE CHMEDI( "D",0,I) ( NEEDS SENT  STATUS) X REF FOR CL AIMS,
  157    ;    CREA TING THE ^ TMP($J,"VA LID835",EI ,I) ARRAY  FOR ALL VA LID ENTRIE S FOR THE
  158    ;  835 PR OCESS.
  159    ; 2) Veri fy that th e Claim Su bmitter (E ntity) is  the curren t valid EN TITY
  160    ; 3) If E lectronic  Fund Trans fer, verif y Banking  Informatio n/address
  161    ;  No 835  records g enerated i f missing  Banking in fo
  162    ;     Set s up NOEFT  node in T MP global. .IE ^TMP($ J,"NOEFT", VID)
  163    ; 4) Veri fy the Cla im balance s
  164    ;  No 835  records w ill be gen erated for  unbalance d claims
  165    ;  Sets t he ^CHMEDI  Status=2   (835 Bala nce Error)
  166    ; NOTE: C LAIMS WITH  MISSING E FT INFO RE MAIN IN TH E "NEEDS S ENT" STATU S
  167    ; SO THAT  WHEN THE  EFT DATA I S PROVIDED , THE 835  RECORD WIL L BE GENER ATED
  168    ; AN EMAI L IS SENT  TO THE PRO PER PARTIE S TO INFOR M HAC THAT  THE EFT I NFO
  169    ; IS MISS ING.
  170    ;  CLAIMS  WITH BALA NCE ERRORS  REQUIRE A TTENTION T O "FIX" TH E ERROR.
  171    ; AN EMAI L IS SENT  NOTIFYING  THE PROPER  PARTIES T HAT A BALA NCE ERROR  HAS
  172    ; BEEN EN COUNTERED.
  173    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;
  174    ;
  175   LOOP(INEI)
  176    N I,EI
  177    S I=0
  178    F  S I=$O (^CHMEDI(" D",0,I)) Q :'I  D   ;  "needs se nt" status  index
  179    .S EI=$$G ETEI^CH835 EI(I)                 ; RETRIEVE  THE CLAIM  SUBMITTIN G ENTITY
  180    .Q:((EI=" ")!(EI'=IN EI))                  ; SKIP 835  GENERATIO N IF INVAL ID ENTITY  INFO
  181    .Q:$$NOEF T^CH835EFT (I)                   ; SKIP 835  GENERATIO N IF REQUI RED BANK E FT INFO MI SSING
  182    .Q:$$CHKN UM(I)=0                                  ;  SKIP 835 G ENERATION  IF CHECK N UMBER IS M ISSING (EN ABLED 3/12 /2014: DLB )
  183    .S ^TMP($ J,"VALID83 5",EI,I)=" "          ; CREATE A RRAY CONTA INING ENTR IES TO HAV E 835 RECO RDS BUILT
  184    Q
  185    ;
  186    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;
  187    ; CHKNUM( ) RETURNS  A BOOLEAN  FOR THE CH ECK NUMBER  AVAILABLE
  188    ; 12/11/2 013  DLB M ODIFIED TH E TEST FOR  CHECK NUM BER TO HAN DLE "0" PA Y
  189    ; 12/11/2 013  DLB A DDED CODE  TO RETURN  "0" (IF TH E CALCULAT ED PAYMENT
  190    ; IS >= $ 1.00, BUT  THE CHECK  NUMBER HAS  NOT BEEN  RECEIVED F ROM AUSTIN )
  191    ; IF THE  CALCULATED  AMOUNT IS  <$1.00, R ETURN THE  FMS DOC ID  (THIS IND ICATES
  192    ; A NON Z ERO RETRN,  WHICH ALL OWS THE CL AIM TO BE  QUE'D FOR  835 GENERA TION.
  193    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;
  194    ;
  195   CHKNUM(EDI I)
  196    ; EDII IN DEX INTO ^ CHMEDI()
  197    N EDIJ,PA YI,CHKNUM
  198    S (CHKNUM ,EDIJ)=0
  199    S EDIJ=$O (^CHMEDI(E DII,1,EDIJ )) Q:+(EDI J)=0             ; JU ST NEED ON E PAYI IND EX, CALCPM T() GETS M ULTIPLES
  200    S PAYI=$P ($G(^CHMED I(EDII,1,E DIJ,0)),"^ ",1)             ; RE TRIEVING T HE POINTER ->^CHMPAY( )
  201    I PAYI  D
  202    .S RESULT =$$CALCPMT ^CH835F1(P AYI)                                          ; DETERM INE IF PAY MENT IS TO  BE MADE
  203    .I ($P(RE SULT,"^",1 )>0.99)&($ P(RESULT," ^",2)>0.99 ) D  ; AMT  TO BE PAI D (PIECE 1 ) AND PAID  TO VENDOR  (PIECE 2)  BOTH > 0. 99
  204    ..S CHKNU M=$P($G(^C HMPAY(PAYI ,1)),"^",1 6)                        ; GET  VENDOR TRE ASURY CHEC K / EFT NU MBER
  205    ..S:CHKNU M="" CHKNU M=0                                                                       ;  IF CHECK N UMBER NOT  POPULATED  (NULL) RET URN 0 (WAI TING FOR C HECK #)
  206    .E  S CHK NUM=1                                                                                         ; NO  CHECK NUM BER REQUIR ED, RETURN  TRUE (GO  AHEAD & RE PORT
  207    Q CHKNUM                                                                                                ; 0= NO CHECK N UMBER, NON -ZERO PAYM ENT GET FM S DOC ID
  208    ;
  209    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;
  210    ; RECORD  THE BALANC E ERROR IN  ^CHMEDI()  STATUS  R ETIRED 1/1 /2013
  211    ;
  212    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;
  213    ;
  214   BALERR(I)  ; Set stat us to bala nce error  and set th e balance  error date
  215    ; I ^CHME DI "I" IND EX
  216    Q:$P($G(^ CHMEDI(I,0 )),"^",2)= 2    ; EXI T IF Alrea dy recorde d as a bal ance error
  217    N ARR,RES ULT,PAYI,C LM,FMSDOCI D
  218    S (RESULT ,PAYI,CLM) =""
  219    D NOW^%DT C                                                 ; GE T TODAY'S  DATE
  220    S TODAY=X                                                   ; DA TE BALANCE  ERROR REC ORDED
  221    S ARR(.02 )=2                                      ;  SET STATUS  TO BALANC E ERROR
  222    S ARR(.07 )=TODAY                                  ;  SET DATE B ALANCE ERR OR ENCOUNT ERED
  223    S RESULT= $$UPDATE^C HHRLIBFM(" CHMEDI(I,0 )",I,$$SET DR^CHHRLIB FM("ARR"))
  224    S FMSDOCI D=$P(^CHME DI(I,0),"^ ",1)
  225    S CHPDI=$ $FMSTOPDI( FMSDOCID)
  226    S PAYI=0, PAYI=$O(^C HMPAY("C", PDI,PAYI))  ; ^CHMPAY  "I" INDEX
  227    S:PAYI CL M=$P(^CHMP AY(PAYI,0) ,"^",1)  ;  INTERNAL  HAC CLAIM  NUMBER
  228    S ^TMP($J ,"BALERR", CHPDI)=CHP DI_"^"_CLM _"^"_I_"^" _TODAY
  229    Q
  230    ;
  231    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;
  232    ; FUNCTIO N TO ADD N EW FILE ID s TO THE ^ CHMEDIF()  FILE. THIS  FUNCTION  IS
  233    ; CALLED  FOR THE EP ALL AND EP  ENTRY POI NTS. NOT R EQUIRED FO R THE RERU N
  234    ; PROCESS .
  235    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;
  236    ; 9/17/20 13  DLB AD DED FILEI  AND I TO " NEW" LIST
  237    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;
  238    ;
  239   NEWFILE(EI ) ;Create  a new file  and load  FMSDOC id' s from TMP  global.
  240    N DT,DTIM E,TIME,I,F ILEI
  241    S TIME=0
  242    L ^CHMEDI F(0)
  243    S FILEI=$ P(^CHMEDIF (0),"^",3)  S:'FILEI  FILEI=0  ;  CURRENT I NDEX TO ^C HMEDIF()
  244    S FILEI=F ILEI+1                                                              ; ADD ON E TO THE C URRENT IND EX
  245    S $P(^CHM EDIF(0),"^ ",3)=FILEI ,$P(^CHMED IF(0),"^", 4)=FILEI L   ; NEW IN DEX STORED
  246    F  Q:TIME   D
  247    .D NOW^%D TC
  248    .S DTIME= %
  249    .I '$D(^C HMEDIF("B" ,DTIME)) S  TIME=1
  250    S DT=X
  251    S ^CHMEDI F("B",DTIM E,FILEI)=" "                                    ; SET  THE "B" CR OSS REFERE NCE (PROCE SS DATE)
  252    S ^CHMEDI F("D",EI,F ILEI)=""                               ; SE T THE "D"  CROSS REFE RENCE (ENT ITY INDEX)
  253    S $P(^CHM EDIF(FILEI ,0),"^",3) =EI                         ; PO INTER TO ^ CHMEDIPA()
  254    S $P(^CHM EDIF(FILEI ,0),"^",1) =DTIME             ;  PROCESS DA TE/TIME
  255    ;set stat us to inpr ogrss and  set x-ref
  256    S $P(^CHM EDIF(FILEI ,0),"^",2) =0                          ; IN  PROGRESS( 0)/COMPLET E STATUS(1 )
  257    S ^CHMEDI F("C",0,FI LEI)=""                                         ; SET  THE "C" CR OSS REFERE NCE (STATU S XREF)
  258    ; Now loa d the clai ms into TH E FILE
  259    S I=""
  260    L +(^CHME DI(I))                                                              ; LOCK F ILE TO ALL OW FOR PAR ALLEL PROC ESSING
  261    F  S I=$O (^TMP($J," VALID835", EI,I)) Q:I =""  D  ;  LOOP ON ST ORED ^CHME DI() I IND EX (FROM L OOP FUNCTI ON)
  262    .Q:$P(^CH MEDI(I,0), "^",2)'=0                                       ; QUIT  IF STATUS '= "NEEDS  SENT"
  263    .S ^CHMED I("D",0,I) =""                                                      ; SET TH E "NEED SE NT" STATUS  XREF
  264    .S $P(^CH MEDI(I,0), "^",6)=FIL EI                          ; RE TRIEVE POI NTER TO ^C HMEDIF()
  265    .S ^CHMED I("G",FILE I,I)=""                                         ; SET  THE "G" XR EF (STORE  INDEXES FO R FILE NUM BER)
  266    L -(^CHME DI(I))                                                              ; UNLOCK  FILE AFTE R SETUPS
  267    Q FILEI
  268    ;
  269    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;
  270    ; CREATE  THE TARGET  FILENAME  AND OPEN T HE FILE IN  THE "HAC_ HFS$:[X12. OCR]"
  271    ; DIRECTO RY FOR ALL  ENTRY POI NTS.
  272    ; THE CHP ID USED HE RE IS NOT  CARRIED TH ROUGH FOR  835 PROCES SING, AS D ENTAL CLAI MS
  273    ; CAN/WIL L BE SUBMI TTED WITH  THE MEDICA L CLAIMS,  BUT MUST B E DIFFEREN TIATED
  274    ; IN THE  FINAL 835  EXTRACT.
  275    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;
  276    ;
  277   FCREATE(EI ,FILEI,CAL LER) ;Crea tes the ac tual 835 f ile
  278    ; EI ENTI TY INDEX   (USED IN N AMING THE  OUTPUT FIL E
  279    ; FILEI F ILE INDEX  TO GENERAT E
  280    ; CALLER  "P" FOR PR ODUCTION,  "R" FOR RE RUN
  281    N CHPID,F NAME,EFN,C LMCNT
  282    S ENTINFO =$G(^CHMED IPA(EI,0))  Q:ENTINFO =""     ;  LOAD EDI 8 35 ENTITY  DATA
  283    S FNAME=$ P(ENTINFO, "^",3)                                          ; FILE NAME
  284    S EFN=$P( ENTINFO,"^ ",3)
  285    S DIR=$P( ENTINFO,"^ ",6)                                            ; TARG ET DIRECTO RY FROM CH MEDIPA
  286    S:DIR=""  DIR="HAC_H FS$:[X12OC R.IN]"             ;  DEFAULT OU TPUT DIREC TORY
  287    S CHPID=$ P(ENTINFO, "^",7)                                          ; CLRH OUSE SHORT  NAME/PAYE R ID "C741 61","W8414 6","SXCNET "
  288    ;SBB; DEF 016554-12/ 24/13 - Ge tting UCI  for differ ent areas.
  289    X ^%ZOSF( "UCI") S U CI=$P(Y,", ",1)
  290    S FIO=DIR _CHPID_"_" _FILEI_".T XT"                         ; CR EATE FULL  PATH/FILEN AME STRING
  291    S FNAME=E FN_"_835_" _FILEI_".8 35"
  292    ;I UCI'=" HAC" S FIO =DIR_CHPID _"_"_FILEI _"_"_UCI_" .TXT",FNAM E=EFN_"_83 5_"_FILEI_ "_"_UCI_". 835"  ; DL B 2/12/201 4 DO NOT W ANT ENV ID  IN FILENA ME
  293    ;SBB; DEF 016554-11/ 22/13 - Mo dified Wri ting to a  file as pe r VHA stan dard.
  294    ;O FIO:"N WS":10  Q: '$TEST                                          ; OPEN  / CHECK F OR SUCCESS
  295    I '$$OPEN FIWR^CHTFL IB9(.FIO," FIO") Q
  296    I CALLER= "R" U 0 W  !,"RERUN " ,FIO                        ; RE RUN IS NOT  DONE BY B ATCH, SO O UTPUT DATA
  297    D SORT^CH 835F1(FILE I)                                                       ; SORT C LAIMS FOR  THE SELECT ED CLEARIN GHOUSE
  298    S CLMCNT= $$FMSLOOP^ CH835F1(FI LEI,EI)            ;  GENERATE T HE FILE
  299    ;DEF01655 4-11/22/13 -SBB use C LOSE^%ZISH  to close  file
  300    ;C FIO
  301    D CLOSEF^ CHTFLIB9(F IO,"FIO")
  302    I CALLER= "R" U 0 W  !,"CLOSED  ",FIO," CL AIM COUNT=  ",CLMCNT
  303    C:$D(LOG8 35) LOG835
  304    Q
  305    ;
  306    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;
  307    ; GETFILE  FUNCTION:   USED FOR  THE "RERU N" ENTRY P OINT
  308    ;                          DISP LAY THE LA ST 10 ENTI TY IDS FRO M THE ^CHM EDI FILE
  309    ;                          GET  THE USER S ELECTION F OR THE ENT ITY ID TO  RE-RUN
  310    ;                          RETU RN THE SEL ECTED & VA LIDATED EN TITY ID
  311    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;
  312    ;
  313   GETFILE()  ;
  314   START
  315    N DIR,PRE FIX,FNAME, IDX,FCNT,F ENT,FDATE, FSTAT,TMPI O,CLMCNT,E DII
  316    S IDX=999 9999999,FI LEI="",FCN T=0,TMPIO= $IO
  317    W !,"DISP LAYING PRE VIOUS ENTR IES IN ^CH MEDIF() FI LE: "
  318    W !,"FILE  ID",?12," PROCESSED" ,?25,"STAT US",?35,"C LAIM CNT", ?50,"ENTIT Y"
  319    F FCNT=1: 1 S IDX=$O (^CHMEDIF( IDX),-1) Q :'IDX  Q:$ L(FILEI)=4   D
  320    .I (FCNT# 15)=0  R ! !,"Enter F ile ID: ", FILEI  Q:$ L(FILEI)=4   D
  321    ..W !,"FI LE ID",?12 ,"PROCESSE D",?25,"ST ATUS",?35, "CLAIM CNT ",?50,"ENT ITY"
  322    .S FENT=$ P(^CHMEDIF (IDX,0),"^ ",3) Q:FEN T=""  ; GE T ONLY ENT RIES THAT  HAVE ENTIT Y VALUE
  323    .S FDATE= $$DTCVRT^C HMXWBUT($P ($P(^CHMED IF(IDX,0), "^",1),"." ,1))
  324    .S FSTAT= $$GETDESC^ CHHRLIBFM( 741207.02, .02,$P(^CH MEDIF(IDX, 0),"^",2), 0)
  325    .I $D(^CH MEDI("G",I DX))  D
  326    ..S EDII= 0,EDII=$O( ^CHMEDI("G ",IDX,EDII ))
  327    ..S EDITM P=EDII  F  CLMCNT=1:1  S EDITMP= $O(^CHMEDI ("G",IDX,E DITMP)) Q: +(EDITMP)= 0
  328    ..W !,IDX ,?12,FDATE ,?25,$E(FS TAT,1,4),? 35,CLMCNT, ?50,$E($P( ^CHMEDIPA( FENT,0),"^ ",1),1,13)
  329    S FILE=""  S POP=1
  330    I '$D(^CH MEDIF(FILE I)) W !,"  <Invalid ^ CHMEDIF(IN DEX)> ",FI LEI,!! G S TART
  331    S EI=$P($ G(^CHMEDIF (FILEI,0)) ,"^",3)
  332    I EI="" W  !," <Inva lid PIECE  3>",""  G  START
  333    S ENTINFO =$G(^CHMED IPA(EI,0))
  334    I ENTINFO ="" W !,"  <Invalid E NTINFO>"," "  G START
  335    S DIR=$P( ENTINFO,"^ ",6)                                                     ; GET TA RGET DIR F ROM ^CHMED IPA
  336    S:DIR=""  DIR="HAC_H FS$:[X12OC R.IN]"                      ; DE FAULT IF N OT IN CHME DIPA
  337    S PREFIX= $P(ENTINFO ,"^",7)                                                  ; GET TA RGET FILEN AME FROM ^ CHMEDIPA
  338    S FNAME=D IR_PREFIX_ "_"_FILEI_ ".TXT"
  339    U 0 W !," GENERATING : ",FNAME  U TMPIO
  340    Q FILEI
  341    ;
  342    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  343    ; RETRIEV E A PDI FR OM FMSDOCI D  (MAY HA VE MULTIPL E PDIs ASS OCIATED)
  344    ; ALTERNA TIVE LOOKU P FUNCTION ALITY: CHF MSLK.INT   (FMS DOC I D/CHECK NU M/CLM NUM)
  345    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  346    ;
  347   FMSTOPDI(C HFMS)
  348    ; CHFMS F MS DOC ID  SEARCH VAL UE
  349    Q:'$D(^CH MEDI("B",C HFMS)) 0                                                 ; NO XRE F TO RETRI EVE PDI
  350    N PDI,CLM PTR,IDX,JD X,CNT,PDIA RR
  351    S (IDX,JD X,CNT)=0,P DIARR=""
  352    F  S IDX= $O(^CHMEDI ("B",CHFMS ,IDX)) Q:' IDX  D                    ; FMS  DOC IDS AR E UNIQUE
  353    .F  S JDX =$O(^CHMED I(IDX,1,JD X)) Q:'JDX   D
  354    ..S CLMPT R=$P(^CHME DI(IDX,1,J DX,0),"^", 1)                        ; GET  THE POINTE R INTO ^CH MPAY()
  355    ..I CNT=0   S PDIARR =$P($P(^CH MPAY(CLMPT R,0),"^",4 ),"*",1)
  356    ..E  S PD IARR=PDIAR R_","_$P($ P(^CHMPAY( CLMPTR,0), "^",4),"*" ,1)  ; GET  PDI VALUE S FOR FMS  DOC ID
  357    ..S CNT=C NT+1
  358    Q PDIARR
  359    ;
  360     ;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;
  361    ; GIVEN T HE PATIENT  CONTROL N UMBER (PCN ), RETRIEV E THE PDIs  GENERATED  FOR THAT
  362    ; PCN. TH IS FUNCTIO N USES THE  UNDOCUMEN TED STORAG E:
  363    ; ^CHMXCL E("CLM-CTR L-NO",PCN, PDI,CHMXCL I,CHMXCLAI ,CHMXCLBI, CHMXCLCI,C HMXCLEI)
  364    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  365    ;
  366   PCNTOPDI(C HPCN,PCNAR R)
  367    ; CHPCN T HE PROVIDE R SUPPLIED  CLAIM/PAT IENT IDENT IFIER
  368    ; PCNARR  AN ARRAY T O CONTAIN  THE POSSIB LE PDI VAL UES ASSOCI ATED WITH  THE PCN
  369    N PDI,CHE I,CNT,RESU LT,PAYI,ST ATUS,DESC
  370    S RESULT= ""
  371    S (PDI,CN T)=0
  372    Q:'$D(^CH MXCLE("CLM -CTRL-NO", CHPCN)) PD I                         ; QUIT  IF NO ENT RY FOR PCN
  373    F  S PDI= $O(^CHMXCL E("CLM-CTR L-NO",CHPC N,PDI)) Q: 'PDI  D  ;  LOOP THRU  ALL PDI E NTRIES
  374    .S IDXSTR =^CHMIMAGE (PDI,"BUFF ")                                            ; CLAIM  BUFFER IND EXES
  375    .S PCNARR (CNT)=PDI_ "^"_IDXSTR                                                        ; SET UP A LL THE BUF FER INDEXE S
  376    .S CNT=CN T+1
  377    Q CNT
  378    ;
  379    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;
  380    ; DLB 12/ 5/2012
  381    ; BALRPT  SENDS AN E MAIL REPOR TING THE ^ CHMEDI()IN DEXES THAT  FAIL
  382    ; TO GENE RATE 835 R ECORDS DUE  TO BALANC E ERRORS.
  383    ; FORMAT  OF THE BAL ANCE ERROR  ARRAY:
  384    ; ^TMP($J ,"BALERR", CHPDI)=CHP DI_"^"_CLA IM_"^"_STA TUS_"^"_RE J INDEX_"^ "_REJCODE_ "^"_BILLED  AMT_"^"_P ROV PMT_"^ "_TOTAL CL PCAS AMT_" ^"_TOTAL S VCCAS AMT
  385    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;
  386    ;
  387   BALRPT(INE I)                      ;Email B ALANCE ERR OR INDEXES  TO OUTLOO K FROM ^TM P($J,"BALE RR",PDI) A RRAY
  388    N PID,ZML ,DATA,CHPD I,BERRCT,S UBJECT,TEX T,GROUP,CN T,Y,HACCLM ,LN,X,ULN
  389    S ULN="-"  F X=2:1:1 65 S ULN=U LN_"-"                                        ; LINE S EPARATOR,  CREATE LIN E
  390    K ^UTILIT Y($J,"BAL- ERR")
  391    D NOW^%DT C  ; EXTER NAL DATE/T IME
  392    S Y=% X ^ DD("DD")
  393    S (CNT,BE RRCT)=0
  394    S CNT=CNT +1,^UTILIT Y($J,"BAL- ERR",1,CNT ,0)=" "
  395    S CNT=CNT +1,^UTILIT Y($J,"BAL- ERR",1,CNT ,0)="                 BALANCE ER ROR REPORT  ...835 RE CORDS NOT  GENERATED! "
  396    S CNT=CNT +1,^UTILIT Y($J,"BAL- ERR",1,CNT ,0)="                 PROCESS ID : "_$J_"   PROCESS DA TE:TIME: " _Y    ; EX TERNAL DAT E AND TIME
  397    S CNT=CNT +1,^UTILIT Y($J,"BAL- ERR",1,CNT ,0)="                 CLAIM TYPE : "_$P(^CH MEDIPA(INE I,0),"^",1 )  ; CLAIM  TYPE
  398    S CNT=CNT +1,^UTILIT Y($J,"BAL- ERR",1,CNT ,0)=" "
  399    S REC=""
  400    F LN=1:1  S STR=$T(H DRTBL+LN)  Q:STR["END  OF RECORD "  D ; USE  THE $TEXT  "HDRTBL"  TO CREATE  REPORT HEA DER
  401    .S REC=RE C_$$FORMAT DATA^CHMXW BUT(STR)
  402    S CNT=CNT +1,^UTILIT Y($J,"BAL- ERR",1,CNT ,0)=REC          ; RE CORD THE C LAIM (PDI)  HEADER IN TO THE ARR AY
  403    S CNT=CNT +1,^UTILIT Y($J,"BAL- ERR",1,CNT ,0)=ULN          ; US E SEPARATO R FOR READ ABILITY
  404    S CHPDI=" "
  405    F  S CHPD I=$O(^TMP( $J,"BALERR ",CHPDI))  Q:+CHPDI=0   D
  406    .S DATA=$ G(^TMP($J, "BALERR",C HPDI))
  407    .S REC=""
  408    .F LN=1:1  S STR=$T( BALTBL+LN)  Q:STR["EN D OF RECOR D"  D ; US E THE $TEX T "BALTBL"  TO CREATE  REPORT RE CORDS
  409    ..S REC=R EC_$$FORMA TDATA^CHMX WBUT(STR)
  410    .S CNT=CN T+1,^UTILI TY($J,"BAL -ERR",1,CN T,0)=REC
  411    .S BERRCT =BERRCT+1                                                                            ;  COUNT # OF  PDIs WITH  BALANCE E RRORS
  412    .S HACCLM =0
  413    .F IDX=1: 1 S HACCLM =$O(^TMP($ J,"BALERR" ,CHPDI,HAC CLM)) Q:HA CCLM=""  D
  414    ..S SVCDA TA=^TMP($J ,"BALERR", CHPDI,HACC LM)
  415    ..I IDX=1   D                                                                                  ;  CREATE HEA DER FOR TH E FIRST SV C LINE BAL  ERR
  416    ...S REC= ""
  417    ...F LN=1 :1 S STR=$ T(SVCHDR+L N) Q:STR[" END OF REC ORD"  D ;  USE THE $T EXT "SVCHD R" TO CREA TE REPORT  HEADER
  418    ....S REC =REC_$$FOR MATDATA^CH MXWBUT(STR )
  419    ...S CNT= CNT+1,^UTI LITY($J,"B AL-ERR",1, CNT,0)=REC       ; RE CORD THE S VC LINE (L ICTRL) REC ORD INTO A RRAY
  420    ...S CNT= CNT+1,^UTI LITY($J,"B AL-ERR",1, CNT,0)=ULN       ; US E SEPARATO R FOR READ ABILITY
  421    ..S REC=" "
  422    ..F LN=1: 1 S STR=$T (SVCTBL+LN ) Q:STR["E ND OF RECO RD"  D ; U SE THE $TE XT "SVCTBL " TO CREAT E SVC BAL  ERR RECORD
  423    ...S REC= REC_$$FORM ATDATA^CHM XWBUT(STR)
  424    ..S CNT=C NT+1,^UTIL ITY($J,"BA L-ERR",1,C NT,0)=REC
  425    S CNT=CNT +1,^UTILIT Y($J,"BAL- ERR",1,CNT ,0)="TOTAL  NUMBER OF  BALANCE E RRORS: "_B ERRCT
  426    S SUBJECT ="CACHE 83 5 Balance  Error Repo rt"
  427    S TEXT="^ UTILITY($J ,""BAL-ERR "",1,"
  428    I $$ENVIR ^CHTFLIB() ="LIVE" D    ; FOR LI VE ENVIRON MENT DO TH ESE EMAILS
  429    .S LXMY(" G.BST")=""                       ; MAILMAN  GROUP EMAI L ADDRESS
  430    .S LXMY(" PII                ")=""           ; MICROSOF T GROUP EM AIL ADDRES SES
  431    .S LXMY("
P
I                  ")=""    ; MICROSOF T EMAIL AD DRESS
  432    E  D                                                        ; AL L OTHER EN VIRONMENTS  GET THESE  ADDRESSES
  433    .S LXMY(" G.EDI TECH  GROUP")=" "                           ; MA ILMAN GROU P QA TEST  EMAIL ADDR ESSES
  434    .S LXMY(" PII                     ")="" ; MI CROSOFT OU TLOOK EMAI L ADDRESS
  435    .S LXMY(4 33137)="", LXMY(46975 3)=""  ; M AILMAN "DU Z" EMAIL A DDRESSES
  436    D VMAIL(S UBJECT,TEX T,.LXMY)
  437    Q
  438    ;
  439    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;
  440    ; SLT 8/2 1/2015
  441    ; CARCRPT  SENDS AN  EMAIL REPO RTING THE  ^CHMEDI()I NDEXES THA T FAIL
  442    ; TO GENE RATE 835 R ECORDS DUE  TO CARC E RRORS.
  443    ; FORMAT  OF THE CAR C ERROR AR RAY:
  444    ; ^TMP($J ,"CARCERR" ,CHPDI)=CH PDI_"^"_CL AIM_"^"_ST ATUS_"^"_C ARC_"^"_ST DT_"^"_EDD T_"^"_CARC ...
  445    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;
  446    ;
  447   CARCRPT(IN EI)                              ;Email CAR C ERROR IN DEXES TO O UTLOOK FRO M ^TMP($J, "CARCERR", PDI) ARRAY
  448    N PID,ZML ,DATA,CHPD I,BERRCT,S UBJECT,TEX T,GROUP,CN T,Y,HACCLM ,LN,X,ULN
  449    S ULN="-"  F X=2:1:1 65 S ULN=U LN_"-"                                        ; LINE S EPARATOR,  CREATE LIN E
  450    K ^UTILIT Y($J,"CARC -ERR")
  451    D NOW^%DT C  ; EXTER NAL DATE/T IME
  452    S Y=% X ^ DD("DD")
  453    S (CNT,BE RRCT)=0
  454    S CNT=CNT +1,^UTILIT Y($J,"CARC -ERR",1,CN T,0)=" "
  455    S CNT=CNT +1,^UTILIT Y($J,"CARC -ERR",1,CN T,0)="                 CARC ERRO R REPORT . ..835 RECO RDS NOT GE NERATED!"
  456    S CNT=CNT +1,^UTILIT Y($J,"CARC -ERR",1,CN T,0)="                 PROCESS I D: "_$J_"   PROCESS D ATE:TIME:  "_Y    ; E XTERNAL DA TE AND TIM E
  457    S CNT=CNT +1,^UTILIT Y($J,"CARC -ERR",1,CN T,0)="                 CLAIM TYP E: "_$P(^C HMEDIPA(IN EI,0),"^", 1)  ; CLAI M TYPE
  458    S CNT=CNT +1,^UTILIT Y($J,"CARC -ERR",1,CN T,0)=" "
  459    S REC=""
  460    F LN=1:1  S STR=$T(C HDRTBL+LN)  Q:STR["EN D OF RECOR D"  D ; US E THE $TEX T "CHDRTBL " TO CREAT E REPORT H EADER
  461    .S REC=RE C_$$FORMAT DATA^CHMXW BUT(STR)
  462    S CNT=CNT +1,^UTILIT Y($J,"CARC -ERR",1,CN T,0)=REC         ; RE CORD THE C LAIM (PDI)  HEADER IN TO THE ARR AY
  463    S CNT=CNT +1,^UTILIT Y($J,"CARC -ERR",1,CN T,0)=ULN         ; US E SEPARATO R FOR READ ABILITY
  464    S CHPDI=" "
  465    F  S CHPD I=$O(^TMP( $J,"CARCER R",CHPDI))  Q:+CHPDI= 0  D
  466    .S DATA=$ G(^TMP($J, "CARCERR", CHPDI))
  467    .S REC=""
  468    .F LN=1:1  S STR=$T( CERRTBL+LN ) Q:STR["E ND OF RECO RD"  D ; U SE THE $TE XT "CERRTB L" TO CREA TE REPORT  RECORDS
  469    ..S REC=R EC_$$FORMA TDATA^CHMX WBUT(STR)
  470    .S CNT=CN T+1,^UTILI TY($J,"CAR C-ERR",1,C NT,0)=REC
  471    .S BERRCT =BERRCT+1                                                                            ;  COUNT # OF  PDIs WITH  CARC ERRO RS
  472    .S HACCLM =0
  473    .F IDX=1: 1 S HACCLM =$O(^TMP($ J,"CARCERR ",CHPDI,HA CCLM)) Q:H ACCLM=""   D
  474    ..S SVCDA TA=^TMP($J ,"CARCERR" ,CHPDI,HAC CLM)
  475    ..I IDX=1   D                                                                                  ;  CREATE HEA DER FOR TH E FIRST SV C LINE CAR C ERR
  476    ...S REC= ""
  477    ...F LN=1 :1 S STR=$ T(SVCCHDR+ LN) Q:STR[ "END OF RE CORD"  D ;  USE THE $ TEXT "SVCC HDR" TO CR EATE REPOR T HEADER
  478    ....S REC =REC_$$FOR MATDATA^CH MXWBUT(STR )
  479    ...S CNT= CNT+1,^UTI LITY($J,"C ARC-ERR",1 ,CNT,0)=RE C     ; RE CORD THE S VC LINE (L ICTRL) REC ORD INTO A RRAY
  480    ...S CNT= CNT+1,^UTI LITY($J,"C ARC-ERR",1 ,CNT,0)=UL N     ; US E SEPARATO R FOR READ ABILITY
  481    ..S REC=" "
  482    ..F LN=1: 1 S STR=$T (SVCCTBL+L N) Q:STR[" END OF REC ORD"  D ;  USE THE $T EXT "SVCCT BL" TO CRE ATE SVC CA RC ERR REC ORD
  483    ...S REC= REC_$$FORM ATDATA^CHM XWBUT(STR)
  484    ..S CNT=C NT+1,^UTIL ITY($J,"CA RC-ERR",1, CNT,0)=REC
  485    S CNT=CNT +1,^UTILIT Y($J,"CARC -ERR",1,CN T,0)="TOTA L NUMBER O F CARC ERR ORS: "_BER RCT
  486    S SUBJECT ="CACHE 83 5 CARC Err or Report"
  487    S TEXT="^ UTILITY($J ,""CARC-ER R"",1,"
  488    I $$ENVIR ^CHTFLIB() ="LIVE" D    ; FOR LI VE ENVIRON MENT DO TH ESE EMAILS
  489    .S LXMY(" G.BST")=""                       ; MAILMAN  GROUP EMAI L ADDRESS
  490    .S LXMY(" PII                ")=""           ; MICROSOF T GROUP EM AIL ADDRES SES
  491    .S LXMY("
P
I                  ")=""    ; MICROSOF T EMAIL AD DRESS
  492    E  D                                                        ; AL L OTHER EN VIRONMENTS  GET THESE  ADDRESSES
  493    .S LXMY(" G.EDI TECH  GROUP")=" "                           ; MA ILMAN GROU P QA TEST  EMAIL ADDR ESSES
  494    .S LXMY(" PII                     ")="" ; MI CROSOFT OU TLOOK EMAI L ADDRESS
  495    .S LXMY(4 33137)="", LXMY(46975 3)=""  ; M AILMAN "DU Z" EMAIL A DDRESSES
  496    D VMAIL(S UBJECT,TEX T,.LXMY)
  497    Q
  498    ;
  499   RARCRPT(IN EI)                              ;Email RAR C ERROR IN DEXES TO O UTLOOK FRO M ^TMP($J, "RARCERR", PDI) ARRAY
  500    ;
  501    N PID,ZML ,DATA,CHPD I,BERRCT,S UBJECT,TEX T,GROUP,CN T,Y,HACCLM ,LN,X,ULN
  502    S ULN="-"  F X=2:1:1 65 S ULN=U LN_"-"                                        ; LINE S EPARATOR,  CREATE LIN E
  503    K ^UTILIT Y($J,"RARC -ERR")
  504    D NOW^%DT C  ; EXTER NAL DATE/T IME
  505    S Y=% X ^ DD("DD")
  506    S (CNT,BE RRCT)=0
  507    S CNT=CNT +1,^UTILIT Y($J,"RARC -ERR",1,CN T,0)=" "
  508    S CNT=CNT +1,^UTILIT Y($J,"RARC -ERR",1,CN T,0)="                 RARC ERRO R REPORT . ..835 RECO RDS NOT GE NERATED!"
  509    S CNT=CNT +1,^UTILIT Y($J,"RARC -ERR",1,CN T,0)="                 PROCESS I D: "_$J_"   PROCESS D ATE:TIME:  "_Y    ; E XTERNAL DA TE AND TIM E
  510    S CNT=CNT +1,^UTILIT Y($J,"RARC -ERR",1,CN T,0)="                 CLAIM TYP E: "_$P(^C HMEDIPA(IN EI,0),"^", 1)  ; CLAI M TYPE
  511    S CNT=CNT +1,^UTILIT Y($J,"RARC -ERR",1,CN T,0)=" "
  512    S REC=""
  513    F LN=1:1  S STR=$T(R HDRTBL+LN)  Q:STR["EN D OF RECOR D"  D ; US E THE $TEX T "RHDRTBL " TO CREAT E REPORT H EADER
  514    .S REC=RE C_$$FORMAT DATA^CHMXW BUT(STR)
  515    S CNT=CNT +1,^UTILIT Y($J,"RARC -ERR",1,CN T,0)=REC         ; RE CORD THE C LAIM (PDI)  HEADER IN TO THE ARR AY
  516    S CNT=CNT +1,^UTILIT Y($J,"RARC -ERR",1,CN T,0)=ULN         ; US E SEPARATO R FOR READ ABILITY
  517    S CHPDI=" "
  518    F  S CHPD I=$O(^TMP( $J,"RARCER R",CHPDI))  Q:+CHPDI= 0  D
  519    .S HACCLM =0,BERRCT= 0
  520    .F IDX=1: 1 S HACCLM =$O(^TMP($ J,"RARCERR ",CHPDI,HA CCLM)) Q:H ACCLM=""   D
  521    ..S SVCDA TA=^TMP($J ,"RARCERR" ,CHPDI,HAC CLM)
  522    ..S REC=" ",BERRCT=B ERRCT+1
  523    ..F LN=1: 1 S STR=$T (SVCRTBL+L N) Q:STR[" END OF REC ORD"  D ;  USE THE $T EXT "SVCRT BL" TO CRE ATE SVC RA RC ERR REC ORD
  524    ...S REC= REC_$$FORM ATDATA^CHM XWBUT(STR)
  525    ..S CNT=C NT+1,^UTIL ITY($J,"RA RC-ERR",1, CNT,0)=REC
  526    S CNT=CNT +1,^UTILIT Y($J,"RARC -ERR",1,CN T,0)="TOTA L NUMBER O F RARC ERR ORS: "_BER RCT
  527    S SUBJECT ="CACHE 83 5 RARC Err or Report"
  528    S TEXT="^ UTILITY($J ,""RARC-ER R"",1,"
  529    I $$ENVIR ^CHTFLIB() ="LIVE" D    ; FOR LI VE ENVIRON MENT DO TH ESE EMAILS
  530    .S LXMY(" G.BST")=""                       ; MAILMAN  GROUP EMAI L ADDRESS
  531    .S LXMY(" PII                ")=""           ; MICROSOF T GROUP EM AIL ADDRES SES
  532    .S LXMY("
P
I                  ")=""    ; MICROSOF T EMAIL AD DRESS
  533    E  D                                                        ; AL L OTHER EN VIRONMENTS  GET THESE  ADDRESSES
  534    .S LXMY(" G.EDI TECH  GROUP")=" "                           ; MA ILMAN GROU P QA TEST  EMAIL ADDR ESSES
  535    .S LXMY(" PII                     ")="" ; MI CROSOFT OU TLOOK EMAI L ADDRESS
  536    .S LXMY(4 33137)="", LXMY(46975 3)=""  ; M AILMAN "DU Z" EMAIL A DDRESSES
  537    D VMAIL(S UBJECT,TEX T,.LXMY)
  538    Q
  539    ;
  540    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  541    ; EMAIL U TILITIES S END THE RE VERSAL INF ORMATION T O THE GROU PS DEFINED . THIS REP LACES
  542    ; INDIVID UAL EMAIL  ADDRESES T HAT REQUIR E OUTLOOK  CONNECTION S
  543    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  544    ;
  545   VMAIL(SUBJ ECT,TEXT,L XMY)
  546    ;  SUBJEC T  SUBJECT  LINE FOR  THE EMAIL
  547    ;  TEXT   TEXT FOR T HE EMAIL
  548    ;    LXMY    TARGETED R ECIPIENTS  FOR THE EM AIL (S LXM Y="DUZ" (M AILMAN),LX MY=" PII                " (MAILMAN ),LXMY("
P
I                  ")=""(OUTL OOK))
  549    N EMLID
  550    S U="^"
  551    S DUZ=.5                                                             ; DEFA ULT DUZ
  552    S XMDUZ=. 5                                                          ; POST MAN DUZ
  553    S XMSUB=S UBJECT                                            ; SE T SUBJECT  LINE FOR E MAIL
  554    S XMTEXT= TEXT                                                       ; SET  TEXT ARRAY  FOR BODY  OF EMAIL
  555    S EMLID=0
  556    F  S EMLI D=$O(LXMY( EMLID)) Q: EMLID=""   D
  557    .S XMY($S (EMLID?1.N :$P(^VA(20 0,EMLID,0) ,"^",1),1: EMLID))=""
  558    D ^XMD                                                                        ; SEND I T OFF
  559    Q
  560    ;
  561    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  562    ; HEADER  LINE FOR B ALANCE ERR OR REPORTI NG
  563    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  564    ;
  565   HDRTBL ;;" FIELD NAME ";"TARGET  VALUE";"MI N FIELD LE NGTH";"JUS TIFY FLAG" ;"PAD CHAR ";"DATA PA TTERN";FIE LD USE
  566    ;;1. PDI; "PDI";17;C ; ;3A;R;
  567    ;;2. HACC LM;"HAC CL M #";12;L;  ;7AN;R;
  568    ;;3. STAT US;"STATUS ";8;C; ;2N ;R;
  569    ;;4. REJ  INDEX;"REJ I";6;C; ;3 N;O;
  570    ;;5. REJ  CODE;"REJC D";7;C; ;3 N;O;
  571    ;;6. BILL ED AMT;"BI LL AMT";12 ;R; ;10.2F P;R;
  572    ;;7. PROV IDER PMT;" PROV PMT"; 12;R; ;8.2 FP;R;
  573    ;;8. CLPC AS AMT;"CL PCAS AMT"; 12;R; ;8.2 FP;R;
  574    ;;9. SVCC AS AMT;"SV CCAS AMT"; 12;R; ;8.2 FP;R;
  575    ;;10. BAL  ERR;"BAL  ERR";12;R;  ;8.2FP;R
  576    ;;11. BAL  ERR DATE; "DATE";16; R; ;10AN;R
  577    ;;12. PAY MENTS;"CHK  VS SUM";1 5;R; ;15AN ;R
  578    ;;13. CHE CKS;"CHECK  #s";20;R;  ;20AN;R
  579    ;;END OF  RECORD
  580    ;
  581    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  582    ; TABLE F OR CREATIO N OF THE B ALANCE ERR OR RECORDS
  583    ; DATA FI ELDS: CHPD I_"^"_CLAI M_"^"_STAT US_"^"_REJ  INDEX_"^" _REJCODE_" ^"_BILLED  AMT_"^"_PR OV PMT_"^" _TOTAL CLP CAS AMT_"^ "_TOTAL SV CCAS AMT_" ^"_BAL ERR  AMT_"^"_B AL ERR DAT E
  584    ; INDEXES ,PDI, AND  HAC CLAIM  NUMBER ARE  LEFT JUST IFIED IN T HE FIELD,  MONETARY A MOUNTS RIG HT JUSTIFI ED
  585    ; THE REJ ECT INDEX  AND REJECT  CODE VALU ES ARE ONL Y VALID FO R REJECTED  CLAIMS (S TATUS=0)
  586    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  587    ;
  588   BALTBL ;;" FIELD NAME ";"TARGET  VALUE";"MI N FIELD LE NGTH";"JUS TIFY FLAG" ;"PAD CHAR ";"DATA PA TTERN";FIE LD USE
  589    ;;1. PDI; $P(DATA,"^ ",1);17;L;  ;17N;R;
  590    ;;2. HACC LM;$P(DATA ,"^",2);12 ;L; ;10AN; R;
  591    ;;3. STAT US;$P(DATA ,"^",3);8; C; ;1N;R;
  592    ;;4. REJI DX;$P(DATA ,"^",4);6; C; ;3N;O;
  593    ;;5. REJC D;$P(DATA, "^",5);7;C ; ;3N;O;
  594    ;;6. BILL  AMT;$P(DA TA,"^",6); 12;R; ;10. 2FP;R;
  595    ;;7. PROV  PMT;$P(DA TA,"^",7); 12;R; ;8.2 FP;R;
  596    ;;8. CLPC AS;$P(DATA ,"^",8);12 ;R; ;8.2FP ;R;
  597    ;;9. SVCC AS;$P(DATA ,"^",9);12 ;R; ;8.2FP ;R;
  598    ;;10.BAL  ERR;($P(DA TA,"^",6)- $P(DATA,"^ ",7)-$P(DA TA,"^",8)- $P(DATA,"^ ",9));12;R ; ;8.2FP;R
  599    ;;11.BAL  ERR DATE;$ $FMEXT^CH8 35DRV($P(D ATA,"^",11 ));16;R; ; 10AN;R;
  600    ;;12.PAYM ENTS;$P(DA TA,"^",12) ;15;R; ;15 AN;R
  601    ;;13.CHEC KS;$P(DATA ,"^",13);2 0;R; ;20AN ;R
  602    ;;END OF  RECORD
  603    ;
  604    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  605    ; TABLES  FOR CREATI NG SVC LIN E BALANCE  ERROR HEAD ER FOR REP ORTING
  606    ; CHPDI_" ^"_HACCLM_ "^"_LICTRL _"^"_SVCBA L_"^"_BILL AMT_"^"_PR OV PMT AMT _"^"_SVCCA S
  607    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  608    ;
  609   SVCHDR  ;; "FIELD NAM E";"TARGET  VALUE";"M IN FIELD L ENGTH";"JU STIFY FLAG ";"PAD CHA R";"DATA P ATTERN";FI ELD USE
  610    ;;0. TAB; " ";5;L; ; 5A;R;
  611    ;;1. PDI; "PDI";17;C ; ;17N;R;
  612    ;;2. HACC LM;"HAC CL M #";12;L;  ;10AN;R;
  613    ;;3. LICT RL;"LICTRL ";20;C; ;2 0AN;R;
  614    ;;4. BILL  AMT;"BILL  AMT";12;R ; ;12A;R;
  615    ;;5. PROV  PMT AMT;" PROV PMT"; 12;R; ;12A ;R;
  616    ;;6. SVCC AS AMT;"SV C ADJ AMT" ;12;R; ;12 A;R;
  617    ;;7. BAL  ERR AMT;"B AL ERR";12 ;R; ;12A;R ;
  618    ;;END OF  RECORD
  619    ;
  620   SVCTBL ;;" FIELD NAME ";"TARGET  VALUE";"MI N FIELD LE NGTH";"JUS TIFY FLAG" ;"PAD CHAR ";"DATA PA TTERN";FIE LD USE
  621    ;;0. TAB; " ";5;L; ; 5A;R;
  622    ;;1. PDI; $P(SVCDATA ,"^",1);17 ;L; ;17N;R ;
  623    ;;2. HACC LM;$P(SVCD ATA,"^",2) ;12;L; ;10 AN;R;
  624    ;;3. LICT RL;$P(SVCD ATA,"^",3) ;20;C; ;1N ;R;
  625    ;;4. BILL  AMT;$P(SV CDATA,"^", 5);12;R; ; 10.2FP;R;
  626    ;;5. PROV  PMT AMT;$ P(SVCDATA, "^",6);12; R; ;10.2FP ;R;
  627    ;;6. SVCC AS AMT;$P( SVCDATA,"^ ",7);12;R;  ;10.2FP;R ;
  628    ;;7. BAL  ERR AMT;$P (SVCDATA," ^",4);12;R ; ;10.2FP; R;
  629    ;;END OF  RECORD
  630    ;
  631    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  632    ; CREATE  A FILE THA T CONTAINS  ALL THE B ALANCE ERR OR CLAIM I NFORMATION
  633    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  634    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  635    ;
  636   CHDRTBL ;; "FIELD NAM E";"TARGET  VALUE";"M IN FIELD L ENGTH";"JU STIFY FLAG ";"PAD CHA R";"DATA P ATTERN";FI ELD USE
  637    ;;1. PDI; "PDI";17;L ; ;3A;R;
  638    ;;2. HACC LM;"HAC CL M #";12;L;  ;7AN;R;
  639    ;;3. STAT US;"STATUS ";8;L; ;2N ;R;
  640    ;;4. CARC 1;"CARC";7 ;L; ;5AN;R ;
  641    ;;5. STDT 1;"START D T";16;L; ; 10AN;R;
  642    ;;6. EDDT 1;"END DT" ;16;L; ;10 AN;R;
  643    ;;7. CARC 2;"CARC";7 ;L; ;5AN;O ;
  644    ;;8. STDT 2;"START D T";16;L; ; 10AN;O;
  645    ;;9. EDDT 2;"END DT" ;16;L; ;10 AN;O;
  646    ;;10. CAR C3;"CARC"; 7;L; ;5AN; O;
  647    ;;11. STD T3;"START  DT";16;L;  ;10AN;O;
  648    ;;12. EDD T3;"END DT ";16;L; ;1 0AN;O;
  649    ;;13. CAR C4;"CARC"; 7;L; ;5AN; O;
  650    ;;14. STD T4;"START  DT";16;L;  ;10AN;O;
  651    ;;15. EDD T4;"END DT ";16;L; ;1 0AN;O;
  652    ;;16. CAR C5;"CARC"; 7;L; ;5AN; O;
  653    ;;17. STD T5;"START  DT";16;L;  ;10AN;O;
  654    ;;18. EDD T5;"END DT ";16;L; ;1 0AN;O;
  655    ;;19. CAR C6;"CARC"; 7;L; ;5AN; O;
  656    ;;20. STD T6;"START  DT";16;L;  ;10AN;O;
  657    ;;21. EDD T6;"END DT ";16;L; ;1 0AN;O;
  658    ;;END OF  RECORD
  659    ;
  660   CERRTBL ;; "FIELD NAM E";"TARGET  VALUE";"M IN FIELD L ENGTH";"JU STIFY FLAG ";"PAD CHA R";"DATA P ATTERN";FI ELD USE
  661    ;;1. PDI; $P(DATA,"^ ",1);17;L;  ;17N;R;
  662    ;;2. HACC LM;$P(DATA ,"^",2);12 ;L; ;10AN; R;
  663    ;;3. STAT US;$P(DATA ,"^",3);8; L; ;1N;R;
  664    ;;4. CARC 1;$P(DATA, "^",4);7;L ; ;5AN;R;
  665    ;;5. STDT 1;$P(DATA, "^",5);16; L; ;10AN;R ;
  666    ;;6. EDDT 1;$P(DATA, "^",6);16; L; ;10AN;R ;
  667    ;;7. CARC 2;$P(DATA, "^",7);7;L ; ;5AN;O;
  668    ;;8. STDT 2;$P(DATA, "^",8);16; L; ;10AN;O ;
  669    ;;9. EDDT 2;$P(DATA, "^",9);16; L; ;10AN;O ;
  670    ;;10. CAR C3;$P(DATA ,"^",10);7 ;L; ;5AN;O ;
  671    ;;11. STD T3;$P(DATA ,"^",11);1 6;L; ;10AN ;O;
  672    ;;12. EDD T3;$P(DATA ,"^",12);1 6;L; ;10AN ;O;
  673    ;;13. CAR C4;$P(DATA ,"^",13);7 ;L; ;5AN;O ;
  674    ;;14. STD T4;$P(DATA ,"^",14);1 6;L; ;10AN ;O;
  675    ;;15. EDD T4;$P(DATA ,"^",15);1 6;L; ;10AN ;O;
  676    ;;16. CAR C5;$P(DATA ,"^",16);7 ;L; ;5AN;O ;
  677    ;;17. STD T5;$P(DATA ,"^",17);1 6;L; ;10AN ;O;
  678    ;;18. EDD T5;$P(DATA ,"^",18);1 6;L; ;10AN ;O;
  679    ;;19. CAR C6;$P(DATA ,"^",19);7 ;L; ;5AN;O ;
  680    ;;20. STD T6;$P(DATA ,"^",20);1 6;L; ;10AN ;O;
  681    ;;21. EDD T6;$P(DATA ,"^",21);1 6;L; ;10AN ;O;
  682    ;;END OF  RECORD
  683    ;
  684   RHDRTBL ;; "FIELD NAM E";"TARGET  VALUE";"M IN FIELD L ENGTH";"JU STIFY FLAG ";"PAD CHA R";"DATA P ATTERN";FI ELD USE
  685    ;;1. PDI; "PDI";17;L ; ;3A;R;
  686    ;;2. CLAI M;"CLAIM # ";12;L; ;7 AN;R;
  687    ;;3. STAT US;"STATUS ";8;L; ;2N ;R;
  688    ;;4. RARC ;"RARC";7; L; ;5AN;R;
  689    ;;5. STDT ;"START DT ";16;L; ;1 0AN;R;
  690    ;;6. EDDT ;"END DT"; 16;L; ;10A N;R;
  691    ;;END OF  RECORD
  692    ;
  693   SVCCHDR  ; ;"FIELD NA ME";"TARGE T VALUE";" MIN FIELD  LENGTH";"J USTIFY FLA G";"PAD CH AR";"DATA  PATTERN";F IELD USE
  694    ;;0. TAB; " ";5;L; ; 5A;R;
  695    ;;1. PDI; "PDI";17;L ; ;17N;R;
  696    ;;2. HACC LM;"HAC CL M #";12;L;  ;10AN;R;
  697    ;;3. CARC 1;"CARC";7 ;L; ;5AN;R ;
  698    ;;4. STDT 1;"START D T";16;L; ; 10AN;R;
  699    ;;5. EDDT 1;"END DT" ;16;L; ;10 AN;R;
  700    ;;6. CARC 2;"CARC";7 ;L; ;5AN;O ;
  701    ;;7. STDT 2;"START D T";16;L; ; 10AN;O;
  702    ;;8. EDDT 2;"END DT" ;16;L; ;10 AN;O;
  703    ;;9. CARC 3;"CARC";7 ;L; ;5AN;O ;
  704    ;;10. STD T3;"START  DT";16;L;  ;10AN;O;
  705    ;;11. EDD T3;"END DT ";16;L; ;1 0AN;O;
  706    ;;12. CAR C4;"CARC"; 7;L; ;5AN; O;
  707    ;;13. STD T4;"START  DT";16;L;  ;10AN;O;
  708    ;;14. EDD T4;"END DT ";16;L; ;1 0AN;O;
  709    ;;15. CAR C5;"CARC"; 7;L; ;5AN; O;
  710    ;;16. STD T5;"START  DT";16;L;  ;10AN;O;
  711    ;;17. EDD T5;"END DT ";16;L; ;1 0AN;O;
  712    ;;18. CAR C6;"CARC"; 7;L; ;5AN; O;
  713    ;;19. STD T6;"START  DT";16;L;  ;10AN;O;
  714    ;;20. EDD T6;"END DT ";16;L; ;1 0AN;O;
  715    ;;END OF  RECORD
  716    ;
  717   SVCCTBL ;; "FIELD NAM E";"TARGET  VALUE";"M IN FIELD L ENGTH";"JU STIFY FLAG ";"PAD CHA R";"DATA P ATTERN";FI ELD USE
  718    ;;0. TAB; " ";5;L; ; 5A;R;
  719    ;;1. PDI; $P(SVCDATA ,"^",1);17 ;L; ;17N;R ;
  720    ;;2. HACC LM;$P(SVCD ATA,"^",2) ;12;L; ;10 AN;R;
  721    ;;3. CARC 1;$P(SVCDA TA,"^",3); 7;L; ;5AN; R;
  722    ;;4. STDT 1;$P(SVCDA TA,"^",4); 16;L; ;10A N;R;
  723    ;;5. EDDT 1;$P(SVCDA TA,"^",5); 16;L; ;10A N;R;
  724    ;;6. CARC 2;$P(SVCDA TA,"^",6); 7;L; ;5AN; O;
  725    ;;7. STDT 2;$P(SVCDA TA,"^",7); 16;L; ;10A N;O;
  726    ;;8. EDDT 2;$P(SVCDA TA,"^",8); 16;L; ;10A N;O;
  727    ;;9. CARC 3;$P(SVCDA TA,"^",9); 7;L; ;5AN; O;
  728    ;;10. STD T3;$P(SVCD ATA,"^",10 );16;L; ;1 0AN;O;
  729    ;;11. EDD T3;$P(SVCD ATA,"^",11 );16;L; ;1 0AN;O;
  730    ;;12. CAR C4;$P(SVCD ATA,"^",12 );7;L; ;5A N;O;
  731    ;;13. STD T4;$P(SVCD ATA,"^",13 );16;L; ;1 0AN;O;
  732    ;;14. EDD T4;$P(SVCD ATA,"^",14 );16;L; ;1 0AN;O;
  733    ;;15. CAR C5;$P(SVCD ATA,"^",15 );7;L; ;5A N;O;
  734    ;;16. STD T5;$P(SVCD ATA,"^",16 );16;L; ;1 0AN;O;
  735    ;;17. EDD T5;$P(SVCD ATA,"^",17 );16;L; ;1 0AN;O;
  736    ;;18. CAR C6;$P(SVCD ATA,"^",18 );7;L; ;5A N;O;
  737    ;;19. STD T6;$P(SVCD ATA,"^",19 );16;L; ;1 0AN;O;
  738    ;;20. EDD T6;$P(SVCD ATA,"^",20 );16;L; ;1 0AN;O;
  739    ;;END OF  RECORD
  740    ;
  741   SVCRTBL ;; "FIELD NAM E";"TARGET  VALUE";"M IN FIELD L ENGTH";"JU STIFY FLAG ";"PAD CHA R";"DATA P ATTERN";FI ELD USE
  742    ;;1. PDI; $P(SVCDATA ,"^",1);17 ;L; ;17N;R ;
  743    ;;2. HACC LM;$P(SVCD ATA,"^",2) ;12;L; ;10 AN;R;
  744    ;;3. RARC ;$P(SVCDAT A,"^",3);7 ;L; ;5AN;R ;
  745    ;;4. STDT ;$P(SVCDAT A,"^",4);1 6;L; ;10AN ;R;
  746    ;;5. EDDT ;$P(SVCDAT A,"^",5);1 6;L; ;10AN ;R;
  747    ;;END OF  RECORD
  748    ;
  749   DMP835ERR( FILEI)
  750    N ENV,TMP IO,LOGFILE ,ICNT,JCNT ,HACCLM,PR OCID,ULN
  751    S ENV=$$E NVIR^CHTFL IB()
  752    Q:ENV["LI VE"                                                                 ; CHECK  THE CURREN T WORKING  ENVIRONMEN T
  753    N TMPIO,C HPDI
  754    S TMPIO=$ IO                                                                  ; SAVE T HE CURRENT  IO VARIAB LE
  755    S PROCID= $J                                                                  ; ALLOW  ASSIGNMENT  TO OTHER  PROCESS ID S
  756    S ULN="-"  F X=2:1:1 65 S ULN=U LN_"-"                                        ; LINE S EPARATOR,  CREATE LIN E
  757    S X=132 X  ^%ZOSF("R M")                                             ; SET  THE CACHE  DISPLAY TO  132 CHARA CTERS
  758    S LOGFILE ="HAC_HFS$ :[X12OCR.I N]LOG_835E RR_"_FILEI _".TXT"  ;  TARGET OU TPUT DIR/F ILENAME
  759    ;SBB; DEF 016554-12/ 24/13 - Ge tting UCI  for differ ent areas.
  760    X ^%ZOSF( "UCI") S U CI=$P(Y,", ",1)
  761    I UCI'="H AC" S LOGF ILE="HAC_H FS$:[X12OC R.IN]LOG_8 35ERR_"_FI LEI_".TXT"     ;"CHAMPVA_ USER:[ D NS   ]LOG_835ER R_"_FILEI_ ".TXT"
  762    ;W !,"CRE ATING ",LO GFILE
  763    ;SBB; DEF 016554-11/ 22/13 - Mo dified Wri ting to a  file as pe r VHA stan dard.
  764    ;O LOGFIL E:"NWS":5                                                  ; OPEN  THE DEBUG  OUTPUT ER ROR FILE
  765    I '$$OPEN FIWR^CHTFL IB9(.LOGFI LE,"LOGFIL E") Q
  766    W !,"CREA TING ",LOG FILE
  767    D NOW^%DT C                                                                   ; EXTERN AL DATE/TI ME
  768    S Y=% X ^ DD("DD")
  769    U LOGFILE  W !,?20," CACHE 835  STAGING FI LE BALANCE  ERRORS"
  770    U LOGFILE   W !,"PRO CESS ID= " ,PROCID,"   PROCESS D ATE:TIME:  "_Y    ; R ECORD THE  PROCESS ID  & EXTERNA L DATE AND  TIME
  771    I $D(DUZ)  U LOGFILE  W !,"   U SER ID (DU Z)= ",DUZ, ": ",$P(^V A(200,DUZ, 0),"^",1)   ; IDENTIF Y THE USER  BY "DUZ"
  772    S CHPDI=0 ,ICNT=0
  773    F ICNT=1: 1 S CHPDI= $O(^TMP(PR OCID,"NOEF T",CHPDI))  Q:+CHPDI= 0  D
  774    .W !,"^TM P(",$J,",N OEFT,",CHP DI,")= ",^ TMP(PROCID ,"NOEFT",C HPDI)
  775    S CHPDI=0 ,ICNT=0,JC NT=0
  776    F ICNT=1: 1 S CHPDI= $O(^TMP(PR OCID,"BALE RR",CHPDI) ) Q:+CHPDI =0  D
  777    .S DATA=$ G(^TMP(PRO CID,"BALER R",CHPDI))
  778    .W !!,"CL AIM"_ULN
  779    .S REC=""
  780    .F LN=1:1  S STR=$T( HDRTBL+LN)  Q:STR["EN D OF RECOR D"  D ; US E THE $TEX T "HDRTBL"  TO CREATE  REPORT HE ADER
  781    ..S REC=R EC_$$FORMA TDATA^CHMX WBUT(STR)
  782    .W !,REC, !,ULN
  783    .S REC=""
  784    .F LN=1:1  S STR=$T( BALTBL+LN)  Q:STR["EN D OF RECOR D"  D ; US E THE $TEX T "BALTBL"  TO CREATE  REPORT RE CORDS
  785    ..S REC=R EC_$$FORMA TDATA^CHMX WBUT(STR)
  786    .W !,REC
  787    .S HACCLM =0
  788    .F IDX=1: 1 S HACCLM =$O(^TMP(P ROCID,"BAL ERR",CHPDI ,HACCLM))   Q:HACCLM= ""  D
  789    ..S SVCDA TA=^TMP(PR OCID,"BALE RR",CHPDI, HACCLM)
  790    ..I IDX=1   D
  791    ...W !!," SVC LINE"_ ULN                                                               ; CREATE H EADER FOR  THE FIRST  SVC LINE B AL ERR
  792    ...S REC= ""
  793    ...F LN=1 :1 S STR=$ T(SVCHDR+L N) Q:STR[" END OF REC ORD"  D ;  USE THE $T EXT "SVCHD R" TO CREA TE REPORT  HEADER
  794    ....S REC =REC_$$FOR MATDATA^CH MXWBUT(STR )
  795    ...W !,RE C,!,ULN
  796    ..S REC=" "
  797    ..F LN=1: 1 S STR=$T (SVCTBL+LN ) Q:STR["E ND OF RECO RD"  D ; U SE THE $TE XT "SVCTBL " TO CREAT E SVC BAL  ERR RECORD
  798    ...S REC= REC_$$FORM ATDATA^CHM XWBUT(STR)
  799    ..W !,REC ,!,ULN
  800    ;
  801    ; CARCERR  code here
  802    S CHPDI=0
  803    F ICNT=1: 1 S CHPDI= $O(^TMP(PR OCID,"CARC ERR",CHPDI )) Q:+CHPD I=0  D
  804    .S DATA=$ G(^TMP(PRO CID,"CARCE RR",CHPDI) )
  805    .W !!,"CL AIM"_ULN
  806    .S REC=""
  807    .F LN=1:1  S STR=$T( CHDRTBL+LN ) Q:STR["E ND OF RECO RD"  D ; U SE THE $TE XT "CHDRTB L" TO CREA TE REPORT  HEADER
  808    ..S REC=R EC_$$FORMA TDATA^CHMX WBUT(STR)
  809    .W !,REC, !,ULN
  810    .S REC=""
  811    .F LN=1:1  S STR=$T( CERRTBL+LN ) Q:STR["E ND OF RECO RD"  D ; U SE THE $TE XT "CERRTB L" TO CREA TE REPORT  RECORDS
  812    ..S REC=R EC_$$FORMA TDATA^CHMX WBUT(STR)
  813    .W !,REC
  814    .S HACCLM =0
  815    .F IDX=1: 1 S HACCLM =$O(^TMP(P ROCID,"CAR CERR",CHPD I,HACCLM))   Q:HACCLM =""  D
  816    ..S SVCDA TA=^TMP(PR OCID,"CARC ERR",CHPDI ,HACCLM)
  817    ..I IDX=1   D
  818    ...W !!," SVC LINE"_ ULN                                                               ; CREATE H EADER FOR  THE FIRST  SVC LINE C ARC ERR
  819    ...S REC= ""
  820    ...F LN=1 :1 S STR=$ T(SVCCHDR+ LN) Q:STR[ "END OF RE CORD"  D ;  USE THE $ TEXT "SVCC HDR" TO CR EATE REPOR T HEADER
  821    ....S REC =REC_$$FOR MATDATA^CH MXWBUT(STR )
  822    ...W !,RE C,!,ULN
  823    ..S REC=" "
  824    ..F LN=1: 1 S STR=$T (SVCCTBL+L N) Q:STR[" END OF REC ORD"  D ;  USE THE $T EXT "SVCCT BL" TO CRE ATE SVC CA RC ERR REC ORD
  825    ...S REC= REC_$$FORM ATDATA^CHM XWBUT(STR)
  826    ..W !,REC ,!,ULN
  827    ; end CAR CERR code
  828    ;
  829    ;RARCERR  codes
  830    S CHPDI=" "
  831    F  S CHPD I=$O(^TMP( $J,"RARCER R",CHPDI))  Q:+CHPDI= 0  D
  832    .S HACCLM =0,BERRCT= 0
  833    .F IDX=1: 1 S HACCLM =$O(^TMP($ J,"RARCERR ",CHPDI,HA CCLM)) Q:H ACCLM=""   D
  834    ..S SVCDA TA=^TMP($J ,"RARCERR" ,CHPDI,HAC CLM)
  835    ..I IDX=1   D
  836    ...W !!," SVC LINE"_ ULN                                                               ; CREATE H EADER FOR  THE FIRST  SVC LINE R ARC ERR
  837    ...S REC= ""
  838    ...F LN=1 :1 S STR=$ T(RHDRTBL+ LN) Q:STR[ "END OF RE CORD"  D ;  USE THE $ TEXT "RHDR TBL" TO CR EATE REPOR T HEADER
  839    ....S REC =REC_$$FOR MATDATA^CH MXWBUT(STR )
  840    ...W !,RE C,!,ULN
  841    ..S REC=" "
  842    ..F LN=1: 1 S STR=$T (SVCRTBL+L N) Q:STR[" END OF REC ORD"  D ;  USE THE $T EXT "SVCRT BL" TO CRE ATE SVC RA RC ERR REC ORD
  843    ...S REC= REC_$$FORM ATDATA^CHM XWBUT(STR)
  844    ..W !,REC ,!,ULN
  845    ;end RARC ERR codes
  846    ;
  847    U TMPIO                                                                                ; RESTORE  TO THE ORI GINAL IO
  848    ;DEF01655 4-11/22/13 -SBB use C LOSE^%ZISH  to close  file
  849    ;C LOGFIL E
  850    D CLOSEF^ CHTFLIB9(L OGFILE,"LO GFILE")
  851    Q
  852    ;
  853    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  854    ; THE FOL LOWING FUN CTIONS ARE  USED TO C ONTROL THE  STATUS VA LUES IN ^C HMEDI().
  855    ; IF THE  STATUS IS  NO 0, THE  835 RECORD  WILL NOT  BE GENERAT ED. THE VA LUE IS
  856    ; SET TO  5 SO THAT  IT WILL BE  POSSIBLE  TO "RESET"  THE STATU S VALUES A FFECTED
  857    ; TO 0, R ESTORING T HE ENVIRON MENT AFTER  TESTING.
  858    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  859    ;
  860    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  861    ; UNLOAD  FUNCTION C LEARS ALL  "NEED SENT " STATUS I N ^CHMEDI( ) TO A KNO WN STATUS
  862    ; SO THAT  THE "RELO AD" FUNCTI ON CAN RES ET THE STA TUS TO "NE EDS SENT"  (0) IF
  863    ; REQUIRE D.  THIS F UNCTION DO ESNOT USE  FILEMAN BE CAUSE IT W OULD NOT A LLOW AN
  864    ; UNDEFIN ED STATUS  TO BE STOR ED.
  865    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  866    ;
  867   UNLOAD(STA TUS)
  868    ; STATUS   THE STATU S VALUE TO  RECORD IN  ^CHMEDI
  869    N ENV S E NV=$$ENVIR ^CHTFLIB()
  870    Q:ENV["LI VE"                                               ; CH ECK THE CU RRENT WORK ING ENVIRO NMENT
  871    U 0 W !," THIS FUNCT ION WILL P ERMANENTLY  REMOVE AL L CURRENT  ""NEEDS SE NT"" STATU S CLAIMS"
  872    U 0 W !," FROM THE ^ CHMEDI 835  QUEUE, ST ORING THE  USER'S PRO VIDED STAT US VALUE I N THE STAT US"
  873    U 0 W !," FIELD (2),  AND THE D ATE REMOVE D IN THE B ALANCE ERR OR DATE FI ELD (7)."
  874    N STATUSV AL,Y                                                       ; LOCA L VARIABLE  FOR STATU S VALUE
  875    I '$D(STA TUS)  D                                           ; IF  USER DID  NOT PROVID E A VALUE,  ASK FOR O NE
  876    .U 0 W !, "PLEASE EN TER A VALU E FOR THE  ^CHMEDI ST ATUS FOR T HIS ""UNLO AD"".YOU M AY NOT USE  ""0"" OR  ""1"".",!, "INPUT: "
  877    .D CSBRS^ CHSC2                                                      ; HAND LE USER IN PUT (ANYTH ING IS POS SIBLE)
  878    .S:Y'=""  Y=$TR(Y,"a bcdefghijk lmnopqrstu vwxyz","AB CDEFGHIJKL MNOPQRSTUV WXYZ")
  879    .S STATUS VAL=Y
  880    E  S STAT USVAL=STAT US
  881    I (STATUS VAL=0)!(ST ATUSVAL=1)   D  Q
  882    .U 0 W !, "YOU CANNO T USE A VA LID STATUS  VALUE TO  UNLOAD THE  CLAIMS."
  883    D NOW^%DT C
  884    S TODAY=X                                                            ; DATE  CLAIMS UN LOADED
  885    N I,CNT,I DX
  886    S (IDX,CN T)=0
  887    S I=0,CNT =0
  888    F  S I=$O (^CHMEDI(" D",0,I))   Q:+(I)=0   D ; LOOKUP  THROUGH ^ CHMEDI "NE EDS SENT"  XREF
  889    .Q:'$D(^C HMEDI(I,0) )                             ;  NEXT ENTRY  IF NOT VA LID
  890    .Q:$P(^CH MEDI(I,0), "^",2)'=0             ; GOTO NEX T ENTRY IF  NOT "NEED S SENT"
  891    .S $P(^CH MEDI(I,0), "^",2)=STA TUSVAL  ;  SET THE ST ATUS TO A  KNOWN VALU E
  892    .S $P(^CH MEDI(I,0), "^",7)=TOD AY         ; SET THE  BALANCE ER ROR DATE T O MARK DAT E UNLOADED
  893    .S ^CHMED I("D",STAT USVAL,I)=" "                  ;  SET A FAKE  XREF FOR  THE UNLOAD ED INDEX
  894    .K ^CHMED I("D",0,I)                        ; KILL TH E "D" CROS S REFERENC E FOR "NEE DS SENT"
  895    .S CNT=CN T+1
  896    W !,"""UN LOAD"" RES ET ",CNT,"  RECORDS W ITH ""NEED S SENT"" S TATUS TO " ,STATUSVAL ," ON ",TO DAY," (",$ $FMEXT(X), ")",!
  897    Q
  898    ;
  899    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  900    ; RELOAD  FUNCTION R ESETS THE  ^CHMEDI()  GLOBAL STA TUS TO "NE EDS SENT"  STATUS
  901    ; THIS FU NCTION USE S FILEMAN  TO SET THE  STATUS SO  THE STATU S XREF IS  CORRECTLY
  902    ; SET UP( ^CHMEDI("D ",0,EI)).
  903    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;
  904    ;
  905   RELOAD(STA TUS,FMDATE )
  906    ; STATUS                                                             ; STAT US VALUE T O RELOAD
  907    ; FMDATE                                                             ; DATE  THE STATU S WAS UNLO ADED
  908    N ENV S E NV=$$ENVIR ^CHTFLIB()
  909    Q:ENV["LI VE"                                               ; CH ECK THE CU RRENT WORK ING ENVIRO NMENT
  910    I '$D(STA TUS)!'$D(F MDATE)  D   Q
  911    .U 0 W !, "YOU MUST  PROVIDE TH E STATUS V ALUE AND T HE ""UNLOA D DATE"" F OR CLAIMS  TO RELOAD. "
  912    N EI,I,EX IT,ARR,CNT ,ENTITY,CO UNT,IDX
  913    S (I,CNT) =0
  914    F  S I=$O (^CHMEDI(" D",STATUS, I)) Q:+(I) =0  D  ; R EVERSE LOO KUP THROUG H ^CHMEDI
  915    .Q:'$D(^C HMEDI(I,0) )                             ;  NEXT ENTRY  IF NOT VA LID
  916    .Q:$P(^CH MEDI(I,0), "^",2)'=ST ATUS       ; GOTO NEX T VALUE IF  NOT SET T O USER PRO VIDED STAT US
  917    .Q:$P(^CH MEDI(I,0), "^",7)'=FM DATE       ; GO TO NE XT VALUE I F THE "UNL OAD" DATE  DOESN'T MA TCH PROVID ED DATE
  918    .S ARR(.0 2)=0                                                       ; RESE T THE STAT US TO "NEE DS SENT"
  919    .S RESULT =$$UPDATE^ CHHRLIBFM( "CHMEDI(I, 0)",I,$$SE TDR^CHHRLI BFM("ARR") )
  920    .K ^CHMED I("D",STAT US,I)                         ;  KILL THE F AKE XREF U SED TO MAR K THE UNLO ADED INDEX ES
  921    .S CNT=CN T+1
  922    W !,"""RE LOAD"" RES ET ",CNT,"  RECORDS W ITH STATUS = ",STATUS ," UNLOADE D ON ",$$F MEXT(FMDAT E)," TO "" NEEDS SENT """,!
  923    Q
  924    ;
  925   RESEND(HAC CLM)
  926    ; HACCLM  THE HAC CL AIM NUMBER  TO RESEND  835
  927    N PAYI,ED II,PDI,FMS ,DXREF
  928    S PAYI=0, PAYI=$O(^C HMPAY("B", HACCLM,PAY I))  ; RET RIEVE THE  ^CHMPAY(I)  INDEX
  929    S EDII=0, EDII=$O(^C HMEDI("C", PAYI,EDII) )  ; RETRI EVE THE ^C HMEDI(I) I NDEX
  930    S PDI=$P( $P(^CHMPAY (PAYI,0)," ^",4),"*", 1)  ; RETR IEVE THE P DI
  931    S FMS=$P( $P(^CHMPAY (PAYI,7)," ^",3),"*", 1)  ; RETR IEVE THE ^ CHMPAY() V ENDOR FMS  DOC ID
  932    S FMS835= $P(^CHMEDI (EDII,0)," ^",1)              ;  RETRIEVE T HE ^CHMEDI () FMS DOC  ID
  933    S STATUS= $P(^CHMEDI (EDII,0)," ^",2)              ;  THE CURREN T STATUS V ALUE
  934    U 0 W !," HAC CLAIM  #: ",HACCL M,"   STAT US: ",STAT US
  935    U 0 W !," PDI: ",PDI ,"  FMS DO C ID: ",FM S835,"  ^C HMPAY() FM S: ",FMS
  936    U 0 W !," CONTINUE ?  (Y/N)" R  RCH
  937    I (RCH="Y ")!(RCH="y ")  D
  938    .K ^CHMED I("D",STAT US)                                    ; KI LL THE CUR RENT STATU S VALUE CR OSS-REFERE NCE
  939    .S ^CHMED I("D",0,ED II)=""                        ;  SET THE "N EEDS SENT"  STATUS CR OSS-REFERE NCE
  940    .S $P(^CH MEDI(EDII, 0),"^",2)= 0                  ;  RESET THE  "NEEDS SEN T" STATUS  FLAG
  941    Q
  942    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;
  943    ; CHK835  FUNCTION
  944    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;
  945    ;
  946   CHK835OLD
  947    N I,CNT,A RR,IDX,EFT ,EFTARR
  948    S (I,CNT, EFT)=0
  949    F  S I=$O (^CHMEDI(" D",0,I)) Q :+(I)=0  D   ; UTILIZ E THE "NEE DS SENT" X REF
  950    .Q:'$D(^C HMEDI(I,0) )                             ;  NEXT ENTRY  IF NOT VA LID
  951    .I $$NOEF T^CH835EFT (I) D  Q              ; CHECK FO R MISSING  BANK EFT I NFO
  952    ..S EFT=E FT+1,EFTAR R(EFT)=I              ; COUNT/RE CORD THE N UMBER OD Q UEUED CLAI MS WITH EF T ERRORS
  953    .S CNT=CN T+1                                               ; CO UNT ENTRIE S TO HAVE  835 RECORD S BUILT
  954    .S ARR(CN T)=I                                                       ; RECO RD THE ^CH MEDI INDEX ES COUNTED
  955    W !,"POTE NTIAL CLAI MS FOR 835  = ",CNT
  956    W !,"***N OTE: CLAIM  COUNTS IN CLUDE POSS IBLE EFT/B ALANCE ERR OR CLAIMS. ",!
  957    F IDX=1:1 :CNT  W !, IDX,". ",? 5,ARR(IDX)
  958    I EFT  D
  959    .W !!,"TH E FOLLOWIN G QUEUED I NDEXES HAV E EFT ERRO RS:",!
  960    .F IDX=1: 1:EFT  W ! ,IDX,". ", ?5,EFTARR( IDX)
  961    .W !!
  962    Q
  963    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;
  964    ; THIS FU NCTION "CO UNTS" THE  NUMBER OF  ENTRIES IN  THE ^CHME DI FILE TH AT ARE
  965    ; READY F OR PROCESS ING. RECOR DS ARE CHE CKED TO DE TERMINE IF  THERE IS  BANKING EF T
  966    ; INFORMA TION, AND  DOES NOT C OUNT THESE  ENTRIES.
  967    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;
  968    ;
  969   CHK835
  970    N I,CNT,A RR,IDX,EFT ,EFTARR,PT REDIF,FPTR ,FTYPE,CLA IMS
  971    S (I,CNT, EFT)=0,FTY PE="UNKNOW N",(PTREDI F,FPTR)=0, CLAIMS=0
  972    F  S I=$O (^CHMEDI(" D",0,I)) Q :+(I)=0  D   ; UTILIZ E THE "NEE DS SENT" X REF
  973    .S EFTPAD =""
  974    .Q:'$D(^C HMEDI(I,0) )                             ;  NEXT ENTRY  IF NOT VA LID
  975    .I $$NOEF T^CH835EFT (I) D                         ;  CHECK FOR  MISSING BA NK EFT INF O
  976    ..S EFT=E FT+1,EFTAR R(EFT)=I,E FTPAD="*"   ; COUNT/R ECORD THE  NUMBER OD  QUEUED CLA IMS WITH E FT ERRORS
  977    .S CNT=CN T+1                                               ; CO UNT ENTRIE S TO HAVE  835 RECORD S BUILT
  978    .S ARR(CN T)=I                                                       ; RECO RD THE ^CH MEDI INDEX ES COUNTED
  979    .S EDIJ=0
  980    .F  S EDI J=$O(^CHME DI(I,1,EDI J)) Q:+(ED IJ)=0  D     ; LOOP T HRU "J" IN DEXES
  981    ..S CLAIM S=CLAIMS+1                                                          ; COUNT  CLAIMS WIT HI EACH ^C HMEDI INDE X
  982    ..S PAYI= $P($G(^CHM EDI(I,1,ED IJ,0)),"^" ,1)              ; RE TRIEVING T HE POINTER ->^CHMPAY( )
  983    ..I (EFT)  S:(EFTARR (EFT)=I) E FTARR(EFT) =EFTARR(EF T)_"^"_$P( ^CHMPAY(PA YI,0),"^", 1) ; NO EF T HAC CLAI M NUMBER
  984    ..S STATU S=$P(^CHME DI(I,0),"^ ",2)                                 ; GET  THE STATUS  VALUE
  985    ..S PTRED IF=$P($G(^ CHMEDI(I,0 )),"^",6)                            ; RETR IEVE THE P OINTER TO  ^CHMEDIF
  986    ..S:PTRED IF FPTR=$P ($G(^CHMED IF(PTREDIF ,0)),"^",3 )  ; RETRI EVE THE PO INTER TO ^ CHMEDIPA
  987    ..S:FPTR  FTYPE=$P($ G(^CHMEDIP A(FPTR,0)) ,"^",3)          ; ST ATUS FILE  TYPE
  988    ..U 0 W ! ,CNT,". ^C HMEDI(I)=  ",I,EFTPAD ,"  J= ",E DIJ,"  FIL E: ",FTYPE ,"   : HAC  CLAIM #:  ",$P(^CHMP AY(PAYI,0) ,"^",1),"   STATUS= " ,$S(STATUS =0:"NEEDS  SENT",STAT US=1:"835  SENT",1:"B ALANCE ERR ")
  989    U 0 W !!, "^CHMEDI I NDEXES: ", CNT,"       POTENTIAL  CLAIMS FO R 835 = ", CLAIMS
  990    U 0 W !!, "***NOTE:  CLAIM COUN TS INCLUDE  POSSIBLE  EFT/BALANC E ERROR CL AIMS."
  991    I EFT  D
  992    .U 0 W !, "THE FOLLO WING QUEUE D INDEXES  HAVE EFT E RRORS:",!
  993    .F IDX=1: 1:EFT  W ! ,IDX,". ", ?5,EFTARR( IDX)
  994    .W !!
  995    Q
  996    ;
  997    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;;
  998    ; KILL(ED II)  KILLS  THE ^CHME DI NODE AS SOCIATED W ITH THE PR OVIDED IND EX,
  999    ; AND THE  "D" CROSS -REFERENCE S ASSOCIAT ED WITH TH E ENTRY
  1000    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;;
  1001    ;
  1002   KILL(EDII)
  1003    ;  EDII ^ CHMEDI IND EX TO KILL
  1004    Q:$$ENVIR ^CHTFLIB=" LIVE"                 ; CANNOT K ILL IN "LI VE" ENVIRO NMENT
  1005    N RCH
  1006    U 0 W !," YOU ARE AB OUT TO KIL L THE ^CHM EDI() ENTR Y FOR ",ED II,"     C ONTINUE (Y /N) ? "  R  RCH
  1007    Q:(RCH'=" y")&(RCH'= "Y")
  1008    K ^CHMEDI (EDII)                                   ;  KILL THE D ATA NODE E NTRY
  1009    K ^CHMEDI ("D",0,EDI I)                            ;  KILL THE " NEES SENT"  XREF
  1010    K ^CHMEDI ("D",1,EDI I)                            ;  KILL THE " 835 SENT"  XREF
  1011    K ^CHMEDI ("D",5,EDI I)                            ;  KILL THE " SET ASIDE"  XREF
  1012    U 0 W !," $D(^CHMEDI (EDII) = " ,$D(^CHMED I(EDII))
  1013    U 0 W !," $D(^CHMEDI (""D"",0,E DII) = ",$ D(^CHMEDI( "D",0,EDII ))
  1014    U 0 W !," $D(^CHMEDI (""D"",1,E DII) = ",$ D(^CHMEDI( "D",1,EDII ))
  1015    U 0 W !," $D(^CHMEDI (""D"",5,E DII) = ",$ D(^CHMEDI( "D",5,EDII ))
  1016    Q
  1017    ;
  1018    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;;
  1019    ; CHKSNA( ) WILL REP ORT THE CL AIMS THAT  ARE PREPAR ED TO GO I NTO "BATCH " AFTER
  1020    ; THE VE  HAS COMPLE TED THE IP  SCREEN CL AIM CREATI ON
  1021    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;;
  1022    ;
  1023   CHKSNA(TYP E)
  1024    N IDX,DAT E,RCH,CLMC NT,JDX,FIL E,MAX,SENT ,RCVD
  1025    I '$D(TYP E) W !,"PL EASE PROVI DE ""CAPP" " (741008. 03) OR ""C ALM"" (741 008.05) FO R THE DISP LAY." Q
  1026    S:TYPE="C APP" FILE= 741008.03
  1027    S:TYPE="C ALM" FILE= 741008.05
  1028    S DATE=99 99999999.9 99999999,M AX=10,(SEN T,RCVD)=0
  1029    F CNT=1:1 :MAX  S DA TE=$O(^CHM SNA(FILE,D ATE),-1)   D
  1030    .S IDX(CN T)=DATE  W  !,CNT,"." ,?3,"^CHMS NA(",FILE, ", BATCH C REATE DATE : ",$$DATE TIME(DATE) ," BATCH C LOSE DATE:  ",$$DATET IME($P(^CH MSNA(FILE, DATE,0),"^ ",2))
  1031    W !!,"SEL ECT THE NU MBER FOR T HE NODE TO  OUTPUT: "
  1032    S RCH=""
  1033    F   Q:(RC H'<1)&(RCH '>MAX)  D
  1034    .R RCH
  1035    S CLMCNT= $P(^CHMSNA (FILE,IDX( RCH),1,0), "^",4) W ! !,CLMCNT,"  CLAIMS",!
  1036    S JDX=0
  1037    F CNT=1:1 :(CLMCNT+1 ) S JDX=$O (^CHMSNA(F ILE,IDX(RC H),1,JDX))  Q:+(JDX)= 0  D
  1038    .S PAYI=$ P(^CHMSNA( FILE,IDX(R CH),1,JDX, 0),"^",1)
  1039    .W !,CNT, ". CLAIM " ,$P(^CHMPA Y(PAYI,0), "^",1)," :  STATUS =  ",$$GETDES C($P(^CHMS NA(FILE,ID X(RCH),1,J DX,0),"^", 5))
  1040    .I $P(^CH MSNA(FILE, IDX(RCH),1 ,JDX,0),"^ ",6)'="" S  SENT=JDX
  1041    .I $P(^CH MSNA(FILE, IDX(RCH),1 ,JDX,0),"^ ",7)'="" S  RCVD=JDX
  1042    W:SENT !, "SENT TO A USTIN: ",$ $EXTDTCVT( $P(^CHMSNA (FILE,IDX( RCH),1,SEN T,0),"^",6 ))," SEE V MS FILE DH CP$MANAGER  FMS_"_TYP E_"_FILE_C TST.DAT  C REATED: ", $$EXTDTCVT ($P(^CHMSN A(FILE,IDX (RCH),1,SE NT,0),"^", 6))
  1043    W:RCVD !, "RETURN FR OM AUSTIN:  ",$$EXTDT CVT($P($P( ^CHMSNA(FI LE,IDX(RCH ),1,RCVD,0 ),"^",7)," .",1))," S EE VMS FIL E DHCP$CHA MPVA S741C H**_CTST.1 PART  CREA TED: ",$$E XTDTCVT($P ($P(^CHMSN A(FILE,IDX (RCH),1,RC VD,0),"^", 7),".",1))
  1044    Q
  1045    ;
  1046    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;
  1047    ; CONVERT  YYMMDD.HH MMSS TO EX TERNAL FOR MAT STRING
  1048    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;
  1049    ;
  1050   DATETIME(D T)
  1051    Q $$EXTDT CVT($P(DT, ".",1))_"  @ "_$$TIME CVT($P(DT, ".",2))
  1052    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;
  1053    ; CONVERT  THE YYYYM MDD DATE S TRING TO M M-DD-YYYY  FORMAT
  1054    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;
  1055    ;
  1056   DTCVRT(DAT E)
  1057    N EXTDATE
  1058    S EXTDATE =$E(DATE,5 ,6)_"-"_$E (DATE,7,8) _"-"_$E(DA TE,1,4)
  1059    Q EXTDATE
  1060    ;
  1061    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;
  1062    ; CONVERT  THE YYYMM DD DATE ST RING TO MM -DD-YYYY F ORMAT
  1063    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;
  1064    ;
  1065   EXTDTCVT(D ATE)
  1066    Q:DATE=""  ""
  1067    N EXTDATE
  1068    S EXTDATE =$E(DATE,4 ,5)_"-"_$E (DATE,6,7) _"-"_($E(D ATE,1,3)+1 700)
  1069    Q EXTDATE
  1070    ;
  1071    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;;
  1072    ; FILEMAN  CONVERSIO N: FILEMAN  FORMAT TO  EXTERNAL  FORMAT
  1073    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;;
  1074    ;
  1075   FMEXT(FMDA TE)
  1076    S Y=FMDAT E
  1077    D DD^%DT
  1078    Q Y
  1079    ;
  1080    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;;
  1081    ; TIMECVT  CONVERTS  HHMMSS TO  HH:MM:SS F ORMAT
  1082    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;;
  1083    ;
  1084   TIMECVT(TI ME)
  1085    Q:TIME=""  ""
  1086    Q $$LJ($E (TIME,1,2) ,2,"0")_": "_$$LJ($E( TIME,3,4), 2,"0")_":" _$$LJ($E(T IME,5,6),2 ,"0")
  1087    ;
  1088    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;
  1089    ; LEFT JU STIFY FOR  HH:MM:SS
  1090    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;
  1091    ;
  1092   LJ(STR,SIZ E,PAD1) ;
  1093    N RET,PAD
  1094    S PAD="", RET=""
  1095    I PAD1=""  S RET=$E( STR,1,SIZE )
  1096    E  S $P(P AD,PAD1,SI ZE)=PAD1,R ET=$E(STR_ PAD,1,SIZE )
  1097    Q RET
  1098    ;
  1099   GETDESC(I)
  1100    ; I= STAT US VALUE F OR ^CHMSNA ()
  1101    Q $S(I=0: "PENDING", I=1:"CLM D ATA PROB/N OT SUB",I= 2:"SUB FOR  PAY",I=3: "RTN CAPP  ACC",I=4:" RTN CAP RE J",I=5:"CA LM REJ",I= 6:"CALM AC C",I=7:"RE J AS DUP", I=8:"NSF", I=9:"NO PA Y < 1.00", I=10:"CHK  RTN")
  1102    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;;
  1103    ; DMPEDI  UTILITY WR ITTEN TO D EBUG THE C LAIMS FOR  SLA. tHIS  FUNCTION E XTRACTS
  1104    ; DATA FR OM THE ^CH MEDI() FIL E AND ^CHM PAY() TO D ETERMINE W HICH CLAIM S WERE
  1105    ; PROCESS ED IN A SP ECIFIED 83 5 STAGING  FILE.
  1106    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;;
  1107    ;
  1108   DMPEDI(FIL EI)
  1109    ; FILEI    FILE INDE X FOR WHIC H TO DUMP  THE ^CHMED I DATA
  1110    N RECONCI L,STATUS,C HKNUM,CHKA MT,VNDR,PA YI,IDX,CLM S,JDX
  1111    S IDX=0
  1112    W !,"IDX" ,?10,"RECO NCIL",?31, "STATUS",? 40,"CHKNUM ",?50,"CHK AMT",?60," CLM(S)"
  1113    W !,"---- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----"
  1114    F  S IDX= $O(^CHMEDI ("G",FILEI ,IDX)) Q:' IDX  D
  1115    .S RECONC IL=$P(^CHM EDI(IDX,0) ,"^",1)
  1116    .S STATUS =$P(^CHMED I(IDX,0)," ^",2)
  1117    .S CHKNUM =$P(^CHMED I(IDX,0)," ^",3)
  1118    .S CHKAMT =$P(^CHMED I(IDX,0)," ^",4)
  1119    .S VNDR=$ P(^CHMEDI( IDX,0),"^" ,5)
  1120    .S JDX=0
  1121    .F JDX=$O (^CHMEDI(I DX,1,JDX))  Q:'JDX  D
  1122    ..S PAYI= $P(^CHMEDI (IDX,1,JDX ,0),"^",1)
  1123    ..S CLM(J DX)=$P(^CH MPAY(PAYI, 0),"^",1)
  1124    .W !!,IDX ,?10,RECON CIL,?31,ST ATUS,?40,C HKNUM,?50, CHKAMT,?60
  1125    .F JDX=1: 1 Q:'$D(CL M(JDX))  S  CLMNUM=CL M(JDX)  W  CLMNUM,","
  1126    Q
  1127    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;
  1128    ; THE FOL LOWING UTI LITIES WER E DEVELOPE D TO SUPPO RT DEVELOP MENT AND
  1129    ; TESTING  EFFORTS.  THESE ARE  NOT CALLED  DIRECTLY  DURING THE  835 PROCE SSING.
  1130    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;
  1131    ;
  1132    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;
  1133    ; SHOWREC (ID) USER  PROVIDES T HE IDENTIF IER FOR TH E RECORD T O BE GENER ATED.
  1134    ; THE GOA L OF THIS  FUNCTION I S TO GENER ATE THE 83 5 RECORD T HAT HAS NO T BEEN
  1135    ; TRANSMI TTED TO TH E PROVIDER . TYPICALL Y THE UNIQ UE IDENTIF IER THAT T HE PROVIDE R
  1136    ; HAS IN  HIS POSSES SION IS ON E THAT THE  PROVIDER  SENT IN WI TH THE CLA IM. I.E.
  1137    ; THE PAT IENT CONTR OL NUMBER  IN CONJUNC TION WITH  THE DATE O F SERVICE  AND SSN.
  1138    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;
  1139    ;
  1140   GETREC(PCN ,DOS,SSN)
  1141    ; PCN PRO VIDER'S PA TIENT CONT ROL NUMBER
  1142    ; DOS DAT E OF SERVI CE FOR THE  CLAIM
  1143    ; SSN BEN EFICIARY S SN FOR THE  CLAIM
  1144    N CI,PDI, CHPID,CHCI ,CHEI,PAYI ,PCNARR,CN T,MATCH,EI ,FIO,FILEI
  1145    S (MATCH, FIO,FILEI) =0
  1146    S ECNT=$$ PCNTOPDI(P CN,.PCNARR )
  1147    F CNT=1:1 :ECNT-1  S  PDI=$P(PC NARR(CNT), "^",1) Q:( PDI="")!(M ATCH)  D
  1148    .S CHCI=$ P(PCNARR(C NT),"^",5)                             ; CH ECK THE SS N
  1149    .I $P(^CH MXCLC(CHCI ,0),"^",4) =SSN  D
  1150    ..S CHEI= $P(PCNARR( CNT),"^",6 )                           ; CH ECK THE PC N/DOS
  1151    ..I ($P(^ CHMXCLE(CH EI,0),"^", 2)=PCN)&($ P(^CHMXCLE (CHEI,1)," ^",1)=DOS)   D
  1152    ...S PAYI =$P(^CHMXC LE(CHEI,3) ,"^",3)    ; POINTER  TO ^CHMPAY ()
  1153    ...S MATC H=1
  1154    I MATCH   D
  1155    .S CHPID= $$CHPID^CH 835FU1(PAY I)         ; Clearing  house sho rtname and  payer id
  1156    .S EI=$O( ^CHMEDI("C ",PAYI,0))                    ;  ENTITY IND EX
  1157    .S ^TMP($ J,"EDI-835 ",CHPID,EI )=""       ; NO FILE  OUTPUT
  1158    .D FMSLOO P^CH835F1( FILEI,EI)
  1159    Q
  1160    ;
  1161   TSTONE
  1162    N CI,MATC H,PCN,DOS, SSN,RCH
  1163    S MATCH=0
  1164    S CI=9999 999999                           ; GET THE  ^CHMPAY()  INDEX
  1165   NEXT
  1166    F  S CI=$ O(^CHMPAY( CI),-1) Q: MATCH  D
  1167    .W !,"PAY I= ",CI
  1168    .S (PCN,D OS,SSN)=""
  1169    .Q:($P(^C HMPAY(CI,0 ),"^",2)'= 0)&($P(^CH MPAY(CI,0) ,"^",2)'=1 0)
  1170    .Q:'$D(^C HMPAY(CI,7 ))
  1171    .S PCN=$P (^CHMPAY(C I,7),"^",5 )                  ;  RETRIEVE A  PCN
  1172    .S DOS=$P (^CHMPAY(C I,0),"^",8 )                  ;  RETRIEVE A  DATE OF S ERVICE
  1173    .S SSN=$P (^AHCHVA($ P(^CHMPAY( CI,0),"^", 21),100,$P (^CHMPAY(C I,0),"^",2 2),0),"^", 9)
  1174    .I (PCN'= "")&(DOS'= "")&(SSN'= "") S MATC H=1
  1175    W !,"TEST ING: PCN:  ",PCN,"  D OS: ",DOS, "  SSN: ", SSN
  1176    R RCH
  1177    D GETREC( PCN,DOS,SS N)
  1178    W !,"HIT  <RTN> FOR  NEXT TEST. "
  1179    R RCH S M ATCH=0 G N EXT
  1180    Q
  1181    ;
  1182    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;
  1183    ; SETUP F OR THE COR RECTION OF  THE CHAMP VA STATUS  REASON DIC TIONARY
  1184    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;
  1185    ;  ^CHMDI C(741002.2 2,I,0) =
  1186    ;                        ^01    PROBLM STA TUS CODE           NU MERIC  0 T O 9999
  1187    ;                        ^02    STATUS REA SON DESCRI PTION   FT   1 TO 200
  1188    ;                        ^03    DEACTIVATI ON OF CODE         SE T 0:ACTIVE  CODE  1:N ON-ACTIVE  CODE
  1189    ;                        ^04    LETTER POI NTER               PT   CHMDIC(7 41002.64
  1190    ;                        ^05    ENCLOSURE  POINTER            PT   CHMDIC(7 41002.56
  1191    ;                        ^06    WHAT TO PR INT ON?            SE T
  1192    ;                                                            0:P RINT ON EO B & PPR
  1193    ;                                                            1:P RINT ON PP R ONLY
  1194    ;                                                            2:P RINT ON EO B ONLY
  1195    ;                                                            3:N O EOB OR P PR
  1196    ;                        ^07    TYPE OF RE ASON               SE T
  1197    ;                                                            1:I NFORMATION AL
  1198    ;                                                            0:R EJECT
  1199    ;  ^CHMDI C(741002.2 2,I,1) =
  1200    ;                        ^01    CORRESPOND ENCE REASO N       FT   1 TO 200
  1201    ;  ^CHMDI C(741002.2 2,I,2,J,0)  =
  1202    ;                        ^01    PROGRAMS                      PT   CHMDIC(7 41002.94
  1203    ;
  1204    ;                                  CROSS R EFERENCES
  1205    ;                                  ------- ---------
  1206    ; ^CHMDIC (741002.22 ,"B",PROBL M STATUS C ODE,I)
  1207    ; ^CHMDIC (741002.22 ,"C",STATU S REASON D ESCRIPTION ,I)
  1208    ; ^CHMDIC (741002.22 ,I,2,"B",P ROGRAMS,J)
  1209    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;;
  1210    ;
  1211   FIXDIC
  1212    N IDX,VAL UE,ARR,ARR IDX,CHIJKV AL,CHBREF, CHDR,RCH
  1213    F IDX=1:1  Q:IDX>101 4  D                          ;  FIND ALL T HE INDEXES  WITH DATA  IN FIELD  8
  1214    .S FLAG=" "
  1215    .S:$D(^CH MDIC(74100 2.22,IDX,0 )) VALUE=$ P(^CHMDIC( 741002.22, IDX,0),"^" ,8)
  1216    .I VALUE' ="" D
  1217    ..F ARRID X=1:1:6  S  ARR(ARRID X)=$P($G(^ CHMDIC(741 002.22,IDX ,0)),"^",A RRIDX)
  1218    ..K ^CHMD IC(741002. 22,IDX,0)
  1219    ..S CHMDI C(741002.2 2,IDX,0)=" ^^^^^^"
  1220    ..S $P(^C HMDIC(7410 02.22,IDX, 0),"^",1)= ARR(1)  ;  PROBLEM ST ATUS CODE
  1221    ..S $P(^C HMDIC(7410 02.22,IDX, 0),"^",2)= ARR(2)  ;  STATUS REA SON DESCRI PTION
  1222    ..S $P(^C HMDIC(7410 02.22,IDX, 0),"^",3)= ARR(3)  ;  ACTIVE/INA CTIVE FLAG
  1223    ..S $P(^C HMDIC(7410 02.22,IDX, 0),"^",4)= ARR(4)  ;  LETTER POI NTER
  1224    ..S $P(^C HMDIC(7410 02.22,IDX, 0),"^",5)= ARR(5)  ;  ENCLOSUER  POINTER
  1225    ..S $P(^C HMDIC(7410 02.22,IDX, 0),"^",6)= ARR(6)  ;  WHAT TO PR INT
  1226    ..S $P(^C HMDIC(7410 02.22,IDX, 0),"^",7)= VALUE  ; R EASON TYPE  0=REJECT,  1=INFORMA TIONAL
  1227    ..W !,"MO DIFIED :", IDX," TO F IELD 7= ", $P(^CHMDIC (741002.22 ,IDX,0),"^ ",7),"  NO DE= ",^CHM DIC(741002 .22,IDX,0)
  1228    .E  I $D( ^CHMDIC(74 1002.22,ID X,0)) W !, IDX,". ",^ CHMDIC(741 002.22,IDX ,0)
  1229    Q
  1230    ;
  1231    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;;
  1232    ;  MOD7 P ROVIDES A  PROMPT TO  ALLOW THE  USER TO MO DIFY FIELD  7 OF THE  CHAMPVA ST ATUS
  1233    ;  REASON  DICTIONAR Y ^CHMDIC( 741002.22.
  1234    ;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;; ;;;;;;;;;;
  1235    ;
  1236   MOD7
  1237    N IDX,RCH
  1238    S IDX=0
  1239    F IDX=1:1 :1015  D
  1240    .Q:'$D(^C HMDIC(7410 02.22,IDX, 0))
  1241    .W !,"ENT ER THE FIE LD 7 DATA  FOR ^CHMDI C(741002.2 2,",IDX,", 0): "
  1242    .S RCH=9  F  R RCH Q :(RCH=0)!( RCH=1)
  1243    .S $P(^CH MDIC(74100 2.22,IDX,0 ),"^",7)=R CH
  1244    .W !,"RES ULT: ^CHMD IC(741002. 22,",",",I DX,",0)= " ,^CHMDIC(7 41002.22,I DX,0)
  1245    Q