| 1 | RGMTUT01 ;BIR/CML-MPI/PD Compile and Correct Data Validation Data for Local Sites ;08/12/02
 | 
|---|
| 2 |  ;;1.0;CLINICAL INFO RESOURCE NETWORK;**20,31,41**;30 Apr 99
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;Reference to $$UPDATE^MPIFAPI supported by IA #2706
 | 
|---|
| 5 |  ;Reference to VAFCTFU supported by IA #2988
 | 
|---|
| 6 |  ;Reference to ^DPT( supported by IA #2070
 | 
|---|
| 7 |  ;Reference to ^DGCN(391.91,"APAT" supported by IA #2911
 | 
|---|
| 8 |  ;Reference to ^%ZTSCH("TASK" supported by IA #3520
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 | EN1 ;Use this entry point to get only display diagnostics for development team
 | 
|---|
| 11 |  ;BYPASS=0 means prohibit times are enforced
 | 
|---|
| 12 |  ;SITEOPT=0 means CMOR, TF, and diagnostics are included in report
 | 
|---|
| 13 |  ;SITEOPT=1 means diagnostics are omitted from report (this is the report for the site)
 | 
|---|
| 14 |  ;SITEOPT=2 means only diagnostics are in report
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 |  S BYPASS=0,SITEOPT=2 G BEGIN
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 | EN2 ;Use this entry point from remote query
 | 
|---|
| 19 |  S BYPASS=1,SITEOPT=0 G BEGIN  ; **41
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 | EN3 ;Use this entry point for site menu option [RG NATIONAL ICN STATISTICS] to omit
 | 
|---|
| 22 |  ;diagnostic section from report
 | 
|---|
| 23 |  S BYPASS=0,SITEOPT=1 G BEGIN
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 | BY ;use this call to bypass check to prohibit primetime run
 | 
|---|
| 26 |  S BYPASS=1,SITEOPT=2
 | 
|---|
| 27 |  ;
 | 
|---|
| 28 | BEGIN ;
 | 
|---|
| 29 |  S PRT=0,QFLG=0 K RGROU
 | 
|---|
| 30 |  I $D(^XTMP("RGMT","UT01","@@","COMPILE STARTED"))&('$D(^XTMP("RGMT","UT01","@@","COMPILE STOPPED"))) D  I QFLG G QUIT
 | 
|---|
| 31 |  .;check running tasks to see if compile is running
 | 
|---|
| 32 |  .S TASK=0 F  S TASK=$O(^%ZTSCH("TASK",TASK)) Q:'TASK  D
 | 
|---|
| 33 |  ..S RGROU=$P(^%ZTSCH("TASK",TASK),"^",2)
 | 
|---|
| 34 |  ..I RGROU="RGMTSTAT" D
 | 
|---|
| 35 |  ...I TASK=$G(ZTSK) Q
 | 
|---|
| 36 |  ...S QFLG=1
 | 
|---|
| 37 |  ...I '$D(RGHLMQ) W !!,"The Stat Report is currently being compiled."
 | 
|---|
| 38 |  .I 'QFLG K ^XTMP("RGMT","UT01"),^XTMP("RGMT","REINDDT")
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 |  I $D(RGHLMQ) G STARTQ
 | 
|---|
| 41 |  W !!,"This option provides the following statistics:"
 | 
|---|
| 42 |  W !?3,"1.  Total patients assigned to each unique COORDINATING MASTER OF"
 | 
|---|
| 43 |  W !?3,"    RECORD (CMOR)."
 | 
|---|
| 44 |  W !?3,"2.  Total patients shared with each unique entry in the TREATING"
 | 
|---|
| 45 |  W !?3,"    FACILITY LIST (#391.91) file."
 | 
|---|
| 46 |  W !?3,"3.  Totals for national ICNs, local ICNs, and patients with no ICN."
 | 
|---|
| 47 |  I SITEOPT=1 G START
 | 
|---|
| 48 |  W !?3,"4.  Total CMOR assignments missing a matching Treating Facility."
 | 
|---|
| 49 |  W !?3,"5.  Total patients with NATIONAL ICN and missing local Treating Facility."
 | 
|---|
| 50 |  W !?3,"6.  Total number of patients with duplicate entries in the TREATING"
 | 
|---|
| 51 |  W !?3,"    FACILITY LIST file (#391.91)."
 | 
|---|
| 52 |  W !?3,"7.  Patient File xref problems for ""AICN"", ""AICNL"", and ""SSN""."
 | 
|---|
| 53 |  W !?3,"8.  Total number of patients with a no ICN but have a CMOR assignment."
 | 
|---|
| 54 |  W !?3,"9.  Total number of patients with a no ICN but have TF assignments."
 | 
|---|
| 55 |  W !?3,"10. Total number of patients with a local ICN but have remote TFs."
 | 
|---|
| 56 |  ;
 | 
|---|
| 57 | START ;
 | 
|---|
| 58 |  S QFLG=0
 | 
|---|
| 59 |  I '$D(^XTMP("RGMT","UT01","@@","COMPILE STARTED")) W !!,"No data is currently available." I SITEOPT=1 G QUIT
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 |  W !!,"===> NOTE <==="
 | 
|---|
| 62 |  I SITEOPT=1 D
 | 
|---|
| 63 |  .W !,"This data is compiled by a remote process initiated from the MPI in Austin"
 | 
|---|
| 64 |  .W !,"on a regular basis for reporting purposes.  It is not compiled by the local"
 | 
|---|
| 65 |  .W !,"site, however, the local site can view the last report that was compiled.",!
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 |  I $D(^XTMP("RGMT","UT01","@@","COMPILE STOPPED")) D  G:QFLG QUIT I PRT D ^RGMTUT03 G QUIT
 | 
|---|
| 68 |  .S PRT=0
 | 
|---|
| 69 |  .S LAST=^XTMP("RGMT","UT01","@@","COMPILE STOPPED")
 | 
|---|
| 70 |  .S LAST=$$FMTE^XLFDT(LAST)
 | 
|---|
| 71 |  .W !,"This data was last compiled on ",LAST,"."
 | 
|---|
| 72 |  .I SITEOPT=1 S PRT=1 Q
 | 
|---|
| 73 |  .S DIR(0)="Y",DIR("B")="YES",DIR("A")="Do you just want a reprint of that data"
 | 
|---|
| 74 |  .S DIR("?",1)="Enter:"
 | 
|---|
| 75 |  .S DIR("?",2)=" ""YES"" or <RET> to reprint current data and NOT recompile."
 | 
|---|
| 76 |  .S DIR("?",3)=" ""NO"" to recompile new data (this may take several hours)."
 | 
|---|
| 77 |  .S DIR("?")=" ""^"" to HALT."
 | 
|---|
| 78 |  .D ^DIR K DIR
 | 
|---|
| 79 |  .I Y="^" S QFLG=1 Q
 | 
|---|
| 80 |  .I +Y=1 S PRT=1 Q
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 | STARTQ ;pick up here for queued job
 | 
|---|
| 83 |  D NOW^%DTC
 | 
|---|
| 84 |  ;
 | 
|---|
| 85 |  ;check to be sure stat report not being run during prime time
 | 
|---|
| 86 |  S TODAY=$$DOW^XLFDT($$NOW^XLFDT()) I TODAY="Saturday"!(TODAY="Sunday") S BYPASS=1
 | 
|---|
| 87 |  S QUIT=0
 | 
|---|
| 88 |  I 'BYPASS D  I QUIT G QUIT
 | 
|---|
| 89 |  .S CHKTIME=$E($P(%,".",2),1,4)
 | 
|---|
| 90 |  .I CHKTIME>"0700"&(CHKTIME<"1700") S QUIT=1 I '$D(RGHLMQ) D
 | 
|---|
| 91 |  ..W !!,"<< STAT report cannot be compiled between 7:00am and 5:00pm! >>"
 | 
|---|
| 92 |  ;
 | 
|---|
| 93 |  I '$D(RGHLMQ) W !!,"Recompiling data..."
 | 
|---|
| 94 |  ;
 | 
|---|
| 95 |  S ^XTMP("RGMT",0)=$$FMADD^XLFDT(DT,30)_"^"_$$NOW^XLFDT_"^MPI/PD Maintenance Data"
 | 
|---|
| 96 |  K ^XTMP("RGMT","UT01"),^XTMP("RGMT","REINDDT")  ; **41
 | 
|---|
| 97 |  S ^XTMP("RGMT","UT01","@@","COMPILE STARTED")=%
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 |  D REIND^RGMTUT02
 | 
|---|
| 100 |  D CMOR,TF,TFCHK
 | 
|---|
| 101 |  ;
 | 
|---|
| 102 |  I 'PRT D
 | 
|---|
| 103 |  .D NOW^%DTC
 | 
|---|
| 104 |  .S ^XTMP("RGMT","UT01","@@","COMPILE STOPPED")=%
 | 
|---|
| 105 |  D ^RGMTUT03
 | 
|---|
| 106 |  ;
 | 
|---|
| 107 | QUIT ;
 | 
|---|
| 108 |  K %,BYPASS,CHKTIME,LAST,LOC,PRT,QFLG,QUIT,SITEOPT,TODAY,Y,RGROU,TASK
 | 
|---|
| 109 |  Q
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 | CMOR ; Check "ACMOR" xref for:
 | 
|---|
| 112 |  ; - existence of a TF entry for the CMOR in the TF file #391.91
 | 
|---|
| 113 |  ; - existence of a TF for the local site (if not the CMOR)
 | 
|---|
| 114 |  ; - CMOR totals by site
 | 
|---|
| 115 |  ;
 | 
|---|
| 116 |  I '$D(RGHLMQ) D
 | 
|---|
| 117 |  .W !!,"Check #1 for:"
 | 
|---|
| 118 |  .W !,"- Patients missing Treating Facility entries for their CMOR."
 | 
|---|
| 119 |  .W !,"- Patients missing Treating Facility entries for their local site."
 | 
|---|
| 120 |  .W !,"- Unique CMOR totals."
 | 
|---|
| 121 |  ;
 | 
|---|
| 122 |  K ^XTMP("RGMT","UT01","CMOR")
 | 
|---|
| 123 |  K ^XTMP("RGMT","UT01","TOT CMOR MISS TF")
 | 
|---|
| 124 |  K ^XTMP("RGMT","UT01","TOT LOC SITE MISS TF")
 | 
|---|
| 125 |  K ^XTMP("RGMT","UT01","CMOR WITH NO ICN")
 | 
|---|
| 126 |  S (CNT,NOICN,TOTMISSC,TOTMISSL)=0
 | 
|---|
| 127 |  S SITESTA=$P($$SITE^VASITE(),"^",3),SITEDA=$P($$SITE^VASITE(),"^")
 | 
|---|
| 128 |  ;
 | 
|---|
| 129 |  S CMOR=0 F  S CMOR=$O(^DPT("ACMOR",CMOR)) Q:'CMOR  D
 | 
|---|
| 130 |  .I '$D(CMOR(CMOR)) S CMOR(CMOR)=0
 | 
|---|
| 131 |  .S DFN=0 F  S DFN=$O(^DPT("ACMOR",CMOR,DFN)) Q:'DFN  D
 | 
|---|
| 132 |  ..S CNT=CNT+1 I '$D(RGHLMQ) W:'(CNT#10000) "."
 | 
|---|
| 133 |  ..S ICN=$P($G(^DPT(DFN,"MPI")),"^")
 | 
|---|
| 134 |  ..I $E(ICN,1,3)=SITESTA Q
 | 
|---|
| 135 |  ..I ICN="" D  Q
 | 
|---|
| 136 |  ...S NOICN=NOICN+1
 | 
|---|
| 137 |  ...I '$D(RGHLMQ) W !?3,"DFN #",DFN," has no ICN and a CMOR of ",$P($$NS^XUAF4(CMOR),"^")
 | 
|---|
| 138 |  ...S ^XTMP("RGMT","UT01","CMOR WITH NO ICN",DFN)=""
 | 
|---|
| 139 |  ...S LOC(991.03)="@" W $$UPDATE^MPIFAPI(DFN,"LOC")
 | 
|---|
| 140 |  ..S CMOR(CMOR)=CMOR(CMOR)+1
 | 
|---|
| 141 |  ..I '$D(^DGCN(391.91,"APAT",DFN,CMOR)) D
 | 
|---|
| 142 |  ...S TOTMISSC=TOTMISSC+1
 | 
|---|
| 143 |  ...S SSN=$P($G(^DPT(DFN,0)),"^",9)
 | 
|---|
| 144 |  ...S NAME=$P($G(^DPT(DFN,0)),"^")
 | 
|---|
| 145 |  ...S ^XTMP("RGMT","UT01","CMOR","ZZMISSC",CMOR,DFN)="DFN/"_DFN_"^NAME/"_NAME_"^SSN/"_SSN_"^ICN/"_ICN
 | 
|---|
| 146 |  ...D FILE^VAFCTFU(DFN,CMOR,1)
 | 
|---|
| 147 |  ..I SITEDA'=CMOR,'$D(^DGCN(391.91,"APAT",DFN,SITEDA)) D
 | 
|---|
| 148 |  ...S TOTMISSL=TOTMISSL+1
 | 
|---|
| 149 |  ...S SSN=$P($G(^DPT(DFN,0)),"^",9)
 | 
|---|
| 150 |  ...S NAME=$P($G(^DPT(DFN,0)),"^")
 | 
|---|
| 151 |  ...S ^XTMP("RGMT","UT01","CMOR","ZZMISSL",CMOR,DFN)="DFN/"_DFN_"^NAME/"_NAME_"^SSN/"_SSN_"^ICN/"_ICN
 | 
|---|
| 152 |  ...D FILE^VAFCTFU(DFN,SITEDA,1)
 | 
|---|
| 153 |  ;
 | 
|---|
| 154 |  S CMOR=0 F  S CMOR=$O(CMOR(CMOR)) Q:'CMOR  D
 | 
|---|
| 155 |  .S CMORNM=$P($$NS^XUAF4(CMOR),"^"),CMORSTA=$P($$NS^XUAF4(CMOR),"^",2) Q:CMORSTA=""
 | 
|---|
| 156 |  .S ^XTMP("RGMT","UT01","CMOR",CMORNM,CMORSTA)=CMOR(CMOR)
 | 
|---|
| 157 |  S ^XTMP("RGMT","UT01","TOT CMOR MISS TF")=TOTMISSC
 | 
|---|
| 158 |  S ^XTMP("RGMT","UT01","TOT LOC SITE MISS TF")=TOTMISSL
 | 
|---|
| 159 |  S ^XTMP("RGMT","UT01","CMOR WITH NO ICN")=NOICN
 | 
|---|
| 160 |  I '$D(RGHLMQ) W !,"Check #1 - Complete"
 | 
|---|
| 161 |  K CMOR,CMORNM,CMORSTA,CNT,DFN,ICN,NAME,NOICN,SITEDA,SITESTA,SSN,TOTMISSC,TOTMISSL
 | 
|---|
| 162 |  Q
 | 
|---|
| 163 |  ;
 | 
|---|
| 164 | TF ; Get totals for unique sites in the TF file (#391.91)
 | 
|---|
| 165 |  I '$D(RGHLMQ) D
 | 
|---|
| 166 |  .W !!,"Check #2 for:"
 | 
|---|
| 167 |  .W !,"- Unique Treating Facility totals."
 | 
|---|
| 168 |  K ^XTMP("RGMT","UT01","TF"),TFCNT S CNT=0
 | 
|---|
| 169 |  S SITE=$P($$SITE^VASITE(),"^",3)
 | 
|---|
| 170 |  S TF=0 F  S TF=$O(^DGCN(391.91,"AINST",TF)) Q:'TF  D
 | 
|---|
| 171 |  .S CNT=CNT+1 I '$D(RGHLMQ) W:'(CNT#10000) "."
 | 
|---|
| 172 |  .I '$D(TFCNT(TF)) S TFCNT(TF)=0
 | 
|---|
| 173 |  .S TFIEN=0 F  S TFIEN=$O(^DGCN(391.91,"AINST",TF,TFIEN)) Q:'TFIEN  S TFCNT(TF)=TFCNT(TF)+1
 | 
|---|
| 174 |  S TF=0 F  S TF=$O(TFCNT(TF)) Q:'TF  D
 | 
|---|
| 175 |  .S TFNM=$P($$NS^XUAF4(TF),"^"),TFSTA=$P($$NS^XUAF4(TF),"^",2) Q:TFSTA=""
 | 
|---|
| 176 |  .S ^XTMP("RGMT","UT01","TF",TFNM,TFSTA)=TFCNT(TF)
 | 
|---|
| 177 |  I '$D(RGHLMQ) W !,"Check #2 - Complete"
 | 
|---|
| 178 |  K CNT,SITE,TF,TFCNT,TFIEN,TFNM,TFSTA
 | 
|---|
| 179 |  Q
 | 
|---|
| 180 |  ;
 | 
|---|
| 181 | TFCHK ; Get totals for duplicates in TF file (#391.91)
 | 
|---|
| 182 |  ;NOICN=# of patients found with remote TFs and no ICN
 | 
|---|
| 183 |  ;LOCICN=# of patients found with remote TFs and a local ICN
 | 
|---|
| 184 |  ;
 | 
|---|
| 185 |  I '$D(RGHLMQ) D
 | 
|---|
| 186 |  .W !!,"Check #3 for:"
 | 
|---|
| 187 |  .W !,"- Duplicate Treating Facility assignments."
 | 
|---|
| 188 |  .W !,"- Patients with Treating Facilities and no ICN."
 | 
|---|
| 189 |  .W !,"- Patients remote treating Facilities and Local ICN."
 | 
|---|
| 190 |  ;
 | 
|---|
| 191 |  K ^XTMP("RGMT","UT01","TOT TFDUP"),^XTMP("RGMT","UT01","TOT NO ICN W/TF"),^XTMP("RGMT","UT01","TOT LOC ICN W/REMOTE TF")
 | 
|---|
| 192 |  S (PTCNT,DUPCNT,NOICN,LOCICN)=0
 | 
|---|
| 193 |  S SITESTA=$P($$SITE^VASITE(),"^",3),SITEDA=$P($$SITE^VASITE(),"^")
 | 
|---|
| 194 |  S DFN=0 F  S DFN=$O(^DGCN(391.91,"APAT",DFN)) Q:'DFN  D
 | 
|---|
| 195 |  .S PTCNT=PTCNT+1 I '$D(RGHLMQ) W:'(PTCNT#10000) "."
 | 
|---|
| 196 |  .S TF=0 F  S TF=$O(^DGCN(391.91,"APAT",DFN,TF)) Q:'TF  D
 | 
|---|
| 197 |  ..S MPI0=$G(^DPT(DFN,"MPI")),ICN=$P(MPI0,"^")
 | 
|---|
| 198 |  ..;delete all TFs for patients with no ICN
 | 
|---|
| 199 |  ..I ICN="" D  Q
 | 
|---|
| 200 |  ...S NOICN=NOICN+1
 | 
|---|
| 201 |  ...S TFIEN=0 F  S TFIEN=$O(^DGCN(391.91,"APAT",DFN,TF,TFIEN)) Q:'TFIEN  D
 | 
|---|
| 202 |  ....S ^XTMP("RGMT","UT01","NO ICN WITH REMOTE OR LOCAL TF",DFN,TFIEN)=""
 | 
|---|
| 203 |  ....D DELETE^VAFCTFU(TFIEN)
 | 
|---|
| 204 |  ..;delete all remote TFs for patients with local ICNs
 | 
|---|
| 205 |  ..I $E(ICN,1,3)=SITESTA,TF'=SITEDA D  Q
 | 
|---|
| 206 |  ...S TFIEN=0 F  S TFIEN=$O(^DGCN(391.91,"APAT",DFN,TF,TFIEN)) Q:'TFIEN  D
 | 
|---|
| 207 |  ....S LOCICN=LOCICN+1
 | 
|---|
| 208 |  ....S ^XTMP("RGMT","UT01","LOCAL ICN WITH REMOTE TF",DFN,TFIEN)=""
 | 
|---|
| 209 |  ....D DELETE^VAFCTFU(TFIEN)
 | 
|---|
| 210 |  ..;look for TF dups
 | 
|---|
| 211 |  ..S (TFCNT,TFIEN)=0 F  S TFIEN=$O(^DGCN(391.91,"APAT",DFN,TF,TFIEN)) Q:'TFIEN  D
 | 
|---|
| 212 |  ...S TFCNT=TFCNT+1 I TFCNT>1 D
 | 
|---|
| 213 |  ....S DUPCNT=DUPCNT+1
 | 
|---|
| 214 |  ....S SSN=$P($G(^DPT(DFN,0)),"^",9)
 | 
|---|
| 215 |  ....S NM=$P($G(^(0)),"^")
 | 
|---|
| 216 |  ....S ^XTMP("RGMT","UT01","TFDUP",DFN,TFIEN)=TF_"^"_NM_"^"_SSN
 | 
|---|
| 217 |  ....D DELETE^VAFCTFU(TFIEN)
 | 
|---|
| 218 |  ;
 | 
|---|
| 219 |  S ^XTMP("RGMT","UT01","TOT TFDUP")=DUPCNT
 | 
|---|
| 220 |  S ^XTMP("RGMT","UT01","TOT NO ICN W/TF")=NOICN
 | 
|---|
| 221 |  S ^XTMP("RGMT","UT01","TOT LOC ICN W/REMOTE TF")=LOCICN
 | 
|---|
| 222 |  I '$D(RGHLMQ) W !,"Check #3 - Complete"
 | 
|---|
| 223 |  K DFN,DUPCNT,ICN,LOCICN,MPI0,NM,NOICN,PTCNT,SITEDA,SITESTA,SSN,TF,TFCNT,TFIEN
 | 
|---|
| 224 |  Q
 | 
|---|