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

ECRPCLS.m

Go to the documentation of this file.
  1. ECRPCLS ;ALB/JAP - Event Capture Invalid Provider Report ;12/10/12 16:10
  1. ;;2.0;EVENT CAPTURE;**5,47,119**;8 May 96;Build 12
  1. ;
  1. EN ;entry point from menu option
  1. W !
  1. D RANGE
  1. I '$G(ECLOOP)!'$G(ECBEGIN)!'$G(ECEND) G EXIT
  1. W !
  1. D SORT
  1. I $G(DIRUT) G EXIT
  1. I "PR"'[$G(ECSORT) G EXIT
  1. K DIR,DIRUT,DUOUT
  1. W !
  1. D DEVICE
  1. I POP G EXIT
  1. I $G(ZTSK) G EXIT
  1. I $G(IO("Q")),'$G(ZTSK) G EXIT
  1. D START
  1. D HOME^%ZIS
  1. G EXIT
  1. ;
  1. START ;queued entry point or continuation
  1. D PROCESS
  1. I $G(ECPTYP)="E" D EXPORT,EXIT Q ;119 Export to excel
  1. U IO D PRINT
  1. I $D(ECGUI) D EXIT Q
  1. I IO'=IO(0) D ^%ZISC
  1. I $D(ZTQUEUED) S ZTREQ="@" D EXIT
  1. Q
  1. ;
  1. RANGE ;get any date range between T and T-365
  1. N X1,X2,ECSTDT,ECENDDT
  1. W !,?5,"Enter a Begin Date and End Date for this Event Capture "
  1. W !,?5,"provider report -- both dates must be within the past "
  1. W !,?5,"365 days.",!
  1. S (ECBEGIN,ECEND)=0
  1. F D Q:ECBEGIN>0 Q:'$G(ECLOOP)
  1. .S ECLOOP=$$STDT^ECRUTL() I 'ECLOOP Q
  1. .S ECBEGIN=ECSTDT
  1. .S X1=DT,X2=ECBEGIN D ^%DTC I X>365 D
  1. ..W !!,?15,"The Begin Date for this report may not be"
  1. ..W !,?15,"more than 365 days ago. Try again...",!
  1. ..S ECBEGIN=0
  1. Q:'$G(ECLOOP)!'$G(ECBEGIN)
  1. F D Q:ECEND>0 Q:'$G(ECLOOP)
  1. .S ECLOOP=$$ENDDT^ECRUTL(ECSTDT) I 'ECLOOP Q
  1. .S ECEND=ECENDDT
  1. .I ECEND>(DT+1) D
  1. ..W !!,?15,"The End Date for this report may not be"
  1. ..W !,?15,"a future date. Try again...",!
  1. ..S ECEND=0
  1. Q
  1. ;
  1. SORT ;ask user if report should be alpha by patient (P) or
  1. ; alpha by provider (R)
  1. K DIR
  1. S DIR(0)="SAXB^P:PATIENT;R:PROVIDER"
  1. S DIR("?")="Enter an uppercase 'P' or 'R'."
  1. S DIR("A")="Select sorting by Patient or pRovider (P/R): "
  1. S DIR("A",1)=" "
  1. S DIR("A",2)="If you want the report to show Patient name in the 1st column,"
  1. S DIR("A",3)="enter a 'P'. The listing will be alphabetical by Patient name."
  1. S DIR("A",4)=" "
  1. S DIR("A",5)="If you want the report to show Provider name in the 1st column,"
  1. S DIR("A",6)="enter an 'R'. The listing will be alphabetical by Provider name."
  1. S DIR("A",7)=" "
  1. D ^DIR
  1. Q:$G(DIRUT)
  1. S ECSORT=Y
  1. Q
  1. ;
  1. DEVICE ;get device and queue
  1. K IOP S %ZIS="QM" D ^%ZIS
  1. I POP W !!,"No device selected. Exiting...",!! S DIR(0)="E" W ! D ^DIR K DIR Q
  1. I $D(IO("Q")) D
  1. .S ZTRTN="START^ECRPCLS",ZTDESC="EC Invalid Provider Report"
  1. .S ZTSAVE("ECBEGIN")="",ZTSAVE("ECEND")="",ZTSAVE("ECSORT")=""
  1. .D ^%ZTLOAD
  1. .I '$G(ZTSK) W !,"Report canceled..." S DIR(0)="E" W ! D ^DIR K DIR Q
  1. .W !,"Report queued as Task #: ",ZTSK S DIR(0)="E" W ! D ^DIR K DIR
  1. Q
  1. ;
  1. PROCESS ;process the "AC" x-ref in file #721
  1. ;^ECH("AC",date,file#721 ien)=""
  1. ;$ORDER from begindate to enddate
  1. ;use $$GET^XUA4A72(provider ien,date)
  1. ;if return is >0 then get next x-ref entry
  1. ;
  1. N ECD,ECDATA,ECDATE,ECDDT,ECDT,ECERR,ECIEN,ECPIEN,ECPRDT,ECPRIEN,ECPRVN,ECPT,ECPTN,ECS,ECSSN,ECT,ECU,ECU2,ECU3
  1. K ^TMP("ECRPCLS",$J) S ECDT=ECBEGIN
  1. F S ECDT=$O(^ECH("AC",ECDT)) Q:ECDT>ECEND Q:ECDT="" D
  1. .S ECIEN=""
  1. .F S ECIEN=$O(^ECH("AC",ECDT,ECIEN)) Q:ECIEN="" D
  1. ..S ECDATA=$G(^ECH(ECIEN,0)) I '+ECDATA Q ;file problem
  1. ..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
  1. ..I ECPRDT<ECBEGIN!(ECPRDT>ECEND) Q
  1. ..S ECU=$P(ECDATA,"^",11),ECU2=$P(ECDATA,"^",15),ECU3=$P(ECDATA,"^",17)
  1. ..F ECPIEN=ECU,ECU2,ECU3 D
  1. ...Q:'+ECPIEN
  1. ...S ECERR=$$GET^XUA4A72(ECPIEN,ECPRDT) Q:+ECERR>0
  1. ...S ECD=$P(ECDDT,".",1),ECT=$P(ECDDT,".",2)
  1. ...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)
  1. ...S ECPT=$P(ECDATA,"^",2),ECPTN=$P($G(^DPT(ECPT,0)),"^",1) Q:ECPTN=""
  1. ...S ECS=$P(^(0),"^",9),ECS=$E(ECS,1,9),ECSSN=$E(ECS,6,9)
  1. ...S ECPRVN=$P($G(^VA(200,ECPIEN,0)),"^",1) Q:ECPRVN=""
  1. ...S ECPRIEN="("_ECPIEN_")",ECPRIEN=$$RJ^XLFSTR(ECPRIEN,10," ")
  1. ...;if sort by patient then patient name is 3rd subscript
  1. ...I ECSORT="P" S ^TMP("ECRPCLS",$J,ECPTN,ECPRVN,ECIEN)=ECERR_"^"_ECPRIEN_"^"_ECSSN_"^"_ECDATE
  1. ...;if sort by provider then provider name is 3rd subscript
  1. ...I ECSORT="R" S ^TMP("ECRPCLS",$J,ECPRVN,ECPTN,ECIEN)=ECERR_"^"_ECPRIEN_"^"_ECSSN_"^"_ECDATE
  1. Q
  1. ;
  1. PRINT ;output report
  1. ;
  1. N X1,X2,PROVIDER,PATIENT,PAGE,PRNTDT,QFLAG,DASH,JJ,SS
  1. N ECDATA,ECDATE,ECERR,ECIEN,ECPRIEN,ECPRVN,ECPTN,ECSSN
  1. S (PAGE,QFLAG)=0 S $P(DASH,"-",80)=""
  1. S Y=$P(ECBEGIN,".",1)+1 D DD^%DT S ECBEGIN=Y S Y=$P(ECEND,".",1) D DD^%DT S ECEND=Y
  1. D NOW^%DTC S Y=$E(%,1,12) D DD^%DT S PRNTDT=Y
  1. D HEAD
  1. I '$D(^TMP("ECRPCLS",$J)) D Q
  1. .W !!,?12,"No invalid providers found for date range specified."
  1. .I $E(IOST)="C"&('QFLAG) S DIR(0)="E" D D ^DIR K DIR
  1. ..S SS=22-$Y F JJ=1:1:SS W !
  1. .W:$E(IOST)'="C" @IOF
  1. S X1="" F S X1=$O(^TMP("ECRPCLS",$J,X1)) Q:X1="" D
  1. .S:ECSORT="P" ECPTN=X1 S:ECSORT="R" ECPRVN=X1
  1. .S X2="" F S X2=$O(^TMP("ECRPCLS",$J,X1,X2)) Q:X2="" D
  1. ..S:ECSORT="P" ECPRVN=X2 S:ECSORT="R" ECPTN=X2
  1. ..S ECIEN="",ECIEN=$O(^TMP("ECRPCLS",$J,X1,X2,ECIEN)),ECDATA=^(ECIEN)
  1. ..S ECERR=$P(ECDATA,"^",1),ECPRIEN=$P(ECDATA,"^",2),ECSSN=$P(ECDATA,"^",3),ECDATE=$P(ECDATA,"^",4)
  1. ..S PROVIDER=$$LJ^XLFSTR($E(ECPRVN,1,20),20," ")_" "_ECPRIEN_" "_ECERR
  1. ..S PATIENT=$$LJ^XLFSTR($E(ECPTN,1,20),20," ")_" "_ECSSN_" "_ECDATE
  1. ..D:($Y+3>IOSL) HEAD
  1. ..I ECSORT="P" W !,PATIENT_" "_PROVIDER
  1. ..I ECSORT="R" W !,PROVIDER_" "_PATIENT
  1. I $E(IOST)="C"&('QFLAG) S DIR(0)="E" D D ^DIR W @IOF
  1. .S SS=22-$Y F JJ=1:1:SS W !
  1. W:$E(IOST)'="C" @IOF
  1. Q
  1. ;
  1. ;write the header line with page # and print date and explanation
  1. I $E(IOST)="C" S SS=22-$Y F JJ=1:1:SS W !
  1. I $E(IOST)="C",PAGE>0 S DIR(0)="E" W ! D ^DIR K DIR I 'Y S QFLAG=1 Q
  1. W:$Y!($E(IOST)="C") @IOF
  1. S PAGE=PAGE+1
  1. W !,?12,"Event Capture Providers with Inactive/Missing Person Class"
  1. W !,?12,"for the Date Range "_ECBEGIN_" through "_ECEND
  1. W !!,"Printed: "_PRNTDT,?65,"Page: "_PAGE,!
  1. I PAGE=1 D
  1. .W !,?12,"The following entries in the Event Capture Patient file (#721)"
  1. .W !,?12,"are associated with a provider who meets one of the following"
  1. .W !,?12,"criteria:",!
  1. .W !,?22,"(a) The provider has no Person Class"
  1. .W !,?22," specified in file #200. (Error=-1)"
  1. .W !,?22,"(b) The provider does not have an active"
  1. .W !,?22," Person Class in file #200 for the"
  1. .W !,?22," date of procedure. (Error=-2)",!
  1. .W !,?12,"The provider's record number in file #200 is shown in parentheses"
  1. .W !,?12,"after the provider name.",!
  1. I ECSORT="P" D SUBHDA
  1. I ECSORT="R" D SUBHDB
  1. Q
  1. ;
  1. SUBHDA ;subheader for sort by patient
  1. W !,?27,"Date of"
  1. W !,"Patient",?21,"SSN",?27,"Procedure",?43,"Provider",?75,"Err."
  1. W !,DASH,!
  1. Q
  1. ;
  1. SUBHDB ;subheader for sort by provider
  1. W !,?65,"Date of"
  1. W !,"Provider",?32,"Err.",?38,"Patient",?59,"SSN",?65,"Procedure"
  1. W !,DASH,!
  1. Q
  1. ;
  1. EXIT ;common exit point & clean-up
  1. D ^ECKILL
  1. D:'$D(ECGUI) ^%ZISC
  1. K ^TMP("ECRPCLS",$J)
  1. K DIR,DIRUT,DTOUT,DUOUT,ECBEGIN,ECEND,ECSORT,ECLOOP
  1. K IO("Q"),POP,X,Y,ZTSK,ZTRTN,ZTDESC,ZTSAVE
  1. Q
  1. ;
  1. EXPORT ;119 Put data in excel format
  1. N X1,X2,CNT,JJ,SS,ECDATA,ECDATE,ECERR,ECIEN,ECPRIEN,ECPRVN,ECPTN,ECSSN
  1. S CNT=1
  1. S ^TMP($J,"ECRPT",CNT)="PATIENT NAME^SSN^PROCEDURE DATE^PROVIDER NAME^PROVIDER IEN #^ERROR"
  1. I '$D(^TMP("ECRPCLS",$J)) Q ;no data to export
  1. S X1="" F S X1=$O(^TMP("ECRPCLS",$J,X1)) Q:X1="" D
  1. .S:ECSORT="P" ECPTN=X1 S:ECSORT="R" ECPRVN=X1
  1. .S X2="" F S X2=$O(^TMP("ECRPCLS",$J,X1,X2)) Q:X2="" D
  1. ..S:ECSORT="P" ECPRVN=X2 S:ECSORT="R" ECPTN=X2
  1. ..S ECIEN="",ECIEN=$O(^TMP("ECRPCLS",$J,X1,X2,ECIEN)),ECDATA=^(ECIEN)
  1. ..S ECERR=$P(ECDATA,"^",1),ECPRIEN=$P(ECDATA,"^",2),ECSSN=$P(ECDATA,"^",3),ECDATE=$P(ECDATA,"^",4)
  1. ..S CNT=CNT+1,^TMP($J,"ECRPT",CNT)=ECPTN_U_ECSSN_U_ECDATE_U_ECPRVN_U_+$TR(ECPRIEN," ()","")_U_$S(ECERR=-1:"No Person Class",1:"Person class not active on procedure date")
  1. Q