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

BGP0DPA.m

Go to the documentation of this file.
  1. BGP0DPA ; IHS/CMI/LAB - COMP NATIONAL GPRA FOR PTS W/APPT 03 Jun 2010 2:54 PM ;
  1. ;;10.0;IHS CLINICAL REPORTING;**1**;JUN 18, 2010
  1. ;
  1. EP ;EP - called from option interactive
  1. D EOJ
  1. W:$D(IOF) @IOF
  1. D TERM^VALM0
  1. S BGPCTRL=$O(^BGPCTRL("B",2010,0))
  1. S X=0 F S X=$O(^BGPCTRL(BGPCTRL,58,X)) Q:X'=+X W !,^BGPCTRL(BGPCTRL,58,X,0)
  1. K DIR S DIR(0)="E",DIR("A")="PRESS ENTER" D ^DIR K DIR
  1. I '$D(^XUSEC("BGPZ PATIENT LISTS",DUZ)) W !!,"You do not have the security access to print patient lists.",!,"Please see your supervisor or program manager if you feel you should have",!,"the BGPZ PATIENT LISTS security key.",! D Q
  1. .K DIR S DIR(0)="E",DIR("A")="Press enter to continue" D ^DIR K DIR
  1. ;
  1. ;W !!,IORVON,!,"STEPHANIE TO PROVIDE TEXT HERE",IORVOFF
  1. ;W !!,"This option will produce a comprehensive National GPRA report for"
  1. ;W !,"patients who have an appointment in a date range specified by"
  1. ;W !,"the user in any clinic or in a selected set of clinics."
  1. ;W !!,"You will be asked to enter the date range of the appointments and the"
  1. ;W !,"clinic names if selecting a set of clinics.",!,"STEPHANIE TO PROVIDE TEXT HERE",!
  1. RTYPE ;
  1. S BGPRT1=""
  1. S DIR(0)="S^C:By CLINIC NAME for a specified appointment date range;P:Selected Patients w/Appointments;D:One Facility's or Divisions Appointments;A:Any selected set of patients regardless of appt status"
  1. S DIR("A")="Create List/Sort by",DIR("B")="C" KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) D EOJ Q
  1. S BGPRT1=Y
  1. I BGPRT1="C" D CLIN G:$G(BGPQUIT) RTYPE G DATES
  1. I BGPRT1="D" D DIV G:$G(BGPQUIT) RTYPE G DATES
  1. I BGPRT1="P" D GETPAT G:$G(BGPQUIT) RTYPE G DATES
  1. I BGPRT1="A" D SELPT G:$G(BGPQUIT) RTYPE G ZIS
  1. DATES K BGPAED,BGPABD
  1. K DIR W ! S DIR(0)="DO^::E",DIR("A")="Enter Beginning Appointment Date"
  1. D ^DIR G:Y<1 EOJ S BGPABD=Y
  1. K DIR S DIR(0)="DO^::EX",DIR("A")="Enter Ending Appointment Date"
  1. D ^DIR G:Y<1 EOJ S BGPAED=Y
  1. I $$FMDIFF^XLFDT(BGPAED,BGPABD)>7 W !!,"You can only run this for a maximum 7 day time period." G DATES
  1. ;
  1. I BGPAED<BGPABD D G DATES
  1. . W !!,$C(7),"Sorry, Ending Date MUST not be earlier than Beginning Date."
  1. S BGPASD=$$FMADD^XLFDT(BGPABD,-1)_".9999"
  1. ;
  1. ZIS ;
  1. S BGPRTYPE=1,BGP0RPTH="",BGPCPPL=1,BGPINDT="G",BGP0GPU=1,BGPALLPT=1,BGPBEN=3
  1. S BGPHOME=$P($G(^BGPSITE(DUZ(2),0)),U,2)
  1. ;I BGPHOME="" W !!,"Home Location not found in Site File!!",!,"PHN Visits counts to Home will be calculated using clinic 11 only!!" H 2
  1. ;W !,"Your HOME location is defined as: ",$P(^DIC(4,BGPHOME,0),U)," asufac: ",$P(^AUTTLOC(BGPHOME,0),U,10)
  1. ENDDATE ;
  1. ;AI ;gather all gpra measures
  1. S X=0 F S X=$O(^BGPINDT("GPRA",1,X)) Q:X'=+X S BGPIND(X)=""
  1. S X=$O(^BGPCTRL("B",2010,0))
  1. S Y=^BGPCTRL(X,0)
  1. S BGPBD=$P(Y,U,8),BGPED=$P(Y,U,9)
  1. S BGPPBD=$P(Y,U,10),BGPPED=$P(Y,U,11)
  1. S BGPBBD=$P(Y,U,12),BGPBED=$P(Y,U,13)
  1. S BGPPER=$P(Y,U,14),BGPQTR=3
  1. G NT
  1. S BGPBD=3030101,BGPED=3031231
  1. S BGPPBD=3020111,BGPPED=3021231
  1. S BGPBBD=3000101,BGPBED=3001231
  1. NT S BGPLIST="A"
  1. S BGPCPLC=0
  1. ;S XBRP="PRINT^BGP0DPAW",XBRC="PROC^BGP0DPA",XBRX="EOJ^BGP0DPA",XBNS="BGP"
  1. ;D ^XBDBQUE
  1. ;
  1. K IOP,%ZIS
  1. W !! S %ZIS="PQM" D ^%ZIS
  1. I POP D EOJ Q
  1. ZIS1 ;
  1. I $D(IO("Q")) G TSKMN
  1. DRIVER ;
  1. I $D(ZTQUEUED) S ZTREQ="@"
  1. D PROC^BGP0DPA
  1. U IO
  1. D PRINT^BGP0DPAW
  1. D ^%ZISC
  1. D EOJ
  1. Q
  1. ;
  1. TSKMN ;EP ENTRY POINT FROM TASKMAN
  1. S ZTIO=$S($D(ION):ION,1:IO) I $D(IOST)#2,IOST]"" S ZTIO=ZTIO_";"_IOST
  1. I $G(IO("DOC"))]"" S ZTIO=ZTIO_";"_$G(IO("DOC"))
  1. I $D(IOM)#2,IOM S ZTIO=ZTIO_";"_IOM I $D(IOSL)#2,IOSL S ZTIO=ZTIO_";"_IOSL
  1. K ZTSAVE S ZTSAVE("BGP*")=""
  1. S ZTCPU=$G(IOCPU),ZTRTN="DRIVER^BGP0DPA",ZTDTH="",ZTDESC="CRS 09 SCHED REPORT" D ^%ZTLOAD D EOJ Q
  1. Q
  1. EOJ ;
  1. D ^XBFMK
  1. K DIC,DIR,DFN
  1. D EN^XBVK("BGP"),EN^XBVK("BSD"),EN^XBVK("AMQQ")
  1. K ^TMP($J)
  1. Q
  1. ;
  1. DIV ;
  1. S BGPQUIT="",BGPDIVI=""
  1. K DIC
  1. S DIC="^DG(40.8,",DIC(0)="AEMQ" ; I $O(^DG(40.8,"C",DUZ(2),0)) S DIC("B")=$P(^DIC(4,$O(^DG(40.8,"C",DUZ(2),0)),0),U)
  1. D ^DIC K DIC
  1. I Y=-1 S BGPQUIT=1 Q
  1. S BGPDIVI=+Y
  1. CLIN ;
  1. S BGPCLN="",BGPQUIT=""
  1. S DIR(0)="S^A:ANY Clinic;S:One or more selected Clinics",DIR("A")="Include patients with Appointments to",DIR("B")="A" KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) S BGPQUIT=1 Q
  1. S BGPCLN=Y
  1. I BGPCLN="A" K BGPCLN Q
  1. ;get which clinics
  1. K BGPCLN
  1. CLIN1 ;
  1. W ! S DIC="^SC(",DIC(0)="AEMZQ",DIC("A")="Select CLINIC: "
  1. S DIC("S")="I $P(^(0),U,3)=""C""" D ^DIC K DIC
  1. I Y=-1,'$D(BGPCLN) G CLIN
  1. I X="^" G CLIN
  1. I Y="",$D(BGPCLN) Q
  1. I Y=-1,$D(BGPCLN) Q
  1. I X="",'$D(BGPCLN) G CLIN
  1. S BGPCLN(+Y)=""
  1. G CLIN1
  1. GETPAT ;
  1. K BGPPATS
  1. GETPAT1 ;
  1. S BGPQUIT="",BGPDIVI=""
  1. K DIC
  1. S DIC="^AUPNPAT(",DIC(0)="AEMQ" D ^DIC K DIC
  1. I Y=-1,'$D(BGPPATS) S BGPQUIT=1 Q
  1. S BGPPATS(+Y)=""
  1. Q
  1. SELPT ;
  1. K BGPPATS
  1. S BGPSMI=0
  1. F D Q:U[X
  1. .S DIR(0)="FOU",DIR("A")="Select patient(s)"
  1. .S DIR("?",1)=" Enter a patient's HRN or name (HORSECHIEF,JOHN DOE or HORSECHIEF,JOHN).",DIR("?",2)=""
  1. .S DIR("?",3)=" A template can also be selected by typing a ""["" followed by",DIR("?",4)=" the template name."
  1. .S DIR("?",5)="",DIR("?")=" ""[??"" will list your templates.",DIR("??")="^D LIST^BGP0DPAP"
  1. .D ^DIR K DIR
  1. .S:X[U X=U
  1. .I $E(X)="[" D Q
  1. .. S X=$E(X,2,$L(X))
  1. .. K DIC S DIC=.401,DIC(0)=$S(X="":"AEMQ",1:"EMQ"),DIC("S")="I $P(^(0),U,4)=2!($P(^(0),U,4)=9000001),($P(^(0),U,5)=$G(DUZ))!(DUZ(0)=""@"")" D ^DIC
  1. .. I Y>0 D
  1. ... S BGPPATS=0,Y=+Y F BGPMJ=0:1 S BGPPATS=$O(^DIBT(Y,1,BGPPATS)) Q:'BGPPATS S BGPSMI=BGPSMI+1,BGPPATS(BGPSMI)=BGPPATS
  1. ... W !,BGPMJ,$S(BGPMJ=1:" entry",1:" entries")," added."
  1. .K DIC S DIC=9000001,DIC(0)="EQM" D ^DIC
  1. .I Y>0 S BGPPATS=+Y,BGPSMI=BGPSMI+1,BGPPATS(BGPSMI)=BGPPATS
  1. W !
  1. I X=U K BGPPATS W !,"All selections cancelled!"
  1. I '$O(BGPPATS("")) W !,"No patients selected." S BGPQUIT=1 Q
  1. Q
  1. TEST ;
  1. D BDMG(1,3040101,3041231,13)
  1. Q
  1. BDMG(BGPBD,BGPED,BGPCLN) ;EP - GUI DMS Entry Point
  1. ;cmi/anch/maw added 10/19/2004
  1. S BGPSD=$$FMADD^XLFDT(BGPBD,-1)_".9999"
  1. S BGPGUI=1
  1. N BGPOPT,BGPNOW,BGPIEN ;maw
  1. S BGPOPT="List Patients on a Register w/an Appointment"
  1. S BGPRTYPE=1,BGP0RPTH="",BGPCPPL=1,BGPINDT="G",BGP0GPU=1
  1. D NOW^%DTC
  1. S BGPNOW=$G(%)
  1. K DD,D0,DIC
  1. S X=DUZ_$$NOW^XLFDT
  1. S DIC("DR")=".02////"_DUZ_";.03////"_BGPNOW_";.06///"_$G(BGPOPT)_";.07////R"
  1. S DIC="^BGPGUIT(",DIC(0)="L",DIADD=1,DLAYGO=9001004.4
  1. D FILE^DICN
  1. K DIADD,DLAYGO,DIC,DA
  1. I Y=-1 S BGPIEN=-1 Q
  1. S BGPIEN=+Y
  1. S BDMGIEN=BGPIEN ;cmi/maw added
  1. D ^XBFMK
  1. K ZTSAVE S ZTSAVE("*")=""
  1. S ZTIO="",ZTDTH=$$NOW^XLFDT,ZTRTN="GUIEP^BGP0DPA",ZTDESC="GUI CN GRPA APPT" D ^%ZTLOAD
  1. D EOJ
  1. Q
  1. GUIEP ;EP
  1. D PROC
  1. K ^TMP($J,"BGP0DPA")
  1. S IOM=80
  1. D GUIR^XBLM("PRINT^BGP0DPA","^TMP($J,""BGP0DPA"",")
  1. S X=0,C=0 F S X=$O(^TMP($J,"BGP0DPA",X)) Q:X'=+X D
  1. .S BGPDATA=^TMP($J,"BGP0DPA",X)
  1. .I BGPDATA="ZZZZZZZ" S BGPDATA=$C(12)
  1. .S ^BGPGUIT(BGPIEN,11,X,0)=BGPDATA,C=C+1
  1. S ^BGPGUIT(BGPIEN,11,0)="^^"_C_"^"_C_"^"_DT_"^"
  1. S DA=BGPIEN,DIK="^BGPGUIT(" D IX1^DIK
  1. D ENDLOG
  1. K ^TMP($J,"BGP0DPA")
  1. S ZTREQ="@"
  1. Q
  1. ;
  1. GUIECP ;EP
  1. K ^TMP($J,"BGP0DPA")
  1. S IOM=80
  1. D GUIR^XBLM("CPPRINT^BGP0DPA","^TMP($J,""BGP0DPA"",")
  1. S X=0,C=0 F S X=$O(^TMP($J,"BGP0DPA",X)) Q:X'=+X D
  1. .S BGPDATA=^TMP($J,"BGP0DPA",X)
  1. .I BGPDATA="ZZZZZZZ" S BGPDATA=$C(12)
  1. .S ^BGPGUIT(BGPIEN,11,X,0)=BGPDATA,C=C+1
  1. S ^BGPGUIT(BGPIEN,11,0)="^^"_C_"^"_C_"^"_DT_"^"
  1. S DA=BGPIEN,DIK="^BGPGUIT(" D IX1^DIK
  1. D ENDLOG
  1. K ^TMP($J,"BGP0DPA")
  1. S ZTREQ="@"
  1. Q
  1. ;
  1. ENDLOG ;-- write the end of the log
  1. D NOW^%DTC
  1. S BGPNOW=$G(%)
  1. S DIE="^BGPGUIT(",DA=BGPIEN,DR=".04////"_BGPNOW_";.06////C"
  1. D ^DIE
  1. K DIE,DR,DA
  1. Q
  1. ;
  1. PROC ;EP
  1. D JRNL^BGP0UTL
  1. S BGPGPRAJ=$J,BGPGPRAH=$H
  1. S BGPCHWC=0
  1. S BGPCHSO=$P($G(^BGPSITE(DUZ(2),0)),U,6)
  1. ;calculate 3 years before end of each time frame
  1. S BGP3YE=$$FMADD^XLFDT(BGPED,-1096)
  1. K ^XTMP("BGP0DPA",BGPGPRAJ,BGPGPRAH)
  1. S ^XTMP("BGP0DPA",0)=$$FMADD^XLFDT(DT,14)_"^"_DT_"^"_"PTS WITH GPRA DATA"
  1. K BGPAPPT,BGPAPPTS
  1. S BGPTA=0
  1. I BGPRT1="A" D Q
  1. .S BGPSOX=0 F S BGPSOX=$O(BGPPATS(BGPSOX)) Q:BGPSOX'=+BGPSOX D
  1. ..S DFN=BGPPATS(BGPSOX)
  1. ..Q:$P($G(^DPT(DFN,0)),U)["DEMO,PATIENT"
  1. ..I $P($G(^BGPSITE(DUZ(2),0)),U,12) Q:$D(^DIBT($P(^BGPSITE(DUZ(2),0),U,12),1,DFN))
  1. ..S BGPIISO=1,BGPISST="A" D PROCCY^BGP0D1
  1. .Q
  1. S BGPSD=$$FMADD^XLFDT(BGPABD,-1)
  1. S BGPOD=BGPSD F S BGPOD=$$FMADD^XLFDT(BGPOD,1) Q:BGPOD>BGPAED D
  1. .K BGPAPPT
  1. .S BGPCLN=$S('$O(BGPCLN(0)):"ALL",1:"")
  1. .S BGPARRAY="BGPAPPT("
  1. .I BGPRT1="D" S BGPCLN("DEV")=BGPDIVI
  1. .D LIST^BSDAPI2(BGPOD,"W",.BGPCLN,BGPARRAY)
  1. .S X=0 F S X=$O(BGPAPPT(X)) Q:X'=+X D
  1. ..S Y=$P(BGPAPPT(X),U)
  1. ..I BGPRT1="P" I Y,'$D(BGPPATS(Y)) Q ;if patients only want that set of patients
  1. ..I Y Q:$P($G(^DPT(Y,0)),U)["DEMO,PATIENT"
  1. ..I $P($G(^BGPSITE(DUZ(2),0)),U,12) Q:$D(^DIBT($P(^BGPSITE(DUZ(2),0),U,12),1,Y))
  1. ..S BGPTA=BGPTA+1,BGPAPPTS(BGPTA)=BGPAPPT(X)
  1. .Q
  1. S BGPSOX=0 F S BGPSOX=$O(BGPAPPTS(BGPSOX)) Q:BGPSOX'=+BGPSOX D
  1. .S DFN=$P(BGPAPPTS(BGPSOX),U,1)
  1. .Q:$P($G(^DPT(DFN,0)),U,1)["DEMO,PATIENT"
  1. .I $P($G(^BGPSITE(DUZ(2),0)),U,12) Q:$D(^DIBT($P(^BGPSITE(DUZ(2),0),U,12),1,DFN))
  1. .S BGPIISO=1,BGPISST=BGPRT1,BGPISSO=1 D PROCCY^BGP0D1
  1. .Q
  1. Q
  1. CTR(X,Y) ;EP - Center X in a field Y wide.
  1. Q $J("",$S($D(Y):Y,1:IOM)-$L(X)\2)_X
  1. ;----------
  1. EOP ;EP - End of page.
  1. Q:$E(IOST)'="C"
  1. Q:$D(ZTQUEUED)!'(IOT="TRM")!$D(IO("S"))
  1. K DIR
  1. K DIRUT,DFOUT,DLOUT,DTOUT,DUOUT
  1. S DIR("A")="End of report. Press Enter",DIR(0)="E" D ^DIR
  1. Q
  1. ;----------
  1. USR() ;EP - Return name of current user from ^VA(200.
  1. Q $S($G(DUZ):$S($D(^VA(200,DUZ,0)):$P(^(0),U),1:"UNKNOWN"),1:"DUZ UNDEFINED OR 0")
  1. ;----------
  1. LOC() ;EP - Return location name from file 4 based on DUZ(2).
  1. Q $S($G(DUZ(2)):$S($D(^DIC(4,DUZ(2),0)):$P(^(0),U),1:"UNKNOWN"),1:"DUZ(2) UNDEFINED OR 0")
  1. ;----------
  1. COVPAGE ;EP - called from option to display the cover page
  1. ;
  1. W !!,"This option is used to print out the denominator definitions"
  1. W !,"used in the GPRA & PART Measures Forecast Patient List.",!!
  1. ZISCP ;
  1. K IOP,%ZIS
  1. W !! S %ZIS="PQM" D ^%ZIS
  1. I POP D EOJ Q
  1. ;
  1. I $D(IO("Q")) G TSKMNCP
  1. ;S XBRP="CPPRINT^BGP0DPA",XBRC="",XBRX="EOJ^BGP0DPA",XBNS="BGP"
  1. ;D ^XBDBQUE
  1. ;
  1. CPPRINT ;EP - called from xbdbque
  1. U IO
  1. I $D(ZTQUEUED) S ZTREQ="@"
  1. S BGPPG=0
  1. S BGPIOSL=$S($G(BGPGUI):55,1:IOSL)
  1. I $G(BGPGUI) S IOSL=55 ;cmi/maw added 1/14/2009
  1. D CPHEADER
  1. S BGPGYR=2010,BGPGYR=$O(^BGPCTRL("B",BGPGYR,0))
  1. S BGPX=0 F S BGPX=$O(^BGPCTRL(BGPGYR,39,BGPX)) Q:BGPX'=+BGPX D
  1. .I $Y>(IOSL-2) D CPHEADER Q:$D(BGPQ)
  1. .W !,^BGPCTRL(BGPGYR,39,BGPX,0)
  1. D CPDONE
  1. Q
  1. CPHEADER ;EP
  1. G:'BGPPG CPHEAD1
  1. K DIR I $E(IOST)="C",IO=IO(0) W ! S DIR(0)="EO" D ^DIR K DIR I Y=0!(Y="^")!($D(DTOUT)) S BGPQ="" Q
  1. CPHEAD1 ;
  1. I BGPPG W:$D(IOF) @IOF
  1. S BGPPG=BGPPG+1
  1. I $G(BGPGUI),BGPPG'=1 W !,"ZZZZZZZ"
  1. W !?3,$P(^VA(200,DUZ,0),U,2),?35,$$FMTE^XLFDT(DT),?70,"Page ",BGPPG,!
  1. Q
  1. CPDONE ;
  1. K DIR
  1. I $E(IOST)="C",IO=IO(0) S DIR(0)="EO",DIR("A")="End of report. PRESS ENTER" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. K BGPTS,BGPS,BGPM,BGPET,BGPX,BGPGPYR
  1. Q
  1. TSKMNCP ;EP ENTRY POINT FROM TASKMAN
  1. S ZTIO=$S($D(ION):ION,1:IO) I $D(IOST)#2,IOST]"" S ZTIO=ZTIO_";"_IOST
  1. I $G(IO("DOC"))]"" S ZTIO=ZTIO_";"_$G(IO("DOC"))
  1. I $D(IOM)#2,IOM S ZTIO=ZTIO_";"_IOM I $D(IOSL)#2,IOSL S ZTIO=ZTIO_";"_IOSL
  1. K ZTSAVE S ZTSAVE("BGP*")=""
  1. S ZTCPU=$G(IOCPU),ZTRTN="CPPRINT^BGP0DPA",ZTDTH="",ZTDESC="CRS 09 SCHED REPORT DENOM" D ^%ZTLOAD D EOJ Q
  1. Q