| 1 | IBJDE1 ;ALB/RB - DM DATA EXTRACTION (MENU OPTIONS/TRANSMIT E-MAIL) ;15-APR-99 | 
|---|
| 2 | ;;2.0;INTEGRATED BILLING;**100,118,123,159,254,244**;21-MAR-94 | 
|---|
| 3 | ; | 
|---|
| 4 | VPE ; - View/print entries in IB DM EXTRACT DATA file (#351.71). | 
|---|
| 5 | I '$O(^IBE(351.71,0)) W !!,"There are no entries available.",*7 G ENQ | 
|---|
| 6 | ; | 
|---|
| 7 | S DIC="^IBE(351.71,",DIC(0)="AEMQZ",DIC("A")="Enter MONTH/YEAR: " | 
|---|
| 8 | D ^DIC K DIC G:Y'>0 ENQ S IB0=+Y,IBS=$P(Y(0),U,2),IBDT=Y(0,0) | 
|---|
| 9 | ; | 
|---|
| 10 | S DIC="^IBE(351.71,",BY=.01,(FR,TO)=IB0,DHD="W ?0 D VPH^IBJDE1" | 
|---|
| 11 | S FLDS="[IBJD DM V/P EXTRACTS]",L=0 D EN1^DIP W ! G VPE | 
|---|
| 12 | ; | 
|---|
| 13 | VPH ; - Heading for View/Print option. | 
|---|
| 14 | W "DIAGNOSTIC MEASURES SUMMARY EXTRACTIONS-",IBDT | 
|---|
| 15 | W " (Status: ",$S(IBS=3:"COMPLETED",IBS=2:"STARTED",1:"ON STANDBY"),")" | 
|---|
| 16 | W !!,"Summary Line Item",?58,"Total",! F X=1:1:80 W "-" | 
|---|
| 17 | Q | 
|---|
| 18 | ; | 
|---|
| 19 | DER ; - Disable/enable report(s) or extraction process. | 
|---|
| 20 | W ! S DIR(0)="Y",DIR("B")="NO" | 
|---|
| 21 | I $D(^IBE(351.7,"DISABLE")) D | 
|---|
| 22 | .S DIR("A",1)="The DM extract background job has been disabled." | 
|---|
| 23 | .S DIR("A")=" Do you want to re-enable it" | 
|---|
| 24 | E  S DIR("A")="Do you want to disable the DM extract background job" | 
|---|
| 25 | D ^DIR K DIR G:Y["^" ENQ I 'Y G DE1 | 
|---|
| 26 | I $D(^IBE(351.7,"DISABLE")) K ^("DISABLE") | 
|---|
| 27 | E  S ^IBE(351.7,"DISABLE")="" | 
|---|
| 28 | W " ...Done",*7 | 
|---|
| 29 | ; | 
|---|
| 30 | DE1 ; - List disabled reports, if any. | 
|---|
| 31 | I $D(^IBE(351.7,"DISABLE")) G ENQ ; DM extract background job disabled. | 
|---|
| 32 | ; | 
|---|
| 33 | I $D(^IBE(351.7,"AC",1)) D | 
|---|
| 34 | .W !!,"These DM reports have been disabled:",!! S X=0 | 
|---|
| 35 | .F  S X=$O(^IBE(351.7,"AC",1,X)) Q:'X  W ?3,$P($G(^IBE(351.7,X,0)),U),! | 
|---|
| 36 | E  W !!,"There are no disabled DM reports.",! | 
|---|
| 37 | ; | 
|---|
| 38 | DE2 S DIR(0)="PO^351.7:AEMQZ",DIR("A")="Enter REPORT NAME" | 
|---|
| 39 | S DIR("?")="^D DEH^IBJDE1" D ^DIR K DIR I Y'>0 G ENQ | 
|---|
| 40 | S IB0=+Y,IBFL=$P(Y(0),U,2) W !!,Y(0,0),! | 
|---|
| 41 | ; | 
|---|
| 42 | S DIR("A")="Do you want to "_$S(IBFL:"re-en",1:"dis")_"able this report" | 
|---|
| 43 | S DIR(0)="Y",DIR("B")="NO" D ^DIR K DIR I Y["^"!('Y) W ! G DE2 | 
|---|
| 44 | S DIE="^IBE(351.7,",DR=".02///"_$S('IBFL&(Y):1,1:"@"),DA=IB0 | 
|---|
| 45 | D ^DIE K DA,DIE,DR W " ...Done",*7 G DE1 | 
|---|
| 46 | ; | 
|---|
| 47 | DEH ; - Help message for disable/enable option. | 
|---|
| 48 | W !,"Enter the name of the report you want disabled or re-enabled." | 
|---|
| 49 | W !,"If the report you enter is disabled, the monthly DM extraction" | 
|---|
| 50 | W !,"process will not collect summary data from the report until you" | 
|---|
| 51 | W !,"re-enable it again." | 
|---|
| 52 | Q | 
|---|
| 53 | ; | 
|---|
| 54 | RTN ; - Help message for the field ROUTINE (entry point for the reprot) | 
|---|
| 55 | W !?9,"Enter the entry point for this report. You may enter  a  program" | 
|---|
| 56 | W !?9,"name (^ROUTINE), or a specific label of a  program (TAG^ROUTINE)" | 
|---|
| 57 | W !?9,"or you may also leave it blank.",! | 
|---|
| 58 | W !?9,"Obs: If this field is left blank, it means that the code respon-" | 
|---|
| 59 | W !?9,"     sible for extracting the data will be  invoked  by  another" | 
|---|
| 60 | W !?9,"     report.",! | 
|---|
| 61 | Q | 
|---|
| 62 | ; | 
|---|
| 63 | MAN1 ; - Manually start DM extraction process. | 
|---|
| 64 | I $D(^IBE(351.7,"DISABLE")) D  G ENQ | 
|---|
| 65 | .W !!,"The DM extract process has been disabled.",!,*7 | 
|---|
| 66 | S (IBX,X)=0 | 
|---|
| 67 | F  S X=$O(^IBE(351.71,X)) Q:'X  I $P(^(X,0),U,2)'=3 S IBX=IBX+1 | 
|---|
| 68 | I 'IBX W !,"All DM extracts on file have been transmitted.",!,*7 G ENQ | 
|---|
| 69 | ; | 
|---|
| 70 | M1A S DIC="^IBE(351.71,",DIC(0)="AEMQZ",DIC("A")="Enter DM extract date: " | 
|---|
| 71 | S DIC("S")="I $P(^(0),U,2)'=3" W ! D ^DIC K DIC I Y'>0 G ENQ | 
|---|
| 72 | S IBDT=+Y,IBN=Y(0),IBDT1=$$M1^IBJDE(IBDT,3),IBST=$P(IBN,U,2) | 
|---|
| 73 | S DIR("A")="Do you want to start the DM extract process for "_IBDT1 | 
|---|
| 74 | S DIR(0)="Y",DIR("B")="NO" D ^DIR K DIR I 'Y G ENQ | 
|---|
| 75 | I IBST=2 D  G:'Y ENQ | 
|---|
| 76 | .S DIR(0)="Y",DIR("B")="NO",IBS=$$M1^IBJDE($P(IBN,U,3),3) | 
|---|
| 77 | .S DIR("A",1)="The extract process for "_IBDT1_" began on "_IBS_"." | 
|---|
| 78 | .S DIR("A")="Do you want to restart it" W ! D ^DIR K DIR | 
|---|
| 79 | ; | 
|---|
| 80 | D BJ^IBJDE ; Start DM extraction background job. | 
|---|
| 81 | S IBS=$$M1^IBJDE($P($G(^IBE(351.71,IBDT,0)),U,3),3) | 
|---|
| 82 | W !!,"Extract process started on ",IBS,".",*7 S IBX=IBX-1 | 
|---|
| 83 | I IBX D  G:Y M1A | 
|---|
| 84 | .S DIR("A")="Do you want to start the process for another date" | 
|---|
| 85 | .S DIR(0)="Y",DIR("B")="NO" D ^DIR K DIR | 
|---|
| 86 | ; | 
|---|
| 87 | G ENQ | 
|---|
| 88 | ; | 
|---|
| 89 | MAN2 ; - Manually transmit DM extract file. | 
|---|
| 90 | I $D(^IBE(351.7,"DISABLE")) D  G ENQ | 
|---|
| 91 | .W !!,"The DM extract process has been disabled.",!,*7 | 
|---|
| 92 | S (IBX,X)=0 | 
|---|
| 93 | F  S X=$O(^IBE(351.71,X)) Q:'X  I $P(^(X,0),U,2)=3 S IBX=IBX+1 | 
|---|
| 94 | I 'IBX D  G ENQ | 
|---|
| 95 | .W !,"All DM extracts on file have NOT been completed.",!,*7 | 
|---|
| 96 | ; | 
|---|
| 97 | M2A S DIC="^IBE(351.71,",DIC(0)="AEMQZ",DIC("A")="Enter DM extract date: " | 
|---|
| 98 | S DIC("S")="I $P(^(0),U,2)=3" W ! D ^DIC K DIC I Y'>0 G ENQ | 
|---|
| 99 | S IBDT=+Y,IBN=Y(0),DIR(0)="Y",DIR("B")="NO" | 
|---|
| 100 | S DIR("A")="Are you sure you want to transmit for "_$$M1^IBJDE(IBDT,3) | 
|---|
| 101 | D ^DIR K DIR I 'Y G M2A | 
|---|
| 102 | M2B S $P(^IBE(351.71,IBDT,0),U,5)="" D XM(IBDT) | 
|---|
| 103 | I $G(XMZ) W " Done." | 
|---|
| 104 | E  D  G:Y M2B | 
|---|
| 105 | .S DIR(0)="Y",DIR("B")="NO" | 
|---|
| 106 | .S DIR("A")="The DM extract message failed to transmit...try again" | 
|---|
| 107 | .W !,*7 D ^DIR K DIR | 
|---|
| 108 | ; | 
|---|
| 109 | I IBX D  G:Y M2A | 
|---|
| 110 | .S DIR("A")="Do you want to start the process for another date" | 
|---|
| 111 | .S DIR(0)="Y",DIR("B")="NO" D ^DIR K DIR I Y S IBX=IBX-1 | 
|---|
| 112 | ; | 
|---|
| 113 | G ENQ | 
|---|
| 114 | ; | 
|---|
| 115 | MSG ; - DM extract reports message (shown when DM Menu is called up). | 
|---|
| 116 | S IBDT=$$M1^IBJDE(DT,1),IBDT1=$$M1^IBJDE(IBDT,3) | 
|---|
| 117 | I '$D(^IBE(351.71,IBDT,0)) G ENQ ; No extract data for this month yet. | 
|---|
| 118 | ; | 
|---|
| 119 | W @IOF S IBN=$G(^IBE(351.71,IBDT,0)),IBST=$P(IBN,U,2) I 'IBST G ENQ | 
|---|
| 120 | I IBST=1 D  G MSQ | 
|---|
| 121 | .W !,"The DM extract process for ",IBDT1," was initiated on " | 
|---|
| 122 | .W $$M1^IBJDE($P(IBN,U,3),3),!,"but it hasn't run yet.",! | 
|---|
| 123 | ; | 
|---|
| 124 | I IBST=3 D  G ENQ | 
|---|
| 125 | .W !,"The DM report data for ",IBDT1," has been successfully" | 
|---|
| 126 | .W !,"extracted on ",$$M1^IBJDE($P(IBN,U,4),3),". This data has been" | 
|---|
| 127 | .W !,"sent to the Central Collections mail group in FORUM.",*7 | 
|---|
| 128 | ; | 
|---|
| 129 | S DIC="^IBE(351.71,",BY="[IBJD DM REPT SORT]",FR=IBDT_",1",TO=IBDT_",2" | 
|---|
| 130 | S DIOEND="I $Y'<(IOSL-14) R X:DTIME",(IOP,L)=0 | 
|---|
| 131 | S DHD="W ?0 D MSH^IBJDE1",FLDS="[IBJD DM REPT PRINT]" D EN1^DIP | 
|---|
| 132 | ; | 
|---|
| 133 | MSQ W !,"If you want, you can restart the DM extract process" | 
|---|
| 134 | W !,"by using the ""Manually Start DM Extraction"" option in" | 
|---|
| 135 | W !,"the Diagnostic Measures Extract Menu." | 
|---|
| 136 | G ENQ | 
|---|
| 137 | ; | 
|---|
| 138 | MSH ; - DM extract reports message header. | 
|---|
| 139 | W !,"Data for the following DM reports have not been extracted" | 
|---|
| 140 | W !," for ",IBDT1,":",!!,*7 | 
|---|
| 141 | Q | 
|---|
| 142 | ; | 
|---|
| 143 | CHK ; - Check file #351.71 for completed and/or transmitted DM extracts | 
|---|
| 144 | ;   (shown when DM Extract Menu is called up). | 
|---|
| 145 | W @IOF,!,"Checking for completed and/or transmitted DM extracts" | 
|---|
| 146 | K IBX,IBX1 S (IBX,IBX1,IB0)=0 | 
|---|
| 147 | S DT=$$DT^XLFDT | 
|---|
| 148 | F  S IB0=$O(^IBE(351.71,IB0)) Q:'IB0  S IBN=$G(^(IB0,0)) D | 
|---|
| 149 | .; - Do not process for invalid (day not equal 00 or future) dates | 
|---|
| 150 | .;   and remove data. | 
|---|
| 151 | .I (+$E(IB0,6,7)>0)!(IB0>DT) D  Q | 
|---|
| 152 | ..W !,"** Invalid date entry found.  Entry ("_IB0_") deleted.**",! | 
|---|
| 153 | ..S DIK="^IBE(351.71,",DA=IB0 | 
|---|
| 154 | ..D ^DIK | 
|---|
| 155 | .; - Check for missing zero node. | 
|---|
| 156 | .I IBN="" W !,"Zero node data missing for "_IB0_" entry.  Data corruption possible.",! Q | 
|---|
| 157 | .; - Check for past months missing from file, if any. | 
|---|
| 158 | .I $O(^IBE(351.71,IB0)) D | 
|---|
| 159 | ..S IB1=$P(^IBE(351.71,0),U,4),IB2=IB0+$S($E(IB0,4,5)=12:8900,1:100) | 
|---|
| 160 | ..I $D(^IBE(351.71,"B",IB2,IB2))!(IB2>DT) Q | 
|---|
| 161 | ..S DIC="^IBE(351.71,",DIC(0)="L",DIC("DR")=".02///1",(DINUM,X)=IB2 | 
|---|
| 162 | ..K DD,DO D FILE^DICN S $P(^IBE(351.71,0),U,4)=IB1+1 K DIC,DINUM,DD,DO | 
|---|
| 163 | .; | 
|---|
| 164 | .I $P(IBN,U,2)'=3 S IBX(IB0)="" S:'IBX IBX=1 Q | 
|---|
| 165 | .E  I '$P(IBN,U,5) S IBX1(IB0)="" S:'IBX1 IBX1=1 Q | 
|---|
| 166 | .W "." | 
|---|
| 167 | ; | 
|---|
| 168 | I 'IBX,'IBX1 W "Done" G ENQ | 
|---|
| 169 | I IBX D | 
|---|
| 170 | .W !!,"DM data has NOT been fully extracted for these months:",!,*7 | 
|---|
| 171 | .S IB0=0 F  S IB0=$O(IBX(IB0)) Q:'IB0  W "  ",$$M1^IBJDE(IB0,3) | 
|---|
| 172 | .W !,"If you want, you can start the DM extract process for these" | 
|---|
| 173 | .W !,"months by using the ""Manually Start DM Extraction"" option." | 
|---|
| 174 | ; | 
|---|
| 175 | I IBX1 D | 
|---|
| 176 | .W !!,"DM data has NOT been transmitted for these months:",!,*7 | 
|---|
| 177 | .S IB0=0 F  S IB0=$O(IBX1(IB0)) Q:'IB0  W "  ",$$M1^IBJDE(IB0,3) | 
|---|
| 178 | .W !,"If you want, you can transmit the DM extract data for these" | 
|---|
| 179 | .W !,"months by using the ""Manually Transmit DM Extract"" option." | 
|---|
| 180 | ; | 
|---|
| 181 | G ENQ | 
|---|
| 182 | ; | 
|---|
| 183 | XM(IBDT) ; - Create/transmit DM extract file message. | 
|---|
| 184 | ; | 
|---|
| 185 | N DA,DIE,DR,IB0,IB1,IBC,IBDT1,IBMG,IBSTE,X,XMDUZ,XMSUB,XMTEXT | 
|---|
| 186 | ; | 
|---|
| 187 | K ^TMP("DME",$J) S IBSTE=$$SITE^VASITE,X=$E(DT,4,7)_(1700+$E(DT,1,3)) | 
|---|
| 188 | S ^TMP("DME",$J,1)="HDR^"_$P(IBSTE,U,3)_U_$P(IBSTE,U,2)_U_X | 
|---|
| 189 | S IBC=1,IB0=0 | 
|---|
| 190 | F  S IB0=$O(^IBE(351.71,IBDT,1,IB0)) Q:'IB0  D | 
|---|
| 191 | .Q:IB0=37  ; No unbilled report needed | 
|---|
| 192 | .S X=$S(IB0=8:$$M2^IBJDE(IBDT,5,3,1),1:$$M1^IBJDE(IBDT,2)) | 
|---|
| 193 | .S IBC=IBC+1,^TMP("DME",$J,IBC)="DAT~"_IB0_"~"_$P(X,U)_"~"_$P(X,U,2) | 
|---|
| 194 | .S IB1=0 F  S IB1=$O(^IBE(351.71,IBDT,1,IB0,1,IB1)) Q:'IB1  D | 
|---|
| 195 | ..S X=$P($G(^IBE(351.71,IBDT,1,IB0,1,IB1,0)),U,2) | 
|---|
| 196 | ..S ^TMP("DME",$J,IBC)=^TMP("DME",$J,IBC)_U_X | 
|---|
| 197 | ; | 
|---|
| 198 | S ^TMP("DME",$J,IBC+1)="END^"_$P(IBSTE,U,3),IBDT1=$$M1^IBJDE(IBDT,3) | 
|---|
| 199 | S XMSUB="DIAG. MEASURES EXTRACT FILE-"_IBDT1_" ("_$P(IBSTE,U,2)_")" | 
|---|
| 200 | ; | 
|---|
| 201 | S IBMG=$P($G(^IBE(350.9,1,4)),U,5) I IBMG="" G ENQ:'$G(IBX),ENQ1 | 
|---|
| 202 | ; | 
|---|
| 203 | S XMDUZ="INTEGRATED BILLING PACKAGE" | 
|---|
| 204 | S XMTEXT="^TMP(""DME"",$J,",XMY(IBMG)="" | 
|---|
| 205 | D SEND | 
|---|
| 206 | I $G(XMZ) S DIE="^IBE(351.71,",DA=IBDT,DR=".05///1;.06///"_XMZ D ^DIE | 
|---|
| 207 | ; | 
|---|
| 208 | I $G(IBX) G ENQ1 ; Return to DME manual transmit option. | 
|---|
| 209 | ; | 
|---|
| 210 | ENQ K IB2,IBDT2,IBD1,IBD2,IBDT,IBFL,IBFR,IBN,IBS,IBST,IBST1,IBX,IBX1,BY,DHD | 
|---|
| 211 | K DIC,DIOEND,FLDS,FR,IOP,L,TO,X,XMZ,Y,% | 
|---|
| 212 | ENQ1 K IB0,IB1,IBC,IBDT1,IBMG,IBSTE,XMSUB,XMTEXT,XMY,^TMP("DME",$J) | 
|---|
| 213 | Q | 
|---|
| 214 | ; | 
|---|
| 215 | SEND ; Calls ^XMD to send the mail message with the data extracted | 
|---|
| 216 | ; Obs: By NEWing DUZ, ^XMD will assume DUZ=.5 (Sender=POSTMASTER) | 
|---|
| 217 | ; | 
|---|
| 218 | N DUZ D ^XMD | 
|---|
| 219 | Q | 
|---|