ORKRA ; slc/CLA - Order checking support procedure for Radiology ;12/15/97
;;3.0;ORDER ENTRY/RESULTS REPORTING;**6,92,105**;Dec 17, 1997
Q
RECENTBA(ORDFN,ORHRS) ; extrinsic function to return the most recent radiology procedure using barium within the past ORHRS in the format:
; order #^order text (first 60 chars) order effective date/time
N BDT,EDT,INBDT,XDT,X,ORDT,HDT,ORN,OROI,ORCM,TOT,ORQ,ORDG
S X="",ORDT="",HDT="",ORN="",TOT=0,ORQ=""
Q:+$G(ORDFN)<1 ORQ
Q:+$G(ORHRS)<1 ORQ
D NOW^%DTC S EDT=% K %
S BDT=$$FMADD^XLFDT(EDT,"","-"_ORHRS,"","")
Q:+$G(BDT)<1 ORQ
S ORDG=$$DG^ORQOR1("GENERAL RADIOLOGY")
Q:+$G(ORDG)<1 ORQ
K ^TMP("ORR",$J)
D EN^ORQ1(ORDFN_";DPT(",ORDG,1,"",BDT,EDT,0,0)
S HDT=$O(^TMP("ORR",$J,HDT)) Q:HDT="" ORQ S TOT=^(HDT,"TOT") I TOT>0 D
.F X=1:1:TOT Q:+$G(ORQ)>0 D ;quit on 1st barium found (most recent)
..S ORN=+^TMP("ORR",$J,HDT,X)
..S OROI=$G(^OR(100,ORN,.1,1,0))
..Q:+$G(OROI)<1
..S ORCM=$$CM^ORQQRA(OROI)
..I $G(ORCM)["B" D
...S ORDT=$G(^OR(100,ORN,0)) S:$L($G(ORDT)) ORDT=$P(ORDT,U,8)
...S ORDT=$$FMTE^XLFDT(ORDT,"2P")
...S ORQ=ORN_U_$P($$TEXT^ORKOR(ORN,60),U,2)_" "_$G(ORDT)
K ^TMP("ORR",$J)
Q ORQ
RECENTCH(ORDFN,ORDAYS) ;extrinsic function to return the most recent cholecystogram procedure within the past ORDAYS in the format:
; order #^order text (first 60 chars) order effective date/time
N BDT,EDT,INBDT,XDT,X,ORDT,HDT,ORN,OROI,ORCM,TOT,ORQ,ORDG
S X="",ORDT="",HDT="",ORN="",TOT=0,ORQ=""
Q:+$G(ORDFN)<1 ORQ
Q:+$G(ORDAYS)<1 ORQ
D NOW^%DTC S EDT=% K %
S BDT=$$FMADD^XLFDT(EDT,"-"_ORDAYS,"","","")
Q:+$G(BDT)<1 ORQ
S ORDG=$$DG^ORQOR1("GENERAL RADIOLOGY")
Q:+$G(ORDG)<1 ORQ
K ^TMP("ORR",$J)
D EN^ORQ1(ORDFN_";DPT(",ORDG,1,"",BDT,EDT,0,0)
S HDT=$O(^TMP("ORR",$J,HDT)) Q:HDT="" ORQ S TOT=^(HDT,"TOT") I TOT>0 D
.F X=1:1:TOT Q:+$G(ORQ)>0 D ;quit on 1st cholecyst found (most recent)
..S ORN=+^TMP("ORR",$J,HDT,X)
..S OROI=$G(^OR(100,ORN,.1,1,0))
..Q:+$G(OROI)<1
..S ORCM=$$CM^ORQQRA(OROI)
..I $G(ORCM)["C" D ;cholecystogram
...S ORDT=$G(^OR(100,ORN,0)) S:$L($G(ORDT)) ORDT=$P(ORDT,U,8)
...S ORDT=$$FMTE^XLFDT(ORDT,"2P")
...S ORQ=ORN_U_$P($$TEXT^ORKOR(ORN,60),U,2)_" "_$G(ORDT)
K ^TMP("ORR",$J)
Q ORQ
TYPE(OI) ;extrinisic function which returns the imaging type for an orderable item
;returned as 'RAD','CT','MRI','ANI','CARD','NM','US', or 'VAS'
N ORTYPE S ORTYPE=""
S ORTYPE=$G(^ORD(101.43,OI,"RA"))
S:$L($G(ORTYPE)) ORTYPE=$P(ORTYPE,U,3)
Q ORTYPE
CMCDAYS(DFN) ;extrinsic function to return number of days to look for
; contrast media serum creatinine result
Q:'$L(DFN) ""
N ORLOC,ORENT,ORDAYS
;get patient's location flag (INPATIENT ONLY - outpt locations cannot be
;reliably determined, and many simultaneous outpt locations can occur):
S VA200="" D OERR^VADPT
S ORLOC=+$G(^DIC(42,+VAIN(4),44))
K VA200,VAIN
S ORENT=+$G(ORLOC)_";SC(^DIV^SYS^PKG"
S ORDAYS=$$GET^XPAR(ORENT,"ORK CONTRAST MEDIA CREATININE",1,"I")
Q:$L(ORDAYS) ORDAYS
Q ""
ORKRA ; slc/CLA - Order checking support procedure for Radiology ;12/15/97
+1 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**6,92,105**;Dec 17, 1997
+2 QUIT
RECENTBA(ORDFN,ORHRS) ; extrinsic function to return the most recent radiology procedure using barium within the past ORHRS in the format:
+1 ; order #^order text (first 60 chars) order effective date/time
+2 NEW BDT,EDT,INBDT,XDT,X,ORDT,HDT,ORN,OROI,ORCM,TOT,ORQ,ORDG
+3 SET X=""
SET ORDT=""
SET HDT=""
SET ORN=""
SET TOT=0
SET ORQ=""
+4 IF +$GET(ORDFN)<1
QUIT ORQ
+5 IF +$GET(ORHRS)<1
QUIT ORQ
+6 DO NOW^%DTC
SET EDT=%
KILL %
+7 SET BDT=$$FMADD^XLFDT(EDT,"","-"_ORHRS,"","")
+8 IF +$GET(BDT)<1
QUIT ORQ
+9 SET ORDG=$$DG^ORQOR1("GENERAL RADIOLOGY")
+10 IF +$GET(ORDG)<1
QUIT ORQ
+11 KILL ^TMP("ORR",$JOB)
+12 DO EN^ORQ1(ORDFN_";DPT(",ORDG,1,"",BDT,EDT,0,0)
+13 SET HDT=$ORDER(^TMP("ORR",$JOB,HDT))
IF HDT=""
QUIT ORQ
SET TOT=^(HDT,"TOT")
IF TOT>0
Begin DoDot:1
+14 ;quit on 1st barium found (most recent)
FOR X=1:1:TOT
IF +$GET(ORQ)>0
QUIT
Begin DoDot:2
+15 SET ORN=+^TMP("ORR",$JOB,HDT,X)
+16 SET OROI=$GET(^OR(100,ORN,.1,1,0))
+17 IF +$GET(OROI)<1
QUIT
+18 SET ORCM=$$CM^ORQQRA(OROI)
+19 IF $GET(ORCM)["B"
Begin DoDot:3
+20 SET ORDT=$GET(^OR(100,ORN,0))
IF $LENGTH($GET(ORDT))
SET ORDT=$PIECE(ORDT,U,8)
+21 SET ORDT=$$FMTE^XLFDT(ORDT,"2P")
+22 SET ORQ=ORN_U_$PIECE($$TEXT^ORKOR(ORN,60),U,2)_" "_$GET(ORDT)
End DoDot:3
End DoDot:2
End DoDot:1
+23 KILL ^TMP("ORR",$JOB)
+24 QUIT ORQ
RECENTCH(ORDFN,ORDAYS) ;extrinsic function to return the most recent cholecystogram procedure within the past ORDAYS in the format:
+1 ; order #^order text (first 60 chars) order effective date/time
+2 NEW BDT,EDT,INBDT,XDT,X,ORDT,HDT,ORN,OROI,ORCM,TOT,ORQ,ORDG
+3 SET X=""
SET ORDT=""
SET HDT=""
SET ORN=""
SET TOT=0
SET ORQ=""
+4 IF +$GET(ORDFN)<1
QUIT ORQ
+5 IF +$GET(ORDAYS)<1
QUIT ORQ
+6 DO NOW^%DTC
SET EDT=%
KILL %
+7 SET BDT=$$FMADD^XLFDT(EDT,"-"_ORDAYS,"","","")
+8 IF +$GET(BDT)<1
QUIT ORQ
+9 SET ORDG=$$DG^ORQOR1("GENERAL RADIOLOGY")
+10 IF +$GET(ORDG)<1
QUIT ORQ
+11 KILL ^TMP("ORR",$JOB)
+12 DO EN^ORQ1(ORDFN_";DPT(",ORDG,1,"",BDT,EDT,0,0)
+13 SET HDT=$ORDER(^TMP("ORR",$JOB,HDT))
IF HDT=""
QUIT ORQ
SET TOT=^(HDT,"TOT")
IF TOT>0
Begin DoDot:1
+14 ;quit on 1st cholecyst found (most recent)
FOR X=1:1:TOT
IF +$GET(ORQ)>0
QUIT
Begin DoDot:2
+15 SET ORN=+^TMP("ORR",$JOB,HDT,X)
+16 SET OROI=$GET(^OR(100,ORN,.1,1,0))
+17 IF +$GET(OROI)<1
QUIT
+18 SET ORCM=$$CM^ORQQRA(OROI)
+19 ;cholecystogram
IF $GET(ORCM)["C"
Begin DoDot:3
+20 SET ORDT=$GET(^OR(100,ORN,0))
IF $LENGTH($GET(ORDT))
SET ORDT=$PIECE(ORDT,U,8)
+21 SET ORDT=$$FMTE^XLFDT(ORDT,"2P")
+22 SET ORQ=ORN_U_$PIECE($$TEXT^ORKOR(ORN,60),U,2)_" "_$GET(ORDT)
End DoDot:3
End DoDot:2
End DoDot:1
+23 KILL ^TMP("ORR",$JOB)
+24 QUIT ORQ
TYPE(OI) ;extrinisic function which returns the imaging type for an orderable item
+1 ;returned as 'RAD','CT','MRI','ANI','CARD','NM','US', or 'VAS'
+2 NEW ORTYPE
SET ORTYPE=""
+3 SET ORTYPE=$GET(^ORD(101.43,OI,"RA"))
+4 IF $LENGTH($GET(ORTYPE))
SET ORTYPE=$PIECE(ORTYPE,U,3)
+5 QUIT ORTYPE
CMCDAYS(DFN) ;extrinsic function to return number of days to look for
+1 ; contrast media serum creatinine result
+2 IF '$LENGTH(DFN)
QUIT ""
+3 NEW ORLOC,ORENT,ORDAYS
+4 ;get patient's location flag (INPATIENT ONLY - outpt locations cannot be
+5 ;reliably determined, and many simultaneous outpt locations can occur):
+6 SET VA200=""
DO OERR^VADPT
+7 SET ORLOC=+$GET(^DIC(42,+VAIN(4),44))
+8 KILL VA200,VAIN
+9 SET ORENT=+$GET(ORLOC)_";SC(^DIV^SYS^PKG"
+10 SET ORDAYS=$$GET^XPAR(ORENT,"ORK CONTRAST MEDIA CREATININE",1,"I")
+11 IF $LENGTH(ORDAYS)
QUIT ORDAYS
+12 QUIT ""