Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BME834

BME834.m

Go to the documentation of this file.
  1. BME834 ; IHS/PHXAO/TMJ - ACTUAL UPDATES OF RECORDS - 834 FILE PROCESS ;
  1. ;;1.0T1;MEDICAID ELIGIBILITY DOWNLOAD;;JUN 25, 2003
  1. ;BMEHOLD Global established by Routine BMEGMED.
  1. ;This Sets Every Record in AHCCCS 834 Transaction File from the BMEHOLD(Global - Holding File
  1. ;
  1. ;This Routine $0's through Global ^BMEHOLD(
  1. ;This Routine completes the ACTUAL RPMS DOWNLOAD
  1. ;by updating the RPMS MEDICAID ELIGIBILITY File, the
  1. ;RPMS Master Control File and the Monthly No Match File
  1. ;
  1. ;
  1. BEGIN ;Establish Date/Time/Count Variables
  1. ;Establish Run Counters
  1. ;
  1. ;
  1. S BMEMNEW=0 ;New Adds to Med Eligibility File
  1. S BMEMUPDT=0 ;Updates to Med Eligibility File
  1. S BMESSNCT=0 ;SSN Matches Only in No Match File
  1. S BMEKIDCT=0 ;KID's Care Counter in No Match File
  1. S BMETOTCT=0 ;Total Records Actually Processed - New or Update
  1. S BMENOCT=0 ; Variable used to not count News & Updates twice
  1. S BMEGTOT=0 ;Grand Total all Records regardless of action
  1. S BMEBTIME=$$NOW^XLFDT
  1. ;
  1. INS ;GET ARIZONA MEDICAID INTERNAL NUMBER FROM THE INSURER FILE-PHX AREA
  1. S DIC="^AUTNINS(",DIC(0)="XZIMO",X="MEDICAID" D ^DIC
  1. I Y'=-1 S BMEINS=$P(Y,"^",1)
  1. E G END2 ;Quit if no Insurer - don't write message
  1. ;
  1. D START
  1. S BMEETIME=$$NOW^XLFDT
  1. S BMEFILE="834-"_BMEETIME
  1. D LOG
  1. D END
  1. Q
  1. ;
  1. START ;BEGIN $O THRU ^BMEHOLD( -created by Routine BMEGMED
  1. ;which reads all records in AHCCCS File 1-420 Position &
  1. ;sets full record in ^BMEHOLD(Global
  1. ;S BMEMRATE=""
  1. ;
  1. ;K ^TMP($J),^BMEHOLD ;Kill off $Job and Previous Month's BMETMED Global
  1. ;
  1. S ^BMEHOLD(0)="BME MEDICAID GIS 834 HOLD^90333DI"
  1. A ; -- BEGIN $O THRU BMEHOLD(GLOBAL CREATED BY ROUTINE BME____GIS GLOBAL
  1. S BMEIFN=0 F S BMEIFN=$O(^BMEHOLD(BMEIFN)) Q:'BMEIFN D
  1. . S BMEREC=^BMEHOLD(BMEIFN,0)
  1. . S BMEMSSN=$P($G(BMEREC),U,2)
  1. . S BMEMNUM=$P($G(BMEREC),U,3)
  1. . S BMEMLNAM=$P($G(BMEREC),U,8)
  1. . S BMEMDOB=$P($G(BMEREC),U,5)
  1. . S BMEMSEX=$P($G(BMEREC),U,6)
  1. . S BMEFNAM=$P($G(BMEREC),U,9)
  1. . S BMEMEBD=$P($G(BMEREC),U,4)
  1. .;
  1. . S BMEMLNAM=$P(BMEMLNAM," ",1) ; Strip out spaces on Medicaid Last Name
  1. . S BMEFNAM=$P(BMEFNAM," ",1) ;Strip out spaces on Medicaid First Name
  1. . S BMEMFULN=BMEMLNAM_","_BMEFNAM ;Medicaid Full Name
  1. . S BMEMRATE="" S BMEMKID="" S BMESSNCK="" S BMENOCT=0 S BMEGTOT=BMEGTOT+1
  1. . D MEDNUM ;Check the Med Elig Number before SSN
  1. . I BMENUMCK=0 S DFN=$O(^DPT("SSN",+BMEMSSN,0)) I 'DFN N BMEREC,BMEMSSN,BMEMNUM D ^BME8340 Q
  1. . . D MEDNAME ;Check Medicaid Elig File's Medicaid Name (if exists)
  1. . S BMESDOB=$P(^DPT(DFN,0),U,3) ;VA PT DOB
  1. . S BMEMDOB=$$DOB ; AHCCCS DOB
  1. . S BMESSEX=$P(^DPT(DFN,0),U,2),BMESFULN=$P(^(0),U) ; VA PT SEX
  1. . S BMESLNAM=$P(BMESFULN,",",1) ; VA PT FULL LAST NAME
  1. . S BMEMRATE=$P($G(BMEREC),U,7) ;AHCCCS Rate Code-Ck for Kids Care
  1. . S BMEMEBD=$$EBD ;AHCCCS ENTROLLMENT DATE (NO ENDING DT AVAIL IN 834 TRANSACTION)
  1. . S BMEMERD=$$ERD,BMECOVTP=$P($G(^BMEHOLD(BMEIFN,11)),U,3) ;Enrollment Dt - CT=Coverage Type)
  1. . S BMENOCT=0 ;Variable for Not counting New & Updates twice
  1. . I BMEMRATE>5999&(BMEMRATE<7000) S BMEMKID="Y" S BMEKIDCT=BMEKIDCT+1 N BMEREC,BMEMSSN,BMEMNUM D ^BME8340 Q ;Quit if KIDS CARE-Per J. Hathcoat 1/25/01
  1. . I BMEMLNAM'=BMESLNAM&(BMENAMCK'=1) S BMESSNCT=BMESSNCT+1 S BMESSNCK="Y" N BMEREC,BMEMSSN,BMEMNUM D ^BME8340 Q ; Quit if no match on Med Name or Last Name
  1. . I BMEMDOB'=BMESDOB S BMESSNCT=BMESSNCT+1 S BMESSNCK="Y" N BMEREC,BMEMSSN,BMEMNUM D ^BME8340 Q ;Quit on DOB No Match
  1. . I BMEMSEX'=BMESSEX S BMESSNCT=BMESSNCT+1 S BMESSNCK="Y" N BMEREC,BMEMSSN,BMEMNUM D ^BME8340 Q ;Quit if no match on Sex
  1. . D NEW,UP0,MED
  1. . S BMETOTCT=BMETOTCT+1 ;Total Record Count - Regardless of action
  1. Q
  1. ;
  1. MED ; -- add eligiblity date(s)/data
  1. S BMEIEN=$O(^AUPNMCD("B",DFN,0)) Q:'BMEIEN
  1. ;Q:$P($G(^AUPNMCD(BMEIEN,11,BMEMEBD,0)),U,2)=BMEMEED ;Quit if Both Beg/End Match already- 834 has no Ending Date
  1. S:'$D(^AUPNMCD(BMEIEN,11,0)) $P(^(0),U,2)="9000004.11D"
  1. S BMELEBD=$P($G(^AUPNMCD(BMEIEN,11,0)),U,3) ;Last Beg Date entered
  1. I BMELEBD="" D
  1. . S $P(^AUPNMCD(BMEIEN,11,0),U,3)=BMEMEBD
  1. . S $P(^AUPNMCD(BMEIEN,11,0),U,4)=$P(^(0),U,4)+1
  1. . S DR=".01///"_BMEMEBD_";.03////"_BMECOVTP ; Add Beginning DT Only
  1. . S DIE="^AUPNMCD("_BMEIEN_",11,",DA(1)=BMEIEN,DA=BMEMEBD D ^DIE K DIE,DR,DA,DINUM
  1. . I BMENOCT=0 S BMEMUPDT=BMEMUPDT+1 D UPDATES^BMEMSTR ;Update Count-Update Master List
  1. I BMELEBD'="" D
  1. . S BMELEED=$P($G(^AUPNMCD(BMEIEN,11,BMELEBD,0)),U,2)
  1. . I BMELEED'="" S $P(^AUPNMCD(BMEIEN,11,0),U,3)=BMEMEBD
  1. . I BMELEED'="" S $P(^AUPNMCD(BMEIEN,11,0),U,4)=$P(^(0),U,4)+1
  1. . I BMELEED'="" S DR=".01///"_BMEMEBD_";03////"_BMECOVTP ; Add Beg DT Only
  1. . I BMELEED'="" S DIE="^AUPNMCD("_BMEIEN_",11,",DA(1)=BMEIEN,DA=BMEMEBD D ^DIE K DIE,DR,DA,DINUM I BMENOCT=0 S BMEMUPDT=BMEMUPDT+1 D UPDATES^BMEMSTR Q
  1. . D STILLACT^BMEMSTR ;Existing Patient fell through-Still Active Only/no Update
  1. Q
  1. ;
  1. NEW ; -- create new entry in medicaid eligible
  1. Q:$O(^AUPNMCD("B",+DFN,0)) ;Quit if already in Medicaid Eligibility File
  1. D ^XBFMK K DIADD,DINUM
  1. S X=DFN,DIC="^AUPNMCD(",DIC(0)="L",DLAYGO=9000004
  1. S DIC("DR")=".02////"_BMEINS_";.03////"_BMEMNUM_";.04////"_3_";2101////"_BMEMFULN
  1. S DIC("DR")=DIC("DR")_";.07////"_BMESSEX_";.08////"_DT_";.12////"_BMEMRATE
  1. ;K DD,DO
  1. D FILE^DICN S BMEIEN=+Y D ^XBFMK K DIADD,DINUM
  1. S BMEMNEW=BMEMNEW+1 ;Counter for New Adds to Medicaid Eligibility file
  1. S BMENOCT=1 ;Don't count again on Date Updates UP0
  1. D NEW^BMEMSTR
  1. Q
  1. ;
  1. UP0 ; -- update 0th node - Patient Demographics Only
  1. S BMEIEN=$O(^AUPNMCD("B",DFN,0)) Q:'BMEIEN
  1. S:'$P(^AUPNMCD(BMEIEN,0),U,2) $P(^AUPNMCD(BMEIEN,0),U,2)=BMEINS
  1. S:'$P(^AUPNMCD(BMEIEN,0),U,3) $P(^AUPNMCD(BMEIEN,0),U,3)=BMEMNUM
  1. S:'$P(^AUPNMCD(BMEIEN,0),U,4) $P(^AUPNMCD(BMEIEN,0),U,4)=3
  1. S DIE="^AUPNMCD(",DA=BMEIEN,DR="2101////"_BMEMFULN_";.08////"_DT_";.12////"_BMEMRATE
  1. D ^DIE K DIE,DR,DA
  1. ;I BMENOCT=0 S BMEMUPDT=BMEMUPDT+1 ;Counter for Updates only to Medicaid Eligibility File
  1. Q
  1. ;
  1. END ; -- cleanup
  1. S BMEGTOT=BMEGTOT-1
  1. ;W !!,"End of Download Update!!!",!
  1. ;W !!
  1. ;W "Total Records Processed: "_BMEGTOT
  1. ;W !,"Total Action Records Process: "_BMETOTCT
  1. ;W !,"Total New Records Added: "_BMEMNEW
  1. ;W !,"Total Updated Records: "_BMEMUPDT
  1. ;W !,"Total Records with SSN Match Only: "_BMESSNCT
  1. ;W !!,"Total KID's Care: "_BMEKIDCT
  1. ;
  1. K BMEIFN,DFN,BMEIEN,BMEMEBD,BMECOVTP,BMEMNUM,BMEMSEX,BMEREC,BMECNT,BMEMFULN,BMEFNAM,BMENAMCK,MEDNAME,BMEMIEN,BMEFNAM,BMEMDOB,BMEMRATE
  1. K BMEMNEW,BMEMUPDT,BMESSNCT,BMETOTCT,BMENOCT,BMEGTOT,BMEBTIME,BMEMKID,BMEKIDCT,BMEETIME
  1. Q
  1. ;
  1. EED() ; -- eligibility end date (No Longer Available in the 834 Transaction)
  1. ;N X,Y S BMEYYYY=$E(BMEREC,412,415),BMEMMDD=$E(BMEREC,416,419)
  1. ;S BMEMEED=BMEMMDD_BMEYYYY
  1. ;S X=BMEMEED D ^%DT Q Y
  1. ;
  1. EBD() ; -- eligibility beg date
  1. S BMEMEBD=$P($G(BMEREC),U,4) ; Enrollment Date
  1. ;
  1. N X,Y S BMEYYYY=$E(BMEMEBD,1,4),BMEMMDD=$E(BMEMEBD,5,8)
  1. S BMEMEBD=BMEMMDD_BMEYYYY
  1. S X=BMEMEBD D ^%DT Q Y
  1. ;
  1. EHIS() ; -- eligibilities after date/flag
  1. N X1,X2,X S X1=DT,X2=-180 D C^%DTC Q X
  1. ;
  1. HRCN() ;EP; -- IHS health record number
  1. Q $P($G(^AUPNPAT(+$G(DFN),41,+$G(DUZ(2)),0)),"^",2)
  1. ;
  1. ERD() ;EP -- Eligibility Enrollment Dt (Same as Beg Date on Roster)
  1. S BMEMERD=$P($G(BMEREC),U,4) ; Enrollment Date (Beg Elig. Dt)
  1. N X,Y S BMEYYYY=$E(BMEMERD,1,4),BMEMMDD=$E(BMEMERD,5,8)
  1. S BMEMERD=BMEMMDD_BMEYYYY
  1. S X=BMEMERD D ^%DT Q Y
  1. ;N X,Y S X=$E(BMEREC,404,411) D ^%DT Q Y
  1. ;
  1. DOB() ;EP - Date of AHCCCS Birth Date Conversion
  1. N X,Y S BMEYYYY=$E(BMEMDOB,1,4),BMEMMDD=$E(BMEMDOB,5,8)
  1. S BMEMDOB=BMEMMDD_BMEYYYY
  1. S X=BMEMDOB D ^%DT Q Y
  1. ;
  1. LOG ;Update BME MEDICAL ELIGIBLE DOWNLOAD LOG
  1. ;W !!,"The Download Process is Now Complete!!"
  1. ;W !!,"I will now update the Download Log with the final run documentation",!
  1. ;The .01 Entry is Today's Date at time of run - BMEBTIME Variable
  1. D ^XBFMK K DIADD,DINUM
  1. S X=BMEBTIME,DIC="^BMEMLOG(",DIC(0)="L",DLAYGO=90333
  1. S DIC("DR")=".02////"_BMEETIME_";.03////"_BMEGTOT_";.04///"_BMETOTCT_";.05////"_BMESSNCT_";1///"_BMEKIDCT
  1. S DIC("DR")=DIC("DR")_";.06////"_BMEMNEW_";.07////"_BMEMUPDT_";.08////"_BMEFILE
  1. D FILE^DICN S IEN=+Y D ^XBFMK K DIADD,DINUM
  1. ;
  1. ;W !!,"Log File Updated",!
  1. ;
  1. Q
  1. ;
  1. END2 ;Abnormal Termination - Medicaid Insurer missing from Insurer File
  1. ;W !,"The Insurer - ARIZONA MEDICAID -missing from the Insurer File",!
  1. ;W !,"The Initial Process of creating the BMEGMED Global is complete",!
  1. ;W "however, the Update Run (BMEMED) cannot be ran - See your Site Manager",!!
  1. Q
  1. ;
  1. MEDNAME ;Check Med Elig Medicaid Name-If exists for match
  1. ;
  1. S BMENAMCK=0
  1. S BMEMIEN=$O(^AUPNMCD("B",+DFN,0))
  1. Q:'BMEMIEN
  1. S BMEMEDNA=$P($G(^AUPNMCD(BMEMIEN,21)),U,1)
  1. Q:BMEMEDNA=""
  1. I BMEMEDNA=BMEMFULN S BMENAMCK=1
  1. Q
  1. ;
  1. MEDNUM ;Check Med Elig Number against RPMS
  1. ;
  1. S BMENUMCK=0
  1. S BMEMIEN=$O(^AUPNMCD("AE",BMEMNUM,0))
  1. Q:'BMEMIEN
  1. S BMEMEDNU=$P($G(^AUPNMCD(BMEMIEN,0)),U,3)
  1. Q:BMEMEDNU=""
  1. I BMEMEDNU=BMEMNUM S BMENUMCK=1 S DFN=$P($G(^AUPNMCD(BMEMIEN,0)),U,1)
  1. Q
  1. ;