| 1 | ECXPLBB ;DALOI/KML - DSS BLOOD BANK PRE-EXTRACT AUDIT REPORT ; 8/13/07 7:08am | 
|---|
| 2 | ;;3.0;DSS EXTRACTS;**78,92,105**;Dec 22, 1997;Build 70 | 
|---|
| 3 | ;Per VHA Directive 97-033 this routine should not be modified.  Medical Device # BK970021 | 
|---|
| 4 | ;entry point from option | 
|---|
| 5 | D SETUP^ECXLBB I ECFILE="" Q | 
|---|
| 6 | N ECXINST | 
|---|
| 7 | D DATES | 
|---|
| 8 | Q:ECED']""&(ECSD']"") | 
|---|
| 9 | N ECXPOP S ECXPOP=0 D QUE Q:ECXPOP | 
|---|
| 10 | ; | 
|---|
| 11 | START ;  entry point from tasked job | 
|---|
| 12 | ; get LAB DATA and build temporary global ^TMP("ECXLBB",$J) | 
|---|
| 13 | N ECTRSP,ECADMT,ECTODT,ECXRPT,ECOUT,ECXSTR,ECRDT,ECLINE,ECPG,ECQUIT | 
|---|
| 14 | N ECD,ECXDFN,ECARRY,EC66,ECERR,ECTRFDT,ECTRFTM,ECX,ECINOUT,ECXJOB | 
|---|
| 15 | N ECXLOGIC | 
|---|
| 16 | S ECXJOB=$J | 
|---|
| 17 | K ^TMP("ECXLBB",ECXJOB) | 
|---|
| 18 | U IO | 
|---|
| 19 | I $E(IOST,1,2)="C-" W !,"Retrieving records... " | 
|---|
| 20 | S ECXRPT=1 D AUDRPT^ECXLBB | 
|---|
| 21 | OUTPUT ; entry point called by EN tag | 
|---|
| 22 | I '$D(^TMP("ECXLBB",ECXJOB)) W !,"There were no records that met the date range criteria" Q | 
|---|
| 23 | S (ECPG,ECDATE,ECQUIT,ECXDFN)=0,ECLINE="",$P(ECLINE,"=",80)="=" | 
|---|
| 24 | S ECSDN=$$FMTE^XLFDT(ECSD,9),ECEDN=$$FMTE^XLFDT(ECED,9),ECRDT=$$FMTE^XLFDT(DT,9) | 
|---|
| 25 | W:$E(IOST,1,2)="C-" @IOF D HED | 
|---|
| 26 | F  S ECXDFN=$O(^TMP("ECXLBB",ECXJOB,ECXDFN)) Q:'ECXDFN  F  S ECDATE=$O(^TMP("ECXLBB",ECXJOB,ECXDFN,ECDATE))  Q:'ECDATE  Q:ECQUIT  S ECXSTR=^(ECDATE) D PRINT | 
|---|
| 27 | D ^ECXKILL | 
|---|
| 28 | Q | 
|---|
| 29 | ; | 
|---|
| 30 | PRINT ; | 
|---|
| 31 | I $Y+5>IOSL D  Q:ECQUIT | 
|---|
| 32 | . I $E(IOST,1,2)["C-" S DIR(0)="E" D ^DIR K DIR I 'Y S ECQUIT=1 Q | 
|---|
| 33 | . W @IOF D HED | 
|---|
| 34 | W !,$P(ECXSTR,"^",5),?11,$P(ECXSTR,"^",4),?26,$P(ECXSTR,"^",16) | 
|---|
| 35 | W ?37,$$FMTE^XLFDT($$HL7TFM^XLFDT($P(ECXSTR,"^",8)),2) | 
|---|
| 36 | W ?49,$P(ECXSTR,"^",11),?60,$J(+$P(ECXSTR,"^",12),2) | 
|---|
| 37 | Q | 
|---|
| 38 | ; | 
|---|
| 39 | HED ; | 
|---|
| 40 | S ECPG=ECPG+1 | 
|---|
| 41 | W !,"LBB Extract Audit Report",?72,"Page",$J(ECPG,3) | 
|---|
| 42 | W !,ECSDN," - ",ECEDN,?58,"Run Date:",$J(ECRDT,12) | 
|---|
| 43 | W !,?37,"Transf",?57,"Number" | 
|---|
| 44 | W !,"Name",?14,"SSN",?25,"FDR LOC",?37,"Date",?49,"COMP" | 
|---|
| 45 | W ?57,"of Units" | 
|---|
| 46 | W !,ECLINE | 
|---|
| 47 | Q | 
|---|
| 48 | DATES ; | 
|---|
| 49 | N OUT,CHKFLG | 
|---|
| 50 | I '$D(ECNODE) S ECNODE=7 | 
|---|
| 51 | I '$D(ECHEAD) S ECHEAD=" " | 
|---|
| 52 | W @IOF,!,"LBB Extract Audit Report Information for DSS",!! | 
|---|
| 53 | S:'$D(ECINST) ECINST=+$P(^ECX(728,1,0),U) | 
|---|
| 54 | S ECXINST=ECINST | 
|---|
| 55 | K ECXDIC S DA=ECINST,DIC="^DIC(4,",DIQ(0)="I",DIQ="ECXDIC",DR=".01;99" | 
|---|
| 56 | D EN^DIQ1 S ECINST=$G(ECXDIC(4,DA,99,"I")) K DIC,DIQ,DA,DR,ECXDIC | 
|---|
| 57 | S ECLDT=$S($D(^ECX(728,1,ECNODE)):$P(^(ECNODE),U,ECPIECE),1:2610624) | 
|---|
| 58 | S:ECLDT="" ECLDT=2610624 | 
|---|
| 59 | S ECOUT=0 F  S (ECED,ECSD)="" D  Q:ECOUT | 
|---|
| 60 | . K %DT S %DT="AEX",%DT("A")="Starting with Date: " D ^%DT | 
|---|
| 61 | . I Y<0 S ECOUT=1 Q | 
|---|
| 62 | . S ECSD=Y | 
|---|
| 63 | . K %DT S %DT="AEX",%DT("A")="Ending with Date: " D ^%DT | 
|---|
| 64 | . I Y<0 S ECOUT=1 Q | 
|---|
| 65 | . I Y<ECSD W !!,"The ending date cannot be earlier than the starting date.",!,"Please try again.",!! Q | 
|---|
| 66 | . I $E(Y,1,5)'=$E(ECSD,1,5) W !!,"Beginning and ending dates must be in the same month and year.",!,"Please try again.",!! Q | 
|---|
| 67 | . S ECED=Y | 
|---|
| 68 | . I ECLDT'<ECSD W !!,"The Blood Bank information has already been extracted through ",$$FMTE^XLFDT(ECLDT),".",!,"Please enter a new date range.",!! Q | 
|---|
| 69 | . S ECOUT=1 | 
|---|
| 70 | Q | 
|---|
| 71 | ; | 
|---|
| 72 | QUE ; | 
|---|
| 73 | K ZTSAVE | 
|---|
| 74 | S ECSDN=$$FMTE^XLFDT(ECSD),ECEDN=$$FMTE^XLFDT(ECED),ECSD1=ECSD-.1 | 
|---|
| 75 | K ZTSAVE | 
|---|
| 76 | F X="ECINST","ECED","ECSD","ECSD1","ECEDN","ECSDN" S ZTSAVE(X)="" | 
|---|
| 77 | F X="ECPACK","ECPIECE","ECRTN","ECGRP","ECNODE" S ZTSAVE(X)="" | 
|---|
| 78 | F X="ECFILE","ECHEAD","ECVER","ECINST","ECXINST" S ZTSAVE(X)="" | 
|---|
| 79 | F X="ECXLOGIC","ECXDATES" S ZTSAVE(X)="" | 
|---|
| 80 | S ZTDESC=ECPACK_" EXTRACT AUDIT REPORT: "_ECSDN_" TO "_ECEDN,ZTRTN="START^ECXPLBB",ZTIO="" | 
|---|
| 81 | S IOP="Q" W ! S %ZIS="QMP" D ^%ZIS S:POP ECXPOP=1 Q:POP  I $D(IO("Q")) K IO("Q"),ZTIO D ^%ZTLOAD W:$D(ZTSK) !,$C(7),"REQUEST QUEUED",!,"Task #: ",$G(ZTSK) K I,ZTSK,ZTIO,ZTSAVE,ZTRTN D HOME^%ZIS S ECXPOP=1 | 
|---|
| 82 | Q | 
|---|
| 83 | ; | 
|---|
| 84 | EN(ECXJOB,ECSD,ECED) ; entry point used primarily for testing | 
|---|
| 85 | ; input: | 
|---|
| 86 | ;        ECXJOB = $J that is assigned to the 2nd subscript of | 
|---|
| 87 | ;                 the temporary global array containing the | 
|---|
| 88 | ;                 extracted data that feeds the pre-extract | 
|---|
| 89 | ;                 audit report | 
|---|
| 90 | ;        ECSD   = starting date range representing the FM | 
|---|
| 91 | ;                 date used to retrieve data from file #63 | 
|---|
| 92 | ;        ECED   = ending date range representing the FM date | 
|---|
| 93 | ;                 used to retrieve data from file #63 | 
|---|
| 94 | ; syntax  of the call: D EN^ECXPLBB(541571372,3000101,3000131) | 
|---|
| 95 | D OUTPUT | 
|---|
| 96 | Q | 
|---|
| 97 | ; | 
|---|
| 98 | ;ECXPLBB | 
|---|