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