ORCDLR2 ;SLC/MKB - Silent utilities for LR dialogs ;;3.0;ORDER ENTRY/RESULTS REPORTING;**243**;Dec 17, 1997;Build 242 ; GUI(ORY,ORL,ORDERS) ; -- ck list of ORDERS for labs w/invalid coll times N ORI,ORIFN,ORCNT,RES,I,N,DAD,X K ^TMP($J,"ORLR") S ORCNT=0 S ORI="" F S ORI=$O(ORDERS(ORI)) Q:ORI="" D . S ORIFN=+ORDERS(ORI) Q:'$$LC(ORIFN) ;only ck Lab, LC/I orders . K RES D KIDS(.RES,$G(ORL),ORIFN) . S I=0 F S I=$O(RES(I)) Q:I<1 I $P(RES(I),U,2) K RES(I) . Q:'$O(RES(0)) ;no invalid times found . S ORCNT=ORCNT+1,^TMP($J,"ORLR",ORCNT)=ORIFN . S I=0 F S I=$O(RES(I)) Q:I<1 S ^TMP($J,"ORLR",ORCNT,I)=RES(I) S ORY(1)="~COUNT",ORY(2)="d"_ORCNT,N=2 F DAD=1:1:ORCNT S ORIFN=$G(^TMP($J,"ORLR",DAD)) D . S N=N+1,ORY(N)="~ORDER_"_DAD . S N=N+1,ORY(N)="t#"_ORIFN_" "_$G(^OR(100,ORIFN,8,1,.1,1,0)) ;1st line order text . S ORI=0 F S ORI=$O(^TMP($J,"ORLR",DAD,ORI)) Q:ORI<1 S X=^(ORI) D .. S N=N+1,ORY(N)="i"_X Q ; KIDS(ORY,ORL,ORIFN,DATE,TYPE,SCH,DUR) ; -- get child times, validate LC/IC ; ORL = Hospital Location file #44 vptr ; ORIFN = Orders file #100 ien ; or ; DATE = Start date.time or "AM" or "NEXT" ; TYPE = LC or I ; SCH = Administration Schedule file #51.1 ien ; DUR = # or "X"_# ; Will quit if OREVENT exists ; ; Returns ORY(n) = child start.time ^ 1 or 0 ^ [error message] ; N OR0,VALIDT,ORTIME,ORIMTIME,ORDIV,X,Y,%DT,ORSTRT,ORI,ORN,OK S OR0=$G(^OR(100,+$G(ORIFN),0)) Q:$P(OR0,U,17) Q:$G(OREVENT) ;delayed orders I $G(ORIFN),'$L($G(DATE))!'$L($G(TYPE))!'$G(SCH)!'$L($G(DUR)) D ;get values . S DATE=$$VALUE^ORX8(ORIFN,"START") . S TYPE=$$VALUE^ORX8(ORIFN,"COLLECT") . S SCH=$$VALUE^ORX8(ORIFN,"SCHEDULE") . S DUR=$$VALUE^ORX8(ORIFN,"DAYS") Q:'$L($G(DATE)) Q:'$G(SCH) Q:"SPWC"[$G(TYPE) Q:'$L($G(DUR)) S VALIDT="" D GETIMES^ORCDLR1 D AM^ORCSAVE2:DATE="AM",NEXT^ORCSAVE2:DATE="NEXT" ; returns X S %DT="T" S:'$D(X) X=DATE D ^%DT I Y<1 Q D SCHEDULE(.ORSTRT,Y,SCH,DUR) Q:ORSTRT'>1 0 ; get all starts K ORY S ORY=ORSTRT S (ORI,ORN)=0 F S ORI=$O(ORSTRT(ORI)) Q:'ORI S OK="" D . I TYPE="LC" S OK=$$LABCOLL^ORCDLR1(ORI) . I TYPE="I" S OK=$$IMMCOLL^ORCDLR1(ORI) . S ORN=ORN+1,ORY(ORN)=ORI_U_OK Q ; SCHEDULE(ORY,PSJSD,SCH,ORDUR) ; Returns list of start time(s) from schedule ; PSJEEU - DBIA #2417 ; PSS51P1 - DBIA #4546 N I,X,ORSCH,PSJFD,PSJW,PSJNE,PSJPP,PSJX,PSJAT,PSJM,PSJTS,PSJY,PSJAX,PSJSCH,PSJOSD,PSJOFD,PSJC,NXT Q:'$G(PSJSD) S ORY=1,ORY(PSJSD)="",SCH=$G(SCH) ;1st occurrance S I="",X=SCH S:+SCH I=+SCH,X="" ;I=ien or X=name D ZERO^PSS51P1(I,X,"LR",,"ORLR") S ORSCH=+$O(^TMP($J,"ORLR",0)) ;ien S PSJX=$G(^TMP($J,"ORLR",ORSCH,.01)) S PSJW=+$G(ORL),PSJNE="",PSJPP="LR" D ENSV^PSJEEU Q:'$L($G(PSJX)) I $G(PSJTS)'="C",$G(PSJTS)'="D" Q ;not continuous or day-of-week S PSJSCH=PSJX S:ORDUR PSJFD=$$FMADD^XLFDT(PSJSD,+ORDUR,,-1) I 'ORDUR S X=+$E(ORDUR,2,9) D . I PSJM S PSJFD=$$FMADD^XLFDT(PSJSD,,,(PSJM*X)-1) ;X_#times . E D ;no freq in minutes --> day of week .. N DAYS,LOCMX,SCHMX .. S LOCMX=$$GET^XPAR("ALL^LOC.`"_+$G(ORL),"LR MAX DAYS CONTINUOUS",1,"Q") .. S SCHMX=$G(^TMP($J,"ORLR",ORSCH,2.5)) .. S DAYS=$S('SCHMX:LOCMX,LOCMX