| 1 | ECRPCLS ;ALB/JAP - Event Capture Invalid Provider Report ; 13 Aug 97
 | 
|---|
| 2 |  ;;2.0; EVENT CAPTURE ;**5,47**;8 May 96
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | EN ;entry point from menu option
 | 
|---|
| 5 |  W !
 | 
|---|
| 6 |  D RANGE
 | 
|---|
| 7 |  I '$G(ECLOOP)!'$G(ECBEGIN)!'$G(ECEND) G EXIT
 | 
|---|
| 8 |  W !
 | 
|---|
| 9 |  D SORT
 | 
|---|
| 10 |  I $G(DIRUT) G EXIT
 | 
|---|
| 11 |  I "PR"'[$G(ECSORT) G EXIT
 | 
|---|
| 12 |  K DIR,DIRUT,DUOUT
 | 
|---|
| 13 |  W !
 | 
|---|
| 14 |  D DEVICE
 | 
|---|
| 15 |  I POP G EXIT
 | 
|---|
| 16 |  I $G(ZTSK) G EXIT
 | 
|---|
| 17 |  I $G(IO("Q")),'$G(ZTSK) G EXIT
 | 
|---|
| 18 |  D START
 | 
|---|
| 19 |  D HOME^%ZIS
 | 
|---|
| 20 |  G EXIT
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 | START ;queued entry point or continuation
 | 
|---|
| 23 |  D PROCESS
 | 
|---|
| 24 |  U IO D PRINT
 | 
|---|
| 25 |  I $D(ECGUI) D EXIT Q
 | 
|---|
| 26 |  I IO'=IO(0) D ^%ZISC
 | 
|---|
| 27 |  I $D(ZTQUEUED) S ZTREQ="@" D EXIT
 | 
|---|
| 28 |  Q
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 | RANGE ;get any date range between T and T-365
 | 
|---|
| 31 |  N X1,X2,ECSTDT,ECENDDT
 | 
|---|
| 32 |  W !,?5,"Enter a Begin Date and End Date for this Event Capture "
 | 
|---|
| 33 |  W !,?5,"provider report -- both dates must be within the past "
 | 
|---|
| 34 |  W !,?5,"365 days.",!
 | 
|---|
| 35 |  S (ECBEGIN,ECEND)=0
 | 
|---|
| 36 |  F  D  Q:ECBEGIN>0  Q:'$G(ECLOOP)
 | 
|---|
| 37 |  .S ECLOOP=$$STDT^ECRUTL() I 'ECLOOP Q
 | 
|---|
| 38 |  .S ECBEGIN=ECSTDT
 | 
|---|
| 39 |  .S X1=DT,X2=ECBEGIN D ^%DTC I X>365 D
 | 
|---|
| 40 |  ..W !!,?15,"The Begin Date for this report may not be"
 | 
|---|
| 41 |  ..W !,?15,"more than 365 days ago.  Try again...",!
 | 
|---|
| 42 |  ..S ECBEGIN=0
 | 
|---|
| 43 |  Q:'$G(ECLOOP)!'$G(ECBEGIN)
 | 
|---|
| 44 |  F  D  Q:ECEND>0  Q:'$G(ECLOOP)
 | 
|---|
| 45 |  .S ECLOOP=$$ENDDT^ECRUTL(ECSTDT) I 'ECLOOP Q
 | 
|---|
| 46 |  .S ECEND=ECENDDT
 | 
|---|
| 47 |  .I ECEND>(DT+1) D
 | 
|---|
| 48 |  ..W !!,?15,"The End Date for this report may not be"
 | 
|---|
| 49 |  ..W !,?15,"a future date.  Try again...",!
 | 
|---|
| 50 |  ..S ECEND=0
 | 
|---|
| 51 |  Q 
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 | SORT ;ask user if report should be alpha by patient (P) or
 | 
|---|
| 54 |  ;                             alpha by provider (R)
 | 
|---|
| 55 |  K DIR
 | 
|---|
| 56 |  S DIR(0)="SAXB^P:PATIENT;R:PROVIDER"
 | 
|---|
| 57 |  S DIR("?")="Enter an uppercase 'P' or 'R'."
 | 
|---|
| 58 |  S DIR("A")="Select sorting by Patient or pRovider (P/R): "
 | 
|---|
| 59 |  S DIR("A",1)=" "
 | 
|---|
| 60 |  S DIR("A",2)="If you want the report to show Patient name in the 1st column,"
 | 
|---|
| 61 |  S DIR("A",3)="enter a 'P'.  The listing will be alphabetical by Patient name."
 | 
|---|
| 62 |  S DIR("A",4)=" "
 | 
|---|
| 63 |  S DIR("A",5)="If you want the report to show Provider name in the 1st column,"
 | 
|---|
| 64 |  S DIR("A",6)="enter an 'R'.  The listing will be alphabetical by Provider name."
 | 
|---|
| 65 |  S DIR("A",7)=" "
 | 
|---|
| 66 |  D ^DIR
 | 
|---|
| 67 |  Q:$G(DIRUT)
 | 
|---|
| 68 |  S ECSORT=Y
 | 
|---|
| 69 |  Q
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 | DEVICE ;get device and queue 
 | 
|---|
| 72 |  K IOP S %ZIS="QM" D ^%ZIS
 | 
|---|
| 73 |  I POP W !!,"No device selected.  Exiting...",!! S DIR(0)="E" W ! D ^DIR K DIR Q
 | 
|---|
| 74 |  I $D(IO("Q")) D
 | 
|---|
| 75 |  .S ZTRTN="START^ECRPCLS",ZTDESC="EC Invalid Provider Report"
 | 
|---|
| 76 |  .S ZTSAVE("ECBEGIN")="",ZTSAVE("ECEND")="",ZTSAVE("ECSORT")=""
 | 
|---|
| 77 |  .D ^%ZTLOAD
 | 
|---|
| 78 |  .I '$G(ZTSK) W !,"Report canceled..." S DIR(0)="E" W ! D ^DIR K DIR Q
 | 
|---|
| 79 |  .W !,"Report queued as Task #: ",ZTSK S DIR(0)="E" W ! D ^DIR K DIR
 | 
|---|
| 80 |  Q
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 | PROCESS ;process the "AC" x-ref in file #721
 | 
|---|
| 83 |  ;^ECH("AC",date,file#721 ien)=""
 | 
|---|
| 84 |  ;$ORDER from begindate to enddate
 | 
|---|
| 85 |  ;use $$GET^XUA4A72(provider ien,date)
 | 
|---|
| 86 |  ;if return is >0 then get next x-ref entry
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 |  N ECD,ECDATA,ECDATE,ECDDT,ECDT,ECERR,ECIEN,ECPIEN,ECPRDT,ECPRIEN,ECPRVN,ECPT,ECPTN,ECS,ECSSN,ECT,ECU,ECU2,ECU3
 | 
|---|
| 89 |  K ^TMP("ECRPCLS",$J) S ECDT=ECBEGIN
 | 
|---|
| 90 |  F  S ECDT=$O(^ECH("AC",ECDT)) Q:ECDT>ECEND  Q:ECDT=""  D
 | 
|---|
| 91 |  .S ECIEN=""
 | 
|---|
| 92 |  .F  S ECIEN=$O(^ECH("AC",ECDT,ECIEN)) Q:ECIEN=""  D
 | 
|---|
| 93 |  ..S ECDATA=$G(^ECH(ECIEN,0)) I '+ECDATA Q  ;file problem
 | 
|---|
| 94 |  ..S ECPRDT=$P(ECDT,".",1),ECDDT=$P(ECDATA,"^",3) I ECDDT'=ECDT S ECPRDT=$P(ECDDT,".",1) ;there's a problem in the x-ref
 | 
|---|
| 95 |  ..I ECPRDT<ECBEGIN!(ECPRDT>ECEND) Q
 | 
|---|
| 96 |  ..S ECU=$P(ECDATA,"^",11),ECU2=$P(ECDATA,"^",15),ECU3=$P(ECDATA,"^",17)
 | 
|---|
| 97 |  ..F ECPIEN=ECU,ECU2,ECU3 D
 | 
|---|
| 98 |  ...Q:'+ECPIEN
 | 
|---|
| 99 |  ...S ECERR=$$GET^XUA4A72(ECPIEN,ECPRDT) Q:+ECERR>0
 | 
|---|
| 100 |  ...S ECD=$P(ECDDT,".",1),ECT=$P(ECDDT,".",2)
 | 
|---|
| 101 |  ...S ECDATE=$E(ECD,4,5)_"/"_$E(ECD,6,7)_"/"_$E(ECD,2,3) I +ECT S ECT=$$LJ^XLFSTR(ECT,4,0),ECDATE=ECDATE_" "_$E(ECT,1,2)_":"_$E(ECT,3,4)
 | 
|---|
| 102 |  ...S ECPT=$P(ECDATA,"^",2),ECPTN=$P($G(^DPT(ECPT,0)),"^",1) Q:ECPTN=""
 | 
|---|
| 103 |  ...S ECS=$P(^(0),"^",9),ECS=$E(ECS,1,9),ECSSN=$E(ECS,6,9)
 | 
|---|
| 104 |  ...S ECPRVN=$P($G(^VA(200,ECPIEN,0)),"^",1) Q:ECPRVN=""
 | 
|---|
| 105 |  ...S ECPRIEN="("_ECPIEN_")",ECPRIEN=$$RJ^XLFSTR(ECPRIEN,10," ")
 | 
|---|
| 106 |  ...;if sort by patient then patient name is 3rd subscript
 | 
|---|
| 107 |  ...I ECSORT="P" S ^TMP("ECRPCLS",$J,ECPTN,ECPRVN,ECIEN)=ECERR_"^"_ECPRIEN_"^"_ECSSN_"^"_ECDATE
 | 
|---|
| 108 |  ...;if sort by provider then provider name is 3rd subscript
 | 
|---|
| 109 |  ...I ECSORT="R" S ^TMP("ECRPCLS",$J,ECPRVN,ECPTN,ECIEN)=ECERR_"^"_ECPRIEN_"^"_ECSSN_"^"_ECDATE
 | 
|---|
| 110 |  Q
 | 
|---|
| 111 |  ;
 | 
|---|
| 112 | PRINT ;output report
 | 
|---|
| 113 |  ;
 | 
|---|
| 114 |  N X1,X2,PROVIDER,PATIENT,PAGE,PRNTDT,QFLAG,DASH,JJ,SS
 | 
|---|
| 115 |  N ECDATA,ECDATE,ECERR,ECIEN,ECPRIEN,ECPRVN,ECPTN,ECSSN
 | 
|---|
| 116 |  S (PAGE,QFLAG)=0 S $P(DASH,"-",80)=""
 | 
|---|
| 117 |  S Y=$P(ECBEGIN,".",1)+1 D DD^%DT S ECBEGIN=Y S Y=$P(ECEND,".",1) D DD^%DT S ECEND=Y
 | 
|---|
| 118 |  D NOW^%DTC S Y=$E(%,1,12) D DD^%DT S PRNTDT=Y
 | 
|---|
| 119 |  D HEAD
 | 
|---|
| 120 |  I '$D(^TMP("ECRPCLS",$J)) D  Q
 | 
|---|
| 121 |  .W !!,?12,"No invalid providers found for date range specified."
 | 
|---|
| 122 |  .I $E(IOST)="C"&('QFLAG) S DIR(0)="E" D  D ^DIR K DIR
 | 
|---|
| 123 |  ..S SS=22-$Y F JJ=1:1:SS W !
 | 
|---|
| 124 |  .W:$E(IOST)'="C" @IOF
 | 
|---|
| 125 |  S X1="" F  S X1=$O(^TMP("ECRPCLS",$J,X1)) Q:X1=""  D
 | 
|---|
| 126 |  .S:ECSORT="P" ECPTN=X1 S:ECSORT="R" ECPRVN=X1
 | 
|---|
| 127 |  .S X2="" F  S X2=$O(^TMP("ECRPCLS",$J,X1,X2)) Q:X2=""  D
 | 
|---|
| 128 |  ..S:ECSORT="P" ECPRVN=X2 S:ECSORT="R" ECPTN=X2
 | 
|---|
| 129 |  ..S ECIEN="",ECIEN=$O(^TMP("ECRPCLS",$J,X1,X2,ECIEN)),ECDATA=^(ECIEN)
 | 
|---|
| 130 |  ..S ECERR=$P(ECDATA,"^",1),ECPRIEN=$P(ECDATA,"^",2),ECSSN=$P(ECDATA,"^",3),ECDATE=$P(ECDATA,"^",4)
 | 
|---|
| 131 |  ..S PROVIDER=$$LJ^XLFSTR($E(ECPRVN,1,20),20," ")_" "_ECPRIEN_"  "_ECERR
 | 
|---|
| 132 |  ..S PATIENT=$$LJ^XLFSTR($E(ECPTN,1,20),20," ")_" "_ECSSN_"  "_ECDATE
 | 
|---|
| 133 |  ..D:($Y+3>IOSL) HEAD
 | 
|---|
| 134 |  ..I ECSORT="P" W !,PATIENT_"  "_PROVIDER
 | 
|---|
| 135 |  ..I ECSORT="R" W !,PROVIDER_"   "_PATIENT
 | 
|---|
| 136 |  I $E(IOST)="C"&('QFLAG) S DIR(0)="E" D  D ^DIR W @IOF
 | 
|---|
| 137 |  .S SS=22-$Y F JJ=1:1:SS W !
 | 
|---|
| 138 |  W:$E(IOST)'="C" @IOF
 | 
|---|
| 139 |  Q
 | 
|---|
| 140 |  ;
 | 
|---|
| 141 | HEAD ;report header
 | 
|---|
| 142 |  ;write the header line with page # and print date and explanation
 | 
|---|
| 143 |  I $E(IOST)="C" S SS=22-$Y F JJ=1:1:SS W !
 | 
|---|
| 144 |  I $E(IOST)="C",PAGE>0 S DIR(0)="E" W ! D ^DIR K DIR I 'Y S QFLAG=1 Q
 | 
|---|
| 145 |  W:$Y!($E(IOST)="C") @IOF
 | 
|---|
| 146 |  S PAGE=PAGE+1
 | 
|---|
| 147 |  W !,?12,"Event Capture Providers with Inactive/Missing Person Class"
 | 
|---|
| 148 |  W !,?12,"for the Date Range "_ECBEGIN_" through "_ECEND
 | 
|---|
| 149 |  W !!,"Printed: "_PRNTDT,?65,"Page: "_PAGE,!
 | 
|---|
| 150 |  I PAGE=1 D
 | 
|---|
| 151 |  .W !,?12,"The following entries in the Event Capture Patient file (#721)"
 | 
|---|
| 152 |  .W !,?12,"are associated with a provider who meets one of the following"
 | 
|---|
| 153 |  .W !,?12,"criteria:",!
 | 
|---|
| 154 |  .W !,?22,"(a) The provider has no Person Class"
 | 
|---|
| 155 |  .W !,?22,"    specified in file #200. (Error=-1)"
 | 
|---|
| 156 |  .W !,?22,"(b) The provider does not have an active"
 | 
|---|
| 157 |  .W !,?22,"    Person Class in file #200 for the"
 | 
|---|
| 158 |  .W !,?22,"    date of procedure. (Error=-2)",!
 | 
|---|
| 159 |  .W !,?12,"The provider's record number in file #200 is shown in parentheses"
 | 
|---|
| 160 |  .W !,?12,"after the provider name.",!
 | 
|---|
| 161 |  I ECSORT="P" D SUBHDA
 | 
|---|
| 162 |  I ECSORT="R" D SUBHDB
 | 
|---|
| 163 |  Q
 | 
|---|
| 164 |  ;
 | 
|---|
| 165 | SUBHDA ;subheader for sort by patient
 | 
|---|
| 166 |  W !,?27,"Date of"
 | 
|---|
| 167 |  W !,"Patient",?21,"SSN",?27,"Procedure",?43,"Provider",?75,"Err."
 | 
|---|
| 168 |  W !,DASH,!
 | 
|---|
| 169 |  Q
 | 
|---|
| 170 |  ;
 | 
|---|
| 171 | SUBHDB ;subheader for sort by provider
 | 
|---|
| 172 |  W !,?65,"Date of"
 | 
|---|
| 173 |  W !,"Provider",?32,"Err.",?38,"Patient",?59,"SSN",?65,"Procedure"
 | 
|---|
| 174 |  W !,DASH,!
 | 
|---|
| 175 |  Q
 | 
|---|
| 176 |  ;
 | 
|---|
| 177 | EXIT ;common exit point & clean-up
 | 
|---|
| 178 |  D ^ECKILL
 | 
|---|
| 179 |  D:'$D(ECGUI) ^%ZISC
 | 
|---|
| 180 |  K ^TMP("ECRPCLS",$J)
 | 
|---|
| 181 |  K DIR,DIRUT,DTOUT,DUOUT,ECBEGIN,ECEND,ECSORT,ECLOOP
 | 
|---|
| 182 |  K IO("Q"),POP,X,Y,ZTSK,ZTRTN,ZTDESC,ZTSAVE
 | 
|---|
| 183 |  Q
 | 
|---|