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

ABSPOSR7.m

Go to the documentation of this file.
  1. ABSPOSR7 ;IHS/OIT/SCR - POS Insurance Report ;
  1. ;;1.0;PHARMACY POINT OF SALE;**38,50**;JUN 01, 2001 ;Build 38
  1. ;;
  1. ;;BASED ON FILE ABMRMCRD - 2.6;IHS 3P BILLING SYSTEM;;NOV 12, 2009
  1. Q
  1. EN ;ENTRY POINT from ABSP RPT INSURER REPORT
  1. N ABSPLINE,ABSPINS,ABSPLIST,ABSPTYPE,ABSPTYPI,ABSPELDT,ABSPDEAD,ABSPDTL
  1. N ABSPCNT,ABSPTOT,ABSPSU,ABSPNAME
  1. S $P(ABSPLINE,"-",79)="-"
  1. D MESSAGE ;message about report
  1. S ABSPDTL=0
  1. S ABSPTYPE=$$INSTYPE()
  1. Q:ABSPTYPE=-1
  1. S ABSPTYPI=$P(ABSPTYPE,":",1)
  1. S ABSPTYPE=$P(ABSPTYPE,":",2)
  1. S ABSPINS=$$INS(ABSPTYPI)
  1. Q:ABSPINS=-1
  1. W !,"Reporting For Insurance Type: "_ABSPTYPE
  1. D GETINS(ABSPINS,ABSPTYPI,.ABSPLIST,.ABSPNAME) ;get list of insurers we're looking for
  1. D DISP(.ABSPNAME) ;display list
  1. S ABSPELDT=$$ELIGDT() ;get list for what date?
  1. Q:ABSPELDT=-1
  1. S ABSPDEAD=$$INACT() ;include inactive/deceased pts?
  1. Q:ABSPDEAD=-1
  1. I ABSPINS=""
  1. S:ABSPINS'="ALL" ABSPDTL=$$DETAILQ() ;detail?
  1. Q:ABSPDTL=-1
  1. D DEVSEL
  1. W !,"Gathering data...",!
  1. D COUNTIT(.ABSPLIST,ABSPTYPE,ABSPELDT,ABSPDEAD,.ABSPCNT,.ABSPTOT,.ABSPSU) ;go count data
  1. D OUTPUT(ABSPTYPE,ABSPELDT,ABSPDTL,.ABSPNAME,.ABSPCNT,.ABSPTOT,.ABSPSU)
  1. Q
  1. ;
  1. MESSAGE ;
  1. W !?2,"This option will print information about the number of registered patients"
  1. W !?2,"who are currently enrolled in an insurance type that you will select."
  1. W !?2,"You will be asked if you wish to include only active patients."
  1. W !?2,"You will be asked to select a particular POS insurance company of the type selected"
  1. W !?2,"PATIENT DETAIL can be selected unless ALL insurance companies are specified"
  1. W !!?2,"You will be asked to enter an ""As of"" date to be used in determining"
  1. W !?2,"those patients who are ""actively"" enrolled in a plan of the selected type."
  1. Q
  1. ;
  1. INSTYPE() ;SELECT THE TYPE OF INSURER TO REPORT ON
  1. N DIX,X,Y
  1. S DIR(0)="SX^D:MEDICAID FI;P:PRIVATE;MD:MEDICARE PART D"
  1. S DIR("B")="MD"
  1. S DIR("A")="SELECT INSURER TYPE"
  1. D ^DIR
  1. Q:$D(DUOUT)!$D(DIROUT)!$D(DIRUT)!$D(DTOUT) -1
  1. Q X_":"_$G(Y(0))
  1. ;
  1. INS(ABSPTYPE) ; SELECT THE INSURER OR CHOOSE ALL INSURERS
  1. N DIC,X,Y,ABSPINS
  1. S DIC(0)="AEMNQZ"
  1. S DIC("A")="Please choose an insurer or leave blank for ALL: "
  1. S DIC="^ABSPEI("
  1. S DIC("S")="I $P(^AUTNINS($P($G(^ABSPEI(Y,0)),U,1),2),U,1)="""_ABSPTYPE_""""
  1. D ^DIC K DIC
  1. Q:$D(DUOUT)!$D(DIROUT)!$D(DIRUT)!$D(DTOUT) -1
  1. I Y=-1 S ABSPINS="ALL"
  1. I Y'=-1 S ABSPINS=$P(Y,"^",1) ;,ABSPINSN=$P(Y,"^",2)
  1. Q ABSPINS
  1. ;
  1. GETINS(ABSPINS,ABSPTYPE,ABSPLIST,ABSPNAME) ;RETURN info on specified insurer or all of identified type
  1. ;
  1. N ABSPNAM,ABSPNS
  1. S ABSPNS=0
  1. I ABSPINS="ALL" D
  1. .F S ABSPNS=$O(^ABSPEI(ABSPNS)) Q:+ABSPNS=0 D
  1. ..I $P(^AUTNINS($P($G(^ABSPEI(ABSPNS,0)),U,1),2),U,1)=ABSPTYPE D
  1. ...S ABSPNAM=$P($G(^AUTNINS(ABSPNS,0)),U)
  1. ...S ABSPLIST(ABSPNS)=ABSPNAM
  1. ...S ABSPNAME(ABSPNAM,ABSPNS)=""
  1. I ABSPINS'="ALL" D
  1. .S ABSPNAM=$P($G(^AUTNINS(ABSPINS,0)),U)
  1. .S ABSPLIST(ABSPINS)=ABSPNAM
  1. .S ABSPNAME(ABSPNAM,ABSPINS)=""
  1. Q
  1. ;
  1. DISP(ABSPNAME) ;display list of insurers
  1. N ABSPNAM
  1. W !," The following POS Insurer(s) will be included on this report:"
  1. S ABSPNAM=""
  1. I $O(ABSPNAME(""))="" W !,"No POS Insurers Found" Q
  1. F S ABSPNAM=$O(ABSPNAME(ABSPNAM)) Q:ABSPNAM="" W !," "_ABSPNAM
  1. Q
  1. ;
  1. ELIGDT() ;get list for what date-default to today
  1. N ABSPELDT
  1. W !
  1. K DIR,DIC,DIE,X,Y,DR
  1. S DIR(0)="D"
  1. S DIR("A")="Display eligibility as of what date?"
  1. S DIR("B")="Today"
  1. D ^DIR
  1. K DIR
  1. Q:$D(DUOUT)!$D(DIROUT)!$D(DIRUT)!$D(DTOUT) -1
  1. S ABSPELDT=+Y
  1. W " ("_Y(0)_")" ;display date selected
  1. Q ABSPELDT
  1. ;
  1. INACT() ;include inactive/deceased pts?
  1. W !
  1. N DIR,DIC,DIE,X,Y,DR,ABSPALL
  1. S DIR(0)="Y"
  1. S DIR("A")="Do you wish to EXCLUDE inactive and deceased patients"
  1. S DIR("B")="YES"
  1. D ^DIR
  1. Q:$D(DUOUT)!$D(DIROUT)!$D(DIRUT)!$D(DTOUT) -1
  1. I Y=1 S ABSPALL=0 ;exclude
  1. E S ABSPALL=1 ;include all patients
  1. Q ABSPALL
  1. DETAILQ() ;
  1. W !
  1. N DIR,DIC,DIE,X,Y,DR,ABSPDTL
  1. S DIR(0)="Y"
  1. S DIR("A")="Do you wish to view detail (patients)"
  1. S DIR("B")="NO"
  1. D ^DIR
  1. Q:$D(DUOUT)!$D(DIROUT)!$D(DIRUT)!$D(DTOUT) -1
  1. I Y=1 S ABSPDTL=1 ;detail
  1. E S ABSPDTL=0 ;summary
  1. Q ABSPDTL
  1. ;
  1. COUNTIT(ABSPLIST,ABSPTYPE,ABSPELDT,ABSPDEAD,ABSPCNT,ABSPTOT,ABSPSU) ;do counts for selected insurers
  1. I (ABSPTYPE="MEDICAID FI") D MEDICAID(.ABSPLIST,ABSPELDT,ABSPDEAD,.ABSPCNT,.ABSPTOT,.ABSPSU)
  1. I (ABSPTYPE="PRIVATE") D PRIVATE(.ABSPLIST,ABSPELDT,ABSPDEAD,.ABSPCNT,.ABSPTOT,.ABSPSU)
  1. I (ABSPTYPE="MEDICARE PART D") D MEDICARE(.ABSPLIST,ABSPELDT,ABSPDEAD,.ABSPCNT,.ABSPTOT,.ABSPSU)
  1. Q
  1. ;
  1. MEDICARE(ABSPLIST,ABSPELDT,ABSPDEAD,ABSPCNT,ABSPTOT,ABSPSU) ;
  1. N ABSPEN,ABSPEIEN,ABSPCOV,ABSPQUIT,ABSPSDT,ABSPEDT,ABSPHRN,ABSPNAM,ABSPHRNS,ABSPPIEN,ABSPHRNN
  1. N ABSPPN,ABSPSUC,ABSPSUS,ABSPDPT
  1. S ABSPEN=0,ABSPQUIT=0
  1. F S ABSPEN=$O(^AUPNMCR(ABSPEN)) Q:+ABSPEN=0 D
  1. .S ABSPDPT=$P(^AUPNMCR(ABSPEN,0),U,1)
  1. .Q:$G(^DPT(ABSPDPT,0))="" ;Still have to look out for that...
  1. .I $D(^DPT(ABSPDPT,.35)),$P(^(.35),U,1)]"",$P(^(.35),U,1)<ABSPELDT Q
  1. .S ABSPEIEN=0
  1. .F S ABSPEIEN=$O(^AUPNMCR(ABSPEN,11,ABSPEIEN)) Q:+ABSPEIEN=0 D
  1. ..S ABSPCOV=$P($G(^AUPNMCR(ABSPEN,11,ABSPEIEN,0)),U,3) ;coverage type
  1. ..Q:ABSPCOV'="D"
  1. ..S ABSPPIEN=$P($G(^AUPNMCR(ABSPEN,11,ABSPEIEN,0)),U,4) ; plan name (pointer to ins file)
  1. ..I ($G(ABSPPIEN)="") S ABSPQUIT=1 Q
  1. ..I ($G(ABSPLIST(ABSPPIEN))="") S ABSPQUIT=1 Q ;no entry for insurer on requested list
  1. ..I ABSPDEAD=0,($P($G(^DPT(ABSPEN,.35)),U)'="") S ABSPQUIT=1 Q ;check exclude flag and DOD
  1. ..S ABSPSDT=$P($G(^AUPNMCR(ABSPEN,11,ABSPEIEN,0)),U) ;ELIG START DATE
  1. ..S ABSPEDT=$P($G(^AUPNMCR(ABSPEN,11,ABSPEIEN,0)),U,2) ;ELIG END DATE
  1. ..I (ABSPSDT<=ABSPELDT)&((ABSPEDT>ABSPELDT)!(ABSPEDT="")) D
  1. ...S ABSPHRN=0
  1. ...F S ABSPHRN=$O(^AUPNPAT(ABSPEN,41,ABSPHRN)) Q:+ABSPHRN=0 D
  1. ....S ABSPHRNS=$P($G(^AUPNPAT(ABSPEN,41,ABSPHRN,0)),U,5) ;inactive?
  1. ....I (ABSPDEAD=0&ABSPHRN)="I" S ABSPQUIT=1 Q ;check exclude inactive flag and status
  1. ....S ABSPSU=$S($P($G(^AUTTLOC(ABSPHRN,0)),U,5)'="":$P($G(^AUTTSU($P($G(^AUTTLOC(ABSPHRN,0)),U,5),0)),U),1:"NO SERVICE UNIT") ;SU name
  1. ....S ABSPSUC=$P($G(^AUTTLOC(ABSPHRN,0)),U,13) ;location city
  1. ....S ABSPSUS=$P($G(^AUTTLOC(ABSPHRN,0)),U,14) ;location state
  1. ....S ABSPSU(ABSPSU)=ABSPSUC_", "_$S(ABSPSUS'="":$P($G(^DIC(5,ABSPSUS,0)),U,2),1:"")
  1. ....S ABSPNAM=$P($G(^AUTNINS(ABSPPIEN,0)),U) ;insurer name
  1. ....I ($G(^TMP($J,"ABSPOSR7",ABSPSU,ABSPPIEN,ABSPDPT))="") D ;part D and not on list already
  1. ..... ; S ABSPPN=$P($G(^AUPNMCR(ABSPEN,11,ABSPEIEN,0)),U,6) ;ID
  1. .....S ABSPPN=$$GETMCR^AGUTL(ABSPEN,ABSPELDT) ;ID ; /IHS/OIT/RAM ; 18 DEC 17 ; new method of retrieving MCRE number / MBI.
  1. .....S ABSPHRNN=$P($G(^AUPNPAT(ABSPEN,41,ABSPHRN,0)),U,2) ;HRN
  1. .....S ^TMP($J,"ABSPOSR7",ABSPSU,ABSPPIEN,ABSPDPT)=ABSPHRNN_U_ABSPSDT_U_ABSPEDT_U_ABSPPN
  1. .....S ABSPCNT(ABSPSU,ABSPNAM,ABSPPIEN)=+$G(ABSPCNT(ABSPSU,ABSPNAM,ABSPPIEN))+1
  1. .....S ABSPTOT(ABSPSU,"TOTAL")=+$G(ABSPTOT(ABSPSU,"TOTAL"))+1
  1. .....S ABSPTOT("TOTAL")=+$G(ABSPTOT("TOTAL"))+1
  1. ; M ^BZHZ1($J,"ABSPOSR7")=^TMP($J,"ABSPOSR7") ; /IHS/OIT/RAM / TESTING PURPOSES ONLY...
  1. Q
  1. ;
  1. PRIVATE(ABSPLIST,ABSPELDT,ABSPDEAD,ABSPCNT,ABSPTOT,ABSPSU) ;
  1. N ABSPTIEN,ABSPEN,ABSPNS,ABSPSDT,ABSPEDT,ABSPHRN,ABSPHRNS,ABSPNAM,ABSPHRNN,ABSPPN
  1. S ABSPTIEN=0
  1. F S ABSPTIEN=$O(^AUPNPRVT(ABSPTIEN)) Q:+ABSPTIEN=0 D
  1. .S ABSPEN=0
  1. .F S ABSPEN=$O(^AUPNPRVT(ABSPTIEN,11,ABSPEN)) Q:+ABSPEN=0 D
  1. ..S ABSPNS=$P($G(^AUPNPRVT(ABSPTIEN,11,ABSPEN,0)),U)
  1. ..Q:$G(ABSPLIST(ABSPNS))="" ;not on list
  1. ..S ABSPSDT=$P($G(^AUPNPRVT(ABSPTIEN,11,ABSPEN,0)),U,6)
  1. ..S ABSPEDT=$P($G(^AUPNPRVT(ABSPTIEN,11,ABSPEN,0)),U,7)
  1. ..I ((ABSPSDT=ABSPELDT)!(ABSPSDT<ABSPELDT)),((ABSPEDT>ABSPELDT)!(ABSPEDT="")) D ;inside date range
  1. ...S ABSPHRN=0
  1. ...F S ABSPHRN=$O(^AUPNPAT(ABSPTIEN,41,ABSPHRN)) Q:+ABSPHRN=0 D
  1. ....S ABSPHRNS=$P($G(^AUPNPAT(ABSPTIEN,41,ABSPHRN,0)),U,5) ;inactive?
  1. ....I ABSPDEAD=0,ABSPHRNS="I" Q ;check exclude inactive flag and status
  1. ....S ABSPSU=$S($P($G(^AUTTLOC(ABSPHRN,0)),U,5)'="":$P($G(^AUTTSU($P($G(^AUTTLOC(ABSPHRN,0)),U,5),0)),U),1:"NO SERVICE UNIT") ;SU name
  1. ....S ABSPSU(ABSPSU)=$P($G(^AUTTLOC(ABSPHRN,0)),U,13)_", "_$S($P($G(^AUTTLOC(ABSPHRN,0)),U,14)'="":$P($G(^DIC(5,$P($G(^AUTTLOC(ABSPHRN,0)),U,14),0)),U,2),1:"")
  1. ....S ABSPNAM=$P($G(^AUTNINS(ABSPNS,0)),U) ;insurer name
  1. ....I $G(^TMP($J,"ABSPOSR7",ABSPSU,ABSPNS,ABSPTIEN))="" D
  1. .....S:$P($G(^AUPNPRVT(ABSPTIEN,11,ABSPEN,0)),U,8)'="" ABSPPN=$P($G(^AUPN3PPH($P($G(^AUPNPRVT(ABSPTIEN,11,ABSPEN,0)),U,8),0)),U,4)
  1. .....S ABSPHRNN=$P($G(^AUPNPAT(ABSPTIEN,41,ABSPHRN,0)),U,2) ;HRN
  1. .....S ^TMP($J,"ABSPOSR7",ABSPSU,ABSPNS,ABSPTIEN)=ABSPHRNN_U_ABSPSDT_U_ABSPEDT_U_ABSPPN
  1. .....S ABSPCNT(ABSPSU,ABSPNAM,ABSPNS)=+$G(ABSPCNT(ABSPSU,ABSPNAM,ABSPNS))+1
  1. .....S ABSPTOT(ABSPSU,"TOTAL")=+$G(ABSPTOT(ABSPSU,"TOTAL"))+1
  1. .....S ABSPTOT("TOTAL")=+$G(ABSPTOT("TOTAL"))+1
  1. Q
  1. ;
  1. MEDICAID(ABSPLIST,ABSPELDT,ABSPDEAD,ABSPCNT,ABSPTOT,ABSPSU) ;
  1. N ABSPEN,ABSPEIEN,ABSPCOV,ABSPQUIT,ABSPSDT,ABSPEDT,ABSPHRN,ABSPNAM,ABSPHRNS,ABSPINSN,ABSPHRNN,ABSPPN
  1. N ABSPPIEN,ABSPPN,ABSPSUC,ABSPSUS,ABSPDPT
  1. S ABSPEN=0,ABSPQUIT=0
  1. F S ABSPEN=$O(^AUPNMCD(ABSPEN)) Q:+ABSPEN=0 D
  1. .S ABSPDPT=$P(^AUPNMCD(ABSPEN,0),U,1)
  1. .Q:$G(^DPT(ABSPDPT,0))="" ;Still have to look out for that...
  1. .I $D(^DPT(ABSPDPT,.35)),$P(^(.35),U,1)]"",$P(^(.35),U,1)<ABSPELDT Q
  1. .Q:$G(^AUPNMCD(ABSPEN,0))="" ;Why would this happen?
  1. .S ABSPINSP=$P(^AUPNMCD(ABSPEN,0),U,2) ;POINTER TO INSURER FILE
  1. .I $P($G(^AUTNINS(ABSPINSP,0)),U,1)="MEDICAID" D
  1. ..S ABSPSTP=$P($G(^AUPNMCD(ABSPEN,0)),U,4) ;pointer to the state file
  1. ..S ABSPMFI=""
  1. ..S ABSPFND=0
  1. ..F S ABSPMFI=$O(^AUTNINS(ABSPINSP,13,ABSPMFI)) Q:(ABSPMFI="")!ABSPFND D
  1. ...I $P($G(^AUTNINS(ABSPINSP,13,ABSPMFI,0)),U,1)=ABSPSTP D
  1. ....S ABSPPIEN=$P($G(^AUTNINS(ABSPINSP,13,ABSPMFI,0)),U,2)
  1. ....S ABSPFND=1
  1. .S ABSPEIEN=0
  1. .F S ABSPEIEN=$O(^AUPNMCD(ABSPEN,11,ABSPEIEN)) Q:+ABSPEIEN=0 D
  1. ..I ($G(ABSPPIEN)="") S ABSPQUIT=1 Q
  1. ..I ($G(ABSPLIST(ABSPPIEN))="") S ABSPQUIT=1 Q ;no entry for insurer on requested list
  1. ..I ABSPDEAD=0,($P($G(^DPT(ABSPEN,.35)),U)'="") S ABSPQUIT=1 Q ;check exclude flag and DOD
  1. ..S ABSPSDT=$P($G(^AUPNMCD(ABSPEN,11,ABSPEIEN,0)),U) ;ELIG START DATE
  1. ..S ABSPEDT=$P($G(^AUPNMCD(ABSPEN,11,ABSPEIEN,0)),U,2) ;ELIG END DATE
  1. ..Q:ABSPSDT=""
  1. ..I (ABSPSDT<=ABSPELDT)&((ABSPEDT>ABSPELDT)!(ABSPEDT="")) D
  1. ...S ABSPHRN=0
  1. ...F S ABSPHRN=$O(^AUPNPAT(ABSPEN,41,ABSPHRN)) Q:+ABSPHRN=0 D
  1. ....S ABSPHRNS=$P($G(^AUPNPAT(ABSPEN,41,ABSPHRN,0)),U,5) ;inactive?
  1. ....I (ABSPDEAD=0&ABSPHRN)="I" S ABSPQUIT=1 Q ;check exclude inactive flag and status
  1. ....S ABSPSU=$S($P($G(^AUTTLOC(ABSPHRN,0)),U,5)'="":$P($G(^AUTTSU($P($G(^AUTTLOC(ABSPHRN,0)),U,5),0)),U),1:"NO SERVICE UNIT") ;SU name
  1. ....S ABSPSUC=$P($G(^AUTTLOC(ABSPHRN,0)),U,13) ;location city
  1. ....S ABSPSUS=$P($G(^AUTTLOC(ABSPHRN,0)),U,14) ;location state
  1. ....S ABSPSU(ABSPSU)=ABSPSUC_", "_$S(ABSPSUS'="":$P($G(^DIC(5,ABSPSUS,0)),U,2),1:"")
  1. ....S ABSPNAM=$P($G(^AUTNINS(ABSPPIEN,0)),U) ;insurer name
  1. ....;I ($G(^TMP($J,"ABSPOSR7",ABSPSU,ABSPPIEN,ABSPEN))="") D ;if not already on list...
  1. ....I ($G(^TMP($J,"ABSPOSR7",ABSPSU,ABSPPIEN,ABSPDPT))="") D ;if not already on list...
  1. .....S ABSPPN=$P($G(^AUPNMCD(ABSPEN,0)),U,3) ;ID
  1. .....S ABSPHRNN=$P($G(^AUPNPAT(ABSPEN,41,ABSPHRN,0)),U,2) ;HRN
  1. .....S ^TMP($J,"ABSPOSR7",ABSPSU,ABSPPIEN,ABSPDPT)=ABSPHRNN_U_ABSPSDT_U_ABSPEDT_U_ABSPPN
  1. .....S ABSPCNT(ABSPSU,ABSPNAM,ABSPPIEN)=+$G(ABSPCNT(ABSPSU,ABSPNAM,ABSPPIEN))+1
  1. .....S ABSPTOT(ABSPSU,"TOTAL")=+$G(ABSPTOT(ABSPSU,"TOTAL"))+1
  1. .....S ABSPTOT("TOTAL")=+$G(ABSPTOT("TOTAL"))+1
  1. Q
  1. OUTPUT(ABSPTYPE,ABSPELDT,ABSPDTL,ABSPNAME,ABSPCNT,ABSPTOT,ABSPSU) ;
  1. ;make sure at minimum 0 will print for each insurer selected
  1. N ABSPIT,ABSPEN,ABSPEIEN,ABSPPIEN,ABSPQUIT,ABSPNAM,ABSPSVC,ABSPPG,ABSPSU2,ABSPSUC,ABSPSUS,ABSPNS
  1. S ABSPQUIT=0
  1. S ABSPSVC=""
  1. F S ABSPSVC=$O(^TMP($J,"ABSPOSR7",ABSPSVC)) Q:ABSPSVC="" D
  1. .S ABSPNAM=""
  1. .F S ABSPNAM=$O(ABSPNAME(ABSPNAM)) Q:ABSPNAM="" D
  1. ..S ABSPNS=$O(ABSPNAME(ABSPNAM,0))
  1. ..I '+$G(ABSPCNT(ABSPSVC,ABSPNAM,ABSPNS)) S ABSPCNT(ABSPSVC,ABSPNAM,ABSPNS)=0
  1. S ABSPSU2=""
  1. S ABSPSVC=""
  1. S ABSPPG=0
  1. D HDR(.ABSPNAME,ABSPELDT,ABSPTYPE,.ABSPPG)
  1. F S ABSPSVC=$O(ABSPCNT(ABSPSVC)) Q:ABSPSVC="" D
  1. .S ABSPNAM=""
  1. .F S ABSPNAM=$O(ABSPCNT(ABSPSVC,ABSPNAM)) Q:ABSPNAM="" D
  1. ..S ABSPNS=0
  1. ..F S ABSPNS=$O(ABSPCNT(ABSPSVC,ABSPNAM,ABSPNS)) Q:+ABSPNS=0!ABSPQUIT D
  1. ...I ABSPSU2=""!(ABSPSU2'=ABSPSVC) D:ABSPPG'=1 HDR(.ABSPNAME,ABSPELDT,ABSPTYPE,.ABSPPG) D SUHDR(ABSPDTL,.ABSPSU,ABSPSVC) S ABSPSU2=ABSPSVC
  1. ...W !?2,ABSPNAM
  1. ...W ?53,+$G(ABSPCNT(ABSPSVC,ABSPNAM,ABSPNS))
  1. ...I $G(ABSPDTL)=1 S ABSPQUIT=$$DETAIL(.ABSPNAME,.ABSPSU,ABSPSVC,ABSPNS,ABSPELDT,ABSPTYPE,.ABSPPG)
  1. ..W !
  1. .Q:ABSPQUIT
  1. .W !!?10,"TOTAL FOR "_ABSPSVC_" SERVICE UNIT: "
  1. .W ?63,$G(ABSPTOT(ABSPSVC,"TOTAL"))
  1. D:'ABSPQUIT
  1. .W !!,?2,"TOTAL NUMBER OF ACTIVE ENROLLEES: "
  1. .W ?63,+$G(ABSPTOT("TOTAL")),!
  1. .W !,"(REPORT COMPLETE)",!
  1. I (IOST[("C-")) Q:ABSPQUIT Q:$D(IO("S")) K DIR S DIR(0)="E" D ^DIR S ABSPQUIT=X=U
  1. K ^TMP($J,"ABSPOSR7")
  1. Q
  1. ;
  1. HDR(ABSPNAME,ABSPELDT,ABSPTYPE,ABSPPG) ;
  1. N Y,ABSPNAM
  1. W @IOF
  1. S ABSPPG=ABSPPG+1
  1. S Y=DT X ^DD("DD")
  1. W !,Y,?68,"Page ",ABSPPG
  1. W !
  1. S Y=ABSPELDT X ^DD("DD")
  1. S ABSPNAM=""
  1. S ABSPNAM=$O(ABSPNAME(ABSPNAM))
  1. D CENTER("REGISTERED PATIENTS - ACTIVE "_ABSPTYPE_" ENROLLEES")
  1. I $O(ABSPNAME(ABSPNAM))="" D
  1. .W !
  1. .D CENTER(ABSPNAM)
  1. W !
  1. S Y=ABSPELDT X ^DD("DD")
  1. D CENTER("Actively enrolled as of "_Y)
  1. Q
  1. SUHDR(ABSPDTL,ABSPSU,ABSPSRV) ;
  1. W !!?2,"Service Unit: "_ABSPSRV_" "_$G(ABSPSU(ABSPSRV)),!
  1. W !?2,"PLAN NAME",?50,"COUNT"
  1. I $G(ABSPDTL)=1 D
  1. .W !,?3,"HRN",?15,"SUBSCRIBER NAME",?45,"EFF.DT",?57,"END.DT",?69,"SUBSCR.ID"
  1. W !,ABSPLINE,!
  1. Q
  1. CENTER(X) ;
  1. S CENTER=IOM/2
  1. W ?CENTER-($L(X)/2),X
  1. Q
  1. DETAIL(ABSPNAME,ABSPSU,ABSPSRV,ABSPINS,ABSPELDT,ABSPTYPE,ABSPPG) ;
  1. N ABSPPT,ABSPQUIT,Y
  1. S ABSPPT=0,ABSPQUIT=0
  1. F S ABSPPT=$O(^TMP($J,"ABSPOSR7",ABSPSRV,ABSPINS,ABSPPT)) Q:(+ABSPPT=0)!ABSPQUIT D
  1. .W !?2,$P($G(^TMP($J,"ABSPOSR7",ABSPSRV,ABSPINS,ABSPPT)),U)
  1. .W ?13,$P($G(^DPT(ABSPPT,0)),U)
  1. .S Y=$P($G(^TMP($J,"ABSPOSR7",ABSPSRV,ABSPINS,ABSPPT)),U,2)
  1. .X ^DD("DD")
  1. .W ?42,Y
  1. .S Y=$P($G(^TMP($J,"ABSPOSR7",ABSPSRV,ABSPINS,ABSPPT)),U,3)
  1. .X ^DD("DD")
  1. .W ?54,Y
  1. .W ?70,$P($G(^TMP($J,"ABSPOSR7",ABSPSRV,ABSPINS,ABSPPT)),U,4)
  1. .I (IOST[("C-")),(($Y>IOSL)!($Y=IOSL)) D
  1. ..Q:ABSPQUIT
  1. ..Q:$D(IO("S"))
  1. ..K DIR
  1. ..S DIR(0)="E"
  1. ..D ^DIR
  1. ..S ABSPQUIT=X=U
  1. ..Q:ABSPQUIT
  1. ..D HDR(.ABSPNAME,ABSPELDT,ABSPTYPE,.ABSPPG),SUHDR(1,.ABSPSU,ABSPSRV)
  1. Q ABSPQUIT
  1. DEVSEL ; SELECT DEVICE
  1. N ABSPSTOP
  1. S ABSPSTOP=0
  1. D ^%ZIS
  1. I POP D ^%ZIS
  1. I $D(DUOUT) D
  1. .D ^%ZISC
  1. .S ABSPSTOP=1
  1. Q:ABSPSTOP
  1. I POP D
  1. .W "DEVICE UNAVAILABLE" G DEVSEL
  1. Q
  1. ;