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

EDPRPT12.m

Go to the documentation of this file.
  1. EDPRPT12 ;SLC/MKB - Orders by Acuity Report ;4/25/13 3:15pm
  1. ;;2.0;EMERGENCY DEPARTMENT;**6**;May 2, 2012;Build 200
  1. ;
  1. ORD(BEG,END,CSV) ; Get Acuity Report for EDPSITE by date range
  1. ; CNT = counters by acuity
  1. N IN,OUT,X,X0,I,SERV,ACU,CNT,ROW,EDLOC
  1. D INIT ;set counters, sums to 0
  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 X=$P($G(^EDP(230,LOG,3)),U,3),ACU=$$ECODE(X)
  1. . I '$D(^EDP(230,LOG,8)) D FIND(LOG,ACU) Q ;old/converted visit
  1. . S I=0 F S I=$O(^EDP(230,LOG,8,I)) Q:I<1 S X0=$G(^(I,0)) D
  1. .. S SERV=$$ENAME($P(X0,U,2))
  1. .. S CNT(ACU,SERV)=CNT(ACU,SERV)+1
  1. ;
  1. OR1 ; return counts
  1. I $G(CSV) D Q ;as CSV
  1. . N TAB S TAB=$C(9)
  1. . ;S X="Acuity"_TAB_"Labs"_TAB_"Images"_TAB_"Consults"_TAB_"Meds"_TAB_"Other"
  1. . ;***pij 4/19/2013 changed acuity
  1. . S X="Acuity/Display Group_>"_TAB_"Labs"_TAB_"Images"_TAB_"Consults"_TAB_"Meds"_TAB_"Other"
  1. . ;***
  1. . D ADD^EDPCSV(X)
  1. . F ACU=0,1,2,3,4,5 D
  1. .. K ROW S ROW("acuity")=ACU M ROW=CNT(ACU)
  1. .. D ROW(ACU,.ROW)
  1. ; or as XML
  1. D XML^EDPX("<statistics>")
  1. F ACU=0,1,2,3,4,5 D
  1. . K ROW S ROW("acuity")=ACU M ROW=CNT(ACU)
  1. . S X=$$XMLA^EDPX("row",.ROW) D XML^EDPX(X)
  1. D XML^EDPX("</statistics>")
  1. Q
  1. ;
  1. ROW(NAME,LIST) ; add line
  1. N I S X=NAME
  1. F I="labs","images","consults","meds","other" S X=X_TAB_LIST(I)
  1. D ADD^EDPCSV(X)
  1. Q
  1. ;
  1. INIT ; Initialize acuity/service counters
  1. N A,S
  1. F A=0,1,2,3,4,5 D
  1. . F S="meds","labs","images","consults","other" S CNT(A,S)=0
  1. Q
  1. ;
  1. ECODE(IEN) ; Return external value for an Acuity code
  1. N X0,X,Y S X0=$G(^EDPB(233.1,+IEN,0))
  1. S X=$P(X0,U,3) S:X<1 X=$P(X0,U,4) ;code or nat'l code
  1. ;S Y=$S(X=1:"one",X=2:"two",X=3:"three",X=4:"four",X=5:"five",1:"none")
  1. S Y=+X I (Y<1)!(Y>5) S Y=0
  1. Q Y
  1. ;
  1. ENAME(X) ; Return external name for a Service code
  1. I X="L"!($E(X,1,2)="LR") Q "labs"
  1. I X="R"!($E(X,1,2)="RA") Q "images"
  1. I X="C"!(X="GMRC") Q "consults"
  1. I X="M"!($E(X,1,2)="PS") Q "meds"
  1. I X="A" Q "other"
  1. Q "other"
  1. ;
  1. FIND(LOG,ACU) ; find/count orders placed during visit LOG
  1. ; (for converted data)
  1. N ORLIST,X0,DFN,IN,OUT,ORI,ORIFN,ORL,PKG,SERV
  1. S X0=$G(^EDP(230,LOG,0)),DFN=+$P(X0,U,6) Q:DFN<1
  1. S IN=$P(X0,U,8),OUT=$P(X0,U,9)
  1. D:'$D(EDLOC) GETLST^XPAR(.EDLOC,"ALL","EDPF LOCATION")
  1. K ^TMP("ORR",$J) D EN^ORQ1(DFN_";DPT(",,1,,IN,OUT) S ORI=0
  1. F S ORI=$O(^TMP("ORR",$J,ORLIST,ORI)) Q:ORI<1 S ORIFN=+$G(^(ORI)) D
  1. . S ORL=$$GET1^DIQ(100,ORIFN_",",6,"I") Q:'$$ED(+ORL)
  1. . S PKG=$$GET1^DIQ(100,ORIFN_",","12:1")
  1. . S SERV=$$ENAME(PKG)
  1. . S CNT(ACU,SERV)=CNT(ACU,SERV)+1
  1. Q
  1. ;
  1. ED(LOC) ; -- Return 1 or 0, if LOCation is part of ED
  1. ; Expects EDLOC(n) = seq ^ #44 ien
  1. N I,Y S (I,Y)=0
  1. F S I=$O(EDLOC(I)) Q:I<1 I $P(EDLOC(I),U,2)=LOC S Y=1 Q
  1. Q Y