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

ECUERPC1.m

Go to the documentation of this file.
  1. ECUERPC1 ;ALB/JAM - Event Capture Data Entry Broker Util ;1/24/12 16:19
  1. ;;2.0;EVENT CAPTURE;**25,33,42,46,47,54,72,76,110,112,114**;8 May 96;Build 20
  1. ;
  1. ; Reference to $$SINFO^ICDEX supported by ICR #5747
  1. ; Reference to $$ICDDX^ICDEX supported by ICR5747
  1. ;
  1. PATINF(RESULTS,ECARY) ;
  1. ;Broker entry point to get various types of data from EVENT CAPTURE
  1. ;PATIENT FILE #721
  1. ; RPC: EC GETPATINFO
  1. ;INPUTS ECARY - Contains the following subscripted elements
  1. ; ECIEN - Event Capture Patient ien
  1. ; ECTYP - Data type to return
  1. ;
  1. ;OUTPUTS RESULTS - Array of Event Capture Patient data
  1. ;
  1. N ECTYP,ECIEN
  1. S ECARY=$G(ECARY),ECIEN=$P(ECARY,U),ECTYP=$P(ECARY,U,2) I ECIEN="" Q
  1. I '$D(^ECH(ECIEN)) Q
  1. D SETENV^ECUMRPC
  1. I ECTYP="DXS" D PATDXS(ECIEN) Q
  1. I ECTYP="MOD" D PATMOD(ECIEN) Q
  1. I ECTYP="CLASS" D PATCLASS(ECIEN) Q
  1. I ECTYP="OTH" D PATOTH(ECIEN) Q
  1. I ECTYP="PRV" D PATPRV^ECUERPC2(ECIEN) Q
  1. Q
  1. PATDXS(ECIEN) ;
  1. ;Returns to broker a patient secondary DXs entries from EVENT
  1. ;CAPTURE PATIENT FILE #721
  1. ;INPUTS ECIEN - Event Capture Patient ien
  1. ;
  1. ;OUTPUTS RESULTS - Array of Event Capture Patient file contains
  1. ; 721 IEN^secondary dx ien #80^secondary dx code^dx description (ICD Code Set)
  1. ;
  1. N CNT,DXS,DXSIEN,DXSD,ECCS,ECDT
  1. I '$D(^ECH(ECIEN,"DX")) Q
  1. K ^TMP($J,"ECDXS")
  1. S (CNT,DXS)=0 F S DXS=$O(^ECH(ECIEN,"DX",DXS)) Q:'DXS D
  1. . S DXSIEN=$G(^ECH(ECIEN,"DX",DXS,0)) I DXSIEN="" Q
  1. . ; ICD10 Changes
  1. . S ECDT=$P($G(^ECH(ECIEN,0)),U,3) ; DATE/TIME OF PROCEDURE field (#2)
  1. . ; Determine Active Coding System Based on Date of Interest
  1. . S ECCS=$$SINFO^ICDEX("DIAG",ECDT)
  1. . ; Load the ICD code info
  1. . S DXSD=$$ICDDX^ICDEX(DXSIEN,ECDT,+ECCS,"I") ; Supported by ICR 5747
  1. . S ECCS=$P(ECCS,U,2),ECCS=" ("_$P(ECCS,"-",1)_$P(ECCS,"-",2)_")"
  1. . S DXSD=$P(DXSD,U,2)_" "_$P(DXSD,U,4)_ECCS
  1. . S CNT=CNT+1,^TMP($J,"ECDXS",CNT)=ECIEN_U_DXSIEN_U_DXSD
  1. S RESULTS=$NA(^TMP($J,"ECDXS"))
  1. Q
  1. PATMOD(ECIEN) ;
  1. ;Returns to broker a patient procedure modifier from EVENT CAPTURE
  1. ;PATIENT FILE #721
  1. ;INPUTS ECIEN - Event Capture Patient ien
  1. ;
  1. ;OUTPUTS RESULTS - Array of procedure modifiers
  1. ; 721 IEN^modifier ien #81.3^modifier^modifier name
  1. ;
  1. N MOD,MODIEN,CNT,MODS
  1. I '$D(^ECH(ECIEN,"MOD")) Q
  1. K ^TMP($J,"ECMOD")
  1. S (CNT,MOD)=0 F S MOD=$O(^ECH(ECIEN,"MOD",MOD)) Q:'MOD D
  1. . S MODIEN=$G(^ECH(ECIEN,"MOD",MOD,0)) I MODIEN="" Q
  1. . S MODS=$$MOD^ICPTMOD(MODIEN,"I",$P($G(^ECH(ECIEN,0)),U,3)) I +MODS<0 Q
  1. . S CNT=CNT+1
  1. . S ^TMP($J,"ECMOD",CNT)=ECIEN_U_$P(MODS,U,1,2)_" "_$P(MODS,U,3)
  1. S RESULTS=$NA(^TMP($J,"ECMOD"))
  1. Q
  1. PATCLASS(ECIEN) ;
  1. ;Returns to broker a patient classification & eligibility data from
  1. ;EVENT CAPTURE PATIENT FILE #721
  1. ; INPUTS ECIEN - Event Capture Patient ien
  1. ; OUTPUTS RESULTS - Array of procedure modifiers
  1. ; 721 IEN^agent orange^radiation exposure^service connect^environmental
  1. ; contaminants/SWAC^military sexual trauma^eligibility code #8^
  1. ; eligibility description^head/neck cancer^combat veteran^P112/SHAD
  1. ;
  1. N CLA,ELIG,ELCOD,ECAO,ECIR,ECEC,ECSC,ECMST,STR,ECHNC,ECCV,ECSHAD
  1. I '$D(^ECH(ECIEN,"P")),'$D(^ECH(ECIEN,"PCE")) Q
  1. K ^TMP($J,"ECLASS")
  1. S ELIG=$P($G(^ECH(ECIEN,"PCE")),"~",17),ELCOD="",CLA=$G(^ECH(ECIEN,"P"))
  1. S:ELIG'="" ELCOD=$P($G(^DIC(8,ELIG,0)),U)
  1. S ECAO=$P(CLA,U,3),ECIR=$P(CLA,U,4),ECEC=$P(CLA,U,5),ECSC=$P(CLA,U,6)
  1. S ECMST=$P(CLA,U,9),ECHNC=$P(CLA,U,10),ECCV=$P(CLA,U,11),ECSHAD=$P(CLA,U,12)
  1. S STR=ECIEN_U_ECAO_U_ECIR_U_ECSC_U_ECEC_U_ECMST
  1. S STR=STR_U_ELIG_U_ELCOD_U_ECHNC_U_ECCV_U_ECSHAD,^TMP($J,"ECLASS",1)=STR
  1. S RESULTS=$NA(^TMP($J,"ECLASS"))
  1. Q
  1. PATOTH(ECIEN) ;
  1. ;Returns to broker a patient remaining data from EVENT CAPTURE
  1. ;PATIENT FILE #721
  1. ;INPUTS ECIEN - Event Capture Patient ien
  1. ;
  1. ;OUTPUTS RESULTS - Array of procedure modifiers
  1. ; 721 IEN^procedure reason
  1. ;
  1. N REAS,ECX
  1. K ^TMP($J,"ECOTH")
  1. S ECX=^ECH(ECIEN,0)
  1. D GETS^DIQ(721,ECIEN_",","34;43;44","E","REAS") ;112
  1. S ^TMP($J,"ECOTH",1)=$G(REAS(721,ECIEN_",",34,"E"))_"^"_$G(REAS(721,ECIEN_",",43,"E"))_"^"_$G(REAS(721,ECIEN_",",44,"E")) ;112
  1. S RESULTS=$NA(^TMP($J,"ECOTH"))
  1. Q
  1. PATCLAST(RESULTS,ECARY) ;
  1. ;Returns to broker a patient status (in/out) and classification
  1. ; RPC: EC GETPATCLASTAT
  1. ;INPUTS ECARY - Contains the following subscripted elements
  1. ; ECDFN - Patient ien (#2)
  1. ; ECD - DSS Unit ien (#724)
  1. ; ECDT - Procedure date and time (fileman format)
  1. ;OUTPUTS RESULTS - Patient status and classifications delimited by (^)
  1. ; Patient Status: I for inpatient or O for outpatient
  1. ; Classification: 2- Agent Orange, 3- Ionizing Radiation
  1. ; 4- SC Condition, 5- Environment Contaminants/SWAC 6- Military
  1. ; Sexual Trauma 7- Head/Neck Cancer 8- Combat Veteran
  1. ; 9- Project 112/SHAD
  1. ; Data after the '~' refers to those class. that must be asked
  1. ; by Delphi appl. when the answer to SC=No.
  1. ; Data after "~" 1- Agent Orange 2- Ionizing Radi. 3- Env Cont/SWAC
  1. N ECDFN,ECDT,ECX,I,ECCLARY,SCDAT,PATSTAT,% ;112
  1. D SETENV^ECUMRPC
  1. S ECDFN=$P(ECARY,U),ECD=$P(ECARY,U,2),ECDT=$P(ECARY,U,3) Q:ECDFN=""
  1. I ECDT="" D NOW^%DTC S ECDT=%
  1. S PATSTAT=$$INOUTPT^ECUTL0(ECDFN,ECDT),RESULTS="^^^^^^",SCDAT=";;;"
  1. ;
  1. ; Removed in EC*110 so inpatient data can be answered for transmission to Austin
  1. ; This was to be consistent with VHA Directive 2009-002
  1. ;
  1. ; I PATSTAT="I" D Q
  1. ; .S RESULTS=PATSTAT_"^"_RESULTS_$S(SCDAT'="":"~"_SCDAT,1:"")
  1. I '$$CHKDSS^ECUTL0(+$G(ECD),PATSTAT) D Q
  1. .S RESULTS=PATSTAT_"^"_RESULTS_$S(SCDAT'="":"~"_SCDAT,1:"")
  1. D CL^SDCO21(ECDFN,ECDT,"",.ECCLARY) F ECX=3,1,2,4,5,6,7,8 D
  1. .I ECX=1,$P($G(^DPT(ECDFN,.321)),"^",2)'="Y" Q
  1. .I ECX=2,$P($G(^DPT(ECDFN,.321)),"^",3)'="Y" Q
  1. .I ECX=4,$P($G(^DPT(ECDFN,.322)),"^",13)'="Y",'$$EC^SDCO22(ECDFN,"") Q
  1. .I ECX=3,$D(ECCLARY(ECX)) F I=1,2,4 S ECCLARY(I)="SC"
  1. .I '$D(ECCLARY(ECX)) Q
  1. .;Check SC, if answer to SC is NO then these questions will be asked
  1. .I ECCLARY(ECX)="SC" S $P(SCDAT,";",ECX)="E"
  1. .E S $P(RESULTS,"^",ECX)="E"
  1. S RESULTS=PATSTAT_"^"_RESULTS_$S(SCDAT'="":"~"_SCDAT,1:"")
  1. Q
  1. ENCDXS(RESULTS,ECARY) ;
  1. ;Broker call returns a patient encounter primary & secondary dx (#721)
  1. ; RPC: EC GETENCDXS
  1. ;INPUTS ECDFN - Patient ien (#2)
  1. ; ECDT - Procedure date and time (fileman format)
  1. ; ECL - Location ien
  1. ; EC4 - Clinic ien
  1. ;
  1. ;OUTPUTS RESULTS - array of patient encounter diagnosis
  1. ; primary/secondary flag^(ICD Code Set) DX ien^DX code DX description.
  1. ;
  1. N ECDFN,ECDT,ECL,EC4,ECPDX,ECDX,ECDXN,ECDXS,CNT,STR,ECPDX,SDXCNT,% ;112
  1. N ECCS,ECICD
  1. D SETENV^ECUMRPC
  1. K ^TMP($J,"ECENCDXS")
  1. S ECDFN=$P(ECARY,U),ECDT=+$P(ECARY,U,2),ECL=$P(ECARY,U,3)
  1. S EC4=$P(ECARY,U,4) I ECDT="" D NOW^%DTC S ECDT=%
  1. I ECDFN=""!(ECL="")!(EC4="") Q
  1. S (ECDX,ECDXN)="",ECPDX=$$PDXCK^ECUTL2(ECDFN,ECDT,ECL,EC4) I ECDX="" Q
  1. ; Changes for ICD10
  1. ; Determine Active Coding System Based on Date of Interest
  1. S ECCS=$$SINFO^ICDEX("DIAG",ECDT) ; Supported by ICR 5747
  1. ; Load the ICD code info
  1. S ECICD=$$ICDDX^ICDEX(ECDX,ECDT,+ECCS,"I") ; Supported by ICR 5747
  1. S ECCS=$P(ECCS,U,2),ECCS=" ("_$P(ECCS,"-",1)_$P(ECCS,"-",2)_")"
  1. S IEN="",STR=1_U_ECDX_U_ECDXN_" "_$P(ECICD,U,4)_ECCS
  1. S CNT=1,^TMP($J,"ECENCDXS",CNT)=STR
  1. ;*ACS concat description to 2nd diag code, in the order entered by the user
  1. F S IEN=$O(ECDXS(IEN)) Q:IEN="" D
  1. . S ECICD=$$ICDDX^ICDEX(ECDXS(IEN),ECDT,+ECCS,"I") ; Supported by ICR 5747
  1. . S CNT=CNT+1,^TMP($J,"ECENCDXS",CNT)=0_U_ECDXS(IEN)_U_IEN_" "_$P(ECICD,U,4)_ECCS
  1. S RESULTS=$NA(^TMP($J,"ECENCDXS"))
  1. Q
  1. ;
  1. PROCBAT(RESULTS,ECARY) ;
  1. ;Broker call returns the entries from EVENT CAPTURE PATIENT FILE #721
  1. ;for patients for a specific procedure
  1. ; RPC: EC GETBATPROCS
  1. ;INPUTS ECARY - Contains the following subscripted elements
  1. ; ECLOC - Location ien
  1. ; ECUNT - DSS unit ien
  1. ; ECC - Category ien
  1. ; ECP - Procedure ien
  1. ; ECSD - Start Date
  1. ; ECED - End Date
  1. ;
  1. ;OUTPUTS RESULTS - Array of Event Capture Patient data containing:-
  1. ; 721 IEN^Patient name^Procedure Date/Time^(Primary Dx Code set) Primary Dx
  1. ; ^Ordering Section^Associated Clinic
  1. ; ^SSN^DOB^Procedure Date and Time
  1. ;
  1. N IEN,CNT,ECCS,ECLOC,ECUNT,NODE,DATA,PXDT,ECV,ECC,ECP,ECSD,ECED,DATE,DFN
  1. N CAT,ECI,VADM,ORC,ASC,ECDX
  1. S ECV="ECLOC^ECUNT^ECC^ECP^ECSD^ECED"
  1. D PARSE^ECUERPC(ECV,ECARY)
  1. I (ECLOC="")!(ECUNT="")!(ECC="")!(ECP="") Q
  1. D SETENV^ECUMRPC K ^TMP($J,"ECBATPX") S CNT=0
  1. S %DT="STX" F ECI="ECSD","ECED" S X=@ECI D ^%DT S @ECI=Y
  1. S ECSD=$S(ECSD=-1:DT,1:ECSD)-.0001,ECED=$S(ECED=-1:DT,1:ECED)+.9999
  1. Q:ECED'>ECSD S DATE=ECSD
  1. F S DATE=$O(^ECH("AC1",ECLOC,DATE)) Q:'DATE!(DATE>ECED) S IEN=0 D
  1. . F S IEN=$O(^ECH("AC1",ECLOC,DATE,IEN)) Q:'IEN D
  1. . . S NODE=$G(^ECH(IEN,0)) Q:NODE="" Q:$P(NODE,U,7)'=ECUNT
  1. . . Q:$P(NODE,U,8)'=ECC Q:$P(NODE,U,9)'=ECP
  1. . . S ECDX=$P($G(^ECH(IEN,"P")),U,2) I ECDX'="" D
  1. . . . ; Updates for ICD10
  1. . . . ; Load the ICD code info
  1. . . . S ECCS=$$SINFO^ICDEX("DIAG",DATE) ; Supported by ICR 5747
  1. . . . ; Load the ICD code info
  1. . . . S ECDX=$$ICDDX^ICDEX(ECDX,DATE,+ECCS,"I") ; Supported by ICR 5747
  1. . . . S ECCS=$P(ECCS,U,2),ECCS=" ("_$P(ECCS,"-",1)_$P(ECCS,"-",2)_")"
  1. . . . S ECDX=$P(ECDX,U,2)_" "_$P(ECDX,U,4)_ECCS
  1. . . S ASC=$P(NODE,U,19) S:ASC'="" ASC=$$GET1^DIQ(44,ASC,.01,"I")
  1. . . S ORC=$P(NODE,U,12) S:ORC'="" ORC=$$GET1^DIQ(723,ORC,.01,"I")
  1. . . S Y=DATE X ^DD("DD") S PXDT=Y,DFN=$P(NODE,U,2) D DEM^VADPT
  1. . . S DATA=$E(VADM(1),1,30)_U_PXDT_U_ECDX_U_ORC_U_ASC
  1. . . S CNT=CNT+1,^TMP($J,"ECBATPX",CNT)=IEN_U_DATA
  1. S RESULTS=$NA(^TMP($J,"ECBATPX"))
  1. Q
  1. ;
  1. CLHLP(RESULTS,ECARY) ;RPC Broker entry point for classification help
  1. ; RPC: EC CLASHELP
  1. ;INPUTS ECARY - Contains the following elements for report printing
  1. ; ECDFN - Patient DFN from file (#2)
  1. ; ECKY - Key to provide help on
  1. ;
  1. ;OUTPUTS RESULTS - Array of help text for classification
  1. ;
  1. N ECFILER,ECERR,ECDIRY,ECUFILE,ECDFN,ECKY,ECHNDL
  1. D SETENV^ECUMRPC
  1. K ^TMP("ECMSG",$J)
  1. S ECERR=0,ECDFN=$P(ECARY,U),ECKY=$P(ECARY,U,2) D I ECERR D CLEND Q
  1. .I ECDFN="" S ECERR=1,^TMP("ECMSG",$J,1)="0^Patient IEN not defined" Q
  1. .I ECKY="" S ECERR=1,^TMP("ECMSG",$J,1)="0^Help Key not defined" Q
  1. .S DIC=2,DIC(0)="NMZX",X=ECDFN D ^DIC I Y<0 D
  1. ..S ECERR=1,^TMP("ECMSG",$J,1)="0^Patient IEN not found"
  1. S ECHNDL="ECLASHLP" D HFSOPEN^ECRRPC(ECHNDL) I ECERR D CLEND Q
  1. U IO
  1. I ECKY="SC" D SC^SDCO23(ECDFN)
  1. D HFSCLOSE^ECRRPC(ECFILER)
  1. CLEND ;
  1. I $D(^TMP("ECMSG",$J)) S RESULTS=$NA(^TMP("ECMSG",$J)) Q
  1. S RESULTS=$NA(^TMP($J))
  1. Q
  1. ECDEF(RESULTS,ECARY) ;RPC Broker entry point to get a default for space bar
  1. ; RPC: EC SPACEBAR
  1. ;INPUTS ECARY - Contains the following elements for report printing
  1. ; ECFILE - File to obtain value from
  1. ;
  1. ;OUTPUTS RESULTS - IEN^Description of Text
  1. ;
  1. N DIC,ECFILE,X,Y
  1. D SETENV^ECUMRPC
  1. S ECFILE=$P(ECARY,U)
  1. I ECFILE="" S ECERR=1,RESULTS="0^File not defined" Q
  1. S X=" ",DIC(0)="MZX",DIC=ECFILE D ^DIC I Y<0 D I ECERR Q
  1. . S ECERR=1,RESULTS="0^Nothing found"
  1. S RESULTS=Y
  1. Q