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

EDPARPT1.m

Go to the documentation of this file.
  1. EDPARPT1 ;SLC/BWF - Ad Hoc Reports ;5/16/2012 11:51am
  1. ;;2.0;EMERGENCY DEPARTMENT;**6**;Feb 24, 2012;Build 200
  1. Q
  1. ELAPSED(LIEN) ; elapsed time
  1. N ELAPSE,IN,OUT
  1. S ELAPSE=""
  1. S OUT=$$GET1^DIQ(230,LIEN,.09,"I")
  1. I 'OUT Q "" ; patient has no 'out' time
  1. I $$GET1^DIQ(230,LIEN,.0701,"I")'=1 Q "" ; patient's record is not closed
  1. S IN=$$GET1^DIQ(230,LIEN,.08,"I")
  1. S ELAPSE=$$FMDIFF^XLFDT(IN,OUT,2)
  1. I ELAPSE>60 S ELAPSE=ELAPSE/60 Q $P(ELAPSE,".") ; get minutes
  1. Q ""
  1. SMULT(LIEN,IARRY,FLD) ; list of doctors/nurses/residents/status/acuity or any 'standard multiples (single fields that can change) associated with the patient for this ed visit
  1. N CNT,INVDT,HIEN,VAL,FDATA,FERR,LOCAL,PIEN
  1. S CNT=0
  1. ; get field values in the reverse order that they were assigned to the patient
  1. S INVDT=0 F S INVDT=$O(^EDP(230.1,"ADR",LIEN,INVDT)) Q:'INVDT D
  1. .S HIEN=0 F S HIEN=$O(^EDP(230.1,"ADR",LIEN,INVDT,HIEN)) Q:'HIEN D
  1. ..; quit if this field is null
  1. ..I $$GET1^DIQ(230.1,HIEN,FLD,"I")="" Q
  1. ..D FIELD^DID(230.1,FLD,,"TYPE;POINTER","FDATA","FERR")
  1. ..I $G(FDATA("TYPE"))="POINTER" D Q
  1. ...; if the field is a pointer, and it is pointing to VA(200, get the elements needed (name^initials^log history time)
  1. ...I $G(FDATA("POINTER"))="VA(200," D Q
  1. ....S PIEN=$$GET1^DIQ(230.1,HIEN,FLD,"I")
  1. ....S VAL=$$GET1^DIQ(200,PIEN,.01,"E")_" ("_$$GET1^DIQ(230.1,HIEN,.02,"E")_")"
  1. ....S CNT=CNT+1,IARRY(CNT)=VAL,LOCAL($P(VAL,U))=""
  1. ...; force the log history timestamp to ALWAYS be on piece 3 for now, to provide consistency with pointers to VA(200
  1. ...; this helps when using the FORMAT LOGIC from file 232.11
  1. ...S VAL=$$GET1^DIQ(230.1,HIEN,FLD,"E")_" ("_$$GET1^DIQ(230.1,HIEN,.02,"E")_")"
  1. ...S CNT=CNT+1,IARRY(CNT)=VAL
  1. Q
  1. TRIAGE(LIEN) ; The elapsed time between the patient's time-in and his or her initial acuity assessment.
  1. N ACU,IDT,FOUND,ETIME,IN,TRNURSE
  1. S FOUND=0,ETIME="",TRNURSE=""
  1. S IDT=0 F S IDT=$O(^EDP(230.1,"ADR",LIEN,IDT)) Q:'IDT D
  1. .S HIEN=0 F S HIEN=$O(^EDP(230.1,"ADR",LIEN,IDT,HIEN)) Q:'HIEN!(FOUND) D
  1. ..; this field was not edited or added
  1. ..I $$GET1^DIQ(230.1,HIEN,3.3,"I")="" Q
  1. ..S FOUND=1
  1. ..S IN=$$GET1^DIQ(230,LIEN,.08,"I")
  1. ..S ETIME=$$FMDIFF^XLFDT($$GET1^DIQ(230.1,HIEN,.02,"I"),IN,2)
  1. ..S ETIME=ETIME/60
  1. ..S TRNURSE=$$GET1^DIQ(230.1,HIEN,3.6,"E")
  1. Q $P(ETIME,".")_U_TRNURSE
  1. ;
  1. D2DOC(LIEN) ; elapsed time from door to doc
  1. N ETIME,HIEN,IDT,FOUND,IN,DOCTIME
  1. S ETIME=""
  1. S (FOUND,IDT)=0 F S IDT=$O(^EDP(230.1,"ADR",LIEN,IDT)) Q:'IDT!(FOUND) D
  1. .S HIEN=0 F S HIEN=$O(^EDP(230.1,"ADR",LIEN,IDT,HIEN)) Q:'HIEN!(FOUND) D
  1. ..; this field was not edited or added
  1. ..I $$GET1^DIQ(230.1,HIEN,3.5,"I")="" Q
  1. ..S FOUND=1
  1. ..S IN=$$GET1^DIQ(230,LIEN,.08,"I"),DOCTIME=$$GET1^DIQ(230.1,HIEN,.02,"I")
  1. ..S ETIME=$$FMDIFF^XLFDT(DOCTIME,IN,2),ETIME=ETIME/60
  1. Q $P(ETIME,".")
  1. ;
  1. WAIT(LIEN,AREA) ; The elapsed time between the patient's time-in and his or her first assignment to a location other than the waiting room
  1. N WAIT,IDT,FOUND,HIEN,ETIME,IN
  1. S ETIME=""
  1. S (IDT,FOUND)=0 F S IDT=$O(^EDP(230.1,"ADR",LIEN,IDT)) Q:'IDT!(FOUND) D
  1. .S HIEN=0 F S HIEN=$O(^EDP(230.1,"ADR",LIEN,IDT,HIEN)) Q:'HIEN!(FOUND) D
  1. ..I $$GET1^DIQ(230.1,HIEN,3.4,"I")="" Q
  1. ..; the patient is still in the waiting room
  1. ..I $$GET1^DIQ(230.1,HIEN,3.4,"E")=$$GET1^DIQ(231.9,AREA,1.12,"E") Q
  1. ..S IN=$$GET1^DIQ(230,LIEN,.08,"I"),FOUND=1
  1. ..S ETIME=$$FMDIFF^XLFDT($$GET1^DIQ(230.1,HIEN,.02,"I"),IN,2),ETIME=ETIME/60
  1. Q $P(ETIME,".")
  1. ;
  1. ; input
  1. ; LIEN - Log entry ien from file 230 (required)
  1. ; TYPE - type of data being requested (required)
  1. ; 1 - admdec
  1. ; 2 - admdel
  1. ADMDECL(LIEN,TYPE) ; elapsed time between the patient's time-in and the status change to 'Admit to.'
  1. N ADMDEC,IN,HIEN,IDT,FOUND,ELAPSE,STAT,STIME
  1. S ELAPSE=""
  1. S (IDT,FOUND)=0 F S IDT=$O(^EDP(230.1,"ADR",LIEN,IDT)) Q:'IDT!(FOUND) D
  1. .S HIEN=0 F S HIEN=$O(^EDP(230.1,"ADR",LIEN,IDT,HIEN)) Q:'HIEN!(FOUND) D
  1. ..S STAT=$$GET1^DIQ(230.1,HIEN,3.2,"E")
  1. ..I TYPE=1,STAT'="adm.status.admitted" Q
  1. ..I TYPE=2,STAT'["edp.disposition" Q
  1. ..S FOUND=1
  1. ..S STIME=$$GET1^DIQ(230.1,HIEN,.02,"I"),IN=$$GET1^DIQ(230,LIEN,.08,"I")
  1. ..S ELAPSE=$$FMDIFF^XLFDT(STIME,IN,2),ELAPSE=ELAPSE/60
  1. Q $P(ELAPSE,".")
  1. ;
  1. ; input:
  1. ; LIEN - log ien (required)
  1. ; IARRY - data storage location IARRY(CNT)=DATA (required)
  1. ; AREA - the AREA associated with this log entry
  1. ; TYPE - 1: ICD coded dx list
  1. ; 2: free text dx list
  1. DXMULT(LIEN,IARRY,AREA,TYPE) ; patients free text or ICD-9-CM diagnosis - could be multiple
  1. N EDPVISIT
  1. I TYPE=1 D Q
  1. .S EDPVISIT=$P(^EDP(230,LIEN,0),U,12)
  1. .I EDPVISIT,$P($G(^EDPB(231.9,AREA,1)),U,2) D DXPCE^EDPQPCE(EDPVISIT,.IARRY)
  1. I TYPE=2 D DXFREE2^EDPQPCE(LIEN,.IARRY)
  1. Q
  1. PID(DFN) ;
  1. N PID,PNAME,SSN
  1. D ^VADPT
  1. S PID=$E(VADM(1),1)_VA("BID")
  1. K VA,VADM
  1. Q PID