1 | ECXTRANS ;ALB/GTS,JAP,BIR/DMA-Extract from Local Editing Files and Transmit ; 12/14/04 9:10am
|
---|
2 | ;;3.0;DSS EXTRACTS;**2,9,12,8,13,14,23,24,33,49,54,75,71**;Dec 22, 1997
|
---|
3 | EN ;entry point
|
---|
4 | N ECDA,ECRE,ECTMP,ECCHK,ECDIVVR,ECXDIQ,JJ,SS,OUT,DIR,DUOUT
|
---|
5 | N DTOUT,DIRUT,DIC,X,Y,ECXLOGIC,ECSD,FODMN
|
---|
6 | S ECXQUEUE=$P($G(^ECX(728,1,"QUEUE")),"^",1)
|
---|
7 | I ECXQUEUE'?1"DM"1U D Q
|
---|
8 | .W !,"You have not defined a proper transmission queue"
|
---|
9 | .W !,"for entry number 1 in the DSS EXTRACTS file (#728)."
|
---|
10 | .W !,"No transmission allowed."
|
---|
11 | .D PAUSE
|
---|
12 | ;** check divisions for transmission
|
---|
13 | S ECCHK=$$DIV4^XUSER(.ECTMP,DUZ)
|
---|
14 | I 'ECCHK D Q
|
---|
15 | .W !,"You do not have any divisions defined in your user set up and cannot transmit."
|
---|
16 | .S DIR(0)="FAO^1:1",DIR("A")="Hit Return to continue." D ^DIR K DIR,X,Y
|
---|
17 | W !!,"Your user setup will only allow you to transmit extracts from the"
|
---|
18 | W !,"following divisions:",!
|
---|
19 | S ECDIVVR=""
|
---|
20 | F S ECDIVVR=$O(ECTMP(ECDIVVR)) Q:'(+ECDIVVR) D
|
---|
21 | .K ECXDIC S DA=ECDIVVR,DIC="^DIC(4,",DIQ(0)="I",DIQ="ECXDIC",DR=".01"
|
---|
22 | .D EN^DIQ1 W !," ",$G(ECXDIC(4,DA,.01,"I")) K DIC,DIQ,DA,DR,ECXDIC
|
---|
23 | W !!,"If you can't select an extract, it is probably from another division.",!
|
---|
24 | D PAUSE Q:OUT
|
---|
25 | AGAIN S ECRE="",DIC="^ECX(727,",DIC(0)="AEQM"
|
---|
26 | S DIC("A")="Transmit which extract: "
|
---|
27 | S DIC("S")="I '$D(^ECX(727,+Y,""L"")),'$D(^ECX(727,+Y,""PURG"")),$D(ECTMP(+$P($G(^ECX(727,+Y,""DIV"")),U,1)))"
|
---|
28 | D ^DIC
|
---|
29 | I Y<0 W !! Q
|
---|
30 | ;get data on extract
|
---|
31 | S DR="1;2;3;4;5;6;14;15",(ECDA,DA)=+Y,DIQ(0)="IE",DIQ="ECXDIQ" D EN^DIQ1
|
---|
32 | I ECXDIQ(727,ECDA,14,"I")="" D
|
---|
33 | .S ECXDIQ(727,ECDA,14,"I")=$$FISCAL^ECXUTL1(ECXDIQ(727,ECDA,3,"I"))
|
---|
34 | .S ECXDIQ(727,ECDA,14,"E")=ECXDIQ(727,ECDA,14,"I")
|
---|
35 | S ECXLOGIC=ECXDIQ(727,ECDA,14,"I")
|
---|
36 | S ECSD=ECXDIQ(727,ECDA,3,"I")
|
---|
37 | W !!,ECXDIQ(727,ECDA,6,"E")_" Extract (#"_ECDA_")",?42,"Records: ",ECXDIQ(727,ECDA,5,"E")
|
---|
38 | W !,"Generated on: ",ECXDIQ(727,ECDA,1,"E"),?42,"Start date: ",ECXDIQ(727,ECDA,3,"E")
|
---|
39 | W !,"Division: ",$E(ECXDIQ(727,ECDA,15,"E"),1,26),?42,"End date: ",ECXDIQ(727,ECDA,4,"E")
|
---|
40 | S X=$E(ECXDIQ(727,ECDA,14,"I"),5) S X=$S((X="")!(X=" "):"",1:"revision "_X_" of ")
|
---|
41 | W !!,"The data was extracted using "_X_"fiscal year "_$E(ECXDIQ(727,ECDA,14,"I"),1,4)_" logic."
|
---|
42 | W !!,"MailMan transmission of the "_ECXDIQ(727,ECDA,2,"E")_" extract is set to a"
|
---|
43 | W !,"limit of 131,000 bytes per message. Each extract record ends with a ^~."
|
---|
44 | I $G(^ECX(727,ECDA,"TR")) S ECX=^("TR") D Q:OUT
|
---|
45 | .S OUT=0
|
---|
46 | .W !!,"This extract was transmitted on ",$TR($$FMTE^XLFDT(ECX,"5DF")," ","0")
|
---|
47 | .K ECX S DIR(0)="Y",DIR("A")="Do you want to retransmit " D ^DIR K DIR
|
---|
48 | .I 'Y S OUT=1 Q
|
---|
49 | .K ^ECX(727,ECDA,"TR")
|
---|
50 | .S ECRE="re"
|
---|
51 | S ECTYPE=$P(^ECX(727,ECDA,0),U,3),ECIEN=+$O(^ECX(727.1,"AC",ECTYPE,0))
|
---|
52 | S ECPIECE=$P($G(^ECX(727.1,ECIEN,0)),U,10)
|
---|
53 | I ECPIECE>0,$P($G(^ECX(728,1,7.1)),U,ECPIECE)]"" D Q
|
---|
54 | .D MES^XPDUTL(" ")
|
---|
55 | .D MES^XPDUTL("An "_ECTYPE_" Extract is currently running or scheduled to run.")
|
---|
56 | .D MES^XPDUTL("Please wait until that job has completed before attempting")
|
---|
57 | .D MES^XPDUTL("this transmission.")
|
---|
58 | .D MES^XPDUTL(" ")
|
---|
59 | .D PAUSE
|
---|
60 | S ZTSK=$G(^ECX(727,ECDA,"Q"))
|
---|
61 | I ZTSK D STAT^%ZTLOAD I ZTSK(0) I ZTSK(1)<3 D Q
|
---|
62 | .W !!,"Task ",ZTSK," is already queued to transmit this extract."
|
---|
63 | .K ZTSK
|
---|
64 | .D PAUSE
|
---|
65 | S FODMN=$$FODMN()
|
---|
66 | ;Field office reminder
|
---|
67 | I FODMN D
|
---|
68 | .W !
|
---|
69 | .W !,"** This extract is being sent from a field office domain. **"
|
---|
70 | .W !,"** Extract message(s) will only be delivered to you and **"
|
---|
71 | .W !,"** will be placed into your 'DSSXMIT' mail basket. **"
|
---|
72 | .W !
|
---|
73 | .;Ensure user has a DSSXMIT mail basket
|
---|
74 | .N TMPARR
|
---|
75 | .D LISTBSKT^XMXAPIB(DUZ,,,,"DSSXMIT","TMPARR")
|
---|
76 | .I '$D(TMPARR("XMLIST","BSKT","DSSXMIT")) D
|
---|
77 | ..;Create DSSXMIT basket
|
---|
78 | ..N IEN,XMERR
|
---|
79 | ..D CRE8BSKT^XMXAPIB(DUZ,"DSSXMIT",.IEN)
|
---|
80 | ..K ^TMP("XMERR",$J)
|
---|
81 | ;Test queue clearance
|
---|
82 | ;I 'FODMN I (ECXLOGIC'=$$FISCAL^ECXUTL1(ECSD))!((ECXLOGIC>$$FISCAL^ECXUTL1(DT))!(ECXLOGIC=$$FISCAL^ECXUTL1(DT))) D Q:OUT
|
---|
83 | ;.S OUT=0
|
---|
84 | ;.K DIR
|
---|
85 | ;.S DIR(0)="Y"
|
---|
86 | ;.S DIR("A",1)="** This extract will be transmitted to the AAC test queue **"
|
---|
87 | ;.S DIR("A")="Do you want to continue "
|
---|
88 | ;.W !! D ^DIR
|
---|
89 | ;.I 'Y S OUT=1 Q
|
---|
90 | ;.S ECXQUEUE=$P($G(^ECX(728,1,"QUEUE")),"^",2)
|
---|
91 | ;.S:ECXQUEUE="" ECXQUEUE="DMT"
|
---|
92 | S ZTSAVE("ECDA")="",ZTSAVE("ECXQUEUE")="",ZTSAVE("ECRE")=""
|
---|
93 | S ZTRTN="START^ECXTRANS",ZTIO=""
|
---|
94 | S ZTDESC="Transmission of extract # "_ECDA
|
---|
95 | W !! D ^%ZTLOAD
|
---|
96 | I $D(ZTSK) D
|
---|
97 | .W !,"Request queued as Task #",ZTSK,"."
|
---|
98 | .S ^ECX(727,ECDA,"Q")=ZTSK K ZTSK
|
---|
99 | .D PAUSE
|
---|
100 | Q
|
---|
101 | ; entry point for task
|
---|
102 | START N DA,DIC,DIQ,DR,ECAR1,ECAR2,ECC1,ECC2,ECED,ECGPR,ECF,ECGRP,ECHEAD,ECINST
|
---|
103 | N ECMAX,ECMAXR,ECMSN,ECPACK,ECSIZ,ECVER,ECXDIC,I,J,EXDT
|
---|
104 | N STR,STRCNT,X,ECSD,ECXLOGIC
|
---|
105 | S:$P(^ECX(727,ECDA,0),U,3)'="Prosthetics" ECINST=$P(^ECX(728,1,0),U)
|
---|
106 | S:$P(^ECX(727,ECDA,0),U,3)="Prosthetics" ECINST=$P(^("DIV"),U)
|
---|
107 | S DA=ECINST,DIC="^DIC(4,",DIQ(0)="I",DIQ="ECXDIC",DR=".01;99"
|
---|
108 | D EN^DIQ1 S ECINST=$G(ECXDIC(4,DA,99,"I"))
|
---|
109 | S ECF=^ECX(727,ECDA,"FILE"),ECHEAD=^("HEAD"),ECGRP=^("GRP")
|
---|
110 | S X=^(0),ECPACK=$P(X,U,3),ECSD=$P(X,U,4),ECED=$P(X,U,5)
|
---|
111 | S X=$G(^("VER")),ECVER=$P(X,"^",1),ECXLOGIC=$P(X,"^",2)
|
---|
112 | S:'ECVER ECVER=1 S ECVER=$$RJ^XLFSTR(ECVER,3,0)
|
---|
113 | I ECXLOGIC="" S ECXLOGIC=$$FISCAL^ECXUTL1(ECSD)
|
---|
114 | S ECXLOGIC=$$PAD^ECXUTL1(ECXLOGIC,5,"B"," ")
|
---|
115 | I ECPACK["(setup)" S ECXQUEUE="DMU"
|
---|
116 | K ^TMP($J)
|
---|
117 | S ECHD(1)=ECINST_ECHEAD_$$ECXYM^ECXUTL(ECED)_ECVER_ECXLOGIC
|
---|
118 | S ECMAX=130000,ECMAXR=250,ECLN=2,ECMSN=1,(ECRN,ECSIZ)=0,J=""
|
---|
119 | F S J=$O(^ECX(ECF,"AC",ECDA,J)) Q:('J) D
|
---|
120 | .M ECAR1=^ECX(ECF,J) S (ECAR2,ECC2)=1,(ECAR2(ECC2),ECC1)=""
|
---|
121 | .F S ECC1=$O(ECAR1(ECC1)) Q:ECC1="" D
|
---|
122 | ..S:ECC1=0 ECAR1(ECC1)=$P(ECAR1(ECC1),"^",4,999)
|
---|
123 | ..S ECAR2(ECC2)=ECAR2(ECC2)_ECAR1(ECC1) I $L(ECAR2(ECC2))>ECMAXR D
|
---|
124 | ...F I=ECMAXR:-1:1 Q:$E(ECAR2(ECC2),I)="^"
|
---|
125 | ...S (X,ECAR2)=ECAR2+1,ECAR2(X)=$E(ECAR2(ECC2),I+1,$L(ECAR2(ECC2)))
|
---|
126 | ...S ECAR2(ECC2)=$E(ECAR2(ECC2),1,I),ECC2=X
|
---|
127 | .S ECAR2(ECC2)=ECAR2(ECC2)_"^~",ECRN=ECRN+1,X=""
|
---|
128 | .F S X=$O(ECAR2(X)) Q:X="" D
|
---|
129 | ..S ^TMP($J,ECMSN,ECLN,0)=ECAR2(X),ECLN=ECLN+1,ECSIZ=ECSIZ+$L(ECAR2(X))
|
---|
130 | .K ECAR1,ECAR2
|
---|
131 | .I (ECSIZ>ECMAX),($O(^ECX(ECF,"AC",ECDA,J))) D
|
---|
132 | ..S ECLN=2,ECMSN=ECMSN+1,ECSIZ=0
|
---|
133 | ;quit if user stopped task
|
---|
134 | I $$S^%ZTLOAD D CLEAN Q
|
---|
135 | ;generate mailman messages to aac
|
---|
136 | S ECXLNCNT=9,(ECXXMZ,STRCNT)=0,STR=""
|
---|
137 | F ECMS=1:1:ECMSN D
|
---|
138 | .D SEND(.ECXXMZ)
|
---|
139 | .S STR=STR_$$RJ^XLFSTR(ECXXMZ,18," "),STRCNT=STRCNT+1 I STRCNT=4 D
|
---|
140 | ..S ^TMP($J,"LOC",ECXLNCNT,0)=STR,ECXLNCNT=ECXLNCNT+1
|
---|
141 | ..S STR="",STRCNT=0
|
---|
142 | I STR]"" S ^TMP($J,"LOC",ECXLNCNT,0)=STR
|
---|
143 | ;send msg to local dss grp
|
---|
144 | D SENDLOC,CLEAN
|
---|
145 | Q
|
---|
146 | ;
|
---|
147 | SEND(ECXXMZ) ;send individual messages
|
---|
148 | N ECXDD,DA,DIC,DIE,DINUM,X,Y,Z,XMDUZ,XMTEXT,XMSUB,XMY,XMZ,FODMN
|
---|
149 | S XMSUB="("_ECGRP_") "_ECINST_" - "_ECPACK_" DSS EXTRACT, MESSAGE "_ECMS_" OF "_ECMSN
|
---|
150 | S XMDUZ="DSS SYSTEM",^TMP($J,ECMS,1,0)=ECHD(1)
|
---|
151 | S XMY("XXX@Q-"_ECXQUEUE_".VA.GOV")=""
|
---|
152 | ;Send extracts done at field offices to user instead of AAC
|
---|
153 | S FODMN=$$FODMN()
|
---|
154 | I FODMN D
|
---|
155 | .K XMY
|
---|
156 | .S XMY(DUZ)=""
|
---|
157 | S XMTEXT="^TMP($J,ECMS,"
|
---|
158 | D ^XMD
|
---|
159 | S ECXXMZ=XMZ
|
---|
160 | ;store msg# in extract log
|
---|
161 | D FIELD^DID(727,301,"","SPECIFIER","ECXDD")
|
---|
162 | S DA(1)=ECDA,DIC(0)="L",DIC("P")=ECXDD("SPECIFIER")
|
---|
163 | S DIC="^ECX(727,"_DA(1)_",1,",X=XMZ,DINUM=X
|
---|
164 | K DD,DO D FILE^DICN
|
---|
165 | ;Move message to DSSXMIT basket if sending from field office
|
---|
166 | I FODMN D
|
---|
167 | .N XMERR
|
---|
168 | .D MOVEMSG^XMXAPI(DUZ,,XMZ,"DSSXMIT",.X)
|
---|
169 | .K ^TMP("XMERR",$J)
|
---|
170 | Q
|
---|
171 | ;
|
---|
172 | SENDLOC ; send message to mail group 'DSS-ECGRP'
|
---|
173 | S TIME=$P($$HTE^XLFDT($H),":",1,2)
|
---|
174 | S XMSUB=ECINST_" - "_ECPACK_" EXTRACT FOR DSS",XMDUZ="DSS SYSTEM"
|
---|
175 | K XMY S XMY(DUZ)="",XMY("G.DSS-"_ECGRP_"@"_^XMB("NETNAME"))=""
|
---|
176 | S ^TMP($J,"LOC",1,0)="The DSS "_ECPACK_" ("_ECHEAD_") extract, #"_ECDA_","
|
---|
177 | S ^TMP($J,"LOC",2,0)="was "_ECRE_"transmitted on "_$P(TIME,"@")_" at "_$P(TIME,"@",2)_". "
|
---|
178 | S ^TMP($J,"LOC",3,0)=" "
|
---|
179 | S ^TMP($J,"LOC",4,0)="Maximum number of Bytes (characters) per message: 131,000 "
|
---|
180 | S ^TMP($J,"LOC",5,0)=" "
|
---|
181 | S ^TMP($J,"LOC",6,0)="A total of "_ECRN_" records were written."
|
---|
182 | S ^TMP($J,"LOC",7,0)="A total of "_ECMSN_" messages were sent."
|
---|
183 | S ^TMP($J,"LOC",8,0)=" Message numbers :"
|
---|
184 | S XMTEXT="^TMP($J,""LOC"","
|
---|
185 | D ^XMD
|
---|
186 | S ^ECX(727,ECDA,"TR")=DT
|
---|
187 | Q
|
---|
188 | ;
|
---|
189 | CLEAN ;clean-up
|
---|
190 | S ZTREQ="@"
|
---|
191 | K ^TMP($J),^ECX(727,ECDA,"Q"),XMDUZ,XMTEXT,XMSUB,XMY,XMZ
|
---|
192 | K ECDA,ECRE,ECTMP,ECCHK,ECDIVVR,ECXDIQ,ECXMAX,ECXMSG
|
---|
193 | D ^ECXKILL
|
---|
194 | I $$S^%ZTLOAD K ZTREQ S ZTSTOP=1
|
---|
195 | Q
|
---|
196 | ;
|
---|
197 | PAUSE ;pause screen
|
---|
198 | S OUT=0
|
---|
199 | I $E(IOST)="C" D
|
---|
200 | .S SS=22-$Y F JJ=1:1:SS W !
|
---|
201 | .K DIR S DIR(0)="E" W ! D ^DIR K DIR
|
---|
202 | I 'Y S OUT=1
|
---|
203 | W !!
|
---|
204 | Q
|
---|
205 | ;
|
---|
206 | FODMN(DOMAIN) ;Is domain a field office domain
|
---|
207 | ;Input : DOMAIN - Domain name to check
|
---|
208 | ; - Default value pulled from ^XMB("NETNAME")
|
---|
209 | ;Output: 1 = Yes / 0 = No
|
---|
210 | ;
|
---|
211 | N X,SUB,OUT
|
---|
212 | S DOMAIN=$G(DOMAIN)
|
---|
213 | S:(DOMAIN="") DOMAIN=$G(^XMB("NETNAME"))
|
---|
214 | S OUT=0
|
---|
215 | F X=1:1:$L(DOMAIN,".") D Q:OUT
|
---|
216 | .S SUB=$P(DOMAIN,".",X)
|
---|
217 | .I ($E(SUB,1,3)="FO-")!($E(SUB,1,4)="ISC-") S OUT=1
|
---|
218 | Q OUT
|
---|