| 1 | ECXSARXS ;BIR/DMA-SAS Report from Prescription Extract; 22 Sep 95 / 10:27 AM | 
|---|
| 2 | ;;3.0;DSS EXTRACTS;**8**;Dec 22, 1997 | 
|---|
| 3 | ; | 
|---|
| 4 | EN ;entry point from menu option | 
|---|
| 5 | W @IOF,!!,"Prescription Extract SAS Report",!! | 
|---|
| 6 | ;ecxaud=1 for 'sas' audit | 
|---|
| 7 | S ECXHEAD="PRE",ECXAUD=1 | 
|---|
| 8 | ;select extract | 
|---|
| 9 | D AUDIT^ECXUTLA(ECXHEAD,.ECXERR,.ECXARRAY,ECXAUD) | 
|---|
| 10 | I ECXERR D AUDIT^ECXKILL Q | 
|---|
| 11 | ;select all pharmacy sites/divisions | 
|---|
| 12 | S ECXALL=1 D PRE^ECXDVSN1(.ECXDIV,ECXALL,.ECXERR) | 
|---|
| 13 | I ECXERR D AUDIT^ECXKILL Q | 
|---|
| 14 | W !! | 
|---|
| 15 | S ECXPGM="PROCESS^ECXSARXS",ECXDESC="Prescription Extract SAS Report" | 
|---|
| 16 | S ECXSAVE("ECXHEAD")="",ECXSAVE("ECXDIV(")="",ECXSAVE("ECXARRAY(")="" | 
|---|
| 17 | W ! | 
|---|
| 18 | D DEVICE^ECXUTLA(ECXPGM,ECXDESC,.ECXSAVE) | 
|---|
| 19 | I ECXSAVE("POP")=1 D  Q | 
|---|
| 20 | .W !!,?5,"Try agian later... exiting.",! | 
|---|
| 21 | .D AUDIT^ECXKILL | 
|---|
| 22 | I ECXSAVE("ZTSK")=0 D | 
|---|
| 23 | .K ECXSAVE,ECXPGM,ECXDESC | 
|---|
| 24 | .D PROCESS | 
|---|
| 25 | I IO'=IO(0) D ^%ZISC | 
|---|
| 26 | D HOME^%ZIS | 
|---|
| 27 | D AUDIT^ECXKILL | 
|---|
| 28 | Q | 
|---|
| 29 | ; | 
|---|
| 30 | PROCESS ;queued entry | 
|---|
| 31 | N J,X,Y,JJ,SS,LN,PG,DIV,EC,ECFK,ECFL,ECQ,MAIL,NEWRX,COPAY,DEA,TOT,QFLG,DIQ,DR,DA,DIR,DIRUT,DTOUT,DUOUT | 
|---|
| 32 | K ^TMP($J,"ECXAUD") | 
|---|
| 33 | S ECXEXT=ECXARRAY("EXTRACT"),ECXDEF=ECXARRAY("DEF") | 
|---|
| 34 | S (QFLG,PG)=0,$P(LN,"-",80)="" | 
|---|
| 35 | ;get run date in external format | 
|---|
| 36 | D NOW^%DTC S Y=$E(%,1,12) D DD^%DT S ECXRUN=Y | 
|---|
| 37 | ;process the extract records | 
|---|
| 38 | S J="" F  S J=$O(^ECX(727.81,"AC",ECXEXT,J)) Q:'J  I $D(^ECX(727.81,J,0)) S EC=^(0) D | 
|---|
| 39 | .S DIV=$P(EC,U,10),MAIL=+$P(EC,U,13),NEWRX=+$P(EC,U,15),COPAY=+$P(EC,U,27),DEA=$P(EC,U,29) | 
|---|
| 40 | .;non-cmop rxs only | 
|---|
| 41 | .;feeder location is always "pre"_div | 
|---|
| 42 | .I MAIL'=2 D | 
|---|
| 43 | ..S ECFL="PRE"_DIV,ECFK=$P(EC,U,28),ECQ=+$P(EC,U,17) | 
|---|
| 44 | ..S ^(ECFK)=$G(^TMP($J,"ECXAUD",DIV,ECFL,ECFK))+ECQ | 
|---|
| 45 | ..;additional feeder key records for non-cmop rx | 
|---|
| 46 | ..S ECFK="BASIC",ECQ=1,^(ECFK)=$G(^TMP($J,"ECXAUD",DIV,ECFL,ECFK))+ECQ | 
|---|
| 47 | ..I MAIL=1 D | 
|---|
| 48 | ...S ECFK="VAMAIL",ECQ=1,^(ECFK)=$G(^TMP($J,"ECXAUD",DIV,ECFL,ECFK))+ECQ | 
|---|
| 49 | ...I NEWRX=1 D | 
|---|
| 50 | ....S ECFK="NEWVMOP",ECQ=1,^(ECFK)=$G(^TMP($J,"ECXAUD",DIV,ECFL,ECFK))+ECQ | 
|---|
| 51 | ..I MAIL=0&(NEWRX=1) D | 
|---|
| 52 | ...S ECFK="NEWWIN",ECQ=1,^(ECFK)=$G(^TMP($J,"ECXAUD",DIV,ECFL,ECFK))+ECQ | 
|---|
| 53 | ..I COPAY=1 D | 
|---|
| 54 | ...S ECFK="COPAY",ECQ=1,^(ECFK)=$G(^TMP($J,"ECXAUD",DIV,ECFL,ECFK))+ECQ | 
|---|
| 55 | ..I DEA="I" D | 
|---|
| 56 | ...S ECFK="PREDEASP",ECQ=1,^(ECFK)=$G(^TMP($J,"ECXAUD",DIV,ECFL,ECFK))+ECQ | 
|---|
| 57 | .;cmop rxs only | 
|---|
| 58 | .;feeder location is "cmopdsu"_div, "cmopdis"_div, and also "pre"_div | 
|---|
| 59 | .I MAIL=2 D | 
|---|
| 60 | ..S ECFL="CMOPDSU"_DIV,ECFK=$P(EC,U,28),ECQ=+$P(EC,U,17),^(ECFK)=$G(^TMP($J,"ECXAUD",DIV,ECFL,ECFK))+ECQ | 
|---|
| 61 | ..S ECFL="CMOPDIS"_DIV,ECFK="CMOPDISP",ECQ=1,^(ECFK)=$G(^TMP($J,"ECXAUD",DIV,ECFL,ECFK))+ECQ | 
|---|
| 62 | ..S ECFL="PRE"_DIV D | 
|---|
| 63 | ...;possibly three additional feeder key recods for cmop rx | 
|---|
| 64 | ...I NEWRX=1 D | 
|---|
| 65 | ....S ECFK="NEWCMOP",ECQ=1,^(ECFK)=$G(^TMP($J,"ECXAUD",DIV,ECFL,ECFK))+ECQ | 
|---|
| 66 | ...I COPAY=1 D | 
|---|
| 67 | ....S ECFK="COPAY",ECQ=1,^(ECFK)=$G(^TMP($J,"ECXAUD",DIV,ECFL,ECFK))+ECQ | 
|---|
| 68 | ...I DEA="I" D | 
|---|
| 69 | ....S ECFK="PREDEASP",ECQ=1,^(ECFK)=$G(^TMP($J,"ECXAUD",DIV,ECFL,ECFK))+ECQ | 
|---|
| 70 | ;print the report | 
|---|
| 71 | U IO | 
|---|
| 72 | S DIV="" F  S DIV=$O(^TMP($J,"ECXAUD",DIV)) Q:DIV=""  D  Q:QFLG | 
|---|
| 73 | .D HEADER | 
|---|
| 74 | .S ECFL="" F  S ECFL=$O(^TMP($J,"ECXAUD",DIV,ECFL)) Q:ECFL=""  D  Q:QFLG | 
|---|
| 75 | ..D:($Y+3>IOSL) HEADER Q:QFLG  W !,?3,ECFL | 
|---|
| 76 | ..S ECFK="" F  S ECFK=$O(^TMP($J,"ECXAUD",DIV,ECFL,ECFK)) Q:ECFK=""  S TOT=^(ECFK) D  Q:QFLG | 
|---|
| 77 | ...D:($Y+3>IOSL) HEADER Q:QFLG  W ?40,ECFK,?68,$$RJ^XLFSTR(TOT,5," "),! | 
|---|
| 78 | ;close | 
|---|
| 79 | I $E(IOST)'="C" W @IOF | 
|---|
| 80 | I $E(IOST)="C",'QFLG D | 
|---|
| 81 | .S SS=22-$Y F JJ=1:1:SS W ! | 
|---|
| 82 | .S DIR(0)="E" W ! D ^DIR K DIR | 
|---|
| 83 | D AUDIT^ECXKILL | 
|---|
| 84 | Q | 
|---|
| 85 | ; | 
|---|
| 86 | HEADER ;print the header | 
|---|
| 87 | D SASHEAD^ECXUTLA(DIV,ECXHEAD,.ECXDIV,.ECXARRAY,.PG) | 
|---|
| 88 | Q | 
|---|