1 | VAQLED03 ;ALB/JFP,JRP - PDX, DISPLAY POSSIBLE MATCHES, SCREEN;01MAR93
|
---|
2 | ;;1.5;PATIENT DATA EXCHANGE;**6,10**;NOV 17, 1993
|
---|
3 | EP ; -- Main entry point for the list processor
|
---|
4 | K DFNARR
|
---|
5 | W !!,"Checking for potential duplicates and matches of remote patient "
|
---|
6 | S VAQDFN=$$GETDFN^VAQUTL97(VAQPTNM,1) I +VAQDFN>0 S DFNARR(VAQDFN)=""
|
---|
7 | S VAQDFN=$$GETDFN^VAQUTL97(VAQISSN,1) I +VAQDFN>0 S DFNARR(VAQDFN)=""
|
---|
8 | ;
|
---|
9 | N DOB,SSN,DPTNM,DPTKS,DPTKD
|
---|
10 | S DPTNM=VAQPTNM,SSN=VAQISSN
|
---|
11 | S DOB=$S(VAQIDOB'="":VAQIDOB,1:" ")
|
---|
12 | S (DPTKS,DPTKD)=0
|
---|
13 | D ^DPTDUP ; -- Duplicate checker
|
---|
14 | I $D(DPTD)&(DPTD>0) S VAQDFN="" F S VAQDFN=$O(DPTD(VAQDFN)) Q:VAQDFN="" S DFNARR(VAQDFN)=""
|
---|
15 | I '$D(VAQCHK) D EN^VALM("VAQ MATCHES PDX8") K DPTD
|
---|
16 | Q
|
---|
17 | ;
|
---|
18 | INIT ; -- Builds array of possible matches
|
---|
19 | K ^TMP("VAQL3",$J),^TMP("VAQIDX",$J)
|
---|
20 | S DFN="",(VAQECNT,VALMCNT)=0
|
---|
21 | F S DFN=$O(DPTD(DFN)) Q:DFN="" D SETD
|
---|
22 | I VAQECNT=0 D
|
---|
23 | .S X=$$SETSTR^VALM1(" ","",1,79) D TMP
|
---|
24 | .S X=$$SETSTR^VALM1(" ** No possible matches found for patient entered... ","",1,80) D TMP
|
---|
25 | Q
|
---|
26 | ;
|
---|
27 | SETD ; -- Set data for display in list processor
|
---|
28 | S VAQECNT=VAQECNT+1
|
---|
29 | D DEM^VADPT
|
---|
30 | S X=$$SETFLD^VALM1(VAQECNT,"","ENTRY")
|
---|
31 | S X=$$SETFLD^VALM1(VADM(1),X,"LOCAL PATIENT NAME")
|
---|
32 | S X=$$SETFLD^VALM1($P(VADM(2),U,2),X,"SSN")
|
---|
33 | S VAERR=$$DOBFMT^VAQUTL99($P(VADM(3),U,1))
|
---|
34 | S X=$$SETFLD^VALM1(VAERR,X,"DOB")
|
---|
35 | S X=$$SETFLD^VALM1(VA("PID"),X,"PID")
|
---|
36 | D TMP
|
---|
37 | K VA,VADM,VAERR ; -- cleans up local variables set by vadpt call
|
---|
38 | Q
|
---|
39 | ;
|
---|
40 | TMP ; -- Set the array used by list processor
|
---|
41 | S VALMCNT=VALMCNT+1
|
---|
42 | S ^TMP("VAQL3",$J,VALMCNT,0)=$E(X,1,79)
|
---|
43 | S ^TMP("VAQL3",$J,"IDX",VALMCNT,VAQECNT)=""
|
---|
44 | S ^TMP("VAQIDX",$J,VAQECNT)=DFNTR_"^"_DFN
|
---|
45 | Q
|
---|
46 | ;
|
---|
47 | HD ; -- Make header line for list processor
|
---|
48 | S VALMHDR(1)=$$INSERT^VAQUTL1("Remote Patient Name","",9)
|
---|
49 | S VALMHDR(1)=$$INSERT^VAQUTL1("DOB",VALMHDR(1),41)
|
---|
50 | S VALMHDR(1)=$$INSERT^VAQUTL1("SSN",VALMHDR(1),54)
|
---|
51 | S VALMHDR(2)=$$INSERT^VAQUTL1(VAQPTNM,"",9)
|
---|
52 | S VALMHDR(2)=$$INSERT^VAQUTL1(VAQEDOB,VALMHDR(2),41)
|
---|
53 | S VALMHDR(2)=$$INSERT^VAQUTL1(VAQESSN,VALMHDR(2),54)
|
---|
54 | S VALMHDR(3)=" "
|
---|
55 | Q
|
---|
56 | ;
|
---|
57 | SEL ; -- Select possible match
|
---|
58 | D EN^VALM2($G(XQORNOD(0)),"S")
|
---|
59 | Q:'$D(VALMY)
|
---|
60 | S SDI=""
|
---|
61 | S SDI=$O(VALMY(SDI))
|
---|
62 | S SDAT=$G(^TMP("VAQIDX",$J,SDI))
|
---|
63 | S DFNTR=$P(SDAT,U,1)
|
---|
64 | S DFNPT=$P(SDAT,U,2)
|
---|
65 | D MRGECHK
|
---|
66 | S VAQBCK=1
|
---|
67 | K VALMBCK
|
---|
68 | Q
|
---|
69 | ;
|
---|
70 | EXP ; -- Displays MAS minimal information from patient file (2)
|
---|
71 | D EN^VALM2($G(XQORNOD(0)),"S")
|
---|
72 | Q:'$D(VALMY)
|
---|
73 | S SDI=""
|
---|
74 | F S SDI=$O(VALMY(SDI)) Q:SDI="" D
|
---|
75 | .S SDAT=$G(^TMP("VAQIDX",$J,SDI))
|
---|
76 | .S DFN=$P(SDAT,U,2)
|
---|
77 | .D PT^VAQDIS01 ; -- display local patient data
|
---|
78 | S VALMBCK="R"
|
---|
79 | Q
|
---|
80 | ;
|
---|
81 | NEW ; -- Creates new patient in local database
|
---|
82 | D ^VAQLED07
|
---|
83 | K VALMBCK
|
---|
84 | Q
|
---|
85 | ;
|
---|
86 | EXIT ; -- Note: The list processor cleans up its own variables.
|
---|
87 | ; All other variables cleaned up here.
|
---|
88 | ;
|
---|
89 | K ^TMP("VAQL3",$J),^TMP("VAQIDX",$J),DFNARR
|
---|
90 | K VAQECNT,DFN,DPTD,X,VALMY,SDI,SDAT
|
---|
91 | Q
|
---|
92 | ;
|
---|
93 | MRGECHK ;CHECK FOR EXACT MATCH BEFORE ALLOWING MERGE
|
---|
94 | N TMP,LOCNAME,LOCSSN,LOCDOB,DIFF
|
---|
95 | ;GET LOCAL PATIENT
|
---|
96 | S TMP=$$PATINFO^VAQUTL1(DFNPT)
|
---|
97 | S LOCNAME=$P(TMP,"^",1)
|
---|
98 | S LOCSSN=$TR($P(TMP,"^",2),"-","")
|
---|
99 | S LOCDOB=$$DATE^VAQUTL99($P(TMP,"^",3))
|
---|
100 | S:(LOCDOB="-1") LOCDOB=""
|
---|
101 | ;COMPARE AGAINST REMOTE PATIENT
|
---|
102 | S DIFF=0
|
---|
103 | S:(VAQPTNM'=LOCNAME) DIFF=DIFF+1
|
---|
104 | S:(VAQISSN'=LOCSSN) DIFF=DIFF+2
|
---|
105 | S:(VAQIDOB'=LOCDOB) DIFF=DIFF+4
|
---|
106 | ;NO DIFFERENCES - MERGE ALLOWED
|
---|
107 | I ('DIFF) D EP^VAQLED02 Q
|
---|
108 | ;PRINT DIFFERENCES
|
---|
109 | D CLEAR^VALM1
|
---|
110 | S TMP="***** MERGING OF REMOTE PATIENT WITH LOCAL PATIENT NOT ALLOWED *****"
|
---|
111 | S X=$$INSERT^VAQUTL1(TMP,"",(40-($L(TMP)/2)))
|
---|
112 | W $C(7),X
|
---|
113 | S TMP=""
|
---|
114 | I (DIFF>3) S TMP="DATE OF BIRTH",DIFF=DIFF-4
|
---|
115 | I (DIFF>1) S:(TMP'="") TMP=" and "_TMP S TMP="SOCIAL SECURITY NUMBER"_TMP,DIFF=DIFF-2
|
---|
116 | I (DIFF) S:(TMP'="") TMP=" and "_TMP S TMP="NAME"_TMP
|
---|
117 | S TMP="***** "_TMP_" do"_$S((TMP'[" and "):"es",1:"")_" not match *****"
|
---|
118 | S X=$$INSERT^VAQUTL1(TMP,"",(40-($L(TMP)/2)))
|
---|
119 | W !,X,$C(7)
|
---|
120 | W !!,?22,"Name",?48,"SSN",?64,"DOB"
|
---|
121 | S X=$$REPEAT^VAQUTL1("-",30)
|
---|
122 | W !,?8,X,?43,$E(X,1,12),?60,$E(X,1,10)
|
---|
123 | W !," Local: ",LOCNAME,?43,$$DASHSSN^VAQUTL99(LOCSSN),?60,$$DOBFMT^VAQUTL99(LOCDOB,0)
|
---|
124 | W !,"Remote: ",VAQPTNM,?43,VAQESSN,?60,VAQEDOB
|
---|
125 | W !!!
|
---|
126 | W !,?3,"Pertinent patient data must match in order for the upload process"
|
---|
127 | W !,?3,"to continue. Local and remote patient should be verified using the"
|
---|
128 | W !,?3,"appropriate procedures. Once verified, the Load/Edit Patient Data"
|
---|
129 | W !,?3,"option, which is found in the Registration Menu, should be used to"
|
---|
130 | W !,?3,"correct the information."
|
---|
131 | F X=$Y:1:(IOSL-5) W !
|
---|
132 | D PAUSE^VALM1
|
---|
133 | Q
|
---|