Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ECV2RPC

ECV2RPC.m

Go to the documentation of this file.
  1. ECV2RPC ;ALB/ACS - Event Capture Spreadsheet Validation ;10/31/17 12:33
  1. ;;2.0;EVENT CAPTURE;**25,30,49,95,139**;8 May 96;Build 7
  1. ;
  1. ;-----------------------------------------------------------------------
  1. ; Validates the following Event Capture spreadsheet fields:
  1. ; 1. Location
  1. ; 2. Patient SSN
  1. ; 3. Patient Name
  1. ;-----------------------------------------------------------------------
  1. ;=======================================================================
  1. ;MODIFICATIONS
  1. ;08/2001 EC*2.0*30 Updated the error message for Location
  1. ;=======================================================================
  1. ;
  1. ;--Set up error flag
  1. S ECERRFLG=0
  1. ;
  1. ;--Location must be on the Institution file
  1. N ERR ;139
  1. I $G(ECSOURCE)="STATE HOME",'$D(^DIC(4,ECSTAV)) S ERR=1 ;139
  1. I $G(ECSOURCE)'="STATE HOME",'$D(^DIC(4,"D",ECSTAV)) S ERR=1 ;139
  1. I $G(ERR) D ;139
  1. . ; Location not on the VistA file
  1. . S ECERRMSG=$P($T(STA1^ECV2RPC),";;",2)_$S($G(ECSOURCE)="STATE HOME":" - Invalid Internal Entry Number (IEN)",1:" - Invalid Station Number") ;139
  1. . S ECCOLERR=ECSTAPC
  1. . D ERROR
  1. . Q
  1. ;Check for multiple station number entries
  1. I $G(ECSOURCE)'="STATE HOME" D ;139 Check for multiple station numbers
  1. .N LOC,C,STR
  1. .S (LOC,C)=0,STR=""
  1. .F S LOC=$O(^DIC(4,"D",ECSTAV,LOC)) Q:'LOC S C=C+1 D
  1. .. S LOC(LOC)=ECSTAV_", Location IEN "_LOC_", "_$P(^DIC(4,LOC,0),"^")
  1. .I C>1 S LOC=0 F S LOC=$O(LOC(LOC)) Q:'LOC D
  1. .. S ECERRMSG=$P($T(STA2^ECV2RPC),";;",2)_LOC(LOC)
  1. .. S ECCOLERR=ECSTAPC
  1. .. D ERROR
  1. .I C=1,$D(^DIC(4,"D",ECSTAV)) S ECSTAV=$O(^DIC(4,"D",ECSTAV,"")) ;get ien
  1. ;
  1. ;--Patient SSN must be on the Patient file--
  1. N ECNAMEU,ECVNAMEV,ECVNAME,ECSSNNUM,ECI
  1. S (ECSSNIEN,ECERRFLG)=0,ECSSNNUM=+ECSSNV
  1. I $L(ECSSNNUM)>9!$L(ECSSNV)>10 D
  1. . ; User has entered an SSN that is too long
  1. . S ECERRMSG=$P($T(SSN5^ECV2RPC),";;",2)
  1. . S ECCOLERR=ECSSNPC
  1. . D ERROR
  1. . Q
  1. I 'ECERRFLG D
  1. . ; -add leading zeros if needed
  1. . I $L(ECSSNNUM)<9 S ECSSNV=$E("000000000",1,9-$L(ECSSNNUM))_ECSSNNUM
  1. . I $L(ECSSNV)>10 D
  1. . . ; User has entered an invalid SSN
  1. . . S ECERRMSG=$P($T(SSN5^ECV2RPC),";;",2)
  1. . . S ECCOLERR=ECSSNPC
  1. . . D ERROR
  1. . . Q
  1. . I 'ECERRFLG,$L(ECSSNV)=10 D
  1. . . I $E(ECSSNV,10,10)'="P" D
  1. . . . ; Invalid SSN
  1. . . . S ECERRMSG=$P($T(SSN5^ECV2RPC),";;",2)
  1. . . . S ECCOLERR=ECSSNPC
  1. . . . D ERROR
  1. . . Q
  1. . I 'ECERRFLG,'$D(^DPT("SSN",ECSSNV)) D
  1. . . ; No SSN x-ref on patient file
  1. . . S ECERRMSG=$P($T(SSN1^ECV2RPC),";;",2)
  1. . . S ECCOLERR=ECSSNPC
  1. . . D ERROR
  1. . . Q
  1. . Q
  1. I 'ECERRFLG D
  1. . ; -get SSN IEN
  1. . S ECSSNIEN=$O(^DPT("SSN",ECSSNV,0))
  1. . I 'ECSSNIEN D
  1. . . S ECERRMSG=$P($T(SSN2^ECV2RPC),";;",2)
  1. . . S ECCOLERR=ECSSNPC
  1. . . D ERROR
  1. . . Q
  1. . Q
  1. I 'ECERRFLG,'$D(^DPT(ECSSNIEN,0)) D
  1. . ; SSN record not found
  1. . S ECERRMSG=$P($T(SSN3^ECV2RPC),";;",2)
  1. . S ECCOLERR=ECSSNPC
  1. . D ERROR
  1. . Q
  1. ;
  1. I 'ECERRFLG D
  1. . ; -Compare patient file ssn to patient ssn
  1. . S ECVSSN=$P(^DPT(ECSSNIEN,0),U,9)
  1. . I ECVSSN'=ECSSNV D
  1. . . ; Spreadsheet ssn doesn't match vista
  1. . . S ECERRMSG=$P($T(SSN4^ECV2RPC),";;",2)
  1. . . S ECCOLERR=ECSSNPC
  1. . . D ERROR
  1. . . Q
  1. . Q
  1. ;--Patient Name must match VistA name--
  1. I 'ECERRFLG D
  1. . S ECVNAME=$P(^DPT(ECSSNIEN,0),U,1)
  1. . I '$D(ECVNAME) D
  1. . . ; Patient name missing from VistA file
  1. . . S ECERRMSG=$P($T(NAME1^ECV2RPC),";;",2)
  1. . . S ECCOLERR=ECSSNPC
  1. . . D ERROR
  1. . . Q
  1. . Q
  1. I 'ECERRFLG,'ECDECPAT D
  1. . N DFN,VADM S DFN=ECSSNIEN D 2^VADPT I +VADM(6) D
  1. . . S ECERRMSG="WARNING: [PATIENT DIED ON "_$P(VADM(6),U,2)_"]"
  1. . . S ECCOLERR=ECSSNPC
  1. . . D ERROR
  1. ; -- Patient last name check
  1. I 'ECERRFLG D
  1. . F ECI=1:1:$L($P(ECPATV,",")) D Q:ECERRFLG
  1. . .S ECVNAMEV=$E($P(ECVNAME,","),1,ECI),ECNAMEU=$E($P(ECPATV,","),1,ECI)
  1. . .I ECVNAMEV=ECNAMEU Q
  1. . .S ECERRMSG=$P($T(NAME2^ECV2RPC),";;",2)
  1. . .S ECCOLERR=ECPATLPC
  1. . .D ERROR
  1. ; -- Patient first name check
  1. I 'ECERRFLG D
  1. . F ECI=1:1:$L($P(ECPATV,",",2)) D Q:ECERRFLG
  1. . .S ECVNAMEV=$E($P(ECVNAME,",",2),1,ECI),ECNAMEU=$E($P(ECPATV,",",2),1,ECI)
  1. . .I ECVNAMEV=ECNAMEU Q
  1. . .S ECERRMSG=$P($T(NAME3^ECV2RPC),";;",2)
  1. . .S ECCOLERR=ECPATLPC
  1. . .D ERROR
  1. Q
  1. ;
  1. ERROR ;--Set up array entry to contain the following:
  1. ;1. record number
  1. ;2. column number on spreadsheet containing the record number
  1. ;3. column number on spreadsheet containing the data in error
  1. ;4. error message
  1. ;
  1. S ECINDEX=ECINDEX+1
  1. S RESULTS(ECINDEX)=ECRECV_"^"_ECRECPC_"^"_ECCOLERR_"^"_ECERRMSG_"^"
  1. S ECERRFLG=1
  1. Q
  1. ;
  1. ;Error messages:
  1. ;
  1. STA1 ;;Location not in Institution file (#4)
  1. STA2 ;;Multiple entries found for Station #
  1. SSN1 ;;No SSN x-ref on patient file(#2)
  1. SSN2 ;;No SSN entry on patient file(#2)
  1. SSN3 ;;No internal entry on patient file(#2) for ssn x-ref
  1. SSN4 ;;SSN doesn't match SSN on patient file(#2)
  1. SSN5 ;;SSN invalid
  1. NAME1 ;;Patient Name is missing from VistA patient file(#2)
  1. NAME2 ;;Patient last name doesn't match VistA
  1. NAME3 ;;Patient first name doesn't match VistA