| 1 | PSABRKU2 ;BHM/DB - Automatic processing of invoices;16 DEC 99
 | 
|---|
| 2 |  ;;3.0; DRUG ACCOUNTABILITY/INVENTORY INTERFACE;**26**; 10/24/97
 | 
|---|
| 3 |  ;This routine is a continuation of the Upload GUI
 | 
|---|
| 4 |  ;the program will attempt to process as much of the invoice
 | 
|---|
| 5 |  ;data as it can.
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  ;Order Unit matching, supply item identification, and location
 | 
|---|
| 8 |  ;assignment are attempted.
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  K PSACTRL,PSALOC,PSAMV,PSACS,PSANCS
 | 
|---|
| 11 |  I '$D(^XTMP("PSAPV")) G Q
 | 
|---|
| 12 | CNT ;Count invoices that need a pharm location or master vault assigned.
 | 
|---|
| 13 |  F  S PSACTRL=$O(^XTMP("PSAPV",PSACTRL)) Q:PSACTRL=""  D
 | 
|---|
| 14 |  .Q:'$D(^XTMP("PSAPV",PSACTRL,"IN"))
 | 
|---|
| 15 |  .I $G(PSASORT)'=0,$G(PSASORT)'="",$D(^XTMP("PSAPV",PSACTRL,"ST")),$P(^XTMP("PSAPV",PSACTRL,"ST"),"^",1)'=PSASORT Q
 | 
|---|
| 16 |  .S PSAIN=^XTMP("PSAPV",PSACTRL,"IN")
 | 
|---|
| 17 |  .I $P(PSAIN,"^",10)="ALL CS",$P(PSAIN,"^",12)="" S PSACNT=PSACNT+1,PSACS(PSACTRL)="" Q
 | 
|---|
| 18 |  .I $P(PSAIN,"^",10)'="ALL CS" D
 | 
|---|
| 19 |  ..I $P(PSAIN,"^",9)="CS" S:$P(PSAIN,"^",7)="" PSANCS(PSACTRL)="" S:$P(PSAIN,"^",12)="" PSACS(PSACTRL)="" S:$P(PSAIN,"^",7)=""!($P(PSAIN,"^",12)="") PSACNT=PSACNT+1 Q
 | 
|---|
| 20 |  ..I $P(PSAIN,"^",9)="",$P(PSAIN,"^",7)="" S PSACNT=PSACNT+1,PSANCS(PSACTRL)=""
 | 
|---|
| 21 |  I 'PSACNT G Q
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 |  ;Gets pharmacy locations
 | 
|---|
| 24 |  S (PSALOC,PSANUM)=0 F  S PSALOC=+$O(^PSD(58.8,"ADISP","P",PSALOC)) Q:'PSALOC  D
 | 
|---|
| 25 |  .Q:'$D(^PSD(58.8,PSALOC,0))!($P($G(^PSD(58.8,PSALOC,0)),"^")="")
 | 
|---|
| 26 |  .I +$G(^PSD(58.8,PSALOC,"I")),+^PSD(58.8,PSALOC,"I")'>DT Q
 | 
|---|
| 27 |  .S PSANUM=PSANUM+1,PSAONE=PSALOC,PSAISIT=+$P(^PSD(58.8,PSALOC,0),"^",3),PSAOSIT=+$P(^(0),"^",10)
 | 
|---|
| 28 |  .D SITES^PSAUTL1 S PSACOMB=$S('$D(PSACOMB):"NO COMBINED IP/OP",1:PSACOMB),PSALOCA($P(^PSD(58.8,PSALOC,0),"^")_PSACOMB,PSALOC)=PSAISIT_"^"_PSAOSIT
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 |  ;Gets master vaults
 | 
|---|
| 31 |  S (PSAMVN,PSAMV)=0 F  S PSAMV=+$O(^PSD(58.8,"ADISP","M",PSAMV)) Q:'PSAMV  D
 | 
|---|
| 32 |  .Q:'$D(^PSD(58.8,PSAMV,0))!($P($G(^PSD(58.8,PSAMV,0)),"^")="")
 | 
|---|
| 33 |  .I +$G(^PSD(58.8,PSAMV,"I")),+^PSD(58.8,PSAMV,"I")'>DT Q
 | 
|---|
| 34 |  .S PSAMVN=PSAMVN+1,PSAONEMV=PSAMV,PSAMV($P(^PSD(58.8,PSAMV,0),"^"),PSAMV)=""
 | 
|---|
| 35 |  I 'PSANUM G 2
 | 
|---|
| 36 |  I PSANUM=1 D ONE
 | 
|---|
| 37 |  G 2
 | 
|---|
| 38 | ONE ;Only one location
 | 
|---|
| 39 |  S PSACNT=0,PSALOC=PSAONE,PSALOCN=$O(PSALOCA(""))
 | 
|---|
| 40 |  S PSACTRL="" F  S PSACTRL=$O(PSANCS(PSACTRL)) Q:PSACTRL=""  D
 | 
|---|
| 41 |  .Q:'$D(^XTMP("PSAPV",PSACTRL,"IN"))
 | 
|---|
| 42 |  .S $P(^XTMP("PSAPV",PSACTRL,"IN"),"^",7)=PSALOC,PSACNT=1
 | 
|---|
| 43 |  S PSA=$O(PSACS("")) D:PSA'="" MASTER
 | 
|---|
| 44 |  Q
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 | MASTER ;Assigns invoice to Master Vault
 | 
|---|
| 47 |  I 'PSAMVN G 2
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  I PSAMVN=1 D
 | 
|---|
| 50 |  .S PSACTRL=$O(PSACS(""))
 | 
|---|
| 51 |  .S PSACTRL="" F  S PSACTRL=$O(PSACS(PSACTRL)) Q:PSACTRL=""  D
 | 
|---|
| 52 |  ..Q:'$D(^XTMP("PSAPV",PSACTRL,"IN"))
 | 
|---|
| 53 |  ..S $P(^XTMP("PSAPV",PSACTRL,"IN"),"^",12)=PSAONEMV
 | 
|---|
| 54 | 2 ;Match order units
 | 
|---|
| 55 |  K X1,X2,X3,X4
 | 
|---|
| 56 |  ;Loop through TMP("PSA ORDER",CMT,0)
 | 
|---|
| 57 |  Q
 | 
|---|
| 58 | Q Q
 | 
|---|