1 | VADPT6 ;ALB/MJK - PATIENT ID VARIABLES ; 12 AUG 89 @1200
|
---|
2 | ;;5.3;Registration;;Aug 13, 1993
|
---|
3 | ;
|
---|
4 | PID ;
|
---|
5 | 13 ; -- Returns the patient id variables for DFN patient
|
---|
6 | ; usually VA("PID")=123-45-6789 and VA("BID")="6789"
|
---|
7 | ; for VA patients.
|
---|
8 | ;
|
---|
9 | ; -- Returns patient id variables as defined for the requested
|
---|
10 | ; patient eligibility for DFN patient. The variable VAPTYP should
|
---|
11 | ; contain the internal number of the desired patient eligibility.
|
---|
12 | ;
|
---|
13 | ; If the VAPTYP eligibility does not exist, then the standard
|
---|
14 | ; values, as defined above, will be passed back.
|
---|
15 | ;
|
---|
16 | N X,L,B K VAERR S (L,B)=""
|
---|
17 | ; L = long id ; B = brief or short id
|
---|
18 | S VAERR=$S('$D(DFN)#2:1,'$D(^DPT(+DFN,0)):1,1:0) I VAERR G PIDQ
|
---|
19 | I $D(VAPTYP),$D(^DPT(DFN,"E",+VAPTYP,0)) S X=^(0),L=$P(X,"^",3),B=$P(X,"^",4)
|
---|
20 | ; -- set default id's
|
---|
21 | I L="",$D(^DPT(DFN,.36)) S X=^(.36) I +X S L=$P(X,"^",3),B=$P(X,"^",4)
|
---|
22 | I L="" S X=$P(^DPT(DFN,0),"^",9) I X]"" S L=$E(X,1,3)_"-"_$E(X,4,5)_"-"_$E(X,6,10),B=$E(X,6,10)
|
---|
23 | ;
|
---|
24 | PIDQ S VA("PID")=L,VA("BID")=B Q
|
---|
25 | ;
|
---|
26 | SET ;-- execute id format specific long id, short id and x-ref set logic
|
---|
27 | ; input: VADFN == DFN
|
---|
28 | ;
|
---|
29 | Q:'$D(^DPT(VADFN,"E",0))
|
---|
30 | N X,DA S DA(1)=VADFN
|
---|
31 | F DA=0:0 S DA=$O(^DPT(DA(1),"E",DA)) Q:'DA I $D(^(DA,0)) D SET1
|
---|
32 | K X,DA
|
---|
33 | Q
|
---|
34 | SET1 ;
|
---|
35 | D CHK G SET1Q:'VAFMT
|
---|
36 | ; -- calc/store long id
|
---|
37 | S X=""
|
---|
38 | I $D(^DIC(8.2,VAFMT,"LONG")) X ^("LONG") S $P(^DPT(DA(1),"E",DA,0),U,3)=X
|
---|
39 | ; -- long id x-refs (set logic)
|
---|
40 | S VAX=X G SET1Q:X=""
|
---|
41 | F VAIX=0:0 S VAIX=$O(^DD(2.0361,.03,1,VAIX)) Q:'VAIX X ^(VAIX,1) S X=VAX
|
---|
42 | ; -- short id x-refs (set logic)
|
---|
43 | S (VAX,X)=$P(^DPT(DA(1),"E",DA,0),U,4) G SET1Q:X=""
|
---|
44 | F VAIX=0:0 S VAIX=$O(^DD(2.0361,.04,1,VAIX)) Q:'VAIX X ^(VAIX,1) S X=VAX
|
---|
45 | SET1Q K VAIX,VAX,X,VAFMT
|
---|
46 | Q
|
---|
47 | ;
|
---|
48 | KILL ; -- execute id format specific x-ref kill logic
|
---|
49 | ; input: VADFN ==> DFN
|
---|
50 | ;
|
---|
51 | Q:'$D(^DPT(VADFN,"E",0))
|
---|
52 | N X,DA S DA(1)=VADFN
|
---|
53 | F DA=0:0 S DA=$O(^DPT(DA(1),"E",DA)) Q:'DA I $D(^(DA,0)) D KILL1
|
---|
54 | K X,DA
|
---|
55 | Q
|
---|
56 | ;
|
---|
57 | KILL1 ;
|
---|
58 | D CHK G KILL1Q:'VAFMT
|
---|
59 | ; -- short id x-ref (kill logic)
|
---|
60 | S (VAX,X)=$P(^DPT(DA(1),"E",DA,0),U,4) G KILL2:X=""
|
---|
61 | F VAIX=0:0 S VAIX=$O(^DD(2.0361,.04,1,VAIX)) Q:'VAIX X ^(VAIX,2) S X=VAX
|
---|
62 | S $P(^DPT(DA(1),"E",DA,0),U,4)=""
|
---|
63 | KILL2 ; -- long id (kill logic)
|
---|
64 | S (VAX,X)=$P(^DPT(DA(1),"E",DA,0),U,3) G KILL1Q:X=""
|
---|
65 | F VAIX=0:0 S VAIX=$O(^DD(2.0361,.03,1,VAIX)) Q:'VAIX X ^(VAIX,2) S X=VAX
|
---|
66 | S $P(^DPT(DA(1),"E",DA,0),U,3)=""
|
---|
67 | KILL1Q K VAX,VAIX,VAFMT
|
---|
68 | Q
|
---|
69 | ;
|
---|
70 | CHK ; -- ok to proceed ; fmt defined
|
---|
71 | S VAFMT=0
|
---|
72 | I $D(^DIC(8,DA,0)) S VAFMT=+$P(^(0),U,10),VAFMT=$S($D(^DIC(8.2,VAFMT,0)):VAFMT,1:0)
|
---|
73 | Q
|
---|