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

EDPRPT7C.m

Go to the documentation of this file.
  1. EDPRPT7C ;SLC/MKB - Exposure Report (CSV format) ;4/25/13 3:15pm
  1. ;;2.0;EMERGENCY DEPARTMENT;**6,2**;Feb 24, 2012;Build 23
  1. ;
  1. EXP(IEN) ; Get Exposure Report for IEN at EDPSITE
  1. S IEN=+$G(IEN) Q:IEN<1 Q:'$D(^EDP(230,IEN,0))
  1. N BEG,END,LIST,LOG,IN,OUT,X,X0,Y,RLIST,TREAT,OTHER,MD,RN,RES,I,J,RIN,ROUT,TAB
  1. N SHIFT D SETUP^EDPRPT5 ;build SHIFT(#)
  1. I 'SHIFT D ERR^EDPRPT(2300013) Q
  1. S X0=^EDP(230,IEN,0),BEG=$P(X0,U,8),END=$P(X0,U,9),TAB=$C(9)
  1. S:'BEG BEG=$P(X0,U) S:'END END=$$NOW^EDPRPT
  1. D ROOMS(IEN,END)
  1. ; put IEN info into CSV
  1. ;***pij 4/19/2013 changed ED to IEN
  1. ;S X="ED"_TAB_"Room"_TAB_"Shift - Time In"_TAB_"Shift - Time Out"_TAB_"Diagnosis"_TAB_"Dispo"_TAB_"Arr Mode"_TAB_"Notes"
  1. ;Begin EDP*2.0*2 changes drp
  1. S X="IEN"_TAB_"Room"_TAB_"Shift - Time In"_TAB_"Shift - Time Out"_TAB_"Diagnosis"_TAB_"ICD"_TAB_"ICD Type"_TAB_"Dispo"_TAB_"Arr Mode"_TAB_"Notes"
  1. ;End EDP*2.0*2 Changes
  1. ;***
  1. D ADD^EDPCSV(X),BLANK^EDPCSV ;headers
  1. S X=TAB_TAB_"Contagious Patient Information"
  1. D ADD^EDPCSV(X),BLANK^EDPCSV
  1. D ADD(IEN),STAFF(IEN)
  1. D BLANK^EDPCSV
  1. E1 ; look for patients also in ED between BEG and END
  1. D FIND(BEG,END) ;create LIST(#) list of ien's to check
  1. S LOG=0 F S LOG=+$O(LIST(LOG)) Q:'LOG I LOG'=IEN D
  1. . S X0=$G(^EDP(230,LOG,0)),IN=$P(X0,U,8),OUT=$P(X0,U,9)
  1. . D ROOMS(LOG,OUT)
  1. . ; compare treatment rooms
  1. . S I=0 F S I=$O(RLIST(IEN,I)) Q:I<1 D
  1. .. S RIN=$P(RLIST(IEN,I),U,2),ROUT=$P(RLIST(IEN,I),U,3)
  1. .. S J=0 F S J=$O(RLIST(LOG,J)) Q:J<1 I +RLIST(IEN,I)=+RLIST(LOG,J) D
  1. ... S X=$P(RLIST(LOG,J),U,2) Q:X>ROUT ;in to room after IEN left
  1. ... ;I (RIN<=X)&(X<=ROUT) S TREAT(LOG)="" Q
  1. ... S X=$P(RLIST(LOG,J),U,3) Q:X&(X<RIN) ;out of room before IEN came
  1. ... ;I (RIN<=X)&(X<=ROUT) S TREAT(LOG)="" Q
  1. ... S TREAT(LOG)=""
  1. . I '$D(TREAT(LOG)) S OTHER(LOG)=""
  1. E2 ; return treatment room patients
  1. ;***pij 4/19/2013
  1. ;D ADD^EDPCSV(TAB_TAB_"Exposed in Treatment Room"),BLANK^EDPCSV
  1. D ADD^EDPCSV(TAB_TAB_"Patients Directly Exposed in Different Treatment Rooms"),BLANK^EDPCSV
  1. ;***
  1. I '$O(TREAT(0)) D ADD^EDPCSV(TAB_TAB_" None")
  1. E S LOG=0 F S LOG=$O(TREAT(LOG)) Q:LOG<1 D ADD(LOG),STAFF(LOG)
  1. D BLANK^EDPCSV
  1. ; return other ED patients
  1. D ADD^EDPCSV(TAB_TAB_"Other ED Patients"),BLANK^EDPCSV
  1. I '$O(OTHER(0)) D ADD^EDPCSV(TAB_TAB_" None")
  1. E S LOG=0 F S LOG=$O(OTHER(LOG)) Q:LOG<1 D ADD(LOG),STAFF(LOG)
  1. D BLANK^EDPCSV
  1. E3 ; return staff on duty
  1. N MAX,MORE D ADD^EDPCSV(TAB_TAB_"On Duty Staff")
  1. D ADD^EDPCSV(TAB_"Doctors"_TAB_"Nurses"_TAB_"Residents")
  1. S MAX=+$G(RN) S:$G(MD)>MAX MAX=+MD S:$G(RES)>MAX MAX=+RES
  1. S MORE=1,(MD,RN,RES)=0 F D Q:'MORE
  1. . S:MD'="" MD=$O(MD(MD)) S:RN'="" RN=$O(RN(RN))
  1. . S:RES'="" RES=$O(RES(RES)) ;get next
  1. . I MD="",RN="",RES="" S MORE=0 Q ;done
  1. . S X=TAB_$S(MD:MD(MD),1:"")_TAB_$S(RN:RN(RN),1:"")_TAB_$S(RES:RES(RES),1:"")
  1. . D ADD^EDPCSV(X)
  1. Q
  1. ;
  1. FIND(IN,OUT) ; create LIST(#) of visits at same time
  1. N TIME,I,X K LIST
  1. S TIME=+$P(IN,".") ;ck today's arrivals
  1. F S TIME=$O(^EDP(230,"ATI",EDPSITE,TIME)) Q:TIME<1!(TIME>OUT) D
  1. . S I=0 F S I=$O(^EDP(230,"ATI",EDPSITE,TIME,I)) Q:I<1 D
  1. .. S X=$P($G(^EDP(230,I,0)),U,9) I X,X<IN Q ;left before IEN arrived
  1. .. S LIST(I)=""
  1. Q
  1. ;
  1. ROOMS(LOG,OUT) ; Return RLIST(LOG,n)= room ^ time in ^ time out
  1. N N,D,I,X,LAST S N=0,LAST=""
  1. S D=0 F S D=$O(^EDP(230.1,"ADF",LOG,D)) Q:D<1 S I=+$O(^(D,0)) D
  1. . S X=+$P($G(^EDP(230.1,I,3)),U,4) Q:'X Q:X=LAST ;no location change
  1. . S:N $P(RLIST(LOG,N),U,3)=D ;time in of next room = time out of prev
  1. . S N=N+1,RLIST(LOG,N)=X_U_D,LAST=X ;new room
  1. I N,'$P(RLIST(LOG,N),U,3) S $P(RLIST(LOG,N),U,3)=OUT
  1. Q
  1. ;
  1. ADD(LOG) ; Add row to CSV for each room used during visit
  1. N EDPI,EDPX,ROW,LABS,XRAY,X,X0
  1. S EDPI=0 F S EDPI=$O(RLIST(LOG,EDPI)) Q:EDPI<1 S EDPX=RLIST(LOG,EDPI) D
  1. . S ROW=$S(EDPI=1:LOG,1:"")_TAB_$P($G(^EDPB(231.8,+EDPX,0)),U)
  1. . S X=$P(EDPX,U,2) ;shiftTimeIn
  1. . S ROW=ROW_TAB_$$SHIFT^EDPRPT5(X)_" - "_$$EDATE^EDPRPT(X)
  1. . S X=$P(EDPX,U,3) ;shiftTimeOut
  1. . S ROW=ROW_TAB_$$SHIFT^EDPRPT5(X)_" - "_$$EDATE^EDPRPT(X)
  1. . S X0=$G(^EDP(230,LOG,0)),X=$$DXPRI^EDPQPCE(+$P(X0,U,3),LOG)
  1. . S ROW=ROW_TAB_$P(X,U,2) ;Dx
  1. . ;DRP Begin EDP*2.0*2 Changes
  1. . S ROW=ROW_TAB_$P(X,U,1) ; added ICD Code
  1. . S ROW=ROW_TAB_$P(X,U,3) ;added ICDType
  1. . ;End EDP*2.0*2 Changes
  1. . ;TDP - Patch 2 mod to capture all dispositions
  1. . S X=$P($G(^EDP(230,LOG,1)),U,2),ROW=ROW_TAB_$S($$ECODE^EDPRPT(X)'="":$$ECODE^EDPRPT(X),1:$$DISP^EDPRPT(X)) ;dis
  1. . S X=$P(X0,U,10),ROW=ROW_TAB_$$ENAME^EDPRPT(X) ;arrival
  1. . S LABS=$D(^EDP(230,LOG,8,"AC","L")),XRAY=$D(^("R")),X=""
  1. . I LABS!XRAY D S X=X_" ordered"
  1. .. I LABS&XRAY S X="Labs and Imaging" Q
  1. .. S:LABS X="Labs" S:XRAY X="Imaging"
  1. . S ROW=ROW_TAB_X ;notes
  1. . D ADD^EDPCSV(ROW)
  1. Q
  1. ;
  1. STAFF(LOG) ; save staff involved in patient care
  1. N D,I,X,ACT S LOG=+$G(LOG)
  1. S D=0 F S D=$O(^EDP(230.1,"ADF",LOG,D)) Q:D<1 S I=+$O(^(D,0)) D
  1. . S ACT=$G(^EDP(230.1,I,3))
  1. . S X=+$P(ACT,U,5) S:X MD(X)=$$EPERS^EDPRPT(X)
  1. . S X=+$P(ACT,U,6) S:X RN(X)=$$EPERS^EDPRPT(X)
  1. . S X=+$P(ACT,U,7) S:X RES(X)=$$EPERS^EDPRPT(X)
  1. Q