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

EDPRPT7.m

Go to the documentation of this file.
  1. EDPRPT7 ;SLC/MKB - Exposure Report ;2/28/12 08:33am
  1. ;;2.0;EMERGENCY DEPARTMENT;**2**;Feb 24, 2012;Build 23
  1. ;;Per VHA Directive 2004-038, this routine should not be modified.
  1. ;
  1. EXP(IEN,CSV) ; Get Exposure Report for IEN at EDPSITE
  1. S IEN=+$G(IEN) Q:IEN<1 Q:'$D(^EDP(230,IEN,0))
  1. I $G(CSV) D EXP^EDPRPT7C(IEN) Q ;CSV format instead
  1. N BEG,END,LIST,LOG,IN,OUT,X,X0,Y,RLIST,TREAT,OTHER,MD,RN,RES,I,J,RIN,ROUT
  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)
  1. S:'BEG BEG=$P(X0,U) S:'END END=$$NOW^EDPRPT
  1. D ROOMS(IEN,END)
  1. ; put IEN info into XML
  1. D XML^EDPX("<patient>")
  1. D ADD(IEN),STAFF(IEN)
  1. D XML^EDPX("</patient>")
  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. I $O(TREAT(0)) D
  1. . D XML^EDPX("<treatmentRoom>")
  1. . S LOG=0 F S LOG=$O(TREAT(LOG)) Q:LOG<1 D ADD(LOG),STAFF(LOG)
  1. . D XML^EDPX("</treatmentRoom>")
  1. ; return other ED patients
  1. I $O(OTHER(0)) D
  1. . D XML^EDPX("<otherPatients>")
  1. . S LOG=0 F S LOG=$O(OTHER(LOG)) Q:LOG<1 D ADD(LOG),STAFF(LOG)
  1. . D XML^EDPX("</otherPatients>")
  1. E3 ; return staff on duty
  1. D XML^EDPX("<onDutyStaff>")
  1. I $O(MD(0)) D
  1. . D XML^EDPX("<doctors>")
  1. . S I=0 F S I=$O(MD(I)) Q:I<1 D
  1. .. S X="<md name='"_$$ESC^EDPX(MD(I))_"' />"
  1. .. D XML^EDPX(X)
  1. . D XML^EDPX("</doctors>")
  1. I $O(RN(0)) D
  1. . D XML^EDPX("<nurses>")
  1. . S I=0 F S I=$O(RN(I)) Q:I<1 D
  1. .. S X="<rn name='"_$$ESC^EDPX(RN(I))_"' />"
  1. .. D XML^EDPX(X)
  1. . D XML^EDPX("</nurses>")
  1. I $O(RES(0)) D
  1. . D XML^EDPX("<residents>")
  1. . S I=0 F S I=$O(RES(I)) Q:I<1 D
  1. .. S X="<md name='"_$$ESC^EDPX(RES(I))_"' />"
  1. .. D XML^EDPX(X)
  1. . D XML^EDPX("</residents>")
  1. D XML^EDPX("</onDutyStaff>")
  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 XML 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. . K ROW S ROW("id")=LOG ;only return for EDPI=1 ??
  1. . S ROW("roomName")=$P($G(^EDPB(231.8,+EDPX,0)),U)
  1. . S X=$P(EDPX,U,2)
  1. . S ROW("shiftIn")=$$SHIFT^EDPRPT5(X),ROW("inTS")=X
  1. . S X=$P(EDPX,U,3)
  1. . S ROW("shiftOut")=$$SHIFT^EDPRPT5(X),ROW("outTS")=X
  1. . ;TDP - Patch 2 mod to capture all dispositions
  1. . S X=$P($G(^EDP(230,LOG,1)),U,2),ROW("disposition")=$S($$ECODE^EDPRPT(X)'="":$$ECODE^EDPRPT(X),1:$$DISP^EDPRPT(X))
  1. . S X0=$G(^EDP(230,LOG,0)),X=$P(X0,U,10),ROW("arrival")=$$ENAME^EDPRPT(X)
  1. . ;Begin EDP*2.0*2 changes - drp added icd and icdtype column headers to line below
  1. . S X=$$DXPRI^EDPQPCE(+$P(X0,U,3),LOG),ROW("dx")=$P(X,U,2),ROW("icd")=$P(X,U,1),ROW("icdType")=$P(X,U,3)
  1. . ;End EDP*2.0*2 changes - drp
  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("notes")=X
  1. . S X=$$XMLA^EDPX("row",.ROW) D XML^EDPX(X)
  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