| [613] | 1 | PPPFMX2 ;ALB/JP - FILEMAN UTILITIES FOR PPP;10-AUG-93 | 
|---|
|  | 2 | ;;V1.0;PHARMACY PRESCRIPTION PRACTICE;**1**;APR 7,1995 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | PDXTRIG(TRANPTR,MODE) ;SET/KILL 'LOGIC' FOR PDX TRIGGER | 
|---|
|  | 5 | ;Input : TRANPTR - Pointer to VAQ - TRANSACTION file | 
|---|
|  | 6 | ;        MODE - Which 'logic' to use (SET or KILL) | 
|---|
|  | 7 | ;          1 = SET (default) | 
|---|
|  | 8 | ;          0 = KILL | 
|---|
|  | 9 | N SSN,FACILNO,DOMAIN,DATE,STATUS,FFPTR,TMP,STATPTR,NODE,SEGPTR,HASMPL | 
|---|
|  | 10 | ; -- CHECK INPUT | 
|---|
|  | 11 | Q:('$G(TRANPTR)) | 
|---|
|  | 12 | Q:('$D(^VAT(394.61,TRANPTR))) | 
|---|
|  | 13 | S MODE=$G(MODE) | 
|---|
|  | 14 | S MODE=$S((MODE=""):1,(MODE=0):0,1:1) | 
|---|
|  | 15 | ; -- GET CURRENT STATUS OF TRANSACTION (POINTER AND VALUE) | 
|---|
|  | 16 | S TMP=$G(^VAT(394.61,TRANPTR,0)) | 
|---|
|  | 17 | S STATPTR=+$P(TMP,"^",2) | 
|---|
|  | 18 | Q:('STATPTR) | 
|---|
|  | 19 | S STATUS=$P($$GETPDXST^PPPGET7(STATPTR),"^",1) | 
|---|
|  | 20 | ; -- ONLY ACT ON RESULTS TO A REQUEST AND UNSOLICITED PDXs | 
|---|
|  | 21 | S TMP="^VAQ-AMBIG^VAQ-NTFND^VAQ-REJ^VAQ-RSLT^VAQ-UNSOL^" | 
|---|
|  | 22 | Q:(TMP'[("^"_STATUS_"^")) | 
|---|
|  | 23 | ; -- DETERMINE IF TRANSACTION HAS SEGMENT 'PDX*MPL' (MED PROFILE LONG) | 
|---|
|  | 24 | S SEGPTR=+$O(^VAT(394.71,"C","PDX*MPL","")) | 
|---|
|  | 25 | Q:('SEGPTR) | 
|---|
|  | 26 | S HASMPL=+$O(^VAT(394.61,TRANPTR,"SEG","B",SEGPTR,"")) | 
|---|
|  | 27 | ; -- GET DATE | 
|---|
|  | 28 | S TMP=$G(^VAT(394.61,TRANPTR,"ATHR1")) | 
|---|
|  | 29 | S DATE=+$P(TMP,"^",1) | 
|---|
|  | 30 | Q:(('DATE)&(MODE)) | 
|---|
|  | 31 | ; -- GET REMOTE FACILITY NUMBER | 
|---|
|  | 32 | S TMP=$G(^VAT(394.61,TRANPTR,"ATHR2")) | 
|---|
|  | 33 | S DOMAIN=$P(TMP,"^",2) | 
|---|
|  | 34 | Q:(DOMAIN="") | 
|---|
|  | 35 | S FACILNO=+$O(^PPP(1020.8,"C",DOMAIN,"")) | 
|---|
|  | 36 | Q:('FACILNO) | 
|---|
|  | 37 | ; -- GET PATIENT'S SSN | 
|---|
|  | 38 | S SSN=$P($G(^VAT(394.61,TRANPTR,"QRY")),"^",2) | 
|---|
|  | 39 | Q:(SSN="") | 
|---|
|  | 40 | ; -- GET POINTER TO PATIENT FILE | 
|---|
|  | 41 | S PATPTR=+$O(^DPT("SSN",SSN,"")) | 
|---|
|  | 42 | Q:('PATPTR) | 
|---|
|  | 43 | ; -- Check for FFX entry or creates new one, on set logic | 
|---|
|  | 44 | I ($D(^PPP(1020.2,"AC",PATPTR,DOMAIN))=0)&(MODE=1) D  QUIT | 
|---|
|  | 45 | .S FFPTR=$$PDXFFX^PPPPDX3(SSN,DOMAIN) | 
|---|
|  | 46 | .D SETKILL | 
|---|
|  | 47 | ; -- GET POINTER TO FOREIGN FACILITY FILE | 
|---|
|  | 48 | S FFPTR="" | 
|---|
|  | 49 | F  S FFPTR=$O(^PPP(1020.2,"AC",PATPTR,DOMAIN,FFPTR)) Q:FFPTR=""  D SETKILL | 
|---|
|  | 50 | Q | 
|---|
|  | 51 | SETKILL ; -- UPDATES PPP ENTRY WITH PDX POINTER or deletes it | 
|---|
|  | 52 | ; - Get node from FOREIGN FACILITY XREF File | 
|---|
|  | 53 | Q:(FFPTR<0) | 
|---|
|  | 54 | S NODE=$G(^PPP(1020.2,FFPTR,1)) | 
|---|
|  | 55 | ; -- SET 'LOGIC' | 
|---|
|  | 56 | SET I (MODE) D | 
|---|
|  | 57 | .; - Don't store if transaction does NOT contain segment 'PDX*MPL' | 
|---|
|  | 58 | .Q:('HASMPL) | 
|---|
|  | 59 | .; - STORE POINTER TO PDX TRANSACTION FILE | 
|---|
|  | 60 | .S $P(NODE,"^",1)=TRANPTR | 
|---|
|  | 61 | .; - STORE DATE OF TRANSACTION | 
|---|
|  | 62 | .S $P(NODE,"^",2)=DATE | 
|---|
|  | 63 | .; - STORE STATUS OF TRANSACTION | 
|---|
|  | 64 | .S $P(NODE,"^",3)=STATPTR | 
|---|
|  | 65 | ; -- KILL 'LOGIC' | 
|---|
|  | 66 | KILL I ('MODE) D | 
|---|
|  | 67 | .; - ONLY DELETE IF SAME TRANSACTION | 
|---|
|  | 68 | .Q:((+$P(NODE,"^",1))'=TRANPTR) | 
|---|
|  | 69 | .; - DELETE POINTER TO PDX TRANSACTION FILE | 
|---|
|  | 70 | .S $P(NODE,"^",1)="" | 
|---|
|  | 71 | .S $P(NODE,"^",2)="" | 
|---|
|  | 72 | .S $P(NODE,"^",3)="" | 
|---|
|  | 73 | ; -- SAVE NODE FROM FOREIGN FACILITY XREF FILE | 
|---|
|  | 74 | S ^PPP(1020.2,FFPTR,1)=NODE | 
|---|
|  | 75 | Q | 
|---|