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

ECXLBBC.m

Go to the documentation of this file.
  1. ECXLBBC ;ALB/MRY - LBB Extract Audit Comparative Report ;2/5/15 15:25
  1. ;;3.0;DSS EXTRACTS;**120,149,153,154**;Dec 22, 1997;Build 13
  1. ;
  1. EN ;entry point for LBB extract audit comparative report
  1. N ECSD,ECED,ECSDN,ECEDN,ECXPORT,CNT ;154
  1. D SETUP^ECXLBB1 I ECFILE="" Q ;149
  1. N %X,%Y,%DT,X,Y,DIC,DA,DR,DIQ,DIR,DIRUT,DTOUT,DUOUT,SCRNARR,REPORT
  1. N SCRNARR,ECXERR,ECXHEAD,ECXAUD,ECXARRAY,STATUS,FLAG,ECXALL,TMP
  1. N ZTQUEUED,ZTSTOP
  1. S SCRNARR="^TMP(""ECX"",$J,""SCRNARR"")"
  1. K @SCRNARR@("DIVISION")
  1. S (ECXERR,FLAG)=0
  1. ;ecxaud=0 for 'extract' audit
  1. S ECXHEAD="LBB",ECXAUD=0
  1. W !!,"Setup for ",ECXHEAD," Extract Comparative Report --",!!
  1. ;select extract
  1. D AUDIT^ECXUTLA(ECXHEAD,.ECXERR,.ECXARRAY,ECXAUD)
  1. Q:ECXERR
  1. W !!
  1. ;select divisions/sites; all divisions if ecxall=1
  1. ;**not in ECXPLBB report, so leaving multi-divisions out.
  1. ;S ECXERR=$$NUT^ECXDVSN()
  1. ;I ECXERR=1 D Q
  1. ;.W !!,?5,"Try again later... exiting.",!
  1. ;.K @SCRNARR@("DIVISION")
  1. ;.D AUDIT^ECXKILL
  1. S:'$D(ECINST) ECINST=+$P(^ECX(728,1,0),U)
  1. S ECXINST=ECINST
  1. K ECXDIC S DA=ECINST,DIC="^DIC(4,",DIQ(0)="I",DIQ="ECXDIC",DR=".01;99"
  1. D EN^DIQ1 S ECINST=$G(ECXDIC(4,DA,99,"I")) K DIC,DIQ,DA,DR,ECXDIC
  1. ;sort by COMP
  1. S DIR(0)="Y",DIR("A")="Do you want the "_ECXHEAD_" extract comparative report to sort by COMP"
  1. S DIR("B")="NO" D ^DIR K DIR
  1. I $G(DIRUT) S ECXERR=1 Q
  1. ;if y=0 i.e., 'no', then ecxcomp=0 i.e., 'selected'
  1. S ECXCFLG=Y
  1. I ECXERR=1 D Q
  1. .W !!,?5,"Try again later... exiting.",!
  1. .D AUDIT^ECXKILL
  1. W !
  1. Q:(ECXARRAY("END")']"")&(ECXARRAY("START")']"")
  1. S ECXPORT=$$EXPORT^ECXUTL1 Q:ECXPORT=-1 I $G(ECXPORT) D Q ;154 Section added for exporting report
  1. .S X=ECXARRAY("START") D ^%DT S ECSD=Y S X=ECXARRAY("END") D ^%DT S ECED=Y S ECSD1=ECSD=-1
  1. .K ^TMP($J,"ECXPORT")
  1. .S ^TMP($J,"ECXPORT",0)="LOCAL NAME^LOCAL SSN^LOCAL FDR LOC^LOCAL TRANSF DATE^LOCAL COMP^LOCAL NUMBER OF UNITS^LBB EXTRACT LOG NUMBER^LBB EXTRACT SSN^LBB EXTRACT TRANSF DATE^LBB EXTRACT COMP^LBB EXTRACT NUMBER OF UNITS",CNT=1
  1. .D START
  1. .D EXPDISP^ECXUTL1
  1. .D ^ECXKILL
  1. N ECXPOP S ECXPOP=0 D QUE Q:ECXPOP=1
  1. ;
  1. START ; entry point from tasked job
  1. ; get LAB DATA and build temporary global ^TMP("ECXLBB",$J)
  1. N ECXLOGIC,ECXRPT,ECXCRPT,ECXJOB
  1. S ECXJOB=$J
  1. K ^TMP("ECXLBBC",ECXJOB)
  1. U IO
  1. I '$G(ECXPORT) I $E(IOST,1,2)="C-" W !,"Retrieving records... " ;154
  1. S (ECXRPT,ECXCRPT)=1 D AUDRPT^ECXLBB1 ;149 build source tmp
  1. D EXTRACT ;build extract tmp
  1. ;
  1. OUTPUT ; entry point called by EN tag
  1. N ECDATE,ECXTOT,ECXSTOT,ECXSTRX,ECXSTRS,ECRDT,ECQUIT,ECPG,ECLINE,ECLINE1,ECXCLAST
  1. I '$D(^TMP("ECXLBBC",ECXJOB)) W:'$G(ECXPORT) !,"There were no records that met the date range criteria" Q ;154
  1. S (ECPG,ECDATE,ECQUIT,ECXCOMP,ECXTOT,ECXSTOT)=0
  1. S ECXCOMP("TOTAL","S")=0,ECXCOMP("TOTAL","X")=0,ECXCLAST=0
  1. S ECLINE="",$P(ECLINE,"=",132)="=",ECLINE1="",$P(ECLINE1,"-",132)="-"
  1. S ECSDN=$$FMTE^XLFDT(ECSD,9),ECEDN=$$FMTE^XLFDT(ECED,9),ECRDT=$$FMTE^XLFDT(DT,9)
  1. I '$G(ECXPORT) W:$E(IOST,1,2)="C-" @IOF D HED ;154
  1. S ECXCOMP=0 F S ECXCOMP=$O(^TMP("ECXLBBC",ECXJOB,ECXCOMP)) D Q:ECXCOMP="" Q:ECQUIT
  1. . I ECXCFLG,ECXCLAST'=0,ECXCOMP="" S ECXSTOT=1 D TOTAL S ECXSTOT=0 Q
  1. . Q:ECXCOMP=""
  1. . I ECXCFLG,ECXCLAST'=0,ECXCLAST'=ECXCOMP S ECXSTOT=1 D TOTAL S ECXSTOT=0
  1. . S ECXCLAST=ECXCOMP
  1. . S ECXCOMP(ECXCOMP,"S")=0,ECXCOMP(ECXCOMP,"X")=0
  1. . S ECXDFN=0 F S ECXDFN=$O(^TMP("ECXLBBC",ECXJOB,ECXCOMP,ECXDFN)) Q:'ECXDFN D Q:ECQUIT
  1. .. S ECDATE=0 F S ECDATE=$O(^TMP("ECXLBBC",ECXJOB,ECXCOMP,ECXDFN,ECDATE)) Q:'ECDATE D Q:ECQUIT
  1. ... S ECXSTRS=$G(^TMP("ECXLBBC",ECXJOB,ECXCOMP,ECXDFN,ECDATE,"S"))
  1. ... S ECXSTRX=$G(^TMP("ECXLBBC",ECXJOB,ECXCOMP,ECXDFN,ECDATE,"X"))
  1. ... I ECXSTRS'="" D
  1. .... S ECXCOMP(ECXCOMP,"S")=ECXCOMP(ECXCOMP,"S")+(+$P(ECXSTRS,"^",12))
  1. .... S ECXCOMP("TOTAL","S")=ECXCOMP("TOTAL","S")+(+$P(ECXSTRS,"^",12))
  1. ... I ECXSTRX'="" D
  1. .... S ECXCOMP(ECXCOMP,"X")=ECXCOMP(ECXCOMP,"X")+(+$P(ECXSTRX,"^",12))
  1. .... S ECXCOMP("TOTAL","X")=ECXCOMP("TOTAL","X")+(+$P(ECXSTRX,"^",12))
  1. ... D PRINT
  1. S ECXTOT=1 D TOTAL S ECXTOT=0
  1. I $G(ECXPORT) Q ;154
  1. D ^ECXKILL
  1. Q
  1. ;
  1. PRINT ;
  1. I $G(ECXPORT) D Q ;154 Section added for exporting report
  1. .S ^TMP($J,"ECXPORT",CNT)=$S(ECXSTRS="":"NO DATA^^^^^",1:$P(ECXSTRS,U,5)_U_$P(ECXSTRS,U,4)_U_$P(ECXSTRS,U,16)_U_$$FMTE^XLFDT($$HL7TFM^XLFDT($P(ECXSTRS,U,8)),2)_U_$P(ECXSTRS,U,11)_U_+$P(ECXSTRS,U,12))
  1. .S ^TMP($J,"ECXPORT",CNT)=^TMP($J,"ECXPORT",CNT)_U_$S(ECXSTRX="":"NO DATA",1:ECXARRAY("EXTRACT")_U_$P(ECXSTRX,U,4)_U_$$FMTE^XLFDT($$HL7TFM^XLFDT($P(ECXSTRX,U,8)),2)_U_$P(ECXSTRX,U,11)_U_+$P(ECXSTRX,U,12)),CNT=CNT+1
  1. I $Y+5>IOSL D Q:ECQUIT
  1. . I $E(IOST,1,2)["C-" S DIR(0)="E" D ^DIR K DIR I 'Y S ECQUIT=1 Q
  1. . W @IOF D HED
  1. I ECXSTRS="" W !?3,"***************N*O***D*A*T*A*****************"
  1. I ECXSTRS'="" D
  1. . W !,$P(ECXSTRS,"^",5),?11,$P(ECXSTRS,"^",4),?26,$P(ECXSTRS,"^",16)
  1. . W ?37,$$FMTE^XLFDT($$HL7TFM^XLFDT($P(ECXSTRS,"^",8)),2)
  1. . W ?49,$P(ECXSTRS,"^",11),?60,$J(+$P(ECXSTRS,"^",12),2)
  1. I ECXSTRX="" W ?83,"*******N*O***D*A*T*A*********"
  1. I ECXSTRX'="" D
  1. . W ?80,$P(ECXSTRX,"^",4)
  1. . W ?92,$$FMTE^XLFDT($$HL7TFM^XLFDT($P(ECXSTRX,"^",8)),2)
  1. . W ?102,$P(ECXSTRX,"^",11),?113,$J(+$P(ECXSTRX,"^",12),2)
  1. Q
  1. TOTAL ;
  1. ;I $Y+3>IOSL D Q:ECQUIT
  1. ;. I $E(IOST,1,2)["C-" S DIR(0)="E" D ^DIR K DIR I 'Y S ECQUIT=1 Q
  1. ;. W @IOF D HED
  1. I $G(ECXPORT) D Q ;154 Section added for exporting report
  1. .I $G(ECXSTOT)!($G(ECXTOT)&('ECXCFLG)) S ^TMP($J,"ECXPORT",CNT)="^",CNT=CNT+1
  1. .S ^TMP($J,"ECXPORT",CNT)=$S($G(ECXSTOT):"^^^^"_ECXCLAST_" TOTAL^"_+$G(ECXCOMP(ECXCLAST,"S"))_"^^^^"_ECXCLAST_" TOTAL^"_+$G(ECXCOMP(ECXCLAST,"X")),1:"TOTAL^^^^^"_+$G(ECXCOMP("TOTAL","S"))_"^^^^^"_+$G(ECXCOMP("TOTAL","X"))),CNT=CNT+1
  1. .I $G(ECXSTOT) S ^TMP($J,"ECXPORT",CNT)="^",CNT=CNT+1
  1. W !,ECLINE1
  1. I $G(ECXSTOT) W !,?47,$J(ECXCLAST_" TOTAL",12),?60,$J(+$G(ECXCOMP(ECXCLAST,"S")),4),?100,$J(ECXCLAST_" TOTAL",12),?113,$J(+$G(ECXCOMP(ECXCLAST,"X")),4)
  1. I $G(ECXTOT) W !,"TOTAL",?60,$J(+$G(ECXCOMP("TOTAL","S")),4),?113,$J(+$G(ECXCOMP("TOTAL","X")),4)
  1. Q
  1. ;
  1. HED ;
  1. S ECPG=ECPG+1
  1. W !,"LBB Extract Comparative Report",?124,"Page",$J(ECPG,3)
  1. W !,ECSDN," - ",ECEDN,?111,"Run Date:",$J(ECRDT,12)
  1. W !!,"------------------ LOCAL BLOOD BANK SOURCE ----------------------"
  1. W ?80,"------------- LBB EXTRACT (#"_ECXARRAY("EXTRACT")_") ---------------"
  1. W !,?37,"Transf",?57,"Number",?92,"Transf",?113,"Number"
  1. W !,"Name",?14,"SSN",?25,"FDR LOC",?37,"Date",?49,"COMP",?57,"of Units",?80,"SSN",?92,"Date",?102,"COMP",?113,"of Units"
  1. W !,ECLINE
  1. Q
  1. ;
  1. QUE ;
  1. ;determine output device and queue if requested
  1. N %,X,%DT
  1. S X=ECXARRAY("START") D ^%DT S ECSD=Y S X=ECXARRAY("END") D ^%DT S ECED=Y
  1. S ECSDN=$$FMTE^XLFDT(ECSD),ECEDN=$$FMTE^XLFDT(ECED),ECSD1=ECSD-.1
  1. F X="ECINST","ECED","ECSD","ECSD1","ECEDN","ECSDN" S ECXSAVE(X)=""
  1. F X="ECPACK","ECPIECE","ECRTN","ECGRP","ECNODE" S ECXSAVE(X)=""
  1. F X="ECFILE","ECHEAD","ECVER","ECINST","ECXINST","ECXCFLG" S ECXSAVE(X)=""
  1. ;S ECXSAVE("ECXDIV(")=""
  1. S ECXSAVE("ECXARRAY(")="",ECXSAVE("SCRNARR")="",TMP=$$OREF^DILF(SCRNARR),ECXSAVE(TMP)=""
  1. S ECXPGM="START^ECXLBBC",ECXDESC="LBB Extract Audit Comparative Report"
  1. W !!,"This report requires a print width of 132 characters.",!!
  1. D DEVICE^ECXUTLA(ECXPGM,ECXDESC,.ECXSAVE)
  1. I ECXSAVE("POP")=1 D S ECXPOP=1 Q
  1. .W !!,?5,"Try again later... exiting.",!
  1. .K @SCRNARR@("DIVISION")
  1. .D AUDIT^ECXKILL
  1. I ECXSAVE("ZTSK")=0 D
  1. .K ECXSAVE,ECXPGM,ECXDESC
  1. .D START^ECXLBBC
  1. I IO'=IO(0) D ^%ZISC
  1. D HOME^%ZIS S ECXPOP=1
  1. D AUDIT^ECXKILL
  1. Q
  1. EXTRACT ;build extract tmp
  1. N ECXEXT,IEN,NODE0,ECXDFN,ECXTDT,ECXTTM,ECXCOMP
  1. S ECXEXT=ECXARRAY("EXTRACT")
  1. S IEN=0 F S IEN=$O(^ECX(727.829,"AC",ECXEXT,IEN)) Q:IEN="" D
  1. . S NODE0=$G(^ECX(727.829,IEN,0)),ECXDFN=$P(NODE0,"^",5)
  1. . S ECXTDT=$P(NODE0,"^",10)
  1. . I ($E(ECXTDT,1)+1_$E(ECXTDT,3,8))>ECED Q
  1. . I ($E(ECXTDT,1)+1_$E(ECXTDT,3,8))<ECSD Q
  1. . S ECXTTM=$P(NODE0,"^",11),ECXCOMP=$P(NODE0,"^",13)
  1. . N ECCOUNT S ECCOUNT=0
  1. . F S ECCOUNT=ECCOUNT+1 Q:'$D(^TMP("ECXLBBC",$J,$S($G(ECXCFLG)=1:ECXCOMP,1:"ZZNOZZ"),ECXDFN,ECXTDT_"."_ECXTTM_"."_ECCOUNT,"X"))
  1. . S ^TMP("ECXLBBC",$J,$S($G(ECXCFLG)=1:ECXCOMP,1:"ZZNOZZ"),ECXDFN,ECXTDT_"."_ECXTTM_"."_ECCOUNT,"X")="^"_$P(NODE0,"^",4,99)
  1. Q