[613] | 1 | ECV4RPC ;ALB/ACS;Event Capture Spreadsheet Data Validation ;Oct 13, 2000
|
---|
| 2 | ;;2.0; EVENT CAPTURE ;**25,33,49**;8 May 96
|
---|
| 3 | ;
|
---|
| 4 | ;-----------------------------------------------------------------------
|
---|
| 5 | ; Validates the following Event Capture Spreadsheet Upload fields:
|
---|
| 6 | ; 1. VOLUME
|
---|
| 7 | ; 2. ENCOUNTER DATE/TIME
|
---|
| 8 | ; 3. PROVIDER NAME
|
---|
| 9 | ;
|
---|
| 10 | ; Determines the following:
|
---|
| 11 | ; 1. PATIENT STATUS
|
---|
| 12 | ;-----------------------------------------------------------------------
|
---|
| 13 | ;
|
---|
| 14 | ;--Volume must be 1 thru 99--
|
---|
| 15 | N ECVOLVN,ECPDT
|
---|
| 16 | S ECVOLVN=ECVOLV
|
---|
| 17 | I (+ECVOLVN'=ECVOLVN)!(ECVOLVN<1)!(ECVOLVN>99)!(ECVOLVN?.E1"."1N.N) D
|
---|
| 18 | . S ECERRMSG=$P($T(VOL1^ECV4RPC),";;",2)
|
---|
| 19 | . S ECCOLERR=ECVOLPC
|
---|
| 20 | . D ERROR
|
---|
| 21 | . Q
|
---|
| 22 | I $L(ECVOLVN)'=$L(ECVOLV) D
|
---|
| 23 | . ; Volume must be numeric
|
---|
| 24 | . S ECERRMSG=$P($T(VOL2^ECV4RPC),";;",2)
|
---|
| 25 | . S ECCOLERR=ECVOLPC
|
---|
| 26 | . D ERROR
|
---|
| 27 | . Q
|
---|
| 28 | ;
|
---|
| 29 | ;--Encounter Date/Time--
|
---|
| 30 | S ECERRFLG=0
|
---|
| 31 | N ECRETVAL
|
---|
| 32 | S %DT(0)="-NOW",ECENCV=$TR(ECENCV," ","")
|
---|
| 33 | D CHK^DIE(721,2,"E",ECENCV,.ECRETVAL)
|
---|
| 34 | I $G(ECRETVAL)="^" D
|
---|
| 35 | . ; Invalid encounter date/time
|
---|
| 36 | . S ECERRMSG=$P($T(ENC1^ECV4RPC),";;",2)
|
---|
| 37 | . S ECCOLERR=ECENCPC
|
---|
| 38 | . D ERROR
|
---|
| 39 | . Q
|
---|
| 40 | I $G(ECRETVAL)'="^" D
|
---|
| 41 | . S %DT="XST",X=ECENCV
|
---|
| 42 | . D ^%DT
|
---|
| 43 | . S ECENCV=+Y
|
---|
| 44 | . Q
|
---|
| 45 | ;
|
---|
| 46 | ;--Provider Name or IEN must be on the New Person file--
|
---|
| 47 | ;--and provider must have active person class --
|
---|
| 48 | N ECPROV1
|
---|
| 49 | S ECERRFLG=0,ECPRVIEN=0
|
---|
| 50 | ; Remove punctuation if necessary
|
---|
| 51 | I ECPROVV?.E1P S ECPROVV=$E(ECPROVV,1,$L(ECPROVV)-1)
|
---|
| 52 | ; If provider ien passed in, find on file
|
---|
| 53 | S ECPROV1=ECPROVV
|
---|
| 54 | I +ECPROVV>0 D
|
---|
| 55 | . I '$D(^VA(200,ECPROVV)) D
|
---|
| 56 | . . ; Provider ien not found on New Person file
|
---|
| 57 | . . S ECERRMSG=$P($T(PROV4^ECV4RPC),";;",2)
|
---|
| 58 | . . S ECCOLERR=ECPRVLPC
|
---|
| 59 | . . D ERROR
|
---|
| 60 | . E S ECPRVIEN=ECPROVV
|
---|
| 61 | ;
|
---|
| 62 | ; If provider name passed in, find on B x-ref and
|
---|
| 63 | ; make sure there isn't more than 1 with same name
|
---|
| 64 | N ECPRVNXT,ECPRVMOR,ECPRVMNT
|
---|
| 65 | S (ECPRVMOR,ECPRVMNT)=0,ECCOLERR=ECPRVLPC
|
---|
| 66 | I +ECPROVV'>0,$D(^VA(200,"B",ECPROVV)) D
|
---|
| 67 | . S ECPRVIE2=$O(^VA(200,"B",ECPROVV,""))
|
---|
| 68 | . S ECPRVNXT=$O(^VA(200,"B",ECPROVV,ECPRVIE2))
|
---|
| 69 | . I ECPRVNXT'="" D
|
---|
| 70 | . . S ECERRMSG=$P($T(PROV5^ECV4RPC),";;",2)
|
---|
| 71 | . . S ECCOLERR=ECPRVLPC
|
---|
| 72 | . . D ERROR
|
---|
| 73 | . . S ECPRVMOR=1
|
---|
| 74 | . E S ECPRVIEN=ECPRVIE2
|
---|
| 75 | ;
|
---|
| 76 | I +ECPROVV'>0,'$D(^VA(200,"B",ECPROVV)) D
|
---|
| 77 | . ; Exact match not found on New Person file
|
---|
| 78 | . ; Generate standard error message
|
---|
| 79 | . S ECERRMSG=$P($T(PROV1^ECV4RPC),";;",2)
|
---|
| 80 | . S ECCOLERR=ECPRVLPC
|
---|
| 81 | . D ERROR
|
---|
| 82 | . S ECPRVMNT=1
|
---|
| 83 | ; If exact match not found, get provider info
|
---|
| 84 | I ECPRVMNT D
|
---|
| 85 | . ; look at next provider on file for 'close' match
|
---|
| 86 | . N ECINFO,ECLENPRV,NOMATCH,ECSPEC,ECSUBSP
|
---|
| 87 | . N ECCOUNT,ECFIRST,ECLAST,ECPRVNXT,ECPRVIE2,ECPRVIE3
|
---|
| 88 | . S ECLENPRV=$L(ECPROVV),(ECPRVIE2,ECPRVIE3)="",(ECCOUNT,NOMATCH)=0
|
---|
| 89 | . S ECPRVNXT=ECPROVV
|
---|
| 90 | . F S ECPRVNXT=$O(^VA(200,"B",ECPRVNXT)) Q:NOMATCH=1 D
|
---|
| 91 | . . F S ECPRVIE3=$O(^VA(200,"B",ECPRVNXT,ECPRVIE3)) Q:ECPRVIE3="" D
|
---|
| 92 | . . . I ECPROVV'=$E(ECPRVNXT,1,ECLENPRV) S NOMATCH=1
|
---|
| 93 | . . . E D
|
---|
| 94 | . . . . ;get provider info and add to end of error string
|
---|
| 95 | . . . . S ECINFO=$$GET^XUA4A72(ECPRVIE3,ECENCV)
|
---|
| 96 | . . . . I +ECINFO'>0 D
|
---|
| 97 | . . . . . S ECERRMSG=ECPRVNXT_"-"_ECPRVIE3_"-Inactive Provider for this encounter date"
|
---|
| 98 | . . . . . D ERROR
|
---|
| 99 | . . . . . ;S ECCOUNT=ECCOUNT+1
|
---|
| 100 | . . . . I +ECINFO>0 D
|
---|
| 101 | . . . . . S ECCOUNT=ECCOUNT+1
|
---|
| 102 | . . . . . S ECSPEC=$P(ECINFO,U,3)
|
---|
| 103 | . . . . . I ECSPEC=" " S ECSPEC=""
|
---|
| 104 | . . . . . S ECSUBSP=$P(ECINFO,U,4)
|
---|
| 105 | . . . . . I ECSUBSP=" " S ECSUBSP=""
|
---|
| 106 | . . . . . S ECPCLASS=$P(^VA(200,ECPRVIE3,"USC1",0),U,3)
|
---|
| 107 | . . . . . I ECPCLASS="" S ECPCLASS="PERSON CLASS NOT FOUND"
|
---|
| 108 | . . . . . S ECERRMSG=ECPRVNXT_"-"_ECPRVIE3_"-"_ECSPEC_"-"_ECSUBSP_"-"_ECPCLASS
|
---|
| 109 | . . . . . D ERROR
|
---|
| 110 | ; If more than one provider with that name, get info
|
---|
| 111 | I ECPRVMOR D
|
---|
| 112 | . N ECINFO,ECSPEC,ECSUBSP,ECPCLASS,ECCOUNT,ECFIRST,ECLAST,ECPRVIE2
|
---|
| 113 | . S ECCOUNT=0,ECPRVIE2=0
|
---|
| 114 | . ;look at each provider for exact match
|
---|
| 115 | . F S ECPRVIE2=$O(^VA(200,"B",ECPROVV,ECPRVIE2)) Q:ECPRVIE2="" D
|
---|
| 116 | . . S ECINFO=$$GET^XUA4A72(ECPRVIE2,ECENCV)
|
---|
| 117 | . . I +ECINFO'>0 D
|
---|
| 118 | . . . S ECERRMSG=ECPROVV_"-"_ECPRVIE2_"-Inactive Provider for this encounter date"
|
---|
| 119 | . . . D ERROR
|
---|
| 120 | . . I +ECINFO>0 D
|
---|
| 121 | . . . S ECCOUNT=ECCOUNT+1
|
---|
| 122 | . . . S ECSPEC=$P(ECINFO,U,3)
|
---|
| 123 | . . . I ECSPEC=" " S ECSPEC=""
|
---|
| 124 | . . . S ECSUBSP=$P(ECINFO,U,4)
|
---|
| 125 | . . . I ECSUBSP=" " S ECSUBSP=""
|
---|
| 126 | . . . S ECPCLASS=$P(^VA(200,ECPRVIE2,"USC1",0),U,3)
|
---|
| 127 | . . . I ECPCLASS="" S ECPCLASS="PERSON CLASS NOT FOUND"
|
---|
| 128 | . . . S ECERRMSG=ECPROVV_"-"_ECPRVIE2_"-"_ECSPEC_"-"_ECSUBSP_"-"_ECPCLASS
|
---|
| 129 | . . . D ERROR
|
---|
| 130 | ;
|
---|
| 131 | ; Check person class of valid provider
|
---|
| 132 | S ECPROVV=ECPROV1
|
---|
| 133 | S %DT="XST",X=ECENCV D ^%DT S ECPDT=$S(+Y>0:+Y,1:DT)
|
---|
| 134 | I 'ECERRFLG D
|
---|
| 135 | . I ECPRVIEN=0 S ECPRVIEN=$O(^VA(200,"B",ECPROVV,0))
|
---|
| 136 | . I '$D(^VA(200,ECPRVIEN,"USC1",0)) D
|
---|
| 137 | . . ; Person class xref doesn't exist
|
---|
| 138 | . . S ECERRMSG=$P($T(PROV2^ECV4RPC),";;",2)
|
---|
| 139 | . . S ECCOLERR=ECPRVLPC
|
---|
| 140 | . . D ERROR
|
---|
| 141 | . . Q
|
---|
| 142 | . Q
|
---|
| 143 | ;
|
---|
| 144 | I 'ECERRFLG D
|
---|
| 145 | . S ECPCLASS=$P(^VA(200,ECPRVIEN,"USC1",0),U,3)
|
---|
| 146 | . I ECPCLASS="" D
|
---|
| 147 | . . ; Person class field empty
|
---|
| 148 | . . S ECERRMSG=$P($T(PROV2^ECV4RPC),";;",2)
|
---|
| 149 | . . S ECCOLERR=ECPRVLPC
|
---|
| 150 | . . D ERROR
|
---|
| 151 | . . Q
|
---|
| 152 | . Q
|
---|
| 153 | ;
|
---|
| 154 | I 'ECERRFLG,'$D(^VA(200,ECPRVIEN,"USC1",ECPCLASS,0)) D
|
---|
| 155 | . ; Person class information missing
|
---|
| 156 | . S ECERRMSG=$P($T(PROV2^ECV4RPC),";;",2)
|
---|
| 157 | . S ECCOLERR=ECPRVLPC
|
---|
| 158 | . D ERROR
|
---|
| 159 | . Q
|
---|
| 160 | ;
|
---|
| 161 | ; Check for person class expiration date
|
---|
| 162 | I 'ECERRFLG,$$GET^XUA4A72(ECPRVIEN,ECPDT)<1 D
|
---|
| 163 | . ; Person class contains an expiration date
|
---|
| 164 | . S ECERRMSG=$P($T(PROV3^ECV4RPC),";;",2)
|
---|
| 165 | . S ECCOLERR=ECPRVLPC
|
---|
| 166 | . D ERROR
|
---|
| 167 | . Q
|
---|
| 168 | ;
|
---|
| 169 | I 'ECERRFLG D
|
---|
| 170 | . S ECPRVTYP=$P(^VA(200,ECPRVIEN,"USC1",ECPCLASS,0),U,1)
|
---|
| 171 | . I $P(^USC(8932.1,ECPRVTYP,0),U,4)'="a" D
|
---|
| 172 | . . ; Person class is not active
|
---|
| 173 | . . S ECERRMSG=$P($T(PROV3^ECV4RPC),";;",2)
|
---|
| 174 | . . S ECCOLERR=ECPRVLPC
|
---|
| 175 | . . D ERROR
|
---|
| 176 | . . Q
|
---|
| 177 | . Q
|
---|
| 178 | ;
|
---|
| 179 | ;--Determine Patient Status--
|
---|
| 180 | S ECPSTAT=""
|
---|
| 181 | I ECSSNIEN D
|
---|
| 182 | . S ECERRFLG=0
|
---|
| 183 | . S ECPSTAT=$$INOUTPT^ECUTL0(ECSSNIEN,+ECENCV)
|
---|
| 184 | . I ECPSTAT="" D
|
---|
| 185 | . . ; Unable to determine patient status
|
---|
| 186 | . . S ECERRMSG=$P($T(STAT1^ECV4RPC),";;",2)
|
---|
| 187 | . . S ECCOLERR=ECENCPC
|
---|
| 188 | . . D ERROR
|
---|
| 189 | . . Q
|
---|
| 190 | . I ECPSTAT="I",'ECPSTATV,'ECERRFLG D
|
---|
| 191 | . . ; Patient status is Inpatient and override flag is false
|
---|
| 192 | . . S ECERRMSG=$P($T(STAT2^ECV4RPC),";;",2)
|
---|
| 193 | . . S ECCOLERR=ECENCPC
|
---|
| 194 | . . D ERROR
|
---|
| 195 | . . Q
|
---|
| 196 | ;
|
---|
| 197 | ;--Check to see if the DSS Unit is 'send to PCE'--
|
---|
| 198 | S ECDXIEN="",ECCLNIEN=""
|
---|
| 199 | I ECPSTAT'="",ECDSSIEN'="" D
|
---|
| 200 | . N ECDSSDAT,ECDSSPCE
|
---|
| 201 | . S ECDSSDAT=$G(^ECD(ECDSSIEN,0))
|
---|
| 202 | . S ECDSSPCE=$P(ECDSSDAT,U,14)
|
---|
| 203 | . ; If Outpatient and send=O, or send=A
|
---|
| 204 | . I ((ECPSTAT="O")&(ECDSSPCE["O"))!(ECDSSPCE["A") D
|
---|
| 205 | . . ;Validate Diagnosis code and Associated Clinic
|
---|
| 206 | . . D VALDIAG^ECV5RPC
|
---|
| 207 | . . D VALCLIN^ECV5RPC
|
---|
| 208 | . Q
|
---|
| 209 | ;
|
---|
| 210 | ;--Check to see if DUZ is defined
|
---|
| 211 | S ECDUZ=$S($D(DUZ):DUZ,1:"")
|
---|
| 212 | I ECDUZ="" D
|
---|
| 213 | . ; Invalid DUZ
|
---|
| 214 | . S ECERRMSG=$P($T(DUZ^ECV4RPC),";;",2),ECCOLERR=0
|
---|
| 215 | . D ERROR
|
---|
| 216 | Q
|
---|
| 217 | ;;
|
---|
| 218 | ERROR ;--Set up array entry to contain the following:
|
---|
| 219 | ;1. record number
|
---|
| 220 | ;2. column number on spreadsheet containing the record number
|
---|
| 221 | ;3. column number on spreadsheet containing the data in error
|
---|
| 222 | ;4. error message
|
---|
| 223 | ;
|
---|
| 224 | S ECINDEX=ECINDEX+1
|
---|
| 225 | S RESULTS(ECINDEX)=ECRECV_"^"_ECRECPC_"^"_ECCOLERR_"^"_ECERRMSG_"^"
|
---|
| 226 | S ECERRFLG=1
|
---|
| 227 | Q
|
---|
| 228 | ;
|
---|
| 229 | ;Error messages:
|
---|
| 230 | ;
|
---|
| 231 | VOL1 ;;Volume must be a whole number from 1 to 99
|
---|
| 232 | VOL2 ;;Volume must contain numeric characters only
|
---|
| 233 | PROV1 ;;Provider has no B x-ref on New Person file(#200)
|
---|
| 234 | PROV2 ;;Unable to determine person class
|
---|
| 235 | PROV3 ;;Provider does not have an active person class
|
---|
| 236 | PROV4 ;;Provider IEN not found on New Person file(#200)
|
---|
| 237 | PROV5 ;;More than one provider with this name - use IEN
|
---|
| 238 | ENC1 ;;Invalid encounter date/time. Date cannot be in the future.
|
---|
| 239 | STAT1 ;;Unable to determine patient status
|
---|
| 240 | STAT2 ;;The patient status is Inpatient
|
---|
| 241 | DUZ ;;User DUZ not defined
|
---|