1 | PSABRKU1 ;BIR/DB-Upload and Process Prime Vendor Invoice Data ;8/19/99
|
---|
2 | ;;3.0; DRUG ACCOUNTABILITY/INVENTORY INTERFACE;**26,41**; 10/24/97
|
---|
3 | ;
|
---|
4 | PSAUPLD(RET,TMP) ;uploads data in VISTA
|
---|
5 | D NOW^%DTC
|
---|
6 | S X=0
|
---|
7 | I $G(TMP(0))="******" S PSAOUT=0 D STRT S RET="OK" Q
|
---|
8 | I $G(TMP(0))="KEY" G LOGON
|
---|
9 | S X=0,CNT=1 F S X=$O(^TMP($J,"PSAX12",X)) Q:X'>0 S CNT=$G(CNT)+1
|
---|
10 | S X=-1 F S X=$O(TMP(X)) Q:X="" S DATA=$G(TMP(X)) I $G(DATA)'="" S DATA=$P(DATA,"^",2,99) S ^TMP($J,"PSAX12",CNT,0)=DATA,CNT=$G(CNT)+1
|
---|
11 | ;
|
---|
12 | ;
|
---|
13 | S RET="OK"
|
---|
14 | Q
|
---|
15 | STRT S (PSABBC,PSACNT,PSAISA,PSALINE,PSASEGD,PSALND)=0 K TMP
|
---|
16 | D NOW^%DTC S Y=% X ^DD("DD")
|
---|
17 | S ^TMP($J,"PSA UPLOAD",.3,0)="Results : "
|
---|
18 | S ^TMP($J,"PSA UPLOAD",.5,0)="Finished : "_Y
|
---|
19 | D NOW^%DTC S DT=$P(%,".")
|
---|
20 | F S PSALINE=$O(^TMP($J,"PSAX12",PSALINE)) Q:'PSALINE D Q:PSABBC&(PSAISA)
|
---|
21 | .I $E($G(^TMP($J,"PSAX12",PSALINE,0)),1,3)="ISA" S PSADB=^TMP($J,"PSAX12",PSALINE,0) S PSASEGD=$E(^(0),4,4),PSALND=$E(^(0),106,106),PSAISA=1 Q
|
---|
22 | ;
|
---|
23 | I PSASEGD=""!(PSALND="") D G KILL
|
---|
24 | .S PSASTAR="",$P(PSASTAR,"*",80)=""
|
---|
25 | G:PSASEGD="~"&(PSALND="^") LINE
|
---|
26 | ;
|
---|
27 | ;Changes the data element and segment delimiters to ^ and ~.
|
---|
28 | S (PSACNT,PSALINE)=0 F S PSALINE=$O(^TMP($J,"PSAX12",PSALINE)) Q:'PSALINE D Q:PSAOUT
|
---|
29 | .S PSADATA=^TMP($J,"PSAX12",PSALINE,0)
|
---|
30 | .I PSALND'="~" S PSADATA=$TR(PSADATA,PSALND,"~")
|
---|
31 | .I PSASEGD'="^" S PSADATA=$TR(PSADATA,PSASEGD,"^")
|
---|
32 | .S ^TMP($J,"PSAX12",PSALINE,0)=PSADATA
|
---|
33 | ;
|
---|
34 | LINE ;Places each segment on a node to itself.
|
---|
35 | K ^TMP($J,"PSAPV")
|
---|
36 | S PSAHOLD="",(PSACNT,PSALINE)=0
|
---|
37 | F S PSALINE=$O(^TMP($J,"PSAX12",PSALINE)) Q:'PSALINE D
|
---|
38 | .S PSADATA=^TMP($J,"PSAX12",PSALINE,0),PSADATA=PSAHOLD_PSADATA
|
---|
39 | .I PSADATA'["~" S PSAHOLD=PSADATA Q
|
---|
40 | .S PSASTOP=0 F S PSASEG=$P(PSADATA,"~") Q:PSASEG="" D Q:PSASTOP
|
---|
41 | ..S PSACNT=PSACNT+1,^TMP($J,"PSAPV",PSACNT,0)=PSASEG
|
---|
42 | ..S PSADATA=$P(PSADATA,"~",2,99) I PSADATA'["~" S PSASTOP=1,PSAHOLD=PSADATA Q
|
---|
43 | ..S PSAHOLD=""
|
---|
44 | ;
|
---|
45 | SPACES ;remove all leading spaces in all data elements
|
---|
46 | S (PSACNT,PSALINE)=0 F S PSALINE=$O(^TMP($J,"PSAPV",PSALINE)) Q:'PSALINE D
|
---|
47 | .S PSASEG=^TMP($J,"PSAPV",PSALINE,0)
|
---|
48 | .I $E(PSASEG,1,3)="ISA" S ^TMP($J,"PSAPVS",PSALINE)=^TMP($J,"PSAPV",PSALINE,0) Q
|
---|
49 | .S PSACNT=0,PSASEGL=$L(PSASEG)
|
---|
50 | .F PSAEX=1:1:PSASEGL S PSAX=$E(PSASEG,PSAEX,PSAEX) S:PSAX="^" PSACNT=PSACNT+1
|
---|
51 | .F PSAPC=1:1:(PSACNT+1) S PSADE=$P(PSASEG,"^",PSAPC) D
|
---|
52 | ..F Q:$E(PSADE,1,1)'=" " S PSADE=$E(PSADE,2,999)
|
---|
53 | ..S $P(PSASEG,"^",PSAPC)=PSADE
|
---|
54 | .S ^TMP($J,"PSAPVS",PSALINE)=PSASEG
|
---|
55 | K ^TMP($J,"PSAPV")
|
---|
56 | ;
|
---|
57 | CHECK ;Looks for X12 errors. If no errors, loads data into ^TMP($J,"PSAPV SET")
|
---|
58 | D ^PSABRKU3
|
---|
59 | D XTMP^PSABRKU4
|
---|
60 | S PSANEXT=$O(^XTMP("PSAPV",0))
|
---|
61 | D ^PSABRKU6
|
---|
62 | ;
|
---|
63 | KILL K ^TMP($J,"PSAPVS"),^TMP($J,"PSAPV SET"),^TMP($J,"PSAX12")
|
---|
64 | K %,DIR,DIRUT,DWLC,PSABBC,PSACNT,PSACTN1,PSACOMB,PSACS,PSACTRL,PSACTRL2,PSADATA,PSADE,PSADT,PSADUP,PSAENTRY,PSAERR,PSAEX,PSAEXPEC,PSAFND1,PSAGS,PSAHOLD,PSAIEN,PSAIN,PSAINV,PSAINVDT,PSAINVN,PSAISA,PSAISIT,PSAISITN,PSAITCNT,PSAITEM
|
---|
65 | K PSALAST,PSALINE,PSALLCS,PSALLOK,PSALND,PSALOC,PSANDC,PSANEW,PSANEXT,PSANTYPE,PSAOK,PSAORD,PSAORDDT,PSAORDN,PSAOSIT,PSAOSITN,PSAOUT,PSAPC
|
---|
66 | K PSAS,PSASEG,PSASEGL,PSASEGD,PSASS,PSAST,PSASTA,PSASTAR,PSASTCNT,PSASUB,PSASYN,PSAUOM,PSAUOM1,PSAUOMH,PSAUOMH1,PSAVSN,PSAX,X,X1,X2,XTKDIC,XTKERR,XTKMODE,Y
|
---|
67 | S (X,CNT)=0 F S X=$O(PSAGUI2(X)) Q:X="" S CNT=$G(CNT)+1
|
---|
68 | I $G(CNT)>0 S ^TMP($J,"PSA UPLOAD",1.6,0)="Orders Uploaded : "_$G(CNT)
|
---|
69 | S (X,CNTR)=0 F S X=$O(PSAGUI3(X)) Q:X="" S CNTR=$G(CNTR)+1
|
---|
70 | I $G(CNTR)>0 S ^TMP($J,"PSA UPLOAD",1.7,0)="Invoices Uploaded : "_$G(CNTR)
|
---|
71 | S ^TMP($J,"PSA UPLOAD",1.8,0)="Line Items Uploaded : "_$G(PSAGUI4)
|
---|
72 | S RET=$G(CNT)_"^"_$G(CNTR)_"^"_$G(PSAGUI4) K CNT,CNTR
|
---|
73 | K PSAGUI1
|
---|
74 | I $D(^TMP($J,"PSA UPLOAD")) S XMSUB="Upload Status Report",XMDUZ="DRUG ACCOUNTABILITY UPLOAD INTERFACE",XMY(DUZ)="",XMTEXT="^TMP($J,"_"""PSA UPLOAD"""_"," D ^XMD
|
---|
75 | K ^TMP($J,"PSA UPLOAD"),^TMP($J,"PSAX12"),^TMP($J,"PSAPVS")
|
---|
76 | Q
|
---|
77 | LOGON ;Check security key
|
---|
78 | S (PSAGUI2,PSAGUI3,PSAGUI4)=0
|
---|
79 | K ^TMP($J,"PSAX12"),^TMP($J,"PSA UPLOAD"),PSACNT,CNT
|
---|
80 | I '$D(^XUSEC("PSA ORDERS",DUZ)) S RET(0)="0" Q
|
---|
81 | D NOW^%DTC S Y=% X ^DD("DD") S ^TMP($J,"PSA UPLOAD",.4,0)="Upload Started : "_Y,RET(0)=1 Q
|
---|
82 | Q
|
---|