| 1 | PXRMINDC ; SLC/PKR - Index counting routines. ;03/06/2007
 | 
|---|
| 2 |  ;;2.0;CLINICAL REMINDERS;**4,6**;Feb 04, 2005;Build 123
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;========================================================
 | 
|---|
| 5 | CNT5(FILENUM,COUNT) ;Get date counts for indexes where the date
 | 
|---|
| 6 |  ;is at subscript 5. Works for file numbers:
 | 
|---|
| 7 |  ;63, 70, 120.5, 601.2, 601.84,
 | 
|---|
| 8 |  ;9000010.11, 9000010.12, 9000010.13, 9000010.16, 9000010.23
 | 
|---|
| 9 |  N DAS,DATE,DFN,IND,ITEM,YEAR
 | 
|---|
| 10 |  I '$D(ZTQUEUED) W !,"Counting file number "_FILENUM
 | 
|---|
| 11 |  S IND=0
 | 
|---|
| 12 |  S DFN=""
 | 
|---|
| 13 |  F  S DFN=$O(^PXRMINDX(FILENUM,"PI",DFN)) Q:DFN=""  D
 | 
|---|
| 14 |  . S IND=IND+1
 | 
|---|
| 15 |  . I '$D(ZTQUEUED),(IND#10000=0) W "."
 | 
|---|
| 16 |  . S ITEM=""
 | 
|---|
| 17 |  . F  S ITEM=$O(^PXRMINDX(FILENUM,"PI",DFN,ITEM)) Q:ITEM=""  D
 | 
|---|
| 18 |  .. S DATE=""
 | 
|---|
| 19 |  .. F  S DATE=$O(^PXRMINDX(FILENUM,"PI",DFN,ITEM,DATE)) Q:DATE=""  D
 | 
|---|
| 20 |  ... S YEAR=$E(DATE,1,3)
 | 
|---|
| 21 |  ... S DAS=""
 | 
|---|
| 22 |  ... F  S DAS=$O(^PXRMINDX(FILENUM,"PI",DFN,ITEM,DATE,DAS)) Q:DAS=""  D
 | 
|---|
| 23 |  .... S COUNT(YEAR)=$G(COUNT(YEAR))+1
 | 
|---|
| 24 |  Q
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  ;========================================================
 | 
|---|
| 27 | CNT6(FILENUM,COUNT) ;Get date counts for indexes where the date
 | 
|---|
| 28 |  ;is at subscript 6. Works for file numbers:
 | 
|---|
| 29 |  ;9000010.07, 9000010.18
 | 
|---|
| 30 |  N DAS,DATE,DFN,IND,ITEM,TYPE,YEAR
 | 
|---|
| 31 |  I '$D(ZTQUEUED) W !,"Counting file number "_FILENUM
 | 
|---|
| 32 |  S IND=0
 | 
|---|
| 33 |  S DFN=""
 | 
|---|
| 34 |  F  S DFN=$O(^PXRMINDX(FILENUM,"PPI",DFN)) Q:DFN=""  D
 | 
|---|
| 35 |  . S IND=IND+1
 | 
|---|
| 36 |  . I '$D(ZTQUEUED),(IND#10000=0) W "."
 | 
|---|
| 37 |  . S TYPE=""
 | 
|---|
| 38 |  . F  S TYPE=$O(^PXRMINDX(FILENUM,"PPI",DFN,TYPE)) Q:TYPE=""  D
 | 
|---|
| 39 |  .. S ITEM=""
 | 
|---|
| 40 |  .. F  S ITEM=$O(^PXRMINDX(FILENUM,"PPI",DFN,TYPE,ITEM)) Q:ITEM=""  D
 | 
|---|
| 41 |  ... S DATE=""
 | 
|---|
| 42 |  ... F  S DATE=$O(^PXRMINDX(FILENUM,"PPI",DFN,TYPE,ITEM,DATE)) Q:DATE=""  D
 | 
|---|
| 43 |  .... S YEAR=$E(DATE,1,3)
 | 
|---|
| 44 |  .... S DAS=""
 | 
|---|
| 45 |  .... F  S DAS=$O(^PXRMINDX(FILENUM,"PPI",DFN,TYPE,ITEM,DATE,DAS)) Q:DAS=""  D
 | 
|---|
| 46 |  ..... S COUNT(YEAR)=$G(COUNT(YEAR))+1
 | 
|---|
| 47 |  Q
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  ;========================================================
 | 
|---|
| 50 | CNTPL(FILENUM,COUNT) ;Get date counts for Problem List indexes where the
 | 
|---|
| 51 |  ;date is at subscript 7. Works for file numbers:
 | 
|---|
| 52 |  ;9000011
 | 
|---|
| 53 |  N DAS,DATE,DFN,IND,ITEM,PRIORITY,STATUS,TYPE,YEAR
 | 
|---|
| 54 |  I '$D(ZTQUEUED) W !,"Counting file number "_FILENUM
 | 
|---|
| 55 |  S IND=0
 | 
|---|
| 56 |  S DFN=""
 | 
|---|
| 57 |  F  S DFN=$O(^PXRMINDX(FILENUM,"PSPI",DFN)) Q:DFN=""  D
 | 
|---|
| 58 |  . S IND=IND+1
 | 
|---|
| 59 |  . I '$D(ZTQUEUED),(IND#10000=0) W "."
 | 
|---|
| 60 |  . S STATUS=""
 | 
|---|
| 61 |  . F  S STATUS=$O(^PXRMINDX(FILENUM,"PSPI",DFN,STATUS)) Q:STATUS=""  D
 | 
|---|
| 62 |  .. S PRIORITY=""
 | 
|---|
| 63 |  .. F  S PRIORITY=$O(^PXRMINDX(FILENUM,"PSPI",DFN,STATUS,PRIORITY)) Q:PRIORITY=""  D
 | 
|---|
| 64 |  ... S ITEM=""
 | 
|---|
| 65 |  ... F  S ITEM=$O(^PXRMINDX(FILENUM,"PSPI",DFN,STATUS,PRIORITY,ITEM)) Q:ITEM=""  D
 | 
|---|
| 66 |  .... S DATE=""
 | 
|---|
| 67 |  .... F  S DATE=$O(^PXRMINDX(FILENUM,"PSPI",DFN,STATUS,PRIORITY,ITEM,DATE)) Q:DATE=""  D
 | 
|---|
| 68 |  ..... S YEAR=$E(DATE,1,3)
 | 
|---|
| 69 |  ..... S DAS=""
 | 
|---|
| 70 |  ..... F  S DAS=$O(^PXRMINDX(FILENUM,"PSPI",DFN,STATUS,PRIORITY,ITEM,DATE,DAS)) Q:DAS=""  D
 | 
|---|
| 71 |  ...... S COUNT(YEAR)=$G(COUNT(YEAR))+1
 | 
|---|
| 72 |  Q
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 |  ;========================================================
 | 
|---|
| 75 | CNTPTF(FILENUM,COUNT) ;Get date counts for PTF indexes where the
 | 
|---|
| 76 |  ;date is at subscript 7. Works for file numbers:
 | 
|---|
| 77 |  ;45
 | 
|---|
| 78 |  N DAS,DATE,DFN,IND,ITEM,NODE,TYPE,YEAR
 | 
|---|
| 79 |  I '$D(ZTQUEUED) W !,"Counting file number "_FILENUM
 | 
|---|
| 80 |  S IND=0
 | 
|---|
| 81 |  F TYPE="ICD0","ICD9" D
 | 
|---|
| 82 |  . S DFN=""
 | 
|---|
| 83 |  . F  S DFN=$O(^PXRMINDX(FILENUM,TYPE,"PNI",DFN)) Q:DFN=""  D
 | 
|---|
| 84 |  .. S IND=IND+1
 | 
|---|
| 85 |  .. I '$D(ZTQUEUED),(IND#10000=0) W "."
 | 
|---|
| 86 |  .. S NODE=""
 | 
|---|
| 87 |  .. F  S NODE=$O(^PXRMINDX(FILENUM,TYPE,"PNI",DFN,NODE)) Q:NODE=""  D
 | 
|---|
| 88 |  ... S ITEM=""
 | 
|---|
| 89 |  ... F  S ITEM=$O(^PXRMINDX(FILENUM,TYPE,"PNI",DFN,NODE,ITEM)) Q:ITEM=""  D
 | 
|---|
| 90 |  .... S DATE=""
 | 
|---|
| 91 |  .... F  S DATE=$O(^PXRMINDX(FILENUM,TYPE,"PNI",DFN,NODE,ITEM,DATE)) Q:DATE=""  D
 | 
|---|
| 92 |  ..... S YEAR=$E(DATE,1,3)
 | 
|---|
| 93 |  ..... S DAS=""
 | 
|---|
| 94 |  ..... F  S DAS=$O(^PXRMINDX(FILENUM,TYPE,"PNI",DFN,NODE,ITEM,DATE,DAS)) Q:DAS=""  D
 | 
|---|
| 95 |  ...... S COUNT(YEAR)=$G(COUNT(YEAR))+1
 | 
|---|
| 96 |  Q
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 |  ;========================================================
 | 
|---|
| 99 | CNTSS(FILENUM,COUNT) ;Get date counts for indexes where the start date
 | 
|---|
| 100 |  ;is at subscript 5 and the stop date is at subscript 6.
 | 
|---|
| 101 |  ;Works for file numbers: 52, 55, 100
 | 
|---|
| 102 |  N DAS,DFN,IND,ITEM,START,STOP,YEAR
 | 
|---|
| 103 |  I '$D(ZTQUEUED) W !,"Counting file number "_FILENUM
 | 
|---|
| 104 |  S IND=0
 | 
|---|
| 105 |  S DFN=""
 | 
|---|
| 106 |  F  S DFN=$O(^PXRMINDX(FILENUM,"PI",DFN)) Q:DFN=""  D
 | 
|---|
| 107 |  . S IND=IND+1
 | 
|---|
| 108 |  . I '$D(ZTQUEUED),(IND#10000=0) W "."
 | 
|---|
| 109 |  . S ITEM=""
 | 
|---|
| 110 |  . F  S ITEM=$O(^PXRMINDX(FILENUM,"PI",DFN,ITEM)) Q:ITEM=""  D
 | 
|---|
| 111 |  .. S START=""
 | 
|---|
| 112 |  .. F  S START=$O(^PXRMINDX(FILENUM,"PI",DFN,ITEM,START)) Q:START=""  D
 | 
|---|
| 113 |  ... S YEAR=$E(START,1,3)
 | 
|---|
| 114 |  ... S STOP=""
 | 
|---|
| 115 |  ... F  S STOP=$O(^PXRMINDX(FILENUM,"PI",DFN,ITEM,START,STOP)) Q:STOP=""  D
 | 
|---|
| 116 |  .... S DAS=""
 | 
|---|
| 117 |  .... F  S DAS=$O(^PXRMINDX(FILENUM,"PI",DFN,ITEM,START,STOP,DAS)) Q:DAS=""  D
 | 
|---|
| 118 |  ..... S COUNT(YEAR)=$G(COUNT(YEAR))+1
 | 
|---|
| 119 |  Q
 | 
|---|
| 120 |  ;
 | 
|---|
| 121 |  ;========================================================
 | 
|---|
| 122 | COUNT ;Driver for making index counts.
 | 
|---|
| 123 |  N GBL,LIST,TASKIT
 | 
|---|
| 124 |  W !,"Which indexes do you want to count?"
 | 
|---|
| 125 |  D SEL^PXRMSXRM(.LIST,.GBL)
 | 
|---|
| 126 |  I LIST="" Q
 | 
|---|
| 127 |  ;See if this should be tasked.
 | 
|---|
| 128 |  S TASKIT=$$ASKTASK^PXRMSXRM
 | 
|---|
| 129 |  I TASKIT D
 | 
|---|
| 130 |  . W !,"Queue the Clinical Reminders Index count."
 | 
|---|
| 131 |  . D TASKIT(LIST,.GBL,.ROUTINE)
 | 
|---|
| 132 |  E  D RUNNOW(LIST,.GBL)
 | 
|---|
| 133 |  Q
 | 
|---|
| 134 |  ;
 | 
|---|
| 135 |  ;========================================================
 | 
|---|
| 136 | MESSAGE(FILENUM,COUNT,TOTAL,START,END) ;Build the MailMan message giving the
 | 
|---|
| 137 |  ;count breakdown.
 | 
|---|
| 138 |  N COFF,ML,NAME,NL,PERC,TEXT,YEAR,XMSUB
 | 
|---|
| 139 |  K ^TMP("PXRMXMZ",$J)
 | 
|---|
| 140 |  S ML=$$MAX^XLFMTH($L(TOTAL)+2,8)
 | 
|---|
| 141 |  S COFF=ML-5
 | 
|---|
| 142 |  S NAME=$$GET1^DID(FILENUM,"","","NAME")
 | 
|---|
| 143 |  S XMSUB="Yearly data distribution for global "_NAME
 | 
|---|
| 144 |  S ^TMP("PXRMXMZ",$J,1,0)="File name: "_NAME
 | 
|---|
| 145 |  S ^TMP("PXRMXMZ",$J,2,0)="Count finished at "_$$FMTE^XLFDT($$NOW^XLFDT,"5Z")
 | 
|---|
| 146 |  S ^TMP("PXRMXMZ",$J,3,0)=$$ETIME^PXRMSXRM(START,END)
 | 
|---|
| 147 |  S ^TMP("PXRMXMZ",$J,4,0)=" "
 | 
|---|
| 148 |  S ^TMP("PXRMXMZ",$J,5,0)="Year"_$$INSCHR^PXRMEXLC(COFF," ")_"Count"_$J("%",8)
 | 
|---|
| 149 |  S ^TMP("PXRMXMZ",$J,6,0)="----"_$$INSCHR^PXRMEXLC(COFF," ")_"-----"_$J("-----",10)
 | 
|---|
| 150 |  S NL=6,YEAR=0
 | 
|---|
| 151 |  F  S YEAR=$O(COUNT(YEAR)) Q:YEAR=""  D
 | 
|---|
| 152 |  . S PERC=100*COUNT(YEAR)/TOTAL
 | 
|---|
| 153 |  . S TEXT=YEAR_$J(COUNT(YEAR),ML,0)_$J(PERC,10,2)
 | 
|---|
| 154 |  . S NL=NL+1,^TMP("PXRMXMZ",$J,NL,0)=TEXT
 | 
|---|
| 155 |  S NL=NL+1,^TMP("PXRMXMZ",$J,NL,0)=" "
 | 
|---|
| 156 |  S TEXT="Total entries: "_TOTAL
 | 
|---|
| 157 |  S NL=NL+1,^TMP("PXRMXMZ",$J,NL,0)=TEXT
 | 
|---|
| 158 |  I TOTAL=0 D
 | 
|---|
| 159 |  . I '$D(^PXRMINDX(FILENUM)) S TEXT="The index for file "_NAME_" does not exist!"
 | 
|---|
| 160 |  . S NL=NL+1,^TMP("PXRMXMZ",$J,NL,0)=TEXT
 | 
|---|
| 161 |  I TOTAL>0,'$D(^PXRMINDX(FILENUM,"DATE BUILT")) D
 | 
|---|
| 162 |  . S TEXT="Warning, the index for file "_NAME_" may be incomplete or corrupted!"
 | 
|---|
| 163 |  . S NL=NL+1,^TMP("PXRMXMZ",$J,NL,0)=TEXT
 | 
|---|
| 164 |  D SEND^PXRMMSG(XMSUB)
 | 
|---|
| 165 |  K ^TMP("PXRMXMZ",$J)
 | 
|---|
| 166 |  Q
 | 
|---|
| 167 |  ;
 | 
|---|
| 168 |  ;===============================================================
 | 
|---|
| 169 | RUNNOW(LIST,GBL) ;Run the routines now.
 | 
|---|
| 170 |  N COUNT,END,FN,IND,LI,NUM,ROUTINE,RTN,START,TOTAL
 | 
|---|
| 171 |  S ROUTINE(45)="CNTPTF^PXRMINDC"
 | 
|---|
| 172 |  S ROUTINE(52)="CNTSS^PXRMINDC"
 | 
|---|
| 173 |  S ROUTINE(55)="CNTSS^PXRMINDC"
 | 
|---|
| 174 |  S ROUTINE(63)="CNT5^PXRMINDC"
 | 
|---|
| 175 |  S ROUTINE(70)="CNT5^PXRMINDC"
 | 
|---|
| 176 |  S ROUTINE(100)="CNTSS^PXRMINDC"
 | 
|---|
| 177 |  S ROUTINE(120.5)="CNT5^PXRMINDC"
 | 
|---|
| 178 |  S ROUTINE(601.2)="CNT5^PXRMINDC"
 | 
|---|
| 179 |  S ROUTINE(601.84)="CNT5^PXRMINDC"
 | 
|---|
| 180 |  S ROUTINE(9000011)="CNTPL^PXRMINDC"
 | 
|---|
| 181 |  S ROUTINE(9000010.07)="CNT6^PXRMINDC"
 | 
|---|
| 182 |  S ROUTINE(9000010.11)="CNT5^PXRMINDC"
 | 
|---|
| 183 |  S ROUTINE(9000010.12)="CNT5^PXRMINDC"
 | 
|---|
| 184 |  S ROUTINE(9000010.13)="CNT5^PXRMINDC"
 | 
|---|
| 185 |  S ROUTINE(9000010.16)="CNT5^PXRMINDC"
 | 
|---|
| 186 |  S ROUTINE(9000010.18)="CNT6^PXRMINDC"
 | 
|---|
| 187 |  S ROUTINE(9000010.23)="CNT5^PXRMINDC"
 | 
|---|
| 188 |  S NUM=$L(LIST,",")-1
 | 
|---|
| 189 |  F IND=1:1:NUM D
 | 
|---|
| 190 |  . S LI=$P(LIST,",",IND)
 | 
|---|
| 191 |  . S FN=GBL(LI)
 | 
|---|
| 192 |  . S RTN=ROUTINE(FN)
 | 
|---|
| 193 |  . S RTN=RTN_"("_FN_",.COUNT)"
 | 
|---|
| 194 |  . S START=$H
 | 
|---|
| 195 |  . K COUNT
 | 
|---|
| 196 |  . I $D(^PXRMINDX(FN)) D @RTN
 | 
|---|
| 197 |  . S END=$H
 | 
|---|
| 198 |  . D TOTAL(.COUNT,.TOTAL)
 | 
|---|
| 199 |  . D MESSAGE(FN,.COUNT,TOTAL,START,END)
 | 
|---|
| 200 |  Q
 | 
|---|
| 201 |  ;
 | 
|---|
| 202 |  ;===============================================================
 | 
|---|
| 203 | TASKIT(LIST,GBL,ROUTINE) ;Count the indexes as a tasked job.
 | 
|---|
| 204 |  N DIR,DIROUT,DIRUT,DTOUT,DUOUT,MINDT,SDTIME,X,Y
 | 
|---|
| 205 |  S MINDT=$$NOW^XLFDT
 | 
|---|
| 206 |  S DIR("A",1)="Enter the date and time you want the job to start."
 | 
|---|
| 207 |  S DIR("A",2)="It must be after "_$$FMTE^XLFDT(MINDT,"5Z")
 | 
|---|
| 208 |  S DIR("A")="Start the task at: "
 | 
|---|
| 209 |  S DIR(0)="DAU"_U_MINDT_"::RSX"
 | 
|---|
| 210 |  D ^DIR
 | 
|---|
| 211 |  I $D(DIROUT)!$D(DIRUT) Q
 | 
|---|
| 212 |  I $D(DTOUT)!$D(DUOUT) Q
 | 
|---|
| 213 |  S SDTIME=Y
 | 
|---|
| 214 |  K DIR
 | 
|---|
| 215 |  ;Put the task into the queue.
 | 
|---|
| 216 |  K ZTSAVE
 | 
|---|
| 217 |  S ZTSAVE("LIST")=""
 | 
|---|
| 218 |  S ZTSAVE("GBL(")=""
 | 
|---|
| 219 |  S ZTRTN="TASKJOB^PXRMINDC"
 | 
|---|
| 220 |  S ZTDESC="Clinical Reminders Index count"
 | 
|---|
| 221 |  S ZTDTH=SDTIME
 | 
|---|
| 222 |  S ZTIO=""
 | 
|---|
| 223 |  D ^%ZTLOAD
 | 
|---|
| 224 |  W !,"Task number ",ZTSK," queued."
 | 
|---|
| 225 |  Q
 | 
|---|
| 226 |  ;
 | 
|---|
| 227 |  ;===============================================================
 | 
|---|
| 228 | TASKJOB ;Execute as tasked job. LIST and GBL come through ZTSAVE.
 | 
|---|
| 229 |  N IND,LI,NUM
 | 
|---|
| 230 |  S ZTREQ="@"
 | 
|---|
| 231 |  S ZTSTOP=0
 | 
|---|
| 232 |  S NUM=$L(LIST,",")-1
 | 
|---|
| 233 |  F IND=1:1:NUM D
 | 
|---|
| 234 |  .;Check to see if the task has had a stop request
 | 
|---|
| 235 |  . I $$S^%ZTLOAD S ZTSTOP=1,IND=NUM Q
 | 
|---|
| 236 |  . S LI=$P(LIST,",",IND)_","
 | 
|---|
| 237 |  . D RUNNOW^PXRMINDC(LI,.GBL)
 | 
|---|
| 238 |  Q
 | 
|---|
| 239 |  ;
 | 
|---|
| 240 |  ;========================================================
 | 
|---|
| 241 | TOTAL(COUNT,TOTAL) ;Convert the FileMan years in COUNT to regular
 | 
|---|
| 242 |  ;years get the total number of entries in count.
 | 
|---|
| 243 |  N TC,YEAR
 | 
|---|
| 244 |  S (TOTAL,YEAR)=0
 | 
|---|
| 245 |  F  S YEAR=$O(COUNT(YEAR)) Q:YEAR=""  D
 | 
|---|
| 246 |  . S TOTAL=TOTAL+COUNT(YEAR)
 | 
|---|
| 247 |  . S TC(YEAR+1700)=COUNT(YEAR)
 | 
|---|
| 248 |  K COUNT
 | 
|---|
| 249 |  M COUNT=TC
 | 
|---|
| 250 |  Q
 | 
|---|
| 251 |  ;
 | 
|---|