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

EDPRPT10.m

Go to the documentation of this file.
  1. EDPRPT10 ;SLC/MKB - Admissions Report ;4/25/13 3:15pm
  1. ;;2.0;EMERGENCY DEPARTMENT;**6,2**;Feb 24, 2012;Build 23
  1. ;
  1. ADM(BEG,END,CSV) ; Get Admissions Report for EDPSITE by date range
  1. N IN,OUT,LOG,X,X0,X1,X3,DX,DISP,ROW,TAB
  1. N ELAPSE,TRIAGE,WAIT,ADMDEC,ADMDEL
  1. D INIT ;set counters, sums to 0
  1. D:'$G(CSV) XML^EDPX("<logEntries>") I $G(CSV) D ;headers
  1. . S TAB=$C(9)
  1. . ;***pij 4/19/2013 changed ED to IEN
  1. . ;S X="ED"_TAB_"Time Out"_TAB_"Complaint"_TAB_"MD"_TAB_"Acuity"_TAB_"Dispo"_TAB_"Adm Dec"_TAB_"Adm Delay"_TAB_"Diagnosis"_TAB_"ICD9" ;_TAB_"ER Spec Visit"
  1. . ;Begin EDP*2.0*2 changes - drp
  1. . S X="IEN"_TAB_"Time Out"_TAB_"Complaint"_TAB_"MD"_TAB_"Acuity"_TAB_"Dispo"_TAB_"Adm Dec"_TAB_"Adm Delay"_TAB_"Diagnosis"_TAB_"ICD"_TAB_"ICD Type" ;_TAB_"ER Spec Visit"
  1. . ;end EDP*2.0*2 changes
  1. . ;***
  1. . D ADD^EDPCSV(X)
  1. S IN=BEG-.000001
  1. F S IN=$O(^EDP(230,"ATI",EDPSITE,IN)) Q:'IN Q:IN>END S LOG=0 F S LOG=+$O(^EDP(230,"ATI",EDPSITE,IN,LOG)) Q:LOG<1 D
  1. . S X0=^EDP(230,LOG,0),X1=$G(^(1)),X3=$G(^(3))
  1. . Q:'+$P(X1,U,2)
  1. . S DISP=$$ECODE^EDPRPT($P(X1,U,2)),OUT=$P(X0,U,9)
  1. . ;TDP - Patch 2 change to capture entries without abbreviations
  1. . ;Q:DISP="" Q:'$D(CNT($$UP^XLFSTR(DISP))) ;visits w/admit disp
  1. . ;S:DISP="" DISP="NONE"
  1. . I DISP="" S DISP=$$DISP^EDPRPT($P(X1,U,2))
  1. . ;Q:'$D(CNT($$UP^XLFSTR(DISP))) ;visits w/admit disp
  1. . ;TDP - Patch 2, added VADMIT1 call for additional VA Admit check
  1. . I '$D(CNT($$UP^XLFSTR(DISP))),'$$VADMIT1^EDPRPT2($P(X1,U,2)) Q ;visits w/admit disp
  1. . S DX=$$DXPRI^EDPQPCE(+$P(X0,U,3),LOG)
  1. . K ROW S ROW("id")=LOG
  1. . S ROW("outTS")=$S($G(CSV):$$EDATE^EDPRPT(OUT),1:OUT)
  1. . S ROW("complaint")=$P(X1,U)
  1. . S ROW("md")=$$EPERS^EDPRPT($P(X3,U,5))
  1. . S ROW("acuity")=$$ECODE^EDPRPT($P(X3,U,3))
  1. . S ROW("disposition")=DISP,DISP=$$UP^XLFSTR(DISP)
  1. . ;Begin EDP*2.0*2 changes - drp
  1. . S ROW("icd")=$P(DX,U),ROW("dx")=$P(DX,U,2),ROW("icdType")=$P(DX,U,3)
  1. . ; ER Special Visit ?? -- ck ^DPT dispositions
  1. . S CNT("ALL")=CNT("ALL")+1,CNT(DISP)=CNT(DISP)+1
  1. . ;
  1. A1 . ; calculate times
  1. . ; S:OUT="" OUT=NOW
  1. . S ELAPSE=$S(OUT:($$FMDIFF^XLFDT(OUT,IN,2)\60),1:0)
  1. . F I="ALL",DISP S MIN(I,"elapsed")=MIN(I,"elapsed")+ELAPSE
  1. . ;
  1. . S X=$$ACUITY^EDPRPT(LOG),TRIAGE=0 ;S:X<1 X=OUT
  1. . S:X TRIAGE=($$FMDIFF^XLFDT(X,IN,2)\60)
  1. . F I="ALL",DISP S MIN(I,"triage")=MIN(I,"triage")+TRIAGE
  1. . ;
  1. . S X=$$LVWAITRM^EDPRPT(LOG),WAIT=0 ;leave waiting room
  1. . S:X WAIT=($$FMDIFF^XLFDT(X,IN,2)\60)
  1. . F I="ALL",DISP S MIN(I,"wait")=MIN(I,"wait")+WAIT
  1. . ;
  1. . S X=$$ADMIT^EDPRPT(LOG) ;decision to admit
  1. . S ADMDEC=$S(X:($$FMDIFF^XLFDT(X,IN,2)\60),1:0)
  1. . F I="ALL",DISP S MIN(I,"admDec")=MIN(I,"admDec")+ADMDEC
  1. . S ROW("admDec")=ADMDEC
  1. . ;
  1. . S ADMDEL=$S(X:($$FMDIFF^XLFDT(OUT,X,2)\60),1:0)
  1. . F I="ALL",DISP S MIN(I,"admDel")=MIN(I,"admDel")+ADMDEL
  1. . S ROW("admDel")=ADMDEL
  1. . ;
  1. . I '$G(CSV) S X=$$XMLA^EDPX("log",.ROW) D XML^EDPX(X) Q
  1. . S X=ROW("id")
  1. . F I="outTS","complaint","md","acuity","disposition","admDec","admDel","dx","icd","icdType" S X=X_$C(9)_$G(ROW(I))
  1. . ;End EDP*2.0*2 changes - drp
  1. . D ADD^EDPCSV(X)
  1. D:'$G(CSV) XML^EDPX("</logEntries>")
  1. ;
  1. A2 ; calculate & include averages
  1. Q:CNT("ALL")<1 ;no visits found
  1. I $G(CSV) D Q ;return as CSV
  1. . ;***pij 4/19/2013 changed field to Elapsed from Visit
  1. . ;S X=TAB_TAB_TAB_" Activity Summary"_TAB_"Total"_TAB_"Visit"_TAB_"Triage"_TAB_"Wait"_TAB_"Adm Dec"_TAB_"Adm Delay"
  1. . S X=TAB_TAB_TAB_" Activity Summary"_TAB_"Total"_TAB_"Elapsed"_TAB_"Triage"_TAB_"Wait"_TAB_"Adm Dec"_TAB_"Adm Delay"
  1. . ;***
  1. . D BLANK^EDPCSV,ADD^EDPCSV(X),BLANK^EDPCSV
  1. . S X=TAB_TAB_TAB_"Total Patients VA Admitted"_TAB_CNT("ALL")
  1. . F I="elapsed","triage","wait","admDec","admDel" D
  1. .. S Y=MIN("ALL",I)\CNT("ALL"),X=X_TAB_$S(Y:$$ETIME^EDPRPT(Y),1:"0:00")
  1. . D ADD^EDPCSV(X),BLANK^EDPCSV
  1. . S X=TAB_TAB_TAB_" Disposition" D ADD^EDPCSV(X)
  1. . S DISP="" F S DISP=$O(CNT(DISP)) Q:DISP="" I DISP'="ALL",CNT(DISP) D
  1. .. S X=TAB_TAB_TAB_DISP_TAB_CNT(DISP)
  1. .. F I="elapsed","triage","wait","admDec","admDel" D
  1. ... S Y=MIN(DISP,I)\CNT(DISP),X=X_TAB_$S(Y:$$ETIME^EDPRPT(Y),1:"0:00")
  1. .. D ADD^EDPCSV(X)
  1. ; or as XML
  1. D XML^EDPX("<averages>")
  1. S DISP="" F S DISP=$O(CNT(DISP)) Q:DISP="" I CNT(DISP) D
  1. . S MIN(DISP,"type")=$S(DISP="ALL":"Total Patients VA Admitted",1:DISP)
  1. . S MIN(DISP,"total")=CNT(DISP)
  1. . F I="elapsed","triage","wait","admDec","admDel" D
  1. .. S X=MIN(DISP,I)\CNT(DISP)
  1. .. S MIN(DISP,I)=$S(X:$$ETIME^EDPRPT(X),1:"0:00")
  1. . K ROW M ROW=MIN(DISP)
  1. . S X=$$XMLA^EDPX("average",.ROW) D XML^EDPX(X)
  1. D XML^EDPX("</averages>")
  1. K CNT,MIN
  1. Q
  1. ;
  1. INIT ; Initialize counters and sums
  1. N I,DISP,DA,X,Y
  1. ;F D="VA","T","ICU","OBS","ALL" D
  1. S DISP="" F S DISP=$O(^EDPB(233.1,"AB","disposition",DISP)) Q:DISP="" D
  1. . Q:'$$VADMIT^EDPRPT2(DISP)
  1. . S CNT(DISP)=0
  1. . F I="elapsed","triage","wait","admDec","admDel" S MIN(DISP,I)=0
  1. ;TDP - Patch 2, Added additional disposition inits to prevent undefined
  1. ; errors and capture dispositions without abbreviations
  1. S Y=EDPSTA_".disposition"
  1. S X=0 F S X=$O(^EDPB(233.2,"AS",Y,X)) Q:X="" D
  1. . S DA=0 F S DA=$O(^EDPB(233.2,"AS",Y,X,DA)) Q:DA="" D
  1. .. S DISP=$P($G(^EDPB(233.2,"AS",Y,X,DA)),U)
  1. .. I '$L(DISP) S DISP=$E($TR($P($G(^EDPB(233.2,"AS",Y,+X,DA)),U,2)," ","_"),1,30)
  1. .. I $L(DISP),'$D(CNT(DISP)),(($$VADMIT^EDPRPT2(DISP))!($$VADMIT1^EDPRPT2(X))) D
  1. ... S DISP=$$UP^XLFSTR(DISP)
  1. ... S CNT(DISP)=0
  1. ... F I="elapsed","triage","wait","admDec","admDel" S MIN(DISP,I)=0
  1. ;S CNT("NONE")=0 F I="elapsed","triage","wait","admDec","admDel" S MIN("NONE",I)=0
  1. S CNT("ALL")=0
  1. F I="elapsed","triage","wait","admDec","admDel" S MIN("ALL",I)=0
  1. Q
  1. ;
  1. ECODE(IEN) ; Return external value for a Code
  1. Q:IEN $P($G(^EDPB(233.1,IEN,0)),U,2) ;name
  1. Q ""