CRHDUT ; CAIRO/CLC - GET THE PATIENT DATA ELEMENTS FOR HANDOFF LIST ;5/13/08 05:19 ;;1.0;CRHD;****;Jan 28, 2008;Build 19 ;================================================================= ALG(CRHDRTN0,CRHDSTR) ; Allergies N CRHDTNUM S CRHDTRG="CRHDRTN0" S DFN=+CRHDSTR S CRHDNUM=$P(CRHDSTR,U,2) S CRHDHDR=$P(CRHDSTR,U,3) K @CRHDTRG,CRHDRTN N CRHDX S CRHDNUM=CRHDNUM+1,CRHDTNUM=CRHDNUM S CRHDNUM=$G(CRHDNUM)+1 S:$G(CRHDHDR) @CRHDTRG@(CRHDNUM)="Allergies: " D LIST^ORQQAL(.CRHDRTN,DFN) S CRHDX=0 F S CRHDX=$O(CRHDRTN(CRHDX)) Q:'CRHDX D .S @CRHDTRG@(CRHDNUM)=$G(@CRHDTRG@(CRHDNUM))_$$SPACE($G(@CRHDTRG@(CRHDNUM)),$S($G(CRHDHDR):12,1:1))_$P(CRHDRTN(CRHDX),"^",2) . S CRHDNUM=CRHDNUM+1 S @CRHDTRG@(CRHDTNUM)=CRHDNUM-1 Q ACTMED(CRHDRTN,CRHDSTR) ;Active Medications ;CRHDRTN: Target array ;CRHDCAT: I-Inpatient Meds ; O-Outpatient Meds ; B-Both ;CRHDIV: 0 - Do not include IV ; 1 - include IV ;CRHDNUM: next number in results array ;CRHDHDR: include section heading ;CRHDDET: details, 1-include the sig, 0-exclude sig ;CRHDLEN: length to return in chars. Defaults to 16 chars. N CRHDUD,CRHDV,CRHDX2,CRHDC,CRHDMEDS,CRHDRN,DFN,CRHDCAT,CRHDI,CRHDN,CRHDP1,CRHDP2 N CRHDIV,CRHDNUM,CRHDHDR,CRHDDET,CRHDFG,CRHDLEN,CRHDTNUM,CRHDMCTR,CRHDTX S DFN=+CRHDSTR S CRHDCAT=$P(CRHDSTR,U,2) I CRHDCAT="" S CRHDCAT="I" S CRHDIV=$P(CRHDSTR,U,3) S CRHDNUM=$P(CRHDSTR,U,4) S CRHDHDR=$P(CRHDSTR,U,5) S CRHDDET=$P(CRHDSTR,U,6) S CRHDLEN=$P(CRHDSTR,U,7) I 'CRHDLEN S CRHDLEN=16 S CRHDTRG="CRHDRTN" K @CRHDTRG S CRHDMCTR=0 S CRHDNUM=CRHDNUM+1,CRHDTNUM=CRHDNUM S CRHDNUM=$G(CRHDNUM)+1 S:$G(CRHDHDR) @CRHDTRG@(CRHDNUM)="Meds: " I CRHDCAT="O"!('CRHDDET) D NODETAM^CRHD2(.CRHDMEDS,DFN,CRHDCAT),NDOUT S @CRHDTRG@(CRHDTNUM)=CRHDNUM-1 Q I CRHDDET S CRHDX=$$PSGI^CRHDAM(.CRHDMEDS,DFN) D DOUT S @CRHDTRG@(CRHDTNUM)=CRHDNUM-1 Q NDOUT ;no details output S CRHDP2=" S CRHDN="""""_" F S CRHDN=$O(CRHDMEDS(CRHDI,CRHDN)) Q:'CRHDN D AOUTPUT" I CRHDCAT="I" D .S CRHDP1="F CRHDI=""U""" .I CRHDIV S CRHDP1=CRHDP1_","_"""V""" I CRHDCAT="O" D .S CRHDP1="F CRHDI=""N"""_","_"""R""" S CRHDP1=CRHDP1_CRHDP2 X CRHDP1 Q AOUTPUT ; S CRHDNUM=CRHDNUM+1 ;I HDR S @TRG@(CRHDNUM)="Medications",NUM=NUM+1,HDR=0 ;S @CRHDTRG@(CRHDNUM)=$E($G(CRHDMEDS(CRHDI,CRHDN)),1,CRHDLEN) S CRHDMCTR=CRHDMCTR+1,@CRHDTRG@(CRHDNUM)=CRHDMCTR_"."_$E($G(CRHDMEDS(CRHDI,CRHDN)),1,CRHDLEN) Q DOUT ; S (CRHDX2,CRHDFG,CRHDMCTR)=0 F S CRHDX2=$O(CRHDMEDS(CRHDX2)) Q:'CRHDX2!(CRHDFG) D .S CRHDTX="" .S CRHDC=$P(CRHDMEDS(CRHDX2),"^",2) .Q:CRHDC="" .I CRHDHDR S CRHDNUM=CRHDNUM+1,@CRHDTRG@(CRHDNUM)="Inpatient Meds: ",CRHDNUM=CRHDNUM+1,CRHDHDR=0 IV .I 'CRHDIV&(CRHDC["IV DOSE") S CRHDFG=1 Q .I CRHDDET D ..I (CRHDC["=UNIT DOSE=")!(CRHDC["=IV DOSE=") S @CRHDTRG@(CRHDNUM)=$E(CRHDC,1,CRHDLEN) ..E S CRHDMCTR=CRHDMCTR+1,@CRHDTRG@(CRHDNUM)=CRHDMCTR_"."_$E(CRHDC,1,CRHDLEN) .I 'CRHDDET S @CRHDTRG@(CRHDNUM)=$E(CRHDC,1,CRHDLEN) .S CRHDNUM=CRHDNUM+1 Q CONSULT(CRHDRTN,CRHDSTR) ;consults orders - call from cprs ;DFN,FILTERS,GROUPS,DTFROM,DTTHRU,EVENT N CRHDY,CRHDILST,ORYD,CRHDLST,X,D1,CRHDATE,CRHDGRP N CRHDLEN,CHRDHDR,CRHDSTS,CRHDILST,DFN S DFN=+CRHDSTR S CRHDSTS=$P(CRHDSTR,U,2) S CRHDNUM=$P(CRHDSTR,U,3) S CRHDHDR=$P(CRHDSTR,U,4) S CRHDLEN=$P(CRHDSTR,U,5) I 'CRHDLEN S CRHDLEN=20 S CRHDTRG="CRHDRTN" K @CRHDTRG S CRHDGRP=$O(^ORD(100.98,"B","CONSULTS",0)) ;D AGET^ORWORR(.CRHDY,DFN,"2^0",11,0,0,"") D AGET^ORWORR(.CRHDY,DFN,"2^0",CRHDGRP,0,0,"") M CRHDILST=@CRHDY K CRHDILST(.1) D DETORD("CRHDRTN",.CRHDLST,.CRHDILST,"",CRHDLEN) Q IMAGING(CRHDRTN,CRHDSTR) ;Radiology orders - call from cprs ;DFN,FILTERS,CRHDGRPS,DTFROM,DTTHRU,EVENT N CRHDY,CRHDILST,ORYD,CRHDLST,X,CRHDLEN N D1,CRHDATE,DFN,CRHDSTS,CRHDNUM,CRHDHDR,CRHDTRG,CRHDGRP S DFN=+CRHDSTR S CRHDSTS=$P(CRHDSTR,U,2) S CRHDNUM=$P(CRHDSTR,U,3) S CRHDHDR=$P(CRHDSTR,U,4) S CRHDLEN=$P(CRHDSTR,U,5) I 'CRHDLEN S CRHDLEN=20 S CRHDTRG="CRHDRTN" K @CRHDTRG S CRHDGRP=$O(^ORD(100.98,"B","IMAGING",0)) ;D AGET^ORWORR(.CRHDY,DFN,"2^0",34,0,0,"") D AGET^ORWORR(.CRHDY,DFN,"2^0",CRHDGRP,0,0,"") M CRHDILST=@CRHDY K CRHDILST(.1) D DETORD(.CRHDTRG,.CRHDLST,.CRHDILST,"",CRHDLEN) Q LABS(CRHDRTN,CRHDSTR) ;LABS orders - call from cprs ;DFN,FILTERS,CRHDGRPS,DTFROM,DTTHRU,EVENT N CRHDY,CRHDILST,ORYD,CRHDLST,X,D1,CRHDATE N DFN,CRHDSTS,CRHDNUM,CRHDHDR,CRHDLEN,CRHDTRG S DFN=+CRHDSTR S CRHDSTS=$P(CRHDSTR,U,2) S CRHDNUM=$P(CRHDSTR,U,3) S CRHDHDR=$P(CRHDSTR,U,4) S CRHDLEN=$P(CRHDSTR,U,5) I 'CRHDLEN S CRHDLEN=20 S CRHDTRG="CRHDRTN" K @CRHDTRG S CRHDGRP=$O(^ORD(100.98,"B","LABORATORY",0)) ;D AGET^ORWORR(.CRHDY,DFN,"2^0",5,0,0,"") D AGET^ORWORR(.CRHDY,DFN,"2^0",CRHDGRP,0,0,"") M CRHDILST=@CRHDY K CRHDILST(.1) D DETORD(.CRHDTRG,.CRHDLST,.CRHDILST,"",CRHDLEN) Q PROC(CRHDRTN,CRHDSTR) ;,DFN,CRHDSTS,CRHDNUM,CRHDHDR) ;Procedures orders - call from cprs ;DFN,FILTERS,CRHDGRPS,DTFROM,DTTHRU,EVENT N CRHDY,CRHDILST,ORYD,CRHDLST,X,D1,CRHDATE N DFN,CRHDSTS,CRHDNUM,CRHDHDR,CRHDGRP,CRHDLEN,CRHDTRG S DFN=+CRHDSTR S CRHDSTS=$P(CRHDSTR,U,2) S CRHDNUM=$P(CRHDSTR,U,3) S CRHDHDR=$P(CRHDSTR,U,4) S CRHDLEN=$P(CRHDSTR,U,5) I 'CRHDLEN S CRHDLEN=20 S CRHDTRG="CRHDRTN" K @CRHDTRG S CRHDGRP=$O(^ORD(100.98,"B","PROCEDURES",0)) ;D AGET^ORWORR(.CRHDY,DFN,"2^0",43,0,0,"") D AGET^ORWORR(.CRHDY,DFN,"2^0",CRHDGRP,0,0,"") M CRHDILST=@CRHDY K CRHDILST(.1) D DETORD(.CRHDTRG,.CRHDLST,.CRHDILST,"",CRHDLEN) Q DETORD(CRHDTRG,CRHDRLST,CRHDILST,CRHDHEAD,CRHDLEN) ; N ORYD,CRHDSTS,CRHDD1,CRHDATE,CRHDX S ORYD="" D GET4LST^ORWORR(.CRHDRLST,.CRHDILST) S:$G(CRHDHDR) @CRHDTRG@(CRHDNUM,0)=CRHDHEAD_": " S CRHDX="" F S CRHDX=$O(CRHDLST(CRHDX)) Q:'CRHDX D . S CRHDD1=$P(CRHDLST(CRHDX),"^",3) . I $E(CRHDLST(CRHDX),1)="~" D . .S CRHDD1=$P(CRHDLST(CRHDX),"^",3) . .S CRHDSTS=$P(CRHDLST(CRHDX),"^",10) . .S CRHDATE=$$FMTE^XLFDT(CRHDD1,2) . .S @CRHDTRG@(CRHDNUM)=$G(@CRHDTRG@(CRHDNUM))_$$SPACE($G(@CRHDTRG@(CRHDNUM)),$S($G(CRHDHDR):16,1:1))_$P(CRHDATE,"@",1) . I $E(CRHDLST(CRHDX),1)="t" D . .S @CRHDTRG@(CRHDNUM)=$G(@CRHDTRG@(CRHDNUM))_$$SPACE($G(@CRHDTRG@(CRHDNUM)),$S($G(CRHDHDR):16,1:1))_" "_$E(CRHDLST(CRHDX),2,$L(CRHDLST(CRHDX)))_" ("_$P($G(^ORD(100.01,+CRHDSTS,0)),"^",1)_")" . .S @CRHDTRG@(CRHDNUM)=$E(@CRHDTRG@(CRHDNUM),1,CRHDLEN),CRHDNUM=CRHDNUM+1 Q PROB(CRHDRTNA,CRHDSTR) ;DFN,NUM,CRHDHDR) ; ;Target array ^TMP("CRHD_PROB_DATA",$J) N CRHDRTN,X,DFN,CRHDNUM,CRHDHDR,CRHDTRG S DFN=+CRHDSTR S CRHDNUM=$P(CRHDSTR,U,2) S CRHDHDR=$P(CRHDSTR,U,3) S CRHDTRG="^TMP(""CRHD_PROB_DATA"",$J)" K @CRHDTRG S CRHDNUM=$G(CRHDNUM)+1 S:$G(CRHDHDR) @CRHDTRG@(CRHDNUM,0)="Problem List: " D LIST^ORQQPL(.CRHDRTN,DFN,"A") S CRHDX=0 F S CRHDX=$O(CRHDRTN(CRHDX)) Q:'CRHDX D . S @CRHDTRG@(CRHDNUM)=$G(@CRHDTRG@(CRHDNUM))_$$SPACE($G(@CRHDTRG@(CRHDNUM)),$S($G(CRHDHDR):15,1:1))_$P(CRHDRTN(X),"^",2) . S CRHDNUM=CRHDNUM+1 ;S @CRHDTRG@(CRHDNUM)="" Q RECNTLAB(CRHDROOT,DFN,CRHDNUM,CRHDHDR) ; ;(CRHDY,DFN,CRHDATE1,DIR,FORMAT) D INTERIMG^ORWLRR(.CRHDY,DFN,$$DT^XLFDT_".2359",1,"") Q SPACE(CRHDX1,CRHDX) ; N CRHDY,CRHDY1 S CRHDY1="",CRHDY=CRHDX-$L(CRHDX1) S $P(CRHDY1," ",CRHDY)="" Q CRHDY1 PARAM(CRHDW,CRHDX) ; Q $$GET^XPAR(CRHDW,CRHDX,1,"I") ; PTSTS(DFN) ;Display current patient status N CRHDGPMV,NOW,NOWI,X,Y,%,%H,%I,CRHDA,E,CRHDDGX,VAIP,VAX,VAZ,VAZ2 D NOW^%DTC S (VAX("DAT"),NOW)=%,NOWI=9999999.999999-% D LAST^VADPT3 S CRHDGPMV(1)=$S($D(VAIP("E")):VAIP("E"),1:E) ;use ifn of last mvt from VADPT cal S CRHDDGX=$G(^DGPM(+CRHDGPMV(1),0)),CRHDGPMV(2)=$P(CRHDDGX,"^",2),CRHDGPMV(4)=$P(CRHDDGX,"^",18) S CRHDA=$S("^3^5^"[("^"_+CRHDGPMV(2)_"^"):0,1:+CRHDGPMV(2)) Q $S('CRHDA:"IN",1:"")_"ACTIVE "_$S("^4^5^"[("^"_+CRHDGPMV(2)_"^"):"LODGER",1:"INPATIENT") DNRPARM(CRHDNRTT,DUZ,CRHDDIV) ;GET DNR TITLES N CRHDPAR,CRHDSRV,CRHDTEAM S CRHDTEAM=$$GET^XPAR("USR.`"_DUZ,"ORLP DEFAULT TEAM",1,"I") S CRHDSRV=$$GET1^DIQ(200,DUZ_",",29,"E") S CRHDPAR="USR.`"_DUZ D GETLST^XPAR(.CRHDNRTT,CRHDPAR,"CRHD DNR ORDER TITLE") I ('CRHDNRTT)&($G(CRHDTEAM)>0) S CRHDPAR="OTL.`"_+CRHDTEAM D GETLST^XPAR(.CRHDNRTT,CRHDPAR,"CRHD DNR ORDER TITLE") I ('CRHDNRTT)&($G(CRHDSRV)'="") S CRHDPAR="SRV."_CRHDSRV D GETLST^XPAR(.CRHDNRTT,CRHDPAR,"CRHD DNR ORDER TITLE") I '+$G(CRHDDIV) S CRHDDIV=+$$SITE^VASITE I 'CRHDNRTT S CRHDPAR="DIV.`"_+CRHDDIV D GETLST^XPAR(.CRHDNRTT,CRHDPAR,"CRHD DNR ORDER TITLE") Q