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

BEDDUTW.m

Go to the documentation of this file.
  1. BEDDUTW ;VNGT/HS/BEE-BEDD Utility Routine - Cache Calls ; 08 Nov 2011 12:00 PM
  1. ;;2.0;IHS EMERGENCY DEPT DASHBOARD;**1**;Apr 02, 2014
  1. ;
  1. ;This routine is included in the BEDD XML 2.0 install and is not in the KIDS
  1. ;
  1. Q
  1. ;
  1. BEDDED(BEDDIEN,BEDDSTAT,BEDDTRG,BEDDROOM,BEDDWTIM,BEDDDFN) ; EP - Pull from BEDD.EDVISIT Class
  1. ;
  1. ; Pull entry from BEDD.EDVISIT
  1. ;
  1. ; Input:
  1. ; BEDDIEN - Entry IEN
  1. ;
  1. ; Output:
  1. ; BEDDSTAT - PtStatI
  1. ; BEDDTRG - TrgA
  1. ; BEDDROOM - Room
  1. ; BEDDWTIM - WtgTime
  1. ; BEDDDFN - DFN
  1. ;
  1. ;Error Trap
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BEDDUTW D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. NEW ED
  1. S ED=##CLASS(BEDD.EDVISIT).%OpenId(BEDDIEN)
  1. S BEDDSTAT=ED.PtStatI,BEDDTRG=ED.TrgA,BEDDROOM=ED.Room,BEDDWTIM=ED.WtgTime,BEDDDFN=ED.PtDFN
  1. S ED=""
  1. Q
  1. ;
  1. RMAV(BLST) ;EP - Check room Avail
  1. ;
  1. NEW IEN,RLST,RIEN
  1. ;
  1. S IEN="" F S IEN=$O(BLST("L",IEN)) Q:IEN="" D
  1. . ;
  1. . NEW ED,ROOM
  1. . S ED=##CLASS(BEDD.EDVISIT).%OpenId(IEN)
  1. . S ROOM=ED.Room
  1. . S ED=""
  1. . S:ROOM]"" RLST(ROOM)=""
  1. . ;
  1. ;
  1. ;Locate room in BEDD.EDRooms
  1. S RIEN="" F S RIEN=$O(^BEDD.EDRoomsD(RIEN)) Q:RIEN="" D
  1. . ;
  1. . NEW EDROOM,ROOM,RS
  1. . ;
  1. . S EDROOM=##CLASS(BEDD.EDRooms).%OpenId(RIEN)
  1. . S ROOM=EDROOM.RoomNo Q:ROOM=""
  1. . ;
  1. . ;If room is shown as occupied and a patient is listed quit
  1. . I EDROOM.Occupied="Yes",$D(RLST(ROOM)) S EDROOM="" Q
  1. . ;
  1. . ;If room is shown as empty and now patient is listed quit
  1. . I EDROOM.Occupied="No",'$D(RLST(ROOM)) S EDROOM="" Q
  1. . ;
  1. . ;If room is shown as occupied and no patient listed clear
  1. . I EDROOM.Occupied="Yes",'$D(RLST(ROOM)) D Q
  1. .. S EDROOM.Occupied="No"
  1. .. S RS=EDROOM.%Save()
  1. .. S EDROOM=""
  1. . ;
  1. . ;If room is shown as empty and patient is listed, make occupied
  1. . I EDROOM.Occupied="No",$D(RLST(ROOM)) D
  1. .. S EDROOM.Occupied="Yes"
  1. .. S RS=EDROOM.%Save()
  1. .. S EDROOM=""
  1. ;
  1. Q
  1. ;
  1. DSPINFO(BEDDIEN) ; EP - Retrieve BEDD.EDVISIT Info Value
  1. ;
  1. ; Pull Info entry from BEDD.EDVISIT
  1. ;
  1. ; Input:
  1. ; BEDDIEN - Entry IEN
  1. ;
  1. ; Output:
  1. ; BEDD.EDVISIT field Info
  1. ;
  1. NEW BEDDINFO,BEDDSIZE,BEDDIENT
  1. ;
  1. ;Error Trap
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BEDDUTW D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. S BEDDINFO="" S BEDDIENT=##CLASS(BEDD.EDVISIT).%OpenId(BEDDIEN)
  1. S BEDDSIZE=BEDDIENT.Info.SizeGet(),BEDDINFO=BEDDIENT.Info.Read(BEDDSIZE)
  1. S BEDDIENT=""
  1. Q BEDDINFO
  1. ;
  1. SINIT() ; EP - Init site settings
  1. ;
  1. ; This tag is called from BEDDLOGIN1.csp page. It verifies correct
  1. ; sites will be displayed/editable in Dashboard Setup
  1. ;
  1. ; Input:
  1. ; None
  1. ;
  1. ; Output:
  1. ; None
  1. ;
  1. NEW BEDDST,SIEN,CIEN,INST,SiteIEN
  1. ;
  1. ;Error Trap
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BEDDUTW D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. ;Pull list of valid sites
  1. D SITE^BEDDUTIL(.BEDDST)
  1. ;
  1. ;Set up list of inst
  1. S SIEN="" F S SIEN=$O(BEDDST(SIEN)) Q:SIEN="" S:($P(BEDDST(SIEN),"^",2)]"") INST($P(BEDDST(SIEN),"^",2))=$P(BEDDST(SIEN),"^")
  1. ;
  1. ;Loop through current Dashboard Setup sites
  1. S CIEN="" F S CIEN=$O(^BEDD.EDSYSTEMD(CIEN)) Q:'CIEN D
  1. . NEW EDID,SITE
  1. . S EDID=##CLASS(BEDD.EDSYSTEM).%OpenId(CIEN)
  1. . S SITE=EDID.Site
  1. . ;
  1. . ;If not valid site, remove entry (except Whiteboard - 999999)
  1. . I SITE]"",SITE'=999999,$D(INST(SITE)) K INST(SITE) Q
  1. . I SITE=999999 Q
  1. . S EDID=##CLASS(BEDD.EDSYSTEM).%DeleteId(CIEN)
  1. ;
  1. ;Check for new sites and add
  1. S SITE="" F S SITE=$O(INST(SITE)) Q:SITE="" D
  1. . NEW NID,RC
  1. . S NID=##CLASS(BEDD.EDSYSTEM).%New()
  1. . S NID.Site=SITE
  1. . S RC=NID.%Save()
  1. ;
  1. ;Look for Whiteboard Entry
  1. S SiteIEN=$O(^BEDD.EDSYSTEMI("SiteIdx"," 999999",""))
  1. I SiteIEN]"",'$D(^BEDD.EDSYSTEMD(SiteIEN)) D
  1. . K ^BEDD.EDSYSTEMI("SiteIdx"," 999999")
  1. . S SiteIEN=""
  1. I SiteIEN="" D
  1. . NEW NID,RC
  1. . S NID=##CLASS(BEDD.EDSYSTEM).%New()
  1. . S NID.Site=999999
  1. . S NID.WhiteboardShowName=1
  1. . S NID.WhiteboardShowAge=1
  1. . S NID.WhiteboardShowProvider=1
  1. . S NID.WhiteboardShowNurse=1
  1. . S NID.WhiteboardShowOrders=1
  1. . S NID.WhiteboardShowNotes=1
  1. . S RC=NID.%Save()
  1. ;
  1. Q
  1. ;
  1. LOADSYS(BEDDSYS,SITE,UDUZ) ; EP - Load System Vars
  1. ;
  1. ; Input:
  1. ; SITE - User's SITE
  1. ; UDUZ - User's DUZ
  1. ;
  1. ; Output:
  1. ; BEDDSYS - System Variables
  1. ;
  1. ;Error Trap
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BEDDUTW D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. NEW ERID,DFLT,II
  1. S UDUZ=$G(UDUZ)
  1. S SITE=$G(SITE) S:SITE="Whiteboard" SITE=999999
  1. S ERID="" F II=1:1 S ERID=$O(^BEDD.EDSYSTEMD(ERID)) Q:ERID="" D Q:$D(BEDDSYS)
  1. . ;
  1. . S:II=1 DFLT=ERID
  1. . D GSITE(ERID,SITE,.BEDDSYS,UDUZ)
  1. ;
  1. I '$D(BEDDSYS) D GSITE(DFLT,"",.BEDDSYS,UDUZ)
  1. ;
  1. Q
  1. ;
  1. GSITE(ERID,SITE,BEDDSYS,UDUZ) ; EP - Retrieve individual site info
  1. ;
  1. NEW EREF,TIME,STIME,UPIEN,UPREF
  1. S EREF=##CLASS(BEDD.EDSYSTEM).%OpenId(ERID)
  1. I SITE]"",EREF.Site'=$G(SITE) Q
  1. I EREF.AutoNote=1 S BEDDSYS("AN")=""
  1. I EREF.TwoClinics=1 S BEDDSYS("CLN")=""
  1. I EREF.ShoNrse=1 S BEDDSYS("SN")=""
  1. I EREF.ShoPrv=1 S BEDDSYS("PRV")=""
  1. I EREF.ShoDlySum=1 S BEDDSYS("DLYS")=""
  1. I EREF.ShoCons=1 S BEDDSYS("CONS")=""
  1. I EREF.CommBoard=1 S BEDDSYS("COMBRD")=""
  1. I EREF.TriageRpt=1 S BEDDSYS("TriageRpt")=""
  1. I EREF.SwitchEHRPat=1 S BEDDSYS("SwitchEHRPat")=""
  1. I EREF.WhiteboardShowProvider=1 S BEDDSYS("PShowProv")=""
  1. I EREF.WhiteboardShowNurse=1 S BEDDSYS("PShowNurse")=""
  1. I EREF.WhiteboardShowOrders=1 S BEDDSYS("PShowOrders")=""
  1. I EREF.WhiteboardShowNotes=1 S BEDDSYS("PShowNotes")=""
  1. I EREF.WhiteboardShowAge=1 S BEDDSYS("PShowAge")=""
  1. I EREF.WhiteboardShowComplaint=1 S BEDDSYS("PShowComplaint")=""
  1. I EREF.WhiteboardShowChartNumber=1 S BEDDSYS("PShowChartNumber")=""
  1. I EREF.WhiteboardShowRoom=1 S BEDDSYS("PShowRoom")=""
  1. I EREF.WhiteboardShowName=1 S BEDDSYS("PShowName")=""
  1. I EREF.WhiteboardShowAcuity=1 S BEDDSYS("PShowAcuity")=""
  1. I EREF.MedRec=1 S BEDDSYS("MRec")=""
  1. I EREF.PtRtSheet=1 S BEDDSYS("PRouting")=""
  1. I EREF.PtArmBand=1 S BEDDSYS("EmbCard")=""
  1. I EREF.PrintLabel=1 S BEDDSYS("defLabel")=""
  1. I EREF.PrintRouting=1 S BEDDSYS("defRouting")=""
  1. S BEDDSYS("LabelPrinter")=EREF.LabelPrinter
  1. S BEDDSYS("RoutingPrinter")=EREF.RoutingPrinter
  1. S BEDDSYS("MRecPrinter")=EREF.MedRecPrinter
  1. S BEDDSYS("PRoutingPrinter")=EREF.PRoutingPrinter
  1. S BEDDSYS("EmbCardPrinter")=EREF.EmbCardPrinter
  1. S BEDDSYS("LabelCopies")=EREF.LabelCopies
  1. S BEDDSYS("RoutingCopies")=EREF.RoutingCopies
  1. S BEDDSYS("MRecCopies")=EREF.MedRecCopies
  1. S BEDDSYS("PRoutingCopies")=EREF.PRoutingCopies
  1. S BEDDSYS("EmbCardCopies")=EREF.EmbCardCopies
  1. ;
  1. ;BEDD*2.0*1;Added user preferences
  1. ;Get user preferences
  1. S BEDDSYS("NameFRMT")="FLFF"
  1. ;
  1. ;Look for existing entry
  1. I SITE]"",UDUZ]"" D
  1. . S UPIEN=$O(^BEDD.EDUserPreferencesI("DUZSiteIdx"," "_UDUZ," "_SITE,""))
  1. . ;
  1. . ;Entry exists
  1. . I UPIEN]"" D
  1. .. S UPREF=##class(BEDD.EDUserPreferences).%OpenId(UPIEN)
  1. .. I UPREF.HideDOB=1 S BEDDSYS("HideDOB")=""
  1. .. I UPREF.HideComp=1 S BEDDSYS("HideCOMP")=""
  1. .. I UPREF.HideSex=1 S BEDDSYS("HideSEX")=""
  1. .. S BEDDSYS("NameFRMT")=$S(UPREF.PatientNameFormat]"":UPREF.PatientNameFormat,1:"FLFF")
  1. . S UPREF=""
  1. ;
  1. ;Determine Timeout
  1. S TIME=EREF.TimeOut
  1. S STIME=%session.AppTimeout
  1. I STIME>0,TIME>STIME S TIME=STIME-15
  1. I +TIME=0 S TIME=300
  1. S BEDDSYS("TimeOut")=TIME
  1. Q
  1. ;
  1. EDSYS(BEDDSYS) ; EP - Load System Variables For AMER Admission
  1. ;
  1. ; Input:
  1. ; None
  1. ;
  1. ; Output:
  1. ; BEDDSYS - Array of System Variables
  1. ;
  1. ;Error Trapping
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BEDDUTW D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. NEW ERID,EREF
  1. S ERID=$O(^BEDD.EDSYSTEMD("")) Q:ERID=""
  1. S EREF=##CLASS(BEDD.EDSYSTEM).%OpenId(ERID)
  1. I EREF.RtSheet=1 S BEDDSYS("HIM")=""
  1. I EREF.PtArmBand=1 S BEDDSYS("ARM")=""
  1. I EREF.PtRtSheet=1 S BEDDSYS("PRS")=""
  1. I EREF.MedRec=1 S BEDDSYS("MRC")=""
  1. I EREF.PtLabels=1 S BEDDSYS("LBL")=""
  1. ;
  1. Q
  1. ;
  1. CHKDATA(OBJID) ; EP - Save Primary Prov and Assigned Prov
  1. ;
  1. D CHKDATA^BEDDUTW1($G(OBJID))
  1. Q
  1. ;
  1. UPPRV(OBJID,PPR) ; EP - Save Primary Prov
  1. ;
  1. D UPPRV^BEDDUTW1($G(OBJID),$G(PPR))
  1. Q
  1. ;
  1. NEW(AMERDFN,VIEN) ; EP - Add New
  1. ;
  1. ;Error Trap
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BEDDUTW D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. ;Lock global
  1. L +^BEDD.EDVISIT(0):45 I $T=0 Q 0
  1. ;
  1. NEW EDOBJ,STATUS,ID
  1. ;
  1. S EDOBJ=##CLASS(BEDD.EDVISIT).%New()
  1. S EDOBJ.PtDFN=AMERDFN
  1. S EDOBJ.VIEN=VIEN
  1. S EDOBJ.DCFlag=0
  1. S EDOBJ.PtStatV=1
  1. S EDOBJ.DCDtH=""
  1. S STATUS=EDOBJ.%Save() I STATUS'=1 W !!,"Unable to save EDvisit" H 3 S ID=0 G XNEW
  1. S ID=EDOBJ.%Id()
  1. S EDOBJ=""
  1. ;
  1. ;Unlock global
  1. XNEW L -^BEDD.EDVISIT(0)
  1. Q ID
  1. ;
  1. ERR ;
  1. D ^%ZTER
  1. Q
  1. ;
  1. LKLST(BEDDLK,SITE,DUZ) ; EP - Assemble list of locked records dashboard
  1. ;
  1. D LKLST^BEDDUTW1(.BEDDLK,$G(SITE),$G(DUZ))
  1. Q
  1. ;
  1. UNLK() ; EP - Unlock all
  1. ;
  1. S OBJ="" F S OBJ=$O(^BEDD.EDVISITD(OBJ)) Q:OBJ="" D
  1. . NEW EDVST,SAVE
  1. . S EDVST=##CLASS(BEDD.EDVISIT).%OpenId(OBJ)
  1. . S EDVST.RecLock=0,EDVST.RecLockDT="",EDVST.RecLockUser=""
  1. . S SAVE=EDVST.%Save()
  1. Q
  1. ;
  1. CHKLK(BEDDID,DUZ,TIMEOUT) ; EP - Check and Possibly Unlock
  1. ;
  1. ;Moved to overflow routine
  1. D CHKLK^BEDDUTW1($G(BEDDID),$G(DUZ),$G(TIMEOUT))
  1. Q
  1. ;
  1. DLST(BEGDT,ENDDT) ; EP - Assemble List of Discharges for Date Ranges
  1. ;
  1. ;Error Trap
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BEDDUTW D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. NEW DDATE,DIEN
  1. ;
  1. ;Reset scratch global
  1. K ^TMP("BEDDDSC",$J)
  1. ;
  1. ;Set in default dates if needed
  1. I $G(BEGDT)="",$G(ENDDT)="" D
  1. . S BEGDT="T-1"
  1. . S ENDDT="T"
  1. ;
  1. ;Reformat inputed dates
  1. S BEGDT=$$FMTE^XLFDT($$DATE^BEDDUTIL(BEGDT),"5Y")
  1. S ENDDT=$$FMTE^XLFDT($$DATE^BEDDUTIL(ENDDT),"5Y")
  1. ;
  1. ;Set external parameters in scratch global
  1. S ^TMP("BEDDDSC",$J,"XBDT")=BEGDT
  1. S ^TMP("BEDDDSC",$J,"XEDT")=ENDDT
  1. ;
  1. S BEGDT=$P($$TODLH^BEDDUTIL(BEGDT),",")
  1. S ENDDT=$P($$TODLH^BEDDUTIL(ENDDT),",")
  1. ;
  1. ;Set internal parameters in scratch global
  1. S ^TMP("BEDDDSC",$J,"IBDT")=BEGDT
  1. S ^TMP("BEDDDSC",$J,"IEDT")=ENDDT
  1. ;
  1. ;Assemble list of discharges
  1. S DDATE=$S($G(BEGDT)]"":BEGDT-1,1:"")
  1. F S DDATE=$O(^BEDD.EDVISITI("DisIdx",DDATE)) Q:((DDATE>ENDDT)!(DDATE="")) D
  1. . S DIEN="" F S DIEN=$O(^BEDD.EDVISITI("DisIdx",DDATE,DIEN)) Q:DIEN="" D
  1. .. NEW EDVST,DSCDT,AMERVSIT,DISP
  1. .. S EDVST=##CLASS(BEDD.EDVISIT).%OpenId(DIEN)
  1. .. S AMERVSIT=EDVST.AMERVSIT
  1. .. S DISP=EDVST.Disposition
  1. .. ;
  1. .. ;Filter out Register in Error
  1. .. I DISP]"",$$GET1^DIQ(9009083,DISP_",",".01","E")="REGISTERED IN ERROR" Q
  1. .. ;
  1. .. S DSCDT=$$GETF^BEDDUTIL(9009080,AMERVSIT,6.2,"I") Q:DSCDT=""
  1. .. S ^TMP("BEDDDSC",$J,"LST",DSCDT,DIEN)=""
  1. ;
  1. Q
  1. ;
  1. DISCH(AMERVSIT) ; EP - Update Discharge Information From RPMS
  1. ;
  1. ; This process updates the BEDD information based on RPMS values
  1. ; Called by AMERD
  1. ;
  1. ; Input:
  1. ; AMERVSIT - Pointer to ER VISIT (9009080)
  1. ;
  1. ; Output:
  1. ; None
  1. ;
  1. I $G(AMERVSIT)="" Q
  1. ;
  1. ;Error Trap
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BEDDUTW D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. NEW BEDDIEN,EDVST,SAVE,DISDT,VIEN,DISDH
  1. ;
  1. S DISDT=$$GET1^DIQ(9009080,AMERVSIT_",",6.2,"I") Q:DISDT=""
  1. S DISDH=$$FMTH^XLFDT(DISDT)
  1. ;
  1. ;Pull Visit File IEN
  1. S VIEN=$$GET1^DIQ(9009080,AMERVSIT_",",.03,"I") Q:VIEN=""
  1. ;
  1. ;Locate BEDD.EDVISIT entry
  1. S BEDDIEN=$O(^BEDD.EDVISITI("ADIdx",VIEN,"")) Q:BEDDIEN=""
  1. ;
  1. ;Remove Patient From Room
  1. D RMRMV^BEDDUTW(BEDDIEN)
  1. ;
  1. ;Update Discharge $H
  1. S EDVST=##CLASS(BEDD.EDVISIT).%OpenId(BEDDIEN)
  1. S EDVST.AMERVSIT=AMERVSIT
  1. S EDVST.DCDtH=$P(DISDH,","),EDVST.DCTmH=$P(DISDH,",",2)
  1. S EDVST.DCFlag=1
  1. S SAVE=EDVST.%Save()
  1. Q
  1. ;
  1. RMRMV(BEDDIEN) ; EP - Make Patient's Room Unoccupied
  1. ;
  1. ; Input:
  1. ; OBJID - Pointer to BEDD.EDVISIT entry
  1. ;
  1. ; Output:
  1. ; None
  1. ;
  1. I $G(BEDDIEN)="" Q
  1. ;
  1. ;Error Trap
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BEDDUTW D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. NEW EDVST,EDROOM,SAVE,RIEN,ROOM
  1. ;
  1. ;Remove from Visit
  1. S EDVST=##CLASS(BEDD.EDVISIT).%OpenId(BEDDIEN)
  1. S ROOM=EDVST.Room Q:ROOM=""
  1. S EDVST.Room=""
  1. S EDVST.RoomDt=""
  1. S EDVST.RoomTime=""
  1. S EDVST.RoomDtTm=""
  1. S SAVE=EDVST.%Save()
  1. ;
  1. ;Now locate room in BEDD.EDRooms
  1. S RIEN=$O(^BEDD.EDRoomsI("Room"," "_ROOM,"")) Q:RIEN=""
  1. ;
  1. S EDROOM=##CLASS(BEDD.EDRooms).%OpenId(RIEN)
  1. S EDROOM.Occupied="No"
  1. S SAVE=EDROOM.%Save()
  1. Q
  1. ;
  1. SAVEDX(DX) ; EP - Save the DX information into the class
  1. ;
  1. NEW EDREF,STAT
  1. ;
  1. ;Save primary DX information into BEDD class
  1. S EDREF=##CLASS(BEDD.EDVISIT).%OpenId(objid)
  1. S EDREF.PrimDx=$P(DX,"^")
  1. S EDREF.PrimICD=$P(DX,"^",3)
  1. S STAT=EDREF.%Save()
  1. S EDREF=""
  1. Q
  1. ;
  1. RMLST(BEDDIEN) ; EP - Return last room occupied (and date/time)
  1. ;
  1. ; Input:
  1. ; BEDDIEN - Pointer to BEDD.EDVISIT
  1. ;
  1. ; Output:
  1. ; Date and Time^Room Name
  1. ;
  1. I $G(BEDDIEN)="" Q ""
  1. ;
  1. ;Error Trap
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BEDDUTW D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. ;
  1. NEW RIEN,RM
  1. ;
  1. S RIEN="" F S RIEN=$O(^BEDD.EDRoomUseI("EDIDIdx"," "_BEDDIEN,RIEN)) Q:RIEN="" D
  1. . ;
  1. . NEW EDRMUSE,ROOMID,ROOMDT,ROOMTM
  1. . ;
  1. . S EDRMUSE=##CLASS(BEDD.EDRoomUse).%OpenId(RIEN)
  1. . S ROOMID=EDRMUSE.RoomID Q:ROOMID=""
  1. . S ROOMDT=EDRMUSE.RoomDt
  1. . S ROOMTM=EDRMUSE.RoomTime
  1. . ;
  1. . S ROOMDT=ROOMDT_","_ROOMTM
  1. . Q:$TR(ROOMDT,",")=""
  1. . S ROOMDT=$$HTFM^XLFDT(ROOMDT)
  1. . Q:ROOMDT=""
  1. . S RM(ROOMDT,ROOMID)=""
  1. ;
  1. ;Return most recent
  1. S RM=$O(RM(""),-1) Q:RM="" ""
  1. Q $$FMTE^BEDDUTIL(RM)_"^"_$O(RM(RM,""))
  1. ;
  1. DPCP(OBJID) ; EP - Return PtDFN field value
  1. ;
  1. NEW EDREF,DFN
  1. S EDREF=##CLASS(BEDD.EDVISIT).%OpenId(OBJID)
  1. S EDREF=""
  1. S DFN=EDREF.PtDFN
  1. I DFN]"" Q $$DPCP^BEDDUTIL(DFN)
  1. Q ""
  1. ;
  1. RMCHK(OBJID,ROOM) ; EP - Room Check
  1. ;
  1. ;Input:
  1. ; OBJID - Patient CLASS pointer
  1. ; ROOM - Room to check
  1. ;
  1. ;Output:
  1. ; 1 - Room is occupied by someone other than patient
  1. ; 0 - Room is either unoccupied or occupied by patient
  1. ;
  1. NEW RIEN,EDROOM,OCC,EDVST
  1. ;
  1. ;See if patient is in room
  1. S EDVST=##CLASS(BEDD.EDVISIT).%OpenId(OBJID)
  1. I EDVST.Room=ROOM S EDVST="" Q 0
  1. S EDVST=""
  1. ;
  1. ;Locate room in BEDD.EDRooms
  1. S RIEN=$O(^BEDD.EDRoomsI("Room"," "_ROOM,"")) Q:RIEN="" 0
  1. ;
  1. S EDROOM=##CLASS(BEDD.EDRooms).%OpenId(RIEN)
  1. I EDROOM.Occupied="No" S OCC=0
  1. E S OCC=1
  1. S EDROOM=""
  1. ;
  1. Q OCC
  1. ;
  1. FNDDX(OBJID,DXCODE) ; EP - Locate DX code in patient visit
  1. ;
  1. I $G(OBJID)="" Q ""
  1. I $G(DXCODE)="" Q ""
  1. ;
  1. NEW DX,FND
  1. ;
  1. S (FND,DX)="" F S DX=$O(^BEDD.EDDiagnosisI("ObjIdx"," "_OBJID,DX)) Q:DX="" D Q:FND]""
  1. . NEW DIAG,CODE
  1. . S DIAG=##CLASS(BEDD.EDDiagnosis).%OpenId(DX) Q:DX=""
  1. . S CODE=DIAG.Code Q:CODE=""
  1. . I CODE=DXCODE S FND=DX
  1. ;
  1. Q FND
  1. ;
  1. ISINJURY(OBJID) ;Returns whether visit is injury related
  1. ;
  1. ;Input:
  1. ; OBJID - BEDD.EDVISIT pointer
  1. ;
  1. ;Ouput:
  1. ; 1 - Injury Related
  1. ; 0 - Not Injury Related
  1. ;
  1. I $G(OBJID)=0 Q ""
  1. ;
  1. NEW VISIT,INJ
  1. ;
  1. S VISIT=##class(BEDD.EDVISIT).%OpenId(OBJID,1)