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

AGRPTINS.m

Go to the documentation of this file.
  1. AGRPTINS ; IHS/SD/TPF - REPORT OF TOP 'N' INSURERS
  1. ;;7.1;PATIENT REGISTRATION;;AUG 25,2005
  1. ;
  1. ;RUN A REPORT TO LIST THE TOP INSURERS THAT HAVE OPEN ELIGBILITY
  1. ;AT A SPECIFIC POINT IN TIME.
  1. ;I.E. ASK FOR A SPECIFIC POINT IN TIME
  1. ;GO THROUGH THE PRIVATE ELIGIBILITY,MEDICAID,MEDICARE FILE AND
  1. ;FIND INSURERS THAT ARE ACTIVE. LET USER CHOOSE TO DISREGARD NON
  1. ;ACTIVE PATIENTS. ALLOW USER TO CHOOSE HOW MANY TOP INSURERS TO
  1. ;LIST
  1. ;
  1. EN ;EP
  1. S ROUTNAME=$P($T(+1)," ")
  1. S:$G(AGLINE("EQ"))="" $P(AGLINE("EQ"),"=",81)=""
  1. D HDR
  1. ASKFAC ;EP - ASK FOR A SPECIFIC FACILITY OR ALL
  1. K DIR,DTOUT,DUOUT,DIRUT,DIROUT,TARFAC
  1. S DIR("A")="Check for which Facility: All//"
  1. S DIR(0)="POA^9999999.06:EMZ"
  1. D ^DIR
  1. I $D(DTOUT)!($D(DUOUT))!($D(DIROUT)) D EXIT Q
  1. I X="" S TARFAC="ALL"
  1. E S TARFAC=+Y
  1. K DIR
  1. ASKDT ;EP - ASK FOR THE 'POINT IN TIME'
  1. W !!
  1. K DIR,DTOUT,DUOUT,DIRUT,DIROUT
  1. S DIR("A")="Date for the point in Time want eligibility for"
  1. S DIR(0)="DO"
  1. D ^DIR
  1. G:$D(DTOUT)!($D(DUOUT))!($D(DIRUT))!($D(DIROUT)) ASKFAC
  1. S TARDATE=Y
  1. K DIR
  1. ASKACTPT ;EP - ASK WHETHER TO DISREGARD NON-ACTIVE PATIENTS
  1. K DIR,DTOUT,DUOUT,DIRUT,DIROUT
  1. S DIR("A")="Want to check if patient is active? "
  1. S DIR(0)="YOA"
  1. D ^DIR
  1. G:$D(DTOUT)!($D(DUOUT))!($D(DIRUT))!($D(DIROUT)) ASKDT
  1. S NONACT=+Y ;IF TRUE THEN DO NOT COUNT NON-ACTIVE PATIENTS
  1. K DIR
  1. ASKENTRY ;EP
  1. K DIR,DTOUT,DUOUT,DIRUT,DIROUT
  1. S DIR("A")="How many entries do you want in the list"
  1. S DIR("B")=20
  1. S DIR(0)="NO^5:100"
  1. D ^DIR
  1. G:$D(DTOUT)!($D(DUOUT))!($D(DIRUT))!($D(DIROUT)) ASKACTPT
  1. S MAXDISP=+Y
  1. K DIR
  1. D NOW^%DTC S Y=% D DD^%DT S REPTIME=Y
  1. D ASKDEV
  1. G:POP EN
  1. I $G(IO("Q")) D QUE Q
  1. U IO
  1. S PAGENO=0
  1. D RUN(TARDATE,NONACT)
  1. D ^%ZISC
  1. G EN
  1. RUN(TARDATE,NONACT) ;EP
  1. ;IF REPTIME IS NULL THEN TASKMAN IS CALLING
  1. I $G(REPTIME)="" D NOW^%DTC S Y=% D DD^%DT S REPTIME=Y
  1. K ^XTMP(ROUTNAME,$J)
  1. D COMPILE(TARDATE,NONACT)
  1. F GLO="^AUPNMCD","^AUPNMCR","^AUPNRRE" D
  1. .D GENCOMPL(GLO,TARDATE,NONACT)
  1. I '$D(^XTMP(ROUTNAME,$J)) W !,"NO INSURANCE MEMBERS FOUND FOR ",$P($G(^DIC(4,TARFAC,0)),U)," FACILITES" H 3 G EN
  1. D SORTMAX("^XTMP("_ROUTNAME_",$J)")
  1. D PRINTMAX("^XTMP("_ROUTNAME_",$J,""MAXSORT"")")
  1. Q
  1. ASKDEV ;EP
  1. S %ZIS="Q"
  1. D ^%ZIS
  1. Q
  1. HDR ;EP
  1. X ^%ZOSF("UCI") S UCI=$P(Y,",")
  1. W @IOF
  1. D CENTER("PATIENT REGISTRATION")
  1. W !!
  1. D CENTER($P($G(^DIC(4,DUZ(2),0)),U))
  1. W !!
  1. D CENTER("TOP 20 INSURERS REPORT")
  1. W !!,$$CJ^XLFSTR("*** NOTE: IF YOU EDIT A PATIENT AND SEE THEIR NAME IN REVERSE VIDEO ***",IOM)
  1. W !,$$CJ^XLFSTR("*** WITH '(RHI)' BLINKING NEXT TO IT, IT MEANS THEY HAVE RESTRICTED ***",IOM)
  1. W !,$$CJ^XLFSTR("*** HEALTH INFORMATION ***",IOM)
  1. Q
  1. CENTER(X) ;
  1. S CENTER=IOM/2
  1. W ?CENTER-($L(X)/2),X
  1. Q
  1. COMPILE(TARDATE,NONACT,MAXDISP) ;EP - GO THROUGH THE PRVT ELG FILE AND
  1. ;FIND ALL PATIENTS WITH ACTIVE POLICIES
  1. N PDFN,INS
  1. S ELIGCNT=0
  1. S PDFN=0
  1. F S PDFN=$O(^AUPNPRVT(PDFN)) Q:'PDFN D
  1. .Q:'$D(^AUPNPAT(PDFN,0)) ;BAD NODE
  1. .I TARFAC'="ALL" Q:'$D(^AUPNPAT(PDFN,41,TARFAC,0)) ;SKIP FACILITIES NOT PICKED AT 'ASKFAC' PROMPT
  1. .S STATDT=$P($G(^AUPNPAT(PDFN,41,TARFAC,0)),U,3) ;INACTIVATED/DELETED FIELD
  1. .I NONACT I TARDATE=STATDT!(TARDATE>STATDT),(STATDT'="") Q ;IF THEY WANT TO DISREGARD NOACTIVE PATIENTS AND THE PATIENT IS CONSIDERED INACTIVE THEN QUIT
  1. .S INS=0
  1. .F S INS=$O(^AUPNPRVT(PDFN,11,INS)) Q:'INS D
  1. ..S ELIGDT=$P($G(^AUPNPRVT(PDFN,11,INS,0)),U,6)
  1. ..S EXPDT=$P($G(^AUPNPRVT(PDFN,11,INS,0)),U,7)
  1. ..S COVTYP=$P($G(^AUPNPRVT(PDFN,11,INS,0)),U,3) S:COVTYP'="" COVTYP=$P($G(^AUTTPIC(COVTYP,0)),U) S:COVTYP="" COVTYP="UNDEF"
  1. ..I $$ISACTIVE(ELIGDT,EXPDT,TARDATE) D
  1. ...S INSPTR=$P($G(^AUPNPRVT(PDFN,11,INS,0)),U) S:INSPTR="" INSPTR="UNDEF"
  1. ...S ELIGCNT=ELIGCNT+1
  1. ...S ^XTMP(ROUTNAME,$J,INSPTR,COVTYP)=$G(^XTMP(ROUTNAME,$J,INSPTR,COVTYP))+1
  1. Q
  1. GENCOMPL(GLO,TARDATE,NONACT) ;EP - LETS DO THE OTHER INSURERS. PASS
  1. ;GLOBAL ROOT
  1. N PDFN,ELIGDT,EXPDT,ELIGCNT
  1. S PDFN=0,ELIGCNT=0
  1. F S PDFN=$O(@GLO@(PDFN)) Q:PDFN=""!('PDFN) D
  1. .Q:'$D(@GLO@(PDFN,11)) ;NO ELIGIBILITY DATES
  1. .Q:'$D(^AUPNPAT(PDFN,0)) ;NOT EVEN REGISTERED
  1. .I TARFAC'="ALL" Q:'$D(^AUPNPAT(PDFN,41,TARFAC,0)) ;SKIP FACILITIES NOT PICKED AT 'ASKFAC' PROMPT
  1. .S STATDT=$P($G(^AUPNPAT(PDFN,41,DUZ(2),0)),U,3) ;INACTIVATED/DELETED FIELD
  1. .S DTREC=0
  1. .F S DTREC=$O(@GLO@(PDFN,11,DTREC)) Q:'DTREC D
  1. ..S ELIGDT=$P($G(@GLO@(PDFN,11,DTREC,0)),U)
  1. ..S EXPDT=$P($G(@GLO@(PDFN,11,DTREC,0)),U,2)
  1. ..S COVTYP=$P($G(@GLO@(PDFN,11,DTREC,0)),U,3) S:COVTYP="" COVTYP="UNDEF"
  1. ..I $$ISACTIVE(ELIGDT,EXPDT,TARDATE) D
  1. ...S INSPTR=$P($G(@GLO@(PDFN,0)),U,2) S:INSPTR="" INSPTR="UNDEF"
  1. ...S ELIGCNT=ELIGCNT+1
  1. ...S ^XTMP(ROUTNAME,$J,INSPTR,COVTYP)=$G(^XTMP(ROUTNAME,$J,INSPTR,COVTYP))+1
  1. Q
  1. ISACTIVE(EFFDT,ENDDT,TARDATE) ;
  1. NEW OPENEND
  1. I EFFDT="",(ENDDT="") Q 0
  1. S ENDDT=ENDDT ;TRUE IF ENDING DATE IS AT COB OF ENDING DATE - ANSWER FROM ADRIAN IS IT IS
  1. ; IN FORCE FOR ALL OF TODAY
  1. S OPENEND=ENDDT=""
  1. I OPENEND I TARDATE=EFFDT!(TARDATE>EFFDT) Q 1
  1. I TARDATE=EFFDT!(TARDATE=ENDDT) Q 1
  1. I TARDATE>EFFDT&(TARDATE<ENDDT) Q 1
  1. Q 0
  1. SORTMAX(GLO) ;EP - GO THROUGH TEMP GLOBAL AND RE-SORT BY MAX
  1. N INSPTR,COVTYP
  1. S INSPTR=""
  1. F S INSPTR=$O(^XTMP(ROUTNAME,$J,INSPTR)) Q:INSPTR=""!(INSPTR="ZMAXSORT") D
  1. .S COVTYP=""
  1. .F S COVTYP=$O(^XTMP(ROUTNAME,$J,INSPTR,COVTYP)) Q:COVTYP="" D
  1. ..S MAX=$G(^XTMP(ROUTNAME,$J,INSPTR,COVTYP))
  1. ..S ^XTMP(ROUTNAME,$J,"ZMAXSORT",MAX,INSPTR,COVTYP)=""
  1. Q
  1. PRINTMAX(GLO) ;EP - PRINT THE MAX COUNTS OUT
  1. D MAINHDR
  1. U IO
  1. N MAX,LINE,ESCAPE
  1. S ESCAPE=0,LINE=0
  1. S MAX=""
  1. F RANK=1:1 S MAX=$O(^XTMP(ROUTNAME,$J,"ZMAXSORT",MAX),-1) Q:MAX=""!(ESCAPE) D
  1. .S INSPTR=""
  1. .F S INSPTR=$O(^XTMP(ROUTNAME,$J,"ZMAXSORT",MAX,INSPTR)) Q:INSPTR=""!(ESCAPE) D
  1. ..S COVTYP=""
  1. ..F ITEM=1:1 S COVTYP=$O(^XTMP(ROUTNAME,$J,"ZMAXSORT",MAX,INSPTR,COVTYP)) Q:COVTYP=""!(ESCAPE) D
  1. ...W:ITEM'=1 !
  1. ...S LINE=LINE+1
  1. ...S ESCAPE=LINE>MAXDISP
  1. ...I ESCAPE,(IOST[("C-")) W ! K DIR S DIR(0)="E" D ^DIR Q
  1. ...I ESCAPE,(IOST'[("C-")) Q
  1. ...W !?2,$E($P($G(^AUTNINS(INSPTR,0)),U),1,23)
  1. ...W ?31,$S(COVTYP="UNDEF":"",1:COVTYP)
  1. ...W ?62,MAX
  1. ...;NOTE: HEADER IS 10 LINES
  1. ...I $Y>(IOSL-10),(IOST[("C-")) W ! K DIR S DIR(0)="E" D ^DIR S ESCAPE=X=U D:'ESCAPE MAINHDR Q
  1. ...I $Y>(IOSL-10) D MAINHDR
  1. Q
  1. MAINHDR ;EP
  1. S PAGENO=PAGENO+1
  1. W @IOF
  1. W !,$P($G(^VA(200,DUZ,0)),U)
  1. D CENTER($P($G(^DIC(4,DUZ(2),0)),U))
  1. W ?73,"Page ",PAGENO
  1. W !
  1. D CENTER("TOP '"_MAXDISP_"' INSURER'S REPORT")
  1. W !
  1. D CENTER("as of "_REPTIME)
  1. W !!
  1. I NONACT D CENTER("REPORT CONTAINS ACTIVE PATIENTS ONLY")
  1. W !!
  1. W !?2,"INSURER",?26,"COVERAGE TYPE",?61,"COUNT"
  1. W !,$G(AGLINE("EQ"))
  1. Q
  1. EXIT ;EP - CLEANUP VARS
  1. K CENTER,COVTYP,DIR,DTREC,EFFDT,ELIGCNT,ELIGDT,ENDDT,ESCAPE,EXPDT,GLO,TARFAC,AGLINE,TARDATE,NONACT,PAGENO,ROUTNAME
  1. Q
  1. QUE ;EP
  1. K IO("Q")
  1. S ZTRTN="RUN^AGRPTINS(TARDATE,NONACT)",ZTDESC="REPORT OF TOP "_MAXDISP_" INSURERS"
  1. S ZTSAVE("ROUTNAME")=""
  1. S ZTSAVE("AGLINE")=""
  1. S ZTSAVE("TARFAC")=""
  1. S ZTSAVE("TARDATE")=""
  1. S ZTSAVE("NONACT")=""
  1. S ZTSAVE("MAXDISP")=""
  1. S ZTSAVE("PAGENO")=0
  1. D ^%ZTLOAD W:$D(ZTSK) !,"REQUEST QUEUED AS TASK # "_ZTSK_" !",!
  1. Q