| 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
 | 
|---|