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

APCM13SL.m

Go to the documentation of this file.
  1. APCM13SL ; IHS/CMI/LAB - IHS MU ;
  1. ;;1.0;IHS MU PERFORMANCE REPORTS;**2**;MAR 26, 2012;Build 11
  1. ;; ;
  1. RT ;EP
  1. ;for each measure list, choose report type
  1. W !!,"Select List Type.",!,"NOTE: If you select All Patients, your list may be",!,"hundreds of pages and take hours to print.",!
  1. S DIR(0)="S^R:Random Patient List;A:All Patients",DIR("A")="Choose report type for the Lists",DIR("B")="R" KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) S APCMQUIT="" K APCMLIST Q
  1. S APCMLIST=Y
  1. Q
  1. EP ;EP - CALLED FROM OPTION
  1. D EN
  1. Q
  1. EOJ1 ;EP
  1. K APCMGLST,APCMTIND,APCMHIGH,APCMANS,APCMC,APCMGANS,APCMGC,APCMGI,APCMI,APCMX
  1. Q
  1. ;; ;
  1. EN ;EP -- main entry point for GPRA LIST DISPLAY
  1. D EN^VALM("APCM 13 S1 LIST SELECTION")
  1. D CLEAR^VALM1
  1. D FULL^VALM1
  1. W:$D(IOF) @IOF
  1. D EOJ1
  1. Q
  1. ;
  1. HDR ; -- header code
  1. S VALMHDR(1)="IHS 2013 MU Stage 1 Measure Lists of Patients"
  1. S VALMHDR(2)="* indicates the list has been selected"
  1. Q
  1. ;
  1. INIT ; -- init variables and list array
  1. K APCMGLST,APCMNOLI S APCMHIGH=""
  1. S APCMXREF=$S(APCMRPTT=1:"EOORDER",1:"AH")
  1. S (Y,C,I)=0 F S Y=$O(^APCM13OB(APCMXREF,Y)) Q:Y'=+Y Q:Y="" S X=0 F S X=$O(^APCM13OB(APCMXREF,Y,X)) Q:X'=+X D
  1. .Q:'$D(APCMIND(X))
  1. .I $P(^APCM13OB(X,0),U,7)="" S C=C+1 D Q
  1. ..S APCMGLST(C,0)=C_")",$E(APCMGLST(C,0),5)="("_$P(^APCM13OB(X,0),U,3)_") "_$P(^APCM13OB(X,0),U,5),APCMGLST("IDX",C,C)=X I $D(APCMLIST(X)) S APCMGLST(C,0)="*"_APCMGLST(C,0)
  1. .I $P(^APCM13OB(X,0),U,7)=1 Q ;S C=C+1 D
  1. .;.S APCMGLST(C,0)="NO patient list available for measure: "_$P(^APCM13OB(X,0),U,5),APCMGLST("IDX",C,C)=X,APCMNOLI(X)="" I $D(APCMLIST(X)) S APCMGLST(C,0)="*"_APCMGLST(C,0)
  1. S (VALMCNT,APCMHIGH)=C
  1. Q
  1. ;
  1. HELP ; -- help code
  1. S X="?" D DISP^XQORM1 W !!
  1. Q
  1. ;
  1. EXIT ; -- exit code
  1. Q
  1. ;
  1. EXPND ; -- expand code
  1. Q
  1. ;
  1. BACK ;go back to listman
  1. D TERM^VALM0
  1. S VALMBCK="R"
  1. D INIT
  1. D HDR
  1. K DIR
  1. K X,Y,Z,I
  1. Q
  1. ;
  1. ADD ;EP - add an item to the selected list - called from a protocol
  1. W ! S DIR(0)="LO^1:"_APCMHIGH,DIR("A")="Which item(s)" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. I Y="" W !,"No items selected." G ADDX
  1. I $D(DIRUT) W !,"No items selected." G ADDX
  1. D FULL^VALM1 W:$D(IOF) @IOF
  1. S APCMGANS=Y,APCMGC="" F APCMGI=1:1 S APCMGC=$P(APCMGANS,",",APCMGI) Q:APCMGC="" S APCMI=APCMGLST("IDX",APCMGC,APCMGC) I $D(APCMIND(APCMI)),'$D(APCMNOLI(APCMI)) S APCMLIST(APCMI)=""
  1. ADDX ;
  1. D BACK
  1. Q
  1. ADDALL ;
  1. F X=1:1:APCMHIGH S I=$G(APCMGLST("IDX",X,X)) I $D(APCMIND(I)),'$D(APCMNOLI(I)) S APCMLIST(I)=""
  1. D BACK
  1. Q
  1. ;
  1. REM ;
  1. W ! S DIR(0)="LO^1:"_APCMHIGH,DIR("A")="Which item(s)" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. I Y="" W !,"No items selected." G ADDX
  1. I $D(DIRUT) W !,"No items selected." G ADDX
  1. D FULL^VALM1 W:$D(IOF) @IOF
  1. S APCMGANS=Y,APCMGC="" F APCMGI=1:1 S APCMGC=$P(APCMGANS,",",APCMGI) Q:APCMGC="" S I=APCMGLST("IDX",APCMGC,APCMGC) K APCMLIST(I)
  1. REMX ;
  1. D BACK
  1. Q
  1. ;
  1. PT ;EP
  1. S (APCMROT,APCMDELT,APCMDELF)=""
  1. W !!,"Please choose an output type. For an explanation of the delimited",!,"file please see the user manual.",!
  1. S DIR(0)="S^P:Print Report on Printer or Screen;D:Create Delimited output file (for use in Excel);B:Both a Printed Report and Delimited File",DIR("A")="Select an Output Option",DIR("B")="P" KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) Q
  1. S APCMROT=Y
  1. Q:APCMROT="P"
  1. S APCMDELF="",APCMDELT=""
  1. W !!,"You have selected to create a delimited output file. You can have this",!,"output file created as a text file in the pub directory, ",!,"OR you can have the delimited output display on your screen so that"
  1. W !,"you can do a file capture. Keep in mind that if you choose to",!,"do a screen capture you CANNOT Queue your report to run in the background!!",!!
  1. S DIR(0)="S^S:SCREEN - delimited output will display on screen for capture;F:FILE - delimited output will be written to a file in pub",DIR("A")="Select output type",DIR("B")="S" KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) G PT
  1. S APCMDELT=Y
  1. Q:APCMDELT="S"
  1. S DIR(0)="F^1:40",DIR("A")="Enter a filename for the delimited output (no more than 40 characters)" KILL DA D ^DIR KILL DIR
  1. I $D(DIRUT) G PT
  1. S APCMDELF=Y
  1. W !!,"When the report is finished your delimited output will be found in the",!,$P($G(^AUTTSITE(1,1)),U,2)," directory. The filename will be ",APCMDELF,".txt",!
  1. Q
  1. REPORT ;EP
  1. S APCMRPT=""
  1. W !!
  1. ;CREATE REPORT ENTRY IN FILEMAN FILE
  1. ;3 files must have the same ien
  1. L +^APCMM13C:30 I '$T W !!,"Unable to lock global, try later." G REPORTX
  1. L +^APCMM13P:30 I '$T W !!,"Unable to lock global, try later." G REPORTX
  1. D GETIEN
  1. I 'APCMIEN W !!,"Something wrong with control files, notify programmer!" S APCMRPT="" G REPORTX
  1. S DINUM=APCMIEN
  1. K DIC S X=APCMBD,DIC(0)="L",DIC="^APCMM13C(",DLAYGO=9001301.03,DIADD=1,DIC("DR")=".02////"_APCMED_";.03////"_APCMPBD_";.04////"_APCMPED_";.05////"_DUZ(2)_";.06////"_$S(APCMRPT=1:"E",1:"H")_";.07////"_$$NOW^XLFDT()
  1. D ^DIC K DIC,DA,DR,DIADD,DLAYGO I Y=-1 W !!,"UNABLE TO CREATE REPORT FILE ENTRY - NOTIFY SITE MANAGER!" S APCMQUIT=1 G REPORTX
  1. S APCMRPT=+Y
  1. ;set 11 multiple with variable pointers to each provider/hospital
  1. I APCMRPTT=1 D S ^APCMM13C(APCMRPT,11,0)="^9001301.0311AV^"_C_"^"_C
  1. .S X=0,C=0 F S X=$O(APCMPRV(X)) Q:X'=+X S C=C+1 D
  1. ..S ^APCMM13C(APCMRPT,11,C,0)=X_";VA(200,"
  1. ..S ^APCMM13C(APCMRPT,11,"B",X_";VA(200,",C)=""
  1. I APCMRPTT=2 D S ^APCMM13C(APCMRPT,11,0)="^9001301.0311AV^"_C_"^"_C
  1. .S X=0,C=1,X=APCMFAC D
  1. ..S ^APCMM13C(APCMRPT,11,C,0)=X_";AUTTLOC("
  1. ..S ^APCMM13C(APCMRPT,11,"B",X_";AUTTLOC(",C)=""
  1. K DIC S X=APCMBD,DIC(0)="L",DIC="^APCMM13P(",DLAYGO=9001301.04,DIADD=1,DIC("DR")=".02////"_APCMED_";.03////"_APCMPBD_";.04////"_APCMPED_";.05////"_DUZ(2)_";.06////"_$S(APCMRPT=1:"E",1:"H")_";.07////"_$$NOW^XLFDT()
  1. S DINUM=APCMRPT D ^DIC K DIC,DA,DR,DIADD,DLAYGO,DINUM I Y=-1 W !!,"UNABLE TO CREATE REPORT FILE ENTRY - NOTIFY SITE MANAGER!" S APCMQUIT=1 G REPORTX
  1. S APCMRPTP=+Y
  1. I APCMRPTT=1 D S ^APCMM13P(APCMRPTP,11,0)="^9001301.0411AV^"_C_"^"_C
  1. .S X=0,C=0 F S X=$O(APCMPRV(X)) Q:X'=+X S C=C+1 D
  1. ..S ^APCMM13P(APCMRPTP,11,C,0)=X_";VA(200,"
  1. ..S ^APCMM13P(APCMRPTP,11,"B",X_";VA(200,",C)=""
  1. I APCMRPTT=2 D S ^APCMM13P(APCMRPT,11,0)="^9001301.0411AV^"_C_"^"_C
  1. .S X=0,C=0,X=APCMFAC,C=C+1 D
  1. ..S ^APCMM13P(APCMRPT,11,C,0)=X_";AUTTLOC("
  1. ..S ^APCMM13P(APCMRPT,11,"B",X_";AUTTLOC(",C)=""
  1. REPORTX ;
  1. D ^XBFMK
  1. K DIC,DIADD,DLAYGO,DR,DA,DD,X,Y,DINUM
  1. L -^APCMM13C
  1. L -^APCMM13P
  1. Q
  1. GETIEN ;EP -Get next ien available in all 3 files
  1. S APCMF=9001301.03 D ENT
  1. S APCMF=9001301.04 D ENT
  1. S APCMIEN=$P(^APCMM13C(0),U,3)+1
  1. S I $D(^APCMM13P(APCMIEN)) S APCMIEN=APCMIEN+1 G S
  1. Q
  1. ;
  1. ENT ;
  1. NEW GBL,NXT,CTR,XBHI,XBX,XBY,ANS
  1. S GBL=^DIC(APCMF,0,"GL")
  1. S GBL=GBL_"NXT)"
  1. S (XBHI,NXT,CTR)=0
  1. F L=0:0 S NXT=$O(@(GBL)) Q:NXT'=+NXT S XBHI=NXT,CTR=CTR+1 ;W:'(CTR#50) "."
  1. S NXT="",XBX=$O(@(GBL)),XBX=^(0),XBY=$P(XBX,U,4),XBX=$P(XBX,U,3)
  1. S NXT=0,$P(@(GBL),U,3)=XBHI,$P(^(0),U,4)=CTR
  1. ;
  1. EOJ ;
  1. KILL ANS,XBHI,XBX,XBY,CTR,DIC,FILE,GBL,L,NXT,APCMF
  1. Q