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

ECPRSUM1.m

Go to the documentation of this file.
  1. ECPRSUM1 ;BIR/DMA,RHK,JPW - Provider Summary (1 to 7) ;12/2/14 11:09
  1. ;;2.0;EVENT CAPTURE;**5,18,33,47,62,63,61,72,88,95,112,119,126**;8 May 96;Build 8
  1. ;In patch 119, temporary data storage for the report was moved from
  1. ;^TMP($J to ^TMP("ECTMP",$J so that the exportable version of the
  1. ;report, which is returned in ^TMP($J,"ECRPT", wouldn't be deleted upon
  1. ;completion. That change occurred in many lines in this routine.
  1. ;
  1. S DIC=200,DIC(0)="AQEMZ",DIC("A")="Select Provider: "
  1. D ^DIC K DIC G END:Y<0 S ECU=+Y,ECUN=$P(Y,"^",2)
  1. ;D REASON^ECRUTL ;* Prompt to include Procedure Reasons. 112, Remove reasons from report
  1. I ($D(DIRUT))!($D(DUOUT)) G END
  1. BDATE K %DT S %DT="AEX",%DT("A")="Starting with Date: "
  1. D ^%DT G:Y<0 END S ECSD=Y
  1. EDATE K %DT S %DT="AEX",%DT("A")="Ending with Date: " D ^%DT G:Y<0 END
  1. I Y<ECSD D G EDATE
  1. .W !!,"The ending date cannot be earlier than the starting date. "
  1. .W "Please re-enter",!,"the ending date.",!
  1. S ECED=Y,ECDATE=ECSD_"^"_ECED
  1. DEV ;dev call
  1. W !!,"This report is formatted for 132 column output.",!!
  1. S %ZIS="Q",%ZIS("A")="Select Device: " D ^%ZIS G END:POP
  1. I $D(IO("Q")) K ZTSAVE S (ZTSAVE("ECRY"),ZTSAVE("ECSD"),ZTSAVE("ECDATE"),ZTSAVE("ECED"),ZTSAVE("ECU"),ZTSAVE("ECUN"))="",ZTDESC="Event Capture Provider Summary",ZTRTN="EN^ECPRSUM1" D ^%ZTLOAD,HOME^%ZIS K ZTSK G END
  1. ;
  1. EN ;QUEUED ENTRY POINT
  1. N ECPG,ECGT,EC,ECCAT,ECPXD,MODI,ECI,ECPRV,RK,A,ECX,EC725,ECEPN,ECLOCN,ECUNITN ;119,126
  1. I $G(ECPTYP)'="E" U IO ;119 Only need IO if not exporting
  1. S (ECOUT,ECPG)=0 F ECI=1:1:7 S ECGT(ECI)=0,A(ECI)=0
  1. K ^TMP("ECTMP",$J) S ECOUT=0,ECSD=ECSD-.1,ECED=ECED+.3
  1. F ECD=ECSD:0 S ECD=$O(^ECH("AC",ECD)) Q:'ECD Q:ECD>ECED F DA=0:0 S DA=$O(^ECH("AC",ECD,DA)) Q:'DA I $D(^ECH("APRV",ECU,DA)) S EC=$G(^ECH(DA,0)) D
  1. .K ECPRV S ECPRV=$$GETPRV^ECPRVMUT(DA,.ECPRV),ECX=0 I ECPRV Q
  1. .F ECI=1:1:7 S A(ECI)=0
  1. .F ECI=1:1:7 S ECX=$O(ECPRV(ECX)) Q:'ECX D
  1. ..S A(ECI)=$P(ECPRV(ECX),U)=ECU
  1. .S ECX=A(1)=A(2)=A(3)=A(4)=A(5)=A(6)=A(7) I 'ECX Q
  1. .S ECPAT=+$P(EC,"^",2),PA=$G(^DPT(ECPAT,0)),SS=$P(PA,"^",9)
  1. .S PA=$S($P(PA,"^")]"":$P(PA,"^"),1:"UNKNOWN"),ECP=$P(EC,"^",9)
  1. .Q:ECP']""
  1. .S ECLOC=+$P(EC,U,4),ECUNIT=+$P(EC,U,7),ECCAT=+$P(EC,U,8)
  1. .I $G(ECSLOC)'="ALL"&('$D(ECSLOC(ECLOC))) Q ;126 Location check
  1. .I $G(ECSUNIT)'="ALL"&('$D(ECSUNIT(ECUNIT))) Q ;126 DSS Unit check
  1. .S ECLOCN=$$GET1^DIQ(4,ECLOC,.01) ;126 Get location name
  1. .S ECUNITN=$$GET1^DIQ(724,ECUNIT,.01) ;126 Get DSS Unit name
  1. .S ECPSY=+$O(^ECJ("AP",ECLOC,ECUNIT,ECCAT,ECP,""))
  1. .S ECPSYN=$P($G(^ECJ(ECPSY,"PRO")),"^",2)
  1. .S ECFILE=$P(ECP,";",2),ECFILE=$S($E(ECFILE)="I":81,$E(ECFILE)="E":725,1:"UNKNOWN")
  1. .I ECFILE="UNKNOWN" S ECPN="UNKNOWN"
  1. .S ECCPT=$S(ECFILE=81:+ECP,1:$P($G(^EC(725,+ECP,0)),"^",5)),ECPXD=""
  1. .I ECCPT'="" D
  1. ..S ECPXD=$$CPT^ICPTCOD(ECCPT,$P(ECED,".")),ECCPT=$P(ECPXD,"^",2)_" "
  1. .I ECFILE=81 S ECPN=$S($P(ECPXD,"^",3)]"":$P(ECPXD,"^",3),1:"UNKNOWN")
  1. .I ECFILE=725 S EC725=$G(^EC(725,+ECP,0)),ECPN=$P(EC725,"^",2)_" "_$P(EC725,"^")
  1. .S ECEPN=$S(ECFILE=81:ECPN,1:$P(EC725,U))_$S(ECPSYN]"":" ["_ECPSYN_"]",1:"") ;119
  1. .S ECPTDS=ECCPT_ECPN_$S(ECPSYN]"":" ["_ECPSYN_"] ",1:"")
  1. .;Get Procedure CPT modifiers
  1. . K ECMOD S ECMODF=0 I $O(^ECH(DA,"MOD",0))'="" D
  1. ..S ECMODF=$$MOD^ECUTL(DA,"I",.ECMOD)
  1. ..;K ECMOD S ECMODF=$$MOD^ECUTL(DA,"I",.ECMOD)
  1. .;
  1. .;ALB/ESD - Get procedure reason from EC Patient file (#721) record
  1. .S ECPRSN="",ECLNK=+$P(EC,"^",23)
  1. .I +ECLNK>0 DO
  1. ..S ECPRSN=$P($G(^ECL(ECLNK,0)),"^",1)
  1. ..S:+ECPRSN'>0 ECPRSN="REASON NOT DEFINED"
  1. ..S:+ECPRSN>0 ECPRSN=$P(^ECR(ECPRSN,0),"^",1)
  1. .S:+ECLNK'>0 ECPRSN="REASON NOT DEFINED"
  1. .I '$D(ECRY) S ECPRSN="REASON NOT DEFINED"
  1. .;
  1. .;ALB/ESD - Add procedure reason to ^TMP array
  1. .S PRO=ECCPT_ECPN I PRO]"" S V=+$P(EC,"^",10) D
  1. ..F J=1:1:7 I A(J) S ^(J)=$G(^TMP("ECTMP",$J,ECLOCN,ECUNITN,PRO,ECPRSN,PA_"^"_SS,J))+V D ;126
  1. ...I $G(^TMP("ECTMP",$J,ECLOCN,ECUNITN,PRO))="" S ^TMP("ECTMP",$J,ECLOCN,ECUNITN,PRO)=ECPTDS ;126
  1. ..;ALB/JAM - Add Procedure CPT modifier to ^TMP array
  1. ..S MOD="" F S MOD=$O(ECMOD(MOD)) Q:MOD="" D
  1. ...S ^TMP("ECTMP",$J,ECLOCN,ECUNITN,PRO,ECPRSN,PA_"^"_SS,"MOD",MOD)=$G(^TMP("ECTMP",$J,ECLOCN,ECUNITN,PRO,ECPRSN,PA_"^"_SS,"MOD",MOD))+V ;126
  1. .I $G(ECPTYP)="E" S ^TMP("ECTMP",$J,ECLOCN,ECUNITN,PRO,ECPRSN,PA_U_SS,"EXPORT")=$P($G(ECCPT)," ")_U_$S(ECFILE=725:$P(EC725,U,2),1:"")_U_$G(ECEPN) ;119,126 additional information needed for export
  1. K ECLNK,MOD,ECPTDS
  1. I $G(ECPTYP)="E" D EXPORT,^ECKILL K ^TMP("ECTMP",$J) Q ;119 If exporting, process and then quit
  1. ;
  1. PRINT ;print report
  1. S ECSD=$P(ECDATE,"^"),ECED=$P(ECDATE,"^",2)
  1. I '$D(^TMP("ECTMP",$J)) S (ECLOC,ECUNIT)="" D HDR W !!,?12,"No Event Capture Provider Summary for "_ECUN_" to report for the date range selected.",!! D PAGE G END ;126
  1. S ECLOC="" F S ECLOC=$O(^TMP("ECTMP",$J,ECLOC)) Q:ECLOC="" D ;126
  1. .S ECUNIT="" F S ECUNIT=$O(^TMP("ECTMP",$J,ECLOC,ECUNIT)) Q:ECUNIT="" D ;126
  1. ..;126 Code below modified for dot structure and correct array reference
  1. ..D HDR ;126 need header for each section
  1. ..F ECI=1:1:7 S A(ECI)=0
  1. ..S (ECREAS,PA,PR)=""
  1. ..F S PR=$O(^TMP("ECTMP",$J,ECLOC,ECUNIT,PR)),PA="" Q:PR="" D Q:ECOUT
  1. ...W !,^TMP("ECTMP",$J,ECLOC,ECUNIT,PR)
  1. ...F S ECREAS=$O(^TMP("ECTMP",$J,ECLOC,ECUNIT,PR,ECREAS)) Q:ECREAS="" D Q:ECOUT
  1. ....F S PA=$O(^TMP("ECTMP",$J,ECLOC,ECUNIT,PR,ECREAS,PA)) D:PA="" TOT Q:PA="" D Q:ECOUT
  1. .....S A=$G(^TMP("ECTMP",$J,ECLOC,ECUNIT,PR,ECREAS,PA,0))
  1. .....W ! W:$D(ECRY) $E(ECREAS,1,23)
  1. .....W ?25,$E($P(PA,"^"),1,24),?52,$E($P(PA,"^",2),6,9) ;112 only print last 4
  1. .....F J=1:1:7 S A=$G(^TMP("ECTMP",$J,ECLOC,ECUNIT,PR,ECREAS,PA,J)),A(J)=A(J)+A W ?10*J+50,$J(A,5,0) I J=7 I $Y+8>IOSL D PAGE Q:ECOUT D HDR
  1. .....;print CPT procedure modifiers
  1. .....Q:ECOUT S IEN=""
  1. .....F S IEN=$O(^TMP("ECTMP",$J,ECLOC,ECUNIT,PR,ECREAS,PA,"MOD",IEN)) Q:IEN="" D I ECOUT Q
  1. ......S MODI=$$MOD^ICPTMOD(IEN,"I",$P(ECED,"."))
  1. ......S MOD=$P(MODI,U,2) I MOD="" Q
  1. ......S MODESC=$P(MODI,U,3) I MODESC="" S MODESC="UNKNOWN"
  1. ......S MODAMT=^TMP("ECTMP",$J,ECLOC,ECUNIT,PR,ECREAS,PA,"MOD",IEN)
  1. ......W !?5,"- ",MOD," ",MODESC," (",MODAMT,")"
  1. ......I ($Y+7)>IOSL D PAGE Q:ECOUT D HDR
  1. .....K MODESC,MOD,MODAMT
  1. W !!,?60 F RK=61:1:IOM W "*"
  1. W !,?35,"GRAND TOTAL - PROCEDURES"
  1. F J=1:1:7 W ?10*J+50,$J(ECGT(J),5,0)
  1. D:'ECOUT PAGE G END
  1. ;
  1. PAGE ; end of page
  1. D FOOTER
  1. I $E(IOST,1,2)="C-" S DIR(0)="E" D ^DIR K DIR I 'Y S ECOUT=1
  1. Q
  1. HDR ;
  1. W:$Y @IOF S ECPG=ECPG+1
  1. W !!?33,"EVENT CAPTURE PROVIDER (1-7) SUMMARY FOR ",ECUN,?118,"Page: ",ECPG,!,?33,"LOCATION: ",$G(ECLOC),!,?33,"DSS UNIT: ",$G(ECUNIT) ;112,126
  1. W !,?33,"FOR THE DATE RANGE ",$$FMTE^XLFDT(ECSD)," TO ",$$FMTE^XLFDT(ECED),!!,"PROCEDURE",?85,"TOTALS AS PROVIDER #",! ;112,126
  1. W:$D(ECRY) "PROCEDURE REASON" W ?25,"PATIENT",?52,"SSN",?64,1,?74,2,?84,3,?94,4,?104,5,?114,6,?124,7
  1. W !,?5,"CPT MODIFIER (Volume of modifiers used)",! ;126 fixed spelling error
  1. F RK=1:1:IOM W "-"
  1. W !
  1. Q
  1. ;
  1. TOT W !,?60 F RK=61:1:IOM W "-"
  1. W !?35,"TOTAL PROCEDURES"
  1. F J=1:1:7 W ?10*J+50,$J(A(J),5,0) S ECGT(J)=ECGT(J)+A(J)
  1. W ! F ECI=1:1:7 S A(ECI)=0
  1. Q
  1. ;
  1. W !!?4,"Volume totals may represent days, minutes, numbers of procedures"
  1. W " and/or a combination of these." ;126 Combined lines for report
  1. Q
  1. ;
  1. END D ^ECKILL K ^TMP("ECTMP",$J),ZTSK W @IOF
  1. K ^TMP("ECTMP",$J) Q:$D(ECGUI)
  1. I $D(ZTQUEUED) S ZTREQ="@"
  1. D ^%ZISC
  1. Q
  1. ;
  1. EXPORT ;Section added in 119
  1. N CNT,ECI,A,PA,PR,ECREAS,EXPORT,SUB,MODCNT,MODI,MOD,MODESC,MODAMT,ECLOC,ECUNIT ;126
  1. S CNT=1
  1. S ^TMP($J,"ECRPT",CNT)="PROVIDER NAME^LOCATION^DSS UNIT^CPT CODE^CPT MOD #1 (VOL)^CPT MOD #2 (VOL)^CPT MOD #3 (VOL)^PROCEDURE CODE^PROCEDURE NAME^PATIENT^SSN" ;126
  1. S ^TMP($J,"ECRPT",CNT)=^TMP($J,"ECRPT",CNT)_"^TOTAL AS PROV #1^TOTAL AS PROV #2^TOTAL AS PROV #3^TOTAL AS PROV #4^TOTAL AS PROV #5^TOTAL AS PROV #6^TOTAL AS PROV #7" ;126
  1. S ECLOC="" F S ECLOC=$O(^TMP("ECTMP",$J,ECLOC)) Q:ECLOC="" D ;126
  1. .S ECUNIT="" F S ECUNIT=$O(^TMP("ECTMP",$J,ECLOC,ECUNIT)) Q:ECUNIT="" D ;126
  1. ..;126 Section modified for dot structure and array levels
  1. ..S (ECREAS,PA,PR)=""
  1. ..F S PR=$O(^TMP("ECTMP",$J,ECLOC,ECUNIT,PR)),PA="" Q:PR="" D
  1. ...F S ECREAS=$O(^TMP("ECTMP",$J,ECLOC,ECUNIT,PR,ECREAS)) Q:ECREAS="" D
  1. ....F S PA=$O(^TMP("ECTMP",$J,ECLOC,ECUNIT,PR,ECREAS,PA)) Q:PA="" D
  1. .....S EXPORT=^TMP("ECTMP",$J,ECLOC,ECUNIT,PR,ECREAS,PA,"EXPORT")
  1. .....S CNT=CNT+1
  1. .....S ^TMP($J,"ECRPT",CNT)=ECUN_U_ECLOC_U_ECUNIT_U_$P(EXPORT,U) ;126
  1. .....S SUB=0,MODCNT=0 F S:SUB'="" SUB=$O(^TMP("ECTMP",$J,ECLOC,ECUNIT,PR,ECREAS,PA,"MOD",SUB)) Q:MODCNT=3 D S ^TMP($J,"ECRPT",CNT)=^TMP($J,"ECRPT",CNT)_U_MOD,MODCNT=MODCNT+1 ;126
  1. ......S MOD="" I SUB="" Q ;126
  1. ......S MODI=$$MOD^ICPTMOD(SUB,"I",$P(ECED,".")) S MOD=$P(MODI,U,2) Q:MOD="" S MODESC=$S($P(MODI,U,3)="":"UNKNOWN",1:$P(MODI,U,3)),MODAMT=^TMP("ECTMP",$J,ECLOC,ECUNIT,PR,ECREAS,PA,"MOD",SUB) ;126
  1. ......S MOD=MOD_" "_MODESC_" ("_MODAMT_")" ;126
  1. .....S ^TMP($J,"ECRPT",CNT)=^TMP($J,"ECRPT",CNT)_U_$P(EXPORT,U,2)_U_$P(EXPORT,U,3)_U_$P(PA,U)_U_$E($P(PA,U,2),6,9) ;126
  1. .....F J=1:1:7 S $P(^TMP($J,"ECRPT",CNT),U,(J+11))=+$G(^TMP("ECTMP",$J,ECLOC,ECUNIT,PR,ECREAS,PA,J)) ;126
  1. Q