APCLDR1 ; IHS/CMI/LAB - patients w/o dm on problem list ;
;;2.0;IHS PCC SUITE;**11**;MAY 14, 2009;Build 58
;
;
START ;
D INFORM
D EXIT
D GETINFO
I $D(APCLQUIT) D EXIT Q
Q
INFORM ;
W:$D(IOF) @IOF
W !,$$CTR($$LOC)
W !,$$CTR($$USR)
W !!,"This report will list patients who do not have Diabetes on their Problem List ",!,"but who are on a Diabetes Register or who have had at least N diagnoses of ",!,"diabetes.",!!
Q
;
GETINFO ;
S (APCLTR,APCLREG,APCLSTAT,APCLND)=""
S DIR(0)="S^R:Those who are members of a Register;D:Those with at least N Diabetes Diagnoses",DIR("A")="List which subset of patients",DIR("B")="R" KILL DA D ^DIR KILL DIR
I $D(DIRUT) S APCLQUIT="" Q
S APCLTR=Y
D @Y
I $D(APCLQUIT) D EXIT Q
D ZIS
Q
R ;
S APCLREG=""
S DIC="^ACM(41.1,",DIC(0)="AEMQ",DIC("A")="Enter the Name of the Register: " D ^DIC
I Y=-1 W !,"No register selected." S APCLQUIT="" Q
S APCLREG=+Y
;get status
S APCLSTAT=""
S DIR(0)="Y",DIR("A")="Do you want to select register patients with a particular status",DIR("B")="Y" KILL DA D ^DIR KILL DIR
I $D(DIRUT) G R
I Y=0 S APCLSTAT="" Q
;which status
S DIR(0)="9002241,1",DIR("A")="Which status",DIR("B")="A" KILL DA D ^DIR KILL DIR
I $D(DIRUT) G R
S APCLSTAT=Y
Q
D ;
;how many
S APCLND=""
S DIR(0)="N^1:999:0",DIR("A")="How many diagnoses must the patient have had",DIR("B")="3" KILL DA D ^DIR KILL DIR
I $D(DIRUT) S APCLQUIT="" Q
S APCLND=Y
DATE ;
W !!,"If you are interested in restricting your list to only those patients",!,"whose most recent Diabetes diagnosis is since a certain date, enter that date.",!
W "If not, press enter or return to list all patients with at least ",APCLND," diagnoses.",!
S DIR(0)="DO^::EP",DIR("A")="Enter Date" KILL DA D ^DIR KILL DIR
I $D(DUOUT) G D
I X="^" G D
S APCLLDAT=Y
Q
ZIS ;call to XBDBQUE
DEMO ;
D DEMOCHK^APCLUTL(.APCLDEMO)
I APCLDEMO=-1 G DATE
S XBRP="PRINT^APCLDR1",XBRC="PROC^APCLDR1",XBRX="EXIT^APCLDR1",XBNS="APCL"
D ^XBDBQUE
D EXIT
Q
EXIT ;clean up and exit
D EN^XBVK("APCL")
D ^XBFMK
D KILL^AUPNPAT
Q
PROC ;EP - called from XBDBQUE
S APCLJOB=$J,APCLBTH=$H
K ^XTMP("APCLDR1",APCLJOB,APCLBTH)
D XTMP^APCLOSUT("APCLDR1","DM NOT ON PROBLEM LIST")
I APCLTR="R" D REGPROC Q
I APCLTR="D" D DXPROC Q
Q
DXPROC ;
;get last dm dx, if less than last date, Q
;if null Q
;get # of dxs, if less than apclnd q
S DFN=0 F S DFN=$O(^AUPNPAT(DFN)) Q:DFN'=+DFN D CHK1SET
Q
CHK1SET ;
Q:$$DEMO^APCLUTL(DFN,$G(APCLDEMO))
Q:$$DOD^AUPNPAT(DFN)]""
Q:$P($G(^AUPNPAT(DFN,41,DUZ(2),0)),U,5)]"" ;IHS/CMI/GRL
Q:$P($G(^AUPNPAT(DFN,41,DUZ(2),0)),U,2)="" ;IHS/CMI/GRL
I $$DMPROB(DFN) Q
S APCLN=$$LASTDMDX(DFN)
I APCLN="" Q
I APCLN<APCLLDAT Q
S APCLN1=$$NUMDXS(DFN)
I APCLN1<APCLND Q
S ^XTMP("APCLDR1",APCLJOB,APCLBTH,"PATIENTS",$P(^DPT(DFN,0),U),DFN)=APCLN_U_APCLN1
Q
LASTDMDX(P) ;
I '$G(P) Q ""
NEW X,E,APCL,Y
S Y="APCL("
S X=P_"^LAST DX [SURVEILLANCE DIABETES" S E=$$START1^APCLDF(X,Y)
I $D(APCL(1)) Q $P(APCL(1),U)
Q ""
;
NUMDXS(P) ;
I '$G(P) Q ""
NEW X,E,APCL,Y
S Y="APCL("
S X=P_"^ALL DX [SURVEILLANCE DIABETES" S E=$$START1^APCLDF(X,Y)
S (X,Y)=0
F S X=$O(APCL(X)) Q:X'=+X S Y=Y+1
Q Y
;
REGPROC ;
;$o through register, check status, if no DM on problem list
;set xtmp
;gather up patients from register in ^XTMP
S X=0 F S X=$O(^ACM(41,"B",APCLREG,X)) Q:X'=+X D
.I APCLSTAT]"",$P($G(^ACM(41,X,"DT")),U,1)=APCLSTAT S DFN=$P(^ACM(41,X,0),U,2) D CHKSET Q
.I APCLSTAT="" S DFN=$P(^ACM(41,X,0),U,2) D CHKSET Q
.Q
Q
CHKSET ;
Q:$$DOD^AUPNPAT(DFN)]""
Q:$P($G(^AUPNPAT(DFN,41,DUZ(2),0)),U,5)]"" ;IHS/CMI/GRL
Q:$P($G(^AUPNPAT(DFN,41,DUZ(2),0)),U,2)="" ;IHS/CMI/GRL
I $$DMPROB(DFN) Q
S ^XTMP("APCLDR1",APCLJOB,APCLBTH,"PATIENTS",$P(^DPT(DFN,0),U),DFN)=$$LASTDMDX(DFN)_U_$$NUMDXS(DFN)
Q
DMPROB(P) ;is DM on problem list 1=yes 0=no
I '$G(P) Q 0
I '$D(^AUPNPROB("AC",P)) Q 0
NEW T S T=$O(^ATXAX("B","SURVEILLANCE DIABETES",0))
I 'T Q ""
NEW G,D,Y,I S D="",(Y,G)=0 F S Y=$O(^AUPNPROB("AC",P,Y)) Q:Y'=+Y!(G) D
.S I=$P(^AUPNPROB(Y,0),U)
.I $$ICD^ATXAPI(I,T,9) S G=1
.Q
Q G
PRINT ;EP - called from xbdbque
S APCLIOSL=$S($G(APCLGUI):55,1:IOSL)
S APCL80D="-------------------------------------------------------------------------------"
S APCLPG=0 D HEAD
I '$D(^XTMP("APCLDR1",APCLJOB,APCLBTH)) W !!,"NO PATIENTS TO REPORT" G DONE
S APCLNAME="" K APCLQ
F S APCLNAME=$O(^XTMP("APCLDR1",APCLJOB,APCLBTH,"PATIENTS",APCLNAME)) Q:APCLNAME=""!($D(APCLQ)) D
.S DFN="" F S DFN=$O(^XTMP("APCLDR1",APCLJOB,APCLBTH,"PATIENTS",APCLNAME,DFN)) Q:DFN=""!($D(APCLQ)) S APCLX=^XTMP("APCLDR1",APCLJOB,APCLBTH,"PATIENTS",APCLNAME,DFN) D
..I $Y>(APCLIOSL-4) D HEAD Q:$D(APCLQ)
..W !,$E(APCLNAME,1,20),?22,$$HRN^AUPNPAT(DFN,DUZ(2)),?29,$$DOB^AUPNPAT(DFN,"E"),?43,$P(^DPT(DFN,0),U,2),?47,$$FMTE^XLFDT($P(APCLX,U)),?63,$P(APCLX,U,2)
DONE ;
I $E(IOST)="C",IO=IO(0) S DIR(0)="EO",DIR("A")="End of report. HIT RETURN" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
W:$D(IOF) @IOF
K ^XTMP("APCLDR1",APCLJOB,APCLBTH),APCLJOB,APCLBTH
Q
HEAD I 'APCLPG G HEAD1
I $E(IOST)="C",IO=IO(0) W ! S DIR(0)="EO" D ^DIR K DIR I Y=0!(Y="^")!($D(DTOUT)) S APCLQ="" Q
HEAD1 ;
W:$D(IOF) @IOF S APCLPG=APCLPG+1
I $G(APCLGUI),APCLPG'=1 W !,"ZZZZZZZ"
W !?13,"********** CONFIDENTIAL PATIENT INFORMATION **********"
W !,$P(^VA(200,DUZ,0),U,2),?72,"Page ",APCLPG,!
W ?(80-$L($P(^DIC(4,DUZ(2),0),U))/2),$P(^DIC(4,DUZ(2),0),U),!
W $$CTR("PATIENTS WITH NO DIAGNOSIS OF DIABETES ON PROBLEM LIST",80),!
I APCLTR="R" W $$CTR("Patients on the "_$P(^ACM(41.1,APCLREG,0),U)_" Register",80),!
I APCLTR="D" W $$CTR("Patients w/at least "_APCLND_" diabetes diagnoses",80),!
PIH W !,"PATIENT NAME",?22,"HRN",?29,"DOB",?47,"LAST DM DX",?63,"# OF DM DXS",!,APCL80D
Q
CTR(X,Y) ;EP - Center X in a field Y wide.
Q $J("",$S($D(Y):Y,1:IOM)-$L(X)\2)_X
;----------
EOP ;EP - End of page.
Q:$E(IOST)'="C"
Q:$D(ZTQUEUED)!'(IOT="TRM")!$D(IO("S"))
NEW DIR
K DIRUT,DFOUT,DLOUT,DTOUT,DUOUT
S DIR(0)="E" D ^DIR
Q
;----------
USR() ;EP - Return name of current user from ^VA(200.
Q $S($G(DUZ):$S($D(^VA(200,DUZ,0)):$P(^(0),U),1:"UNKNOWN"),1:"DUZ UNDEFINED OR 0")
;----------
LOC() ;EP - Return location name from file 4 based on DUZ(2).
Q $S($G(DUZ(2)):$S($D(^DIC(4,DUZ(2),0)):$P(^(0),U),1:"UNKNOWN"),1:"DUZ(2) UNDEFINED OR 0")
;----------
TEST ;
D BDMG("R",1,"A")
Q
BDMG(APCLTR,APCLREG,APCLSTAT,APCLND,APCLLDAT) ;EP - GUI DMS Entry Point
S APCLND=$G(APCLND)
S APCLGUI=1
S APCLLDAT=$G(APCLLDAT)
NEW APCLNOW,APCLOPT,APCLIEN
S APCLOPT="Patients w/no Diagnosis of DM on Problem Lis"
D NOW^%DTC
S APCLNOW=$G(%)
K DD,DO,DIC
S X=DUZ_APCLNOW
S DIC("DR")=".02////"_DUZ_";.03////"_APCLNOW_";.06///"_$G(APCLOPT)_";.07////R"
S DIC="^APCLGUIR(",DIC(0)="L",DIADD=1,DLAYGO=9001004.4
D FILE^DICN
K DIADD,DLAYGO,DIC,DA
I Y=-1 S APCLIEN=-1 Q
S APCLIEN=+Y
S BDMGIEN=APCLIEN ;cmi/maw added
D ^XBFMK
K ZTSAVE S ZTSAVE("*")=""
;D GUIEP for interactive testing
S ZTIO="",ZTDTH=$$NOW^XLFDT,ZTRTN="GUIEP^APCLDR1",ZTDESC="GUI DM PTS NO DX PL" D ^%ZTLOAD
D EXIT
Q
GUIEP ;EP
D PROC
K ^TMP($J,"APCLDR1")
S IOM=80
D GUIR^XBLM("PRINT^APCLDR1","^TMP($J,""APCLDR1"",")
S X=0,C=0 F S X=$O(^TMP($J,"APCLDR1",X)) Q:X'=+X D
.S APCLDATA=^TMP($J,"APCLDR1",X)
.I APCLDATA="ZZZZZZZ" S APCLDATA=$C(12)
.S ^APCLGUIR(APCLIEN,11,X,0)=APCLDATA,C=C+1
S ^APCLGUIR(APCLIEN,11,0)="^^"_C_"^"_C_"^"_DT_"^"
S DA=APCLIEN,DIK="^APCLGUIR(" D IX1^DIK
D ENDLOG
K ^TMP($J,"APCLDR1")
D EXIT
S ZTREQ="@"
Q
;
ENDLOG ;-- write the end of the log
D NOW^%DTC
S APCLNOW=$G(%)
S DIE="^APCLGUIR(",DA=APCLIEN,DR=".04////"_APCLNOW_";.07////C"
D ^DIE
K DIE,DR,DA
Q
APCLDR1 ; IHS/CMI/LAB - patients w/o dm on problem list ;
+1 ;;2.0;IHS PCC SUITE;**11**;MAY 14, 2009;Build 58
+2 ;
+3 ;
START ;
+1 DO INFORM
+2 DO EXIT
+3 DO GETINFO
+4 IF $DATA(APCLQUIT)
DO EXIT
QUIT
+5 QUIT
INFORM ;
+1 IF $DATA(IOF)
WRITE @IOF
+2 WRITE !,$$CTR($$LOC)
+3 WRITE !,$$CTR($$USR)
+4 WRITE !!,"This report will list patients who do not have Diabetes on their Problem List ",!,"but who are on a Diabetes Register or who have had at least N diagnoses of ",!,"diabetes.",!!
+5 QUIT
+6 ;
GETINFO ;
+1 SET (APCLTR,APCLREG,APCLSTAT,APCLND)=""
+2 SET DIR(0)="S^R:Those who are members of a Register;D:Those with at least N Diabetes Diagnoses"
SET DIR("A")="List which subset of patients"
SET DIR("B")="R"
KILL DA
DO ^DIR
KILL DIR
+3 IF $DATA(DIRUT)
SET APCLQUIT=""
QUIT
+4 SET APCLTR=Y
+5 DO @Y
+6 IF $DATA(APCLQUIT)
DO EXIT
QUIT
+7 DO ZIS
+8 QUIT
R ;
+1 SET APCLREG=""
+2 SET DIC="^ACM(41.1,"
SET DIC(0)="AEMQ"
SET DIC("A")="Enter the Name of the Register: "
DO ^DIC
+3 IF Y=-1
WRITE !,"No register selected."
SET APCLQUIT=""
QUIT
+4 SET APCLREG=+Y
+5 ;get status
+6 SET APCLSTAT=""
+7 SET DIR(0)="Y"
SET DIR("A")="Do you want to select register patients with a particular status"
SET DIR("B")="Y"
KILL DA
DO ^DIR
KILL DIR
+8 IF $DATA(DIRUT)
GOTO R
+9 IF Y=0
SET APCLSTAT=""
QUIT
+10 ;which status
+11 SET DIR(0)="9002241,1"
SET DIR("A")="Which status"
SET DIR("B")="A"
KILL DA
DO ^DIR
KILL DIR
+12 IF $DATA(DIRUT)
GOTO R
+13 SET APCLSTAT=Y
+14 QUIT
D ;
+1 ;how many
+2 SET APCLND=""
+3 SET DIR(0)="N^1:999:0"
SET DIR("A")="How many diagnoses must the patient have had"
SET DIR("B")="3"
KILL DA
DO ^DIR
KILL DIR
+4 IF $DATA(DIRUT)
SET APCLQUIT=""
QUIT
+5 SET APCLND=Y
DATE ;
+1 WRITE !!,"If you are interested in restricting your list to only those patients",!,"whose most recent Diabetes diagnosis is since a certain date, enter that date.",!
+2 WRITE "If not, press enter or return to list all patients with at least ",APCLND," diagnoses.",!
+3 SET DIR(0)="DO^::EP"
SET DIR("A")="Enter Date"
KILL DA
DO ^DIR
KILL DIR
+4 IF $DATA(DUOUT)
GOTO D
+5 IF X="^"
GOTO D
+6 SET APCLLDAT=Y
+7 QUIT
ZIS ;call to XBDBQUE
DEMO ;
+1 DO DEMOCHK^APCLUTL(.APCLDEMO)
+2 IF APCLDEMO=-1
GOTO DATE
+3 SET XBRP="PRINT^APCLDR1"
SET XBRC="PROC^APCLDR1"
SET XBRX="EXIT^APCLDR1"
SET XBNS="APCL"
+4 DO ^XBDBQUE
+5 DO EXIT
+6 QUIT
EXIT ;clean up and exit
+1 DO EN^XBVK("APCL")
+2 DO ^XBFMK
+3 DO KILL^AUPNPAT
+4 QUIT
PROC ;EP - called from XBDBQUE
+1 SET APCLJOB=$JOB
SET APCLBTH=$HOROLOG
+2 KILL ^XTMP("APCLDR1",APCLJOB,APCLBTH)
+3 DO XTMP^APCLOSUT("APCLDR1","DM NOT ON PROBLEM LIST")
+4 IF APCLTR="R"
DO REGPROC
QUIT
+5 IF APCLTR="D"
DO DXPROC
QUIT
+6 QUIT
DXPROC ;
+1 ;get last dm dx, if less than last date, Q
+2 ;if null Q
+3 ;get # of dxs, if less than apclnd q
+4 SET DFN=0
FOR
SET DFN=$ORDER(^AUPNPAT(DFN))
IF DFN'=+DFN
QUIT
DO CHK1SET
+5 QUIT
CHK1SET ;
+1 IF $$DEMO^APCLUTL(DFN,$GET(APCLDEMO))
QUIT
+2 IF $$DOD^AUPNPAT(DFN)]""
QUIT
+3 ;IHS/CMI/GRL
IF $PIECE($GET(^AUPNPAT(DFN,41,DUZ(2),0)),U,5)]""
QUIT
+4 ;IHS/CMI/GRL
IF $PIECE($GET(^AUPNPAT(DFN,41,DUZ(2),0)),U,2)=""
QUIT
+5 IF $$DMPROB(DFN)
QUIT
+6 SET APCLN=$$LASTDMDX(DFN)
+7 IF APCLN=""
QUIT
+8 IF APCLN<APCLLDAT
QUIT
+9 SET APCLN1=$$NUMDXS(DFN)
+10 IF APCLN1<APCLND
QUIT
+11 SET ^XTMP("APCLDR1",APCLJOB,APCLBTH,"PATIENTS",$PIECE(^DPT(DFN,0),U),DFN)=APCLN_U_APCLN1
+12 QUIT
LASTDMDX(P) ;
+1 IF '$GET(P)
QUIT ""
+2 NEW X,E,APCL,Y
+3 SET Y="APCL("
+4 SET X=P_"^LAST DX [SURVEILLANCE DIABETES"
SET E=$$START1^APCLDF(X,Y)
+5 IF $DATA(APCL(1))
QUIT $PIECE(APCL(1),U)
+6 QUIT ""
+7 ;
NUMDXS(P) ;
+1 IF '$GET(P)
QUIT ""
+2 NEW X,E,APCL,Y
+3 SET Y="APCL("
+4 SET X=P_"^ALL DX [SURVEILLANCE DIABETES"
SET E=$$START1^APCLDF(X,Y)
+5 SET (X,Y)=0
+6 FOR
SET X=$ORDER(APCL(X))
IF X'=+X
QUIT
SET Y=Y+1
+7 QUIT Y
+8 ;
REGPROC ;
+1 ;$o through register, check status, if no DM on problem list
+2 ;set xtmp
+3 ;gather up patients from register in ^XTMP
+4 SET X=0
FOR
SET X=$ORDER(^ACM(41,"B",APCLREG,X))
IF X'=+X
QUIT
Begin DoDot:1
+5 IF APCLSTAT]""
IF $PIECE($GET(^ACM(41,X,"DT")),U,1)=APCLSTAT
SET DFN=$PIECE(^ACM(41,X,0),U,2)
DO CHKSET
QUIT
+6 IF APCLSTAT=""
SET DFN=$PIECE(^ACM(41,X,0),U,2)
DO CHKSET
QUIT
+7 QUIT
End DoDot:1
+8 QUIT
CHKSET ;
+1 IF $$DOD^AUPNPAT(DFN)]""
QUIT
+2 ;IHS/CMI/GRL
IF $PIECE($GET(^AUPNPAT(DFN,41,DUZ(2),0)),U,5)]""
QUIT
+3 ;IHS/CMI/GRL
IF $PIECE($GET(^AUPNPAT(DFN,41,DUZ(2),0)),U,2)=""
QUIT
+4 IF $$DMPROB(DFN)
QUIT
+5 SET ^XTMP("APCLDR1",APCLJOB,APCLBTH,"PATIENTS",$PIECE(^DPT(DFN,0),U),DFN)=$$LASTDMDX(DFN)_U_$$NUMDXS(DFN)
+6 QUIT
DMPROB(P) ;is DM on problem list 1=yes 0=no
+1 IF '$GET(P)
QUIT 0
+2 IF '$DATA(^AUPNPROB("AC",P))
QUIT 0
+3 NEW T
SET T=$ORDER(^ATXAX("B","SURVEILLANCE DIABETES",0))
+4 IF 'T
QUIT ""
+5 NEW G,D,Y,I
SET D=""
SET (Y,G)=0
FOR
SET Y=$ORDER(^AUPNPROB("AC",P,Y))
IF Y'=+Y!(G)
QUIT
Begin DoDot:1
+6 SET I=$PIECE(^AUPNPROB(Y,0),U)
+7 IF $$ICD^ATXAPI(I,T,9)
SET G=1
+8 QUIT
End DoDot:1
+9 QUIT G
PRINT ;EP - called from xbdbque
+1 SET APCLIOSL=$SELECT($GET(APCLGUI):55,1:IOSL)
+2 SET APCL80D="-------------------------------------------------------------------------------"
+3 SET APCLPG=0
DO HEAD
+4 IF '$DATA(^XTMP("APCLDR1",APCLJOB,APCLBTH))
WRITE !!,"NO PATIENTS TO REPORT"
GOTO DONE
+5 SET APCLNAME=""
KILL APCLQ
+6 FOR
SET APCLNAME=$ORDER(^XTMP("APCLDR1",APCLJOB,APCLBTH,"PATIENTS",APCLNAME))
IF APCLNAME=""!($DATA(APCLQ))
QUIT
Begin DoDot:1
+7 SET DFN=""
FOR
SET DFN=$ORDER(^XTMP("APCLDR1",APCLJOB,APCLBTH,"PATIENTS",APCLNAME,DFN))
IF DFN=""!($DATA(APCLQ))
QUIT
SET APCLX=^XTMP("APCLDR1",APCLJOB,APCLBTH,"PATIENTS",APCLNAME,DFN)
Begin DoDot:2
+8 IF $Y>(APCLIOSL-4)
DO HEAD
IF $DATA(APCLQ)
QUIT
+9 WRITE !,$EXTRACT(APCLNAME,1,20),?22,$$HRN^AUPNPAT(DFN,DUZ(2)),?29,$$DOB^AUPNPAT(DFN,"E"),?43,$PIECE(^DPT(DFN,0),U,2),?47,$$FMTE^XLFDT($PIECE(APCLX,U)),?63,$PIECE(APCLX,U,2)
End DoDot:2
End DoDot:1
DONE ;
+1 IF $EXTRACT(IOST)="C"
IF IO=IO(0)
SET DIR(0)="EO"
SET DIR("A")="End of report. HIT RETURN"
DO ^DIR
KILL DIR
IF $DATA(DUOUT)
SET DIRUT=1
+2 IF $DATA(IOF)
WRITE @IOF
+3 KILL ^XTMP("APCLDR1",APCLJOB,APCLBTH),APCLJOB,APCLBTH
+4 QUIT
HEAD IF 'APCLPG
GOTO HEAD1
+1 IF $EXTRACT(IOST)="C"
IF IO=IO(0)
WRITE !
SET DIR(0)="EO"
DO ^DIR
KILL DIR
IF Y=0!(Y="^")!($DATA(DTOUT))
SET APCLQ=""
QUIT
HEAD1 ;
+1 IF $DATA(IOF)
WRITE @IOF
SET APCLPG=APCLPG+1
+2 IF $GET(APCLGUI)
IF APCLPG'=1
WRITE !,"ZZZZZZZ"
+3 WRITE !?13,"********** CONFIDENTIAL PATIENT INFORMATION **********"
+4 WRITE !,$PIECE(^VA(200,DUZ,0),U,2),?72,"Page ",APCLPG,!
+5 WRITE ?(80-$LENGTH($PIECE(^DIC(4,DUZ(2),0),U))/2),$PIECE(^DIC(4,DUZ(2),0),U),!
+6 WRITE $$CTR("PATIENTS WITH NO DIAGNOSIS OF DIABETES ON PROBLEM LIST",80),!
+7 IF APCLTR="R"
WRITE $$CTR("Patients on the "_$PIECE(^ACM(41.1,APCLREG,0),U)_" Register",80),!
+8 IF APCLTR="D"
WRITE $$CTR("Patients w/at least "_APCLND_" diabetes diagnoses",80),!
PIH WRITE !,"PATIENT NAME",?22,"HRN",?29,"DOB",?47,"LAST DM DX",?63,"# OF DM DXS",!,APCL80D
+1 QUIT
CTR(X,Y) ;EP - Center X in a field Y wide.
+1 QUIT $JUSTIFY("",$SELECT($DATA(Y):Y,1:IOM)-$LENGTH(X)\2)_X
+2 ;----------
EOP ;EP - End of page.
+1 IF $EXTRACT(IOST)'="C"
QUIT
+2 IF $DATA(ZTQUEUED)!'(IOT="TRM")!$DATA(IO("S"))
QUIT
+3 NEW DIR
+4 KILL DIRUT,DFOUT,DLOUT,DTOUT,DUOUT
+5 SET DIR(0)="E"
DO ^DIR
+6 QUIT
+7 ;----------
USR() ;EP - Return name of current user from ^VA(200.
+1 QUIT $SELECT($GET(DUZ):$SELECT($DATA(^VA(200,DUZ,0)):$PIECE(^(0),U),1:"UNKNOWN"),1:"DUZ UNDEFINED OR 0")
+2 ;----------
LOC() ;EP - Return location name from file 4 based on DUZ(2).
+1 QUIT $SELECT($GET(DUZ(2)):$SELECT($DATA(^DIC(4,DUZ(2),0)):$PIECE(^(0),U),1:"UNKNOWN"),1:"DUZ(2) UNDEFINED OR 0")
+2 ;----------
TEST ;
+1 DO BDMG("R",1,"A")
+2 QUIT
BDMG(APCLTR,APCLREG,APCLSTAT,APCLND,APCLLDAT) ;EP - GUI DMS Entry Point
+1 SET APCLND=$GET(APCLND)
+2 SET APCLGUI=1
+3 SET APCLLDAT=$GET(APCLLDAT)
+4 NEW APCLNOW,APCLOPT,APCLIEN
+5 SET APCLOPT="Patients w/no Diagnosis of DM on Problem Lis"
+6 DO NOW^%DTC
+7 SET APCLNOW=$GET(%)
+8 KILL DD,DO,DIC
+9 SET X=DUZ_APCLNOW
+10 SET DIC("DR")=".02////"_DUZ_";.03////"_APCLNOW_";.06///"_$GET(APCLOPT)_";.07////R"
+11 SET DIC="^APCLGUIR("
SET DIC(0)="L"
SET DIADD=1
SET DLAYGO=9001004.4
+12 DO FILE^DICN
+13 KILL DIADD,DLAYGO,DIC,DA
+14 IF Y=-1
SET APCLIEN=-1
QUIT
+15 SET APCLIEN=+Y
+16 ;cmi/maw added
SET BDMGIEN=APCLIEN
+17 DO ^XBFMK
+18 KILL ZTSAVE
SET ZTSAVE("*")=""
+19 ;D GUIEP for interactive testing
+20 SET ZTIO=""
SET ZTDTH=$$NOW^XLFDT
SET ZTRTN="GUIEP^APCLDR1"
SET ZTDESC="GUI DM PTS NO DX PL"
DO ^%ZTLOAD
+21 DO EXIT
+22 QUIT
GUIEP ;EP
+1 DO PROC
+2 KILL ^TMP($JOB,"APCLDR1")
+3 SET IOM=80
+4 DO GUIR^XBLM("PRINT^APCLDR1","^TMP($J,""APCLDR1"",")
+5 SET X=0
SET C=0
FOR
SET X=$ORDER(^TMP($JOB,"APCLDR1",X))
IF X'=+X
QUIT
Begin DoDot:1
+6 SET APCLDATA=^TMP($JOB,"APCLDR1",X)
+7 IF APCLDATA="ZZZZZZZ"
SET APCLDATA=$CHAR(12)
+8 SET ^APCLGUIR(APCLIEN,11,X,0)=APCLDATA
SET C=C+1
End DoDot:1
+9 SET ^APCLGUIR(APCLIEN,11,0)="^^"_C_"^"_C_"^"_DT_"^"
+10 SET DA=APCLIEN
SET DIK="^APCLGUIR("
DO IX1^DIK
+11 DO ENDLOG
+12 KILL ^TMP($JOB,"APCLDR1")
+13 DO EXIT
+14 SET ZTREQ="@"
+15 QUIT
+16 ;
ENDLOG ;-- write the end of the log
+1 DO NOW^%DTC
+2 SET APCLNOW=$GET(%)
+3 SET DIE="^APCLGUIR("
SET DA=APCLIEN
SET DR=".04////"_APCLNOW_";.07////C"
+4 DO ^DIE
+5 KILL DIE,DR,DA
+6 QUIT