OCXOLOG ;SLC/RJS,CLA - MAINTAIN RAW DATA LOG ;10/29/98 12:37
;;3.0;ORDER ENTRY/RESULTS REPORTING;**32**;Dec 17,1997
;; ;;ORDER CHECK EXPERT version 1.01 released OCT 29,1998
;
NEW(OCXA,OCXS,OCXU,OCXP) ;
;
; OCXA - ARRAY NAME
; OCXS - DATA SOURCE
; OCXU - USER
; OCXP - PATIENT
;
I '$D(^OCXD(861,1,0)) S ^OCXD(861,1,0)="SITE PREFERENCES"
F S OCXI=$O(^OCXD(861,"A"),-1)+1 L +^OCXD(861,OCXI):0 I Q:'$D(^OCXD(861,OCXI)) L -^OCXD(861,OCXI)
;
N OCXR,OCXTEMP,OCXD1,OCXD2
;
S OCXDT=$$DATE_" "
S OCXR(0)=OCXDT
S OCXR("ARRAY")=OCXA
S OCXR("JOB")=$J
S:$L($G(OCXS)) OCXR("SOURCE")=$G(OCXS)
S OCXR("VERSION")=$P($T(+3),";;",3)
S OCXR("STATUS")="RUNNING"
S:$G(OCXU) OCXR("USER")="["_OCXU_"] "_$P($G(^VA(200,+OCXU,0)),U,1)
S:$G(OCXP) OCXR("PATIENT")="["_OCXP_"] "_$P($G(^DPT(+OCXP,0)),U,1)
;
S OCXD1=0 F S OCXD1=$O(@OCXA@(OCXD1)) Q:'(OCXD1) D
.N OCXTXT
.S OCXTXT=@OCXA@(OCXD1)
.I ($L(OCXTXT)<200) S OCXR("DATA",$$LAST+1,0)=OCXTXT Q
.N OCXOVER,OCXOV0
.F Q:'$L(OCXTXT) D
..S OCXR("DATA",$$LAST+1,0)=$E(OCXTXT,1,200)
..S OCXTXT=$E(OCXTXT,201,$L(OCXTXT))
..S:$L(OCXTXT) OCXTXT=">>>"_OCXTXT
;
S:$O(OCXR("DATA",0)) OCXR("DATA",0)="^^"_$$LAST_"^"_$$LAST_"^"_$$TODAY
;
M ^OCXD(861,OCXI)=OCXR
S ^OCXD(861,"B",OCXDT,OCXI)=""
S $P(^OCXD(861,0),"^",3)=$P(^OCXD(861,0),"^",3)+1
S $P(^OCXD(861,0),"^",4)=OCXI
;
L -^OCXD(861,OCXI)
;
W:$G(OCXTRACE) !,"OCX Logging message ",OCXS," # ",OCXI
;
K OCXR,OCXTEMP,OCXD1,OCXD2
;
Q OCXI
;
FINISH(OCXL) ;
;
I $G(OCXL),$D(^OCXD(861,OCXL,0)) S ^OCXD(861,OCXL,"STATUS")="FINISHED NORMALLY AT "_$$DATE
Q
;
LAST() Q $O(OCXR("DATA",""),-1)
;
CLEAR N OCXX S OCXX=$P(^OCXD(861,0),U,1,2) K ^OCXD(861) S ^OCXD(861,0)=OCXX Q
;
DATE() N X,Y,%DT S X="N",%DT="ST" D ^%DT Q ((Y\1)+17000000)_"."_$E(1000000+((Y#1)*1000000),2,7)
;
TODAY() N X,Y,%DT S X="T",%DT="" D ^%DT Q Y
;
CONV(Y) Q:'(Y["@") Y Q $P(Y,"@",1)_" at "_$P(Y,"@",2,99)
;
PURGE ; Use this for an emergency purge of the raw data
; log in case of <diskfull> errors
N OCXX S OCXX=$P($G(^OCXD(861,0)),"^",1,2) Q:'$L(OCXX)
K ^OCXD(861) S ^OCXD(861,0)=OCXX
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HOCXOLOG 2159 printed Nov 22, 2024@17:35:38 Page 2
OCXOLOG ;SLC/RJS,CLA - MAINTAIN RAW DATA LOG ;10/29/98 12:37
+1 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**32**;Dec 17,1997
+2 ;; ;;ORDER CHECK EXPERT version 1.01 released OCT 29,1998
+3 ;
NEW(OCXA,OCXS,OCXU,OCXP) ;
+1 ;
+2 ; OCXA - ARRAY NAME
+3 ; OCXS - DATA SOURCE
+4 ; OCXU - USER
+5 ; OCXP - PATIENT
+6 ;
+7 IF '$DATA(^OCXD(861,1,0))
SET ^OCXD(861,1,0)="SITE PREFERENCES"
+8 FOR
SET OCXI=$ORDER(^OCXD(861,"A"),-1)+1
LOCK +^OCXD(861,OCXI):0
IF $TEST
if '$DATA(^OCXD(861,OCXI))
QUIT
LOCK -^OCXD(861,OCXI)
+9 ;
+10 NEW OCXR,OCXTEMP,OCXD1,OCXD2
+11 ;
+12 SET OCXDT=$$DATE_" "
+13 SET OCXR(0)=OCXDT
+14 SET OCXR("ARRAY")=OCXA
+15 SET OCXR("JOB")=$JOB
+16 if $LENGTH($GET(OCXS))
SET OCXR("SOURCE")=$GET(OCXS)
+17 SET OCXR("VERSION")=$PIECE($TEXT(+3),";;",3)
+18 SET OCXR("STATUS")="RUNNING"
+19 if $GET(OCXU)
SET OCXR("USER")="["_OCXU_"] "_$PIECE($GET(^VA(200,+OCXU,0)),U,1)
+20 if $GET(OCXP)
SET OCXR("PATIENT")="["_OCXP_"] "_$PIECE($GET(^DPT(+OCXP,0)),U,1)
+21 ;
+22 SET OCXD1=0
FOR
SET OCXD1=$ORDER(@OCXA@(OCXD1))
if '(OCXD1)
QUIT
Begin DoDot:1
+23 NEW OCXTXT
+24 SET OCXTXT=@OCXA@(OCXD1)
+25 IF ($LENGTH(OCXTXT)<200)
SET OCXR("DATA",$$LAST+1,0)=OCXTXT
QUIT
+26 NEW OCXOVER,OCXOV0
+27 FOR
if '$LENGTH(OCXTXT)
QUIT
Begin DoDot:2
+28 SET OCXR("DATA",$$LAST+1,0)=$EXTRACT(OCXTXT,1,200)
+29 SET OCXTXT=$EXTRACT(OCXTXT,201,$LENGTH(OCXTXT))
+30 if $LENGTH(OCXTXT)
SET OCXTXT=">>>"_OCXTXT
End DoDot:2
End DoDot:1
+31 ;
+32 if $ORDER(OCXR("DATA",0))
SET OCXR("DATA",0)="^^"_$$LAST_"^"_$$LAST_"^"_$$TODAY
+33 ;
+34 MERGE ^OCXD(861,OCXI)=OCXR
+35 SET ^OCXD(861,"B",OCXDT,OCXI)=""
+36 SET $PIECE(^OCXD(861,0),"^",3)=$PIECE(^OCXD(861,0),"^",3)+1
+37 SET $PIECE(^OCXD(861,0),"^",4)=OCXI
+38 ;
+39 LOCK -^OCXD(861,OCXI)
+40 ;
+41 if $GET(OCXTRACE)
WRITE !,"OCX Logging message ",OCXS," # ",OCXI
+42 ;
+43 KILL OCXR,OCXTEMP,OCXD1,OCXD2
+44 ;
+45 QUIT OCXI
+46 ;
FINISH(OCXL) ;
+1 ;
+2 IF $GET(OCXL)
IF $DATA(^OCXD(861,OCXL,0))
SET ^OCXD(861,OCXL,"STATUS")="FINISHED NORMALLY AT "_$$DATE
+3 QUIT
+4 ;
LAST() QUIT $ORDER(OCXR("DATA",""),-1)
+1 ;
CLEAR NEW OCXX
SET OCXX=$PIECE(^OCXD(861,0),U,1,2)
KILL ^OCXD(861)
SET ^OCXD(861,0)=OCXX
QUIT
+1 ;
DATE() NEW X,Y,%DT
SET X="N"
SET %DT="ST"
DO ^%DT
QUIT ((Y\1)+17000000)_"."_$EXTRACT(1000000+((Y#1)*1000000),2,7)
+1 ;
TODAY() NEW X,Y,%DT
SET X="T"
SET %DT=""
DO ^%DT
QUIT Y
+1 ;
CONV(Y) if '(Y["@")
QUIT Y
QUIT $PIECE(Y,"@",1)_" at "_$PIECE(Y,"@",2,99)
+1 ;
PURGE ; Use this for an emergency purge of the raw data
+1 ; log in case of <diskfull> errors
+2 NEW OCXX
SET OCXX=$PIECE($GET(^OCXD(861,0)),"^",1,2)
if '$LENGTH(OCXX)
QUIT
+3 KILL ^OCXD(861)
SET ^OCXD(861,0)=OCXX
+4 QUIT
+5 ;