| [613] | 1 | PPPPDX2 ;ALB/DMB/DAD - PPP PDX ROUTINES ; 6/30/92 | 
|---|
|  | 2 | ;;V1.0;PHARMACY PRESCRIPTION PRACTICE;**8**;APR 7,1995 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | PDXFFX(SSN,STATION) ; Get the FFX IFN or create a new entry for PDX | 
|---|
|  | 6 | ; | 
|---|
|  | 7 | ; This function is called by the PDX trigger to lookup or create | 
|---|
|  | 8 | ; an entry in the foreign facility cross-reference. | 
|---|
|  | 9 | ; | 
|---|
|  | 10 | ; Parameters: | 
|---|
|  | 11 | ;    SSN - The Patient SSN | 
|---|
|  | 12 | ;    STATION - The Station Number the patient visited | 
|---|
|  | 13 | ; | 
|---|
|  | 14 | ; Returns: | 
|---|
|  | 15 | ;    Normal Termination - The Internal File Number of the entry. | 
|---|
|  | 16 | ;    Error - -9002 = could not find SSN in patient file or Station | 
|---|
|  | 17 | ;                    number in institution file. | 
|---|
|  | 18 | ;            -9003 = An error occurred while creating the new entry. | 
|---|
|  | 19 | ; | 
|---|
|  | 20 | N LKUPERR,FMERR,ERR,PATDFN,SNIFN,FFXIFN,X,DIC,Y,DA,HDRNODE | 
|---|
|  | 21 | N TRECS,U,NEWREC | 
|---|
|  | 22 | ; | 
|---|
|  | 23 | S LOCKERR=-9004 | 
|---|
|  | 24 | S LKUPERR=-9003 | 
|---|
|  | 25 | S FMERR=-9002 | 
|---|
|  | 26 | S ERR=0 | 
|---|
|  | 27 | S U="^" | 
|---|
|  | 28 | ; | 
|---|
|  | 29 | ; Look up the patient and station IFN. | 
|---|
|  | 30 | ; | 
|---|
|  | 31 | S PATDFN=$O(^DPT("SSN",SSN,"")) | 
|---|
|  | 32 | S:PATDFN<1 ERR=LKUPERR | 
|---|
|  | 33 | ;S SNIFN=$O(^DIC(4,"D",STATION,"")) | 
|---|
|  | 34 | S SNIFN=STATION | 
|---|
|  | 35 | S:SNIFN<1 ERR=LKUPERR | 
|---|
|  | 36 | ; | 
|---|
|  | 37 | ; If the IFN's are good then see if there is an entry in the FFX file. | 
|---|
|  | 38 | ; First lock the file.  Return LOCKERR if we can't. | 
|---|
|  | 39 | ; | 
|---|
|  | 40 | L +(^PPP(1020.2)):5 | 
|---|
|  | 41 | S:'$T ERR=LOCKERR | 
|---|
|  | 42 | ; | 
|---|
|  | 43 | I 'ERR D | 
|---|
|  | 44 | .S FFXIFN=$O(^PPP(1020.2,"APOV",PATDFN,SNIFN,"")) | 
|---|
|  | 45 | .; | 
|---|
|  | 46 | .; If the entry isn't there then create a new one | 
|---|
|  | 47 | .; | 
|---|
|  | 48 | .I FFXIFN'>0 D | 
|---|
|  | 49 | ..S X=PATDFN | 
|---|
|  | 50 | ..; | 
|---|
|  | 51 | ..; Get the header node of the file | 
|---|
|  | 52 | ..; | 
|---|
|  | 53 | ..S HDRNODE=$G(^PPP(1020.2,0)) | 
|---|
|  | 54 | ..; | 
|---|
|  | 55 | ..; Get the last record and total records values. Quit if NULL | 
|---|
|  | 56 | ..; | 
|---|
|  | 57 | ..S (FFXIFN,DA)=+$P(HDRNODE,U,3)+1 | 
|---|
|  | 58 | ..S TRECS=+$P(HDRNODE,U,3) | 
|---|
|  | 59 | ..I +$P(HDRNODE,U,3)="" S ERR=FMERR Q | 
|---|
|  | 60 | ..; | 
|---|
|  | 61 | ..; Add the new record | 
|---|
|  | 62 | ..; | 
|---|
|  | 63 | ..S NEWREC=X | 
|---|
|  | 64 | ..S $P(NEWREC,U,2)=SNIFN | 
|---|
|  | 65 | ..S $P(NEWREC,U,4)=0 | 
|---|
|  | 66 | ..S ^PPP(1020.2,FFXIFN,0)=NEWREC | 
|---|
|  | 67 | ..; | 
|---|
|  | 68 | ..; Create the necessary indexes | 
|---|
|  | 69 | ..; | 
|---|
|  | 70 | ..S ^PPP(1020.2,"B",$E(X,1,30),FFXIFN)="" | 
|---|
|  | 71 | ..S X=SNIFN D SDFNPOV^PPPFMX | 
|---|
|  | 72 | ..; | 
|---|
|  | 73 | ..; Update the header node | 
|---|
|  | 74 | ..; | 
|---|
|  | 75 | ..S $P(HDRNODE,U,3)=FFXIFN | 
|---|
|  | 76 | ..S $P(HDRNODE,U,4)=TRECS+1 | 
|---|
|  | 77 | ..S ^PPP(1020.2,0)=HDRNODE | 
|---|
|  | 78 | .L -^PPP(1020.2) | 
|---|
|  | 79 | ; | 
|---|
|  | 80 | ; Return the IFN or ERR | 
|---|
|  | 81 | ; | 
|---|
|  | 82 | Q:ERR ERR | 
|---|
|  | 83 | Q FFXIFN | 
|---|