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

ECV5RPC.m

Go to the documentation of this file.
  1. ECV5RPC ;ALB/ACS - Event Capture Spreadsheet Data Validation ;12/2/22 16:11
  1. ;;2.0;EVENT CAPTURE;**25,30,36,47,114,131,159**;8 May 96;Build 61
  1. ;
  1. ; Reference to $$SINFO^ICDEX in ICR #5747
  1. ; Reference to $$ICDDX^ICDEX in ICR #5747
  1. ; Reference to ^SC( in ICR #10040
  1. ;
  1. ;----------------------------------------------------------------------
  1. ; Validates the following Event Capture Spreadsheet Upload fields for
  1. ; records sent to PCE:
  1. ; 1. DIAGNOSIS CODE
  1. ; 2. ASSOCIATED CLINIC
  1. ;----------------------------------------------------------------------
  1. ;======================================================================
  1. ;MODIFICATIONS
  1. ;08/2001 EC*2.0*30 Updated the Diagnosis validation logic
  1. ;08/2016 EC*2.0*131 Allow for Clinic IEN to be sent
  1. ;======================================================================
  1. ;
  1. VALDIAG ;Validate Diagnosis Code. Make sure it exists on the ICD file
  1. N ECDT,ECCS,DXPARAM,DXIEN
  1. S %DT="XST",X=$G(ECENCV,"NOW") D ^%DT S ECDT=+Y
  1. I ECDXV="" D Q ; Spreadsheet is missing diagnosis code
  1. . S ECERRMSG=$P($T(DIAG1^ECV5RPC),";;",2)
  1. . S ECCOLERR=ECDXPC
  1. . D ERROR
  1. ;EC*2*159 begins
  1. ;if diag invalid, send error message
  1. ;I ECDXV'="" S (ECDXIEN,ECSFOUND)=0 D
  1. S ECCS=$$SINFO^ICDEX("DIAG",ECDT) ; Supported by ICR 5747
  1. F DXPARAM="ECDXV","ECSEC1V","ECSEC2V","ECSEC3V","ECSEC4V" D FINDDX(DXPARAM)
  1. ;EC*2*159 ends
  1. Q
  1. FINDDX(PARAM) ;
  1. ; Updates for ICD10
  1. I @DXPARAM="" Q
  1. S (MYDXIEN,DXIEN)=0
  1. S MYDXIEN=$$ICDDX^ICDEX(@DXPARAM,ECDT,+ECCS,"E") ; Supported by ICR 5747
  1. S:(+MYDXIEN>0)&($P(MYDXIEN,"^",10)) DXIEN=+MYDXIEN
  1. I DXIEN>0 D Q
  1. . S:PARAM="ECDXV" ECDXIEN=DXIEN
  1. . S:PARAM="ECSEC1V" ECSECDX1=DXIEN ;159
  1. . S:PARAM="ECSEC2V" ECSECDX2=DXIEN ;159
  1. . S:PARAM="ECSEC3V" ECSECDX3=DXIEN ;159
  1. . S:PARAM="ECSEC4V" ECSECDX4=DXIEN ;159
  1. ; Invalid Diagnosis code
  1. S ECERRMSG=$P($T(@DXPARAM^ECV5RPC),";;",2) ;159
  1. S ECCOLERR=ECDXPC
  1. D ERROR
  1. Q
  1. ;
  1. VALCLIN ;Validate Associated Clinic. Make sure the clinic is active for
  1. ;the date of the encounter
  1. S ECERRFLG=0
  1. I ECCLNNV=""&(ECCLNIV="") D ;131
  1. . ; Spreadsheet is missing the associated clinic name and IEN, need one of them
  1. . S ECERRMSG=$P($T(CLIN1^ECV5RPC),";;",2)
  1. . S ECCOLERR=ECCLNNPC
  1. . D ERROR
  1. . Q
  1. I 'ECERRFLG,ECCLNIV'=+ECCLNIV,ECCLNIV'="" D ;131 Make sure IEN is pure numeric
  1. .S ECERRMSG=$P($T(CLIN6^ECV5RPC),";;",2)
  1. .S ECCOLERR=ECCLNIPC
  1. .D ERROR
  1. .Q
  1. I 'ECERRFLG,ECCLNIV,'$D(^SC(+ECCLNIV,0)) D ;131 Section added to check for IEN existence
  1. .S ECERRMSG=$P($T(CLIN3^ECV5RPC),";;",2)
  1. .S ECCOLERR=ECCLNIPC
  1. .D ERROR
  1. .Q
  1. I 'ECERRFLG,ECCLNIV S ECCLNIEN=ECCLNIV ;131 If no error and IEN exists then IEN is valid
  1. I 'ECERRFLG,'+ECCLNIV,'$D(^SC("B",ECCLNNV)) D ;131
  1. . ; No B x-ref on file
  1. . S ECERRMSG=$P($T(CLIN2^ECV5RPC),";;",2)
  1. . S ECCOLERR=ECCLNNPC ;131
  1. . D ERROR
  1. . Q
  1. I 'ECERRFLG,'+ECCLNIV,$D(^SC("B",ECCLNNV)) D ;131
  1. . ;get associated clinic ien
  1. . S ECCLNIEN=$O(^SC("B",ECCLNNV,0)) ;131
  1. . I '$D(^SC(ECCLNIEN,0)) D
  1. . . ; Associated clinic ien not on file
  1. . . S ECERRMSG=$P($T(CLIN3^ECV5RPC),";;",2)
  1. . . S ECCOLERR=ECCLNNPC ;131
  1. . . D ERROR
  1. . . Q
  1. .Q ;131
  1. ;131 Removed one level of block structure from remaining code in this section so tests are done regardless of how clinic IEN was obtained.
  1. I 'ECERRFLG D
  1. . ;make sure it is of type 'clinic'
  1. . N CLINDATA
  1. . S CLINDATA=$G(^SC(ECCLNIEN,0))
  1. . I $P(CLINDATA,U,3)'="C" D
  1. . . S ECERRMSG=$P($T(CLIN4^ECV5RPC),";;",2)
  1. . . S ECCOLERR=ECCLNNPC ;131
  1. . . D ERROR
  1. . . Q
  1. . Q
  1. ;
  1. ;check for inactivate and reactivate dates
  1. I 'ECERRFLG,$D(^SC(ECCLNIEN,"I")) D
  1. . ;get inactivated and reactivated dates
  1. . N INACT,REACT
  1. . S INACT=$P(^SC(ECCLNIEN,"I"),U,1),REACT=$P(^SC(ECCLNIEN,"I"),U,2)
  1. . I INACT'="" D
  1. . . I REACT="",ECENCV'<INACT D CLINERR^ECV5RPC
  1. . . I REACT,ECENCV'<INACT,ECENCV<REACT D CLINERR^ECV5RPC
  1. . . Q
  1. . Q
  1. Q
  1. ;;
  1. CLINERR ;Clinic inactive for this encounter date
  1. S ECERRMSG=$P($T(CLIN5^ECV5RPC),";;",2)
  1. S ECCOLERR=ECCLNNPC ;131
  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. DIAG1 ;;Diagnosis code is required for this DSS Unit
  1. ECDXV ;;Invalid Diagnosis Code
  1. ECSEC1V ;;Secondary Dx 1 is invalid
  1. ECSEC2V ;;Secondary Dx 2 is invalid
  1. ECSEC3V ;;Secondary Dx 3 is invalid
  1. ECSEC4V ;;Secondary Dx 4 is invalid
  1. CLIN1 ;;Associated Clinic Name or IEN is required for this DSS Unit
  1. CLIN2 ;;Assoc Clinic "B" x-ref not found on Hosp Location File(#44)
  1. CLIN3 ;;Assoc Clinic not found on Hosp Location File(#44)
  1. CLIN4 ;;Assoc Clinic must be of type "C" (clinic)
  1. CLIN5 ;;Assoc Clinic inactive for this encounter date
  1. CLIN6 ;;Assoc Clinic IEN must be numeric