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

APCLASK.m

Go to the documentation of this file.
  1. APCLASK ; IHS/CMI/LAB -GET PATIENT OR COHORT ;
  1. ;;2.0;IHS PCC SUITE;;MAY 14, 2009
  1. ;CMI/TUCSON/LAB - patch 3 - 10/26/1998 Y2K fixes
  1. ;The above line will be changed to be nonparameter as of the
  1. ;next version of this package. All callers should enter this
  1. ;routine at entry point START1^APCLASK(,,,)
  1. G START2
  1. ;
  1. START1(APCLDFN,APCLCUML) ;EP
  1. ;
  1. START2 ;PEP PUBLISHED ENTRY POINT - called to create a report template
  1. I 'APCLDFN W !,*7,"Report template entry not indicated!" H 2 Q
  1. I '$D(^APCLRPT(APCLDFN)) W !,*7,"Indicated patient/cohort report template entry does not exist!" H 2 Q
  1. I '$D(APCLCUML) S APCLCUML=0
  1. I APCLCUML,'$D(^APCLRPT(APCLCUML)) W !,*7,"Indicated cumulative report entry does not exist!" H 2 Q
  1. I '$D(DTIME) D ^XBKVAR
  1. GETTIME S APCLSTP=0 D TIME G:APCLSTP X
  1. START K ^TMP("APCLPTS",$J) F D ASK Q:APCLSTP
  1. I '$D(^TMP("APCLPTS",$J))!(X["^") D CLEAN K APCLBDT,APCLEDT,APCLDATE,APCLFISC G GETTIME
  1. S APCLSTP=0
  1. K DIR S DIR(0)="S^1:Print Both Individual and Cumulative Reports;2:Print Individual Reports Only;3:Print Cumulative Report Only;4:Create EPI INFO file",DIR("A")="Enter Print option",DIR("B")="1" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. I $D(DIRUT) G START
  1. S APCLPREP=Y
  1. I APCLPREP=4 D FLAT Q:APCLSTP
  1. D TASK I $D(IO("Q")) K IO("Q") D QUE G AGIN
  1. I 'POP S APCLSTP=0 D ZTM
  1. AGIN D CLEAN S APCLSTP=0 G START
  1. X D EOJ
  1. Q
  1. ;
  1. TIME ;PEP - CALLED FROM BDM Get fiscal year or time frame
  1. S Y=DT D DD^%DT S APCLTDTE=Y
  1. S DIR(0)="SO^1:Fiscal Year;2:Date Range",DIR("A")="Indicate the desired time frame" D ^DIR K DIR
  1. I '$D(DTOUT),'$D(DIRUT),'$D(DIROUT),Y W ! D @Y I 1
  1. E S APCLSTP=1
  1. Q
  1. ;
  1. 1 ; Fiscal Year
  1. S DIR(0)="DA",DIR("A")="Enter report fiscal year: " D ^DIR K DIR
  1. I '$D(DTOUT),'$D(DIRUT),'$D(DIROUT) S APCLFISC=$S($E(Y)=2:19,1:20)_$E(Y,2,3) D
  1. . ;beginning Y2K CMI/TUCSON/LAB
  1. . ;I APCLFISC=2000 S APCLBDT=2991001,APCLEDT=2000930 ;Y2000
  1. . ;E S APCLBDT=$E(Y,1,3)-1_1001,APCLEDT=$E(Y,1,3)_"0930"
  1. . S APCLBDT=$E(Y,1,3)-1_1001,APCLEDT=$E(Y,1,3)_"0930" ;Y2000
  1. . ;end Y2K CMI/TUCSON/LAB
  1. . S Y=APCLBDT D DD^%DT S APCLBDT=Y
  1. . S (APCLED,Y)=APCLEDT D DD^%DT S APCLEDT=Y
  1. . S APCLDATE=";DURING "_APCLBDT_"-"_APCLEDT
  1. . S APCLFISC="Fiscal Year "_APCLFISC
  1. E S APCLSTP=1
  1. X2 Q
  1. ;
  1. 2 ; Date Range
  1. ASKBD S %DT="AEX",%DT("A")="Enter beginning date: " D ^%DT G:X=U X3 S APCLBDT=Y I Y<0 G ASKBD
  1. ASKED S %DT="AEX",%DT("A")="Enter ending date: " D ^%DT G:X=U X3 S APCLEDT=Y I Y<0,X]"" G ASKED
  1. I APCLBDT>APCLEDT!(APCLEDT>DT) W !,"Beginning and ending dates must be prior to today, and beginning date",!,"must precede ending date.",! G ASKBD
  1. X3 I $G(X)=U!'$D(APCLBDT)!'$D(APCLEDT) S APCLSTP=1
  1. E D
  1. . S Y=APCLBDT D DD^%DT S APCLBDT=Y
  1. . S (APCLED,Y)=APCLEDT D DD^%DT S APCLEDT=Y
  1. . S APCLDATE=";DURING "_APCLBDT_"-"_APCLEDT
  1. Q
  1. ;
  1. ASK ; Get patient name or cohort
  1. ;
  1. K APCLPT
  1. R:'$D(APCLPTS) !,"Enter patient or [search template name: ",X:DTIME
  1. R:$D(APCLPTS) !,"Enter ANOTHER patient or [search template name: ",X:DTIME
  1. ;R !,"Enter patient or [search template name: ",X:DTIME
  1. I "^"[X S APCLSTP=1 G X1
  1. I $E(X)'="[" S APCLPT=""
  1. E S X=$E(X,2,99)
  1. I '$D(APCLPT) S DIC("S")="I $P(^(0),U,4)=2!($P(^(0),U,4)=9000001)"
  1. S DIC=$S($D(APCLPT):"^DPT(",1:"^DIBT("),DIC(0)="EQM" D ^DIC K DIC
  1. I Y=-1 G ASK
  1. I $D(APCLPT) S ^TMP("APCLPTS",$J,+Y)="",APCLPTS=1
  1. E F APCLPD=0:0 S APCLPD=$O(^DIBT(+Y,1,APCLPD)) Q:'APCLPD S ^TMP("APCLPTS",$J,APCLPD)=""
  1. K APCLPT
  1. X1 Q
  1. ;
  1. ZTM ;PEP - CALLED FROM BDM - ENTRY POINT - for taskman
  1. U IO
  1. S (APCLSTP,APCLEPIN)=0
  1. S APCLASK="" ; Lets ^APCLPRT know that it is called by this routine
  1. K ^TMP("APCL",$J),^TMP("APCLCUML",$J),^TMP("APCLEPI",$J)
  1. S APCLROOT="^TMP(""APCL"",$J)"
  1. F APCLPD=0:0 S APCLPD=$O(^TMP("APCLPTS",$J,APCLPD)) Q:'APCLPD!APCLSTP D K ^TMP("APCL",$J)
  1. .I $P(^APCLRPT(APCLDFN,0),U,3)]"" D @("^"_$P(^(0),U,3))
  1. .I APCLPREP'=3,APCLPREP'=4 D EN^APCLPRT(APCLDFN,APCLROOT,APCLPD)
  1. .I APCLPREP=4 D EPIREC
  1. I APCLPREP'=2,APCLPREP'=4,APCLCUML,$D(^APCLRPT(APCLCUML)),$D(^TMP("APCLCUML",$J)),'APCLSTP D:$P(^APCLRPT(APCLCUML,0),U,3)]"" @("^"_$P(^(0),U,3)) S APCLROOT="^TMP(""APCLCUML"",$J)" D EN^APCLPRT(APCLCUML,APCLROOT)
  1. I APCLPREP=4 D WRITEF^APCLDM
  1. K ^TMP("APCLCUML",$J),^TMP("APCLPTS",$J),^TMP("APCLEPI",$J)
  1. I $D(ZTQUEUED) S ZTREQ="@" D EOJ
  1. I '$D(ZTQUEUED) D ^%ZISC
  1. Q
  1. ;
  1. TASK ; Task?
  1. K IOP,%ZIS S %ZIS="PQM" D ^%ZIS I POP S IO=IO(0)
  1. Q
  1. ;
  1. QUE K ZTSAVE,ZTSK
  1. NEW % F %="APCLSTP","APCLDMRG","APCLPREP","APCLPD","APCLPT","APCLBDT","APCLEDT","APCLDATE","APCLFISC","APCLTDTE","APCLDFN","APCLCUML","APCLFILE","APCLED","^TMP(""APCLPTS"",$J,","DUZ(" S ZTSAVE(%)=""
  1. S ZTRTN="ZTM^APCLASK",ZTDESC=$P(^APCLRPT(APCLDFN,0),U)_" REPORT",ZTIO=ION,ZTDTH="" S:$D(IOCPU) ZTCPU=IOCPU
  1. D ^%ZTLOAD
  1. D HOME^%ZIS
  1. K ZTDESC,ZTDTH,ZTRTN,ZTSAVE,ZTSK,ZTCPU
  1. I $D(IOF) W @IOF
  1. E W !
  1. Q
  1. ;
  1. EPIREC ;create epi info record in ^TMP("APCLEPI",$J,n)
  1. S X=$$REC^APCLDM(APCLPD,"DM AUDIT EPI INFO REC 1"),APCLEPIN=APCLEPIN+1,^TMP("APCLEPI",$J,APCLEPIN)=X
  1. S X=$$REC^APCLDM(APCLPD,"DM AUDIT EPI INFO REC 2"),APCLEPIN=APCLEPIN+1,^TMP("APCLEPI",$J,APCLEPIN)=X
  1. S X=$$REC^APCLDM(APCLPD,"DM AUDIT EPI INFO REC 3"),APCLEPIN=APCLEPIN+1,^TMP("APCLEPI",$J,APCLEPIN)=X
  1. Q
  1. FLAT ;
  1. S APCLFILE=""
  1. S DIR(0)="F^3:8",DIR("A")="Enter the name of the FILE to be Created (3-8 characters)" K DA D ^DIR K DIR
  1. I $D(DIRUT) S APCLSTP=1 Q
  1. I X'?1.8AN W !!,"Invalid format, must be letters and numbers",! G FLAT
  1. S APCLFILE=$$LOW^XLFSTR(Y)_".rec"
  1. W !!,"I am going to create a file called ",APCLFILE," which will reside in ",!,"the ",$S($P(^AUTTSITE(1,0),U,21)=1:"/usr/spool/uucppublic",1:"C:\EXPORT")," directory.",!
  1. W "Actually, the file will be placed in the same directory that the data export"
  1. W !,"globals are placed. See your site manager for assistance in finding the file",!,"after it is created. PLEASE jot down and remember the following file name:",!?15,"********** ",APCLFILE," **********",!
  1. W "It may be several hours (or overnight) before your report and flat file are ",!,"finished.",!
  1. W !,"The records that are generated and placed in file ",APCLFILE
  1. W !,"are in a format readable by EPI INFO. For a definition of the format",!,"please see your user manual.",!
  1. S DIR(0)="Y",DIR("A")="Is everything ok? Do you want to continue?",DIR("B")="Y" K DA D ^DIR K DIR
  1. I $D(DIRUT) S APCLSTP=1 Q
  1. I 'Y S APCLSTP=1 Q
  1. Q
  1. CLEAN ;
  1. K APCLPD,APCLPT,^TMP("APCLPTS",$J),APCLPREP,APCLPTS,APCLEPIN
  1. Q
  1. ;
  1. EOJ ;
  1. I IO'=IO(0) D ^%ZISC
  1. K APCLFISC,APCLPD,APCLPT,APCLDATE,APCLSTP,APCLDTE,APCLEDT,APCLBDT,APCLTDTE,APCLDFN,APCLROOT,^TMP("APCLPTS",$J),APCLASK,AUPNSEX,AUPNPAT,AUPNDAYS,AUPNSEX,AUPNDOD,AUPNDOB,APCLPREP,APCLEPIN,APCLED,APCLMAM,APCLED,APCLBD,APCLUED,ZTCPU
  1. K APCLHTKI,APCLRXC1
  1. Q
  1. ;