1 | ECV2RPC ;ALB/ACS;Event Capture Spreadsheet Validation;07 Aug 01
|
---|
2 | ;;2.0; EVENT CAPTURE ;**25,30,49**;8 May 96
|
---|
3 | ;
|
---|
4 | ;-----------------------------------------------------------------------
|
---|
5 | ; Validates the following Event Capture spreadsheet fields:
|
---|
6 | ; 1. Location
|
---|
7 | ; 2. Patient SSN
|
---|
8 | ; 3. Patient Name
|
---|
9 | ;-----------------------------------------------------------------------
|
---|
10 | ;=======================================================================
|
---|
11 | ;MODIFICATIONS
|
---|
12 | ;08/2001 EC*2.0*30 Updated the error message for Location
|
---|
13 | ;=======================================================================
|
---|
14 | ;
|
---|
15 | ;--Set up error flag
|
---|
16 | S ECERRFLG=0
|
---|
17 | ;
|
---|
18 | ;--Location must be on the Institution file
|
---|
19 | I '$D(^DIC(4,ECSTAV)),'$D(^DIC(4,"D",ECSTAV)) D
|
---|
20 | . ; Location not on the VistA file
|
---|
21 | . S ECERRMSG=$P($T(STA1^ECV2RPC),";;",2)
|
---|
22 | . S ECCOLERR=ECSTAPC
|
---|
23 | . D ERROR
|
---|
24 | . Q
|
---|
25 | ;Check for multiple station number entries
|
---|
26 | N LOC,C,STR
|
---|
27 | S (LOC,C)=0,STR=""
|
---|
28 | F S LOC=$O(^DIC(4,"D",ECSTAV,LOC)) Q:'LOC S C=C+1 D
|
---|
29 | . S LOC(LOC)=ECSTAV_", Location IEN "_LOC_", "_$P(^DIC(4,LOC,0),"^")
|
---|
30 | I C>1 S LOC=0 F S LOC=$O(LOC(LOC)) Q:'LOC D
|
---|
31 | . S ECERRMSG=$P($T(STA2^ECV2RPC),";;",2)_LOC(LOC)
|
---|
32 | . S ECCOLERR=ECSTAPC
|
---|
33 | . D ERROR
|
---|
34 | I C=1,$D(^DIC(4,"D",ECSTAV)) S ECSTAV=$O(^DIC(4,"D",ECSTAV,"")) ;get ien
|
---|
35 | ;
|
---|
36 | ;--Patient SSN must be on the Patient file--
|
---|
37 | N ECNAME4,ECNAME3,ECNAME2,ECNAME1,ECVNAME4,ECVNAME3
|
---|
38 | N ECVNAME2,ECVNAME1,ECVNAME,ECSSNNUM
|
---|
39 | S (ECSSNIEN,ECERRFLG)=0,ECSSNNUM=+ECSSNV
|
---|
40 | I $L(ECSSNNUM)>9!$L(ECSSNV)>10 D
|
---|
41 | . ; User has entered an SSN that is too long
|
---|
42 | . S ECERRMSG=$P($T(SSN5^ECV2RPC),";;",2)
|
---|
43 | . S ECCOLERR=ECSSNPC
|
---|
44 | . D ERROR
|
---|
45 | . Q
|
---|
46 | I 'ECERRFLG D
|
---|
47 | . ; -add leading zeros if needed
|
---|
48 | . I $L(ECSSNNUM)<9 S ECSSNV=$E("000000000",1,9-$L(ECSSNNUM))_ECSSNNUM
|
---|
49 | . I $L(ECSSNV)>10 D
|
---|
50 | . . ; User has entered an invalid SSN
|
---|
51 | . . S ECERRMSG=$P($T(SSN5^ECV2RPC),";;",2)
|
---|
52 | . . S ECCOLERR=ECSSNPC
|
---|
53 | . . D ERROR
|
---|
54 | . . Q
|
---|
55 | . I 'ECERRFLG,$L(ECSSNV)=10 D
|
---|
56 | . . I $E(ECSSNV,10,10)'="P" D
|
---|
57 | . . . ; Invalid SSN
|
---|
58 | . . . S ECERRMSG=$P($T(SSN5^ECV2RPC),";;",2)
|
---|
59 | . . . S ECCOLERR=ECSSNPC
|
---|
60 | . . . D ERROR
|
---|
61 | . . Q
|
---|
62 | . I 'ECERRFLG,'$D(^DPT("SSN",ECSSNV)) D
|
---|
63 | . . ; No SSN x-ref on patient file
|
---|
64 | . . S ECERRMSG=$P($T(SSN1^ECV2RPC),";;",2)
|
---|
65 | . . S ECCOLERR=ECSSNPC
|
---|
66 | . . D ERROR
|
---|
67 | . . Q
|
---|
68 | . Q
|
---|
69 | I 'ECERRFLG D
|
---|
70 | . ; -get SSN IEN
|
---|
71 | . S ECSSNIEN=$O(^DPT("SSN",ECSSNV,0))
|
---|
72 | . I 'ECSSNIEN D
|
---|
73 | . . S ECERRMSG=$P($T(SSN2^ECV2RPC),";;",2)
|
---|
74 | . . S ECCOLERR=ECSSNPC
|
---|
75 | . . D ERROR
|
---|
76 | . . Q
|
---|
77 | . Q
|
---|
78 | I 'ECERRFLG,'$D(^DPT(ECSSNIEN,0)) D
|
---|
79 | . ; SSN record not found
|
---|
80 | . S ECERRMSG=$P($T(SSN3^ECV2RPC),";;",2)
|
---|
81 | . S ECCOLERR=ECSSNPC
|
---|
82 | . D ERROR
|
---|
83 | . Q
|
---|
84 | ;
|
---|
85 | I 'ECERRFLG D
|
---|
86 | . ; -Compare patient file ssn to patient ssn
|
---|
87 | . S ECVSSN=$P(^DPT(ECSSNIEN,0),U,9)
|
---|
88 | . I ECVSSN'=ECSSNV D
|
---|
89 | . . ; Spreadsheet ssn doesn't match vista
|
---|
90 | . . S ECERRMSG=$P($T(SSN4^ECV2RPC),";;",2)
|
---|
91 | . . S ECCOLERR=ECSSNPC
|
---|
92 | . . D ERROR
|
---|
93 | . . Q
|
---|
94 | . Q
|
---|
95 | ;--Patient Name must match VistA name--
|
---|
96 | I 'ECERRFLG D
|
---|
97 | . S ECVNAME=$P(^DPT(ECSSNIEN,0),U,1)
|
---|
98 | . I '$D(ECVNAME) D
|
---|
99 | . . ; Patient name missing from VistA file
|
---|
100 | . . S ECERRMSG=$P($T(NAME1^ECV2RPC),";;",2)
|
---|
101 | . . S ECCOLERR=ECSSNPC
|
---|
102 | . . D ERROR
|
---|
103 | . . Q
|
---|
104 | . Q
|
---|
105 | I 'ECERRFLG,'ECDECPAT D
|
---|
106 | . N DFN,VADM S DFN=ECSSNIEN D 2^VADPT I +VADM(6) D
|
---|
107 | . . S ECERRMSG="WARNING: [PATIENT DIED ON "_$P(VADM(6),U,2)_"]"
|
---|
108 | . . S ECCOLERR=ECSSNPC
|
---|
109 | . . D ERROR
|
---|
110 | I 'ECERRFLG D
|
---|
111 | . S ECVNAME4=$E(ECVNAME,1,4),ECNAME4=$E(ECPATV,1,4)
|
---|
112 | . S ECVNAME3=$E(ECVNAME,1,3),ECNAME3=$E(ECPATV,1,3)
|
---|
113 | . S ECVNAME2=$E(ECVNAME,1,2),ECNAME2=$E(ECPATV,1,2)
|
---|
114 | . S ECVNAME1=$E(ECVNAME,1,1),ECNAME1=$E(ECPATV,1,1)
|
---|
115 | . I ECNAME1'=ECVNAME1 D
|
---|
116 | . . ; First char of name doesn't match
|
---|
117 | . . S ECERRMSG=$P($T(NAME5^ECV2RPC),";;",2)
|
---|
118 | . . S ECCOLERR=ECPATLPC
|
---|
119 | . . D ERROR
|
---|
120 | . . Q
|
---|
121 | . I 'ECERRFLG,ECNAME2'=ECVNAME2 D
|
---|
122 | . . ; First 2 chars of name doesn't match
|
---|
123 | . . S ECERRMSG=$P($T(NAME2^ECV2RPC),";;",2)
|
---|
124 | . . S ECCOLERR=ECPATLPC
|
---|
125 | . . D ERROR
|
---|
126 | . . Q
|
---|
127 | . I 'ECERRFLG,(ECNAME3'=ECVNAME3) D
|
---|
128 | . . ; First 3 chars of name doesn't match
|
---|
129 | . . S ECERRMSG=$P($T(NAME3^ECV2RPC),";;",2)
|
---|
130 | . . S ECCOLERR=ECPATLPC
|
---|
131 | . . D ERROR
|
---|
132 | . . Q
|
---|
133 | . I 'ECERRFLG,(ECNAME4'=ECVNAME4) D
|
---|
134 | . . ; First 4 chars of name doesn't match
|
---|
135 | . . S ECERRMSG=$P($T(NAME4^ECV2RPC),";;",2)
|
---|
136 | . . S ECCOLERR=ECPATLPC
|
---|
137 | . . D ERROR
|
---|
138 | . . Q
|
---|
139 | . Q
|
---|
140 | Q
|
---|
141 | ;
|
---|
142 | ERROR ;--Set up array entry to contain the following:
|
---|
143 | ;1. record number
|
---|
144 | ;2. column number on spreadsheet containing the record number
|
---|
145 | ;3. column number on spreadsheet containing the data in error
|
---|
146 | ;4. error message
|
---|
147 | ;
|
---|
148 | S ECINDEX=ECINDEX+1
|
---|
149 | S RESULTS(ECINDEX)=ECRECV_"^"_ECRECPC_"^"_ECCOLERR_"^"_ECERRMSG_"^"
|
---|
150 | S ECERRFLG=1
|
---|
151 | Q
|
---|
152 | ;
|
---|
153 | ;Error messages:
|
---|
154 | ;
|
---|
155 | STA1 ;;Location not on institution file(#4)
|
---|
156 | STA2 ;;Multiple entries found for Location/Station #
|
---|
157 | SSN1 ;;No SSN x-ref on patient file(#2)
|
---|
158 | SSN2 ;;No SSN entry on patient file(#2)
|
---|
159 | SSN3 ;;No internal entry on patient file(#2) for ssn x-ref
|
---|
160 | SSN4 ;;SSN doesn't match SSN on patient file(#2)
|
---|
161 | SSN5 ;;SSN invalid
|
---|
162 | NAME1 ;;Patient Name is missing from VistA patient file(#2)
|
---|
163 | NAME2 ;;First 2 chars of patient last name don't match VistA
|
---|
164 | NAME3 ;;First 3 chars of patient last name don't match VistA
|
---|
165 | NAME4 ;;First 4 chars of patient last name don't match VistA
|
---|
166 | NAME5 ;;First char of patient last name doesn't match VistA
|
---|