- ORQQVI1 ;SLC/STAFF- Vitals rpc grid ;2/4/99 21:11
- ;;3.0;ORDER ENTRY/RESULTS REPORTING;**10,285**;Dec 17, 1997;Build 5
- ;
- ;DBIA for PXRMINDX(120.5 is 4290
- ;DBIA for ^GMVPXRM is 3647
- TEST ; test use only
- N CNT,I K ^TMP("ORQQVX",$J)
- S ^TMP("ORQQVX",$J,"INPUT",1)="16^2970902^2920202^3"
- S CNT=1
- F I="WEIGHT","RESPIRATION","PULSE","HEIGHT" S CNT=CNT+1,^TMP("ORQQVX",$J,"INPUT",CNT)=I
- D GRIDDATA
- S I=0 F S I=$O(^TMP("ORQQVX",$J,"OUTPUT",I)) Q:I<1 W !,^(I)
- K ^TMP("ORQQVX",$J)
- Q
- ;
- DETAIL(ROOT,DFN,DATE1,DATE2,RTIMES,TESTS) ; from Remote Procedure file
- N CNT,NUM,TEMPDATE
- I DATE1<DATE2 S TEMPDATE=DATE1,DATE1=DATE2,DATE2=TEMPDATE
- K ^TMP("ORQQVX",$J,"INPUT"),^("OUTPUT")
- S ROOT=$NA(^TMP("ORQQVX",$J,"OUTPUT"))
- S ^TMP("ORQQVX",$J,"INPUT",1)=DFN_U_DATE1_U_DATE2_U_RTIMES
- S CNT=1,NUM=0 F S NUM=$O(TESTS(NUM)) Q:NUM<1 D
- .S CNT=CNT+1
- .S ^TMP("ORQQVX",$J,"INPUT",CNT)=TESTS(NUM)
- D MEMODATA
- Q
- ;
- MEMODATA ;
- ; input format
- ; ^TMP("ORQQVX",$J,"INPUT",1)=dfn^start date^end date^restrict # time values
- ; ^TMP("ORQQVX",$J,"INPUT",#)=test# (tests displayed in this order)
- ;
- S ^TMP("ORQQVX",$J,"OUTPUT",1)=""
- N CHECKOK,DATANUM,DATESEQ,DATETIME,DFN,EDATE,EDT,ENTERBY,IDT,LINE,LINE1,LOC,MAIN,NUM,OUTCNT,RCNT,RQUIT,RESULT,RTIMES,SDATE,TESTNAME,TESTNUM,TESTSEQ,VCNT,ZERO
- K ^TMP("ORQQV",$J)
- S DFN=+^TMP("ORQQVX",$J,"INPUT",1),SDATE=+$P(^(1),U,2),EDATE=+$P(^(1),U,3),RTIMES=+$P(^(1),U,4)
- Q:'DFN I 'SDATE,'EDATE,'RTIMES Q
- I RTIMES,'SDATE,'EDATE S SDATE=DT,EDATE=2750101
- I SDATE,'EDATE Q
- I EDATE,'SDATE Q
- S OUTCNT=1,TESTSEQ=0
- S NUM=1 F S NUM=$O(^TMP("ORQQVX",$J,"INPUT",NUM)) Q:NUM<1 S TESTNAME=^(NUM) D
- .S TESTNAME=$$UP^XLFSTR(TESTNAME)
- .S TESTNUM=$$FIND1^DIC(120.51,"","BX",TESTNAME,"","","ERR")
- .I 'TESTNUM Q
- .S TESTSEQ=TESTSEQ+1
- .S LINE=TESTSEQ_U_TESTNUM_U_$$MIXED^ORU(TESTNAME)
- .S ^TMP("ORQQV",$J,"TEST",TESTSEQ)=LINE
- .S OUTCNT=OUTCNT+1
- S EDATE=EDATE\1
- S TESTSEQ=0 F S TESTSEQ=$O(^TMP("ORQQV",$J,"TEST",TESTSEQ)) Q:TESTSEQ<1 S TESTNUM=$P(^(TESTSEQ),U,2) D
- .S IDT=SDATE,(RCNT,RQUIT)=0
- .F S IDT=$O(^PXRMINDX(120.5,"PI",DFN,TESTNUM,SDATE)) Q:IDT<1 Q:IDT>EDATE D Q:RQUIT
- ..S DATANUM="" F S DATANUM=$O(^PXRMINDX(120.5,"PI",DFN,TESTNUM,SDATE,DATANUM)) Q:$L(DATANUM)'>0 D Q:RQUIT
- ...D EN^GMVPXRM(.ZERO,DATANUM,"I")
- ...Q:$P(ZERO(1),U)=-1
- ...Q:$P(ZERO(2),U)'=DFN Q:$P(ZERO(3),U)'=TESTNUM
- ...S RESULT=$$STRIP^ORCMEDIT($P(ZERO(7),U)),DATETIME=$P(ZERO(1),U),LOC=+$P(ZERO(5),U),ENTERBY=+$P(ZERO(6),U)
- ...S ^TMP("ORQQV",$J,"RESULTS",IDT)=DATETIME_U_LOC_U_ENTERBY ;$$FMTE^XLFDT(DATETIME)_" Location: "_$P($G(^SC(+LOC,0)),U)_" Entered by: "_$P($G(^VA(200,+ENTERBY,0)),U)
- ...S LINE=" "_$P(^TMP("ORQQV",$J,"TEST",TESTSEQ),U,3)
- ...S LINE=$$SETSTR^VALM1(RESULT,LINE,22,1+$L(RESULT))_U_LOC_U_ENTERBY
- ...S ^TMP("ORQQV",$J,"RESULTS",IDT,TESTSEQ)=LINE
- ...I RTIMES S RCNT=RCNT+1 I RCNT=RTIMES S RQUIT=1
- S (DATESEQ,RCNT,RQUIT,VCNT)=0
- S IDT=0 F S IDT=$O(^TMP("ORQQV",$J,"RESULTS",IDT)) Q:IDT<1 S LINE=^(IDT) D Q:RQUIT
- .S CHECKOK=1 D
- ..S MAIN=$P(LINE,U,2,3)
- ..S TESTSEQ=0 F S TESTSEQ=$O(^TMP("ORQQV",$J,"RESULTS",IDT,TESTSEQ)) Q:TESTSEQ<1 S RESULT=$P(^(TESTSEQ),U,2,3) I RESULT'=MAIN S CHECKOK=0 Q
- .I CHECKOK D
- ..S DATETIME=$$FMTE^XLFDT($P(LINE,U)),DATETIME=$P(DATETIME,":",1,2)
- ..S DATETIME=DATETIME_" Location: "_$P($G(^SC($P(LINE,U,2),0)),U)
- ..S DATETIME=$$SETSTR^VALM1(" Entered by: "_$P($G(^VA(200,$P(LINE,U,3),0)),U),DATETIME,50,30)
- .E S DATETIME=$$FMTE^XLFDT($P(LINE,U)),DATETIME=$P(DATETIME,":",1,2)
- .S DATESEQ=DATESEQ+1
- .S OUTCNT=OUTCNT+1
- .S ^TMP("ORQQVX",$J,"OUTPUT",OUTCNT)=DATETIME
- .S TESTSEQ=0 F S TESTSEQ=$O(^TMP("ORQQV",$J,"RESULTS",IDT,TESTSEQ)) Q:TESTSEQ<1 S LINE1=^(TESTSEQ) D
- ..I CHECKOK S RESULT=$P(LINE1,U)
- ..E D
- ...S RESULT=$$SETSTR^VALM1(" Location: "_$P($G(^SC($P(LINE1,U,2),0)),U),$P(LINE1,U),30,25)
- ...S RESULT=$$SETSTR^VALM1(" Entered by; "_$P($G(^VA(200,$P(LINE1,U,3),0)),U),RESULT,50,30)
- ..S OUTCNT=OUTCNT+1
- ..S ^TMP("ORQQVX",$J,"OUTPUT",OUTCNT)=RESULT
- .I RTIMES S RCNT=RCNT+1 I RCNT=RTIMES S RQUIT=1
- K ^TMP("ORQQV",$J)
- Q
- ;
- GRID(ROOT,DFN,DATE1,DATE2,RTIMES,TESTS) ; from Remote Procedure file
- N CNT,NUM,TEMPDATE
- I DATE1<DATE2 S TEMPDATE=DATE1,DATE1=DATE2,DATE2=TEMPDATE
- K ^TMP("ORQQVX",$J,"INPUT"),^("OUTPUT")
- S ROOT=$NA(^TMP("ORQQVX",$J,"OUTPUT"))
- S ^TMP("ORQQVX",$J,"INPUT",1)=DFN_U_DATE1_U_DATE2_U_RTIMES
- S CNT=1,NUM=0 F S NUM=$O(TESTS(NUM)) Q:NUM<1 D
- .S CNT=CNT+1
- .S ^TMP("ORQQVX",$J,"INPUT",CNT)=TESTS(NUM)
- D GRIDDATA
- Q
- ;
- GRIDDATA ;
- ; input format
- ; ^TMP("ORQQVX",$J,"INPUT",1)=dfn^start date^end date^restrict # time values
- ; ^TMP("ORQQVX",$J,"INPUT",#)=test# (tests displayed in this order)
- ;
- S ^TMP("ORQQVX",$J,"OUTPUT",1)="0^0^0"
- N DATANUM,DATESEQ,DATETIME,DFN,EDATE,EDT,IDT,LINE,NUM,OUTCNT,RCNT,RQUIT,RESULT,RTIMES,SDATE,TESTNAME,TESTNUM,TESTSEQ,VALUES,VCNT,ZERO
- K ^TMP("ORQQV",$J)
- S DFN=+^TMP("ORQQVX",$J,"INPUT",1),SDATE=+$P(^(1),U,2),EDATE=+$P(^(1),U,3),RTIMES=+$P(^(1),U,4)
- Q:'DFN I 'SDATE,'EDATE,'RTIMES Q
- I RTIMES,'SDATE,'EDATE S SDATE=DT,EDATE=2750101
- I SDATE,'EDATE Q
- I EDATE,'SDATE Q
- S OUTCNT=1,TESTSEQ=0
- S NUM=1 F S NUM=$O(^TMP("ORQQVX",$J,"INPUT",NUM)) Q:NUM<1 S TESTNAME=^(NUM) D
- .S TESTNAME=$$UP^XLFSTR(TESTNAME)
- .S TESTNUM=$$FIND1^DIC(120.51,"","BX",TESTNAME,"","","ERR")
- .I 'TESTNUM Q
- .S TESTSEQ=TESTSEQ+1
- .S LINE=TESTSEQ_U_TESTNUM_U_TESTNAME
- .S ^TMP("ORQQV",$J,"TEST",TESTSEQ)=LINE
- .S OUTCNT=OUTCNT+1
- .S ^TMP("ORQQVX",$J,"OUTPUT",OUTCNT)=LINE
- S ^TMP("ORQQVX",$J,"OUTPUT",1)=TESTSEQ
- S EDATE=EDATE\1
- S EDT=EDATE
- S TESTSEQ=0 F S TESTSEQ=$O(^TMP("ORQQV",$J,"TEST",TESTSEQ)) Q:TESTSEQ<1 S TESTNUM=$P(^(TESTSEQ),U,2) D
- .S IDT=SDATE,(RCNT,RQUIT)=0
- .F S IDT=$O(^PXRMINDX(120.5,"PI",DFN,TESTNUM,IDT)) Q:IDT<1 Q:IDT>EDT D Q:RQUIT
- ..S DATANUM=0 F S DATANUM=$O(^PXRMINDX(120.5,"PI",DFN,TESTNUM,IDT,DATANUM)) Q:DATANUM<1 D Q:RQUIT
- ...D EN^GMVPXRM(.ZERO,DATANUM,"I")
- ...Q:$P(ZERO(1),U)=-1
- ...Q:$P(ZERO(2),U)'=DFN Q:$P(ZERO(3),U)'=TESTNUM
- ...S RESULT=$$STRIP^ORCMEDIT($P(ZERO(7),U)),DATETIME=$P(ZERO(1),U)
- ...S ^TMP("ORQQV",$J,"RESULTS",IDT)=DATETIME
- ...S ^TMP("ORQQV",$J,"RESULTS",IDT,TESTSEQ)=RESULT
- ...I RTIMES S RCNT=RCNT+1 I RCNT=RTIMES S RQUIT=1
- S (DATESEQ,RCNT,RQUIT,VCNT)=0
- S IDT="A" F S IDT=$O(^TMP("ORQQV",$J,"RESULTS",IDT),-1) Q:IDT="" S DATETIME=^(IDT) D Q:RQUIT
- .S DATESEQ=DATESEQ+1
- .S OUTCNT=OUTCNT+1
- .S ^TMP("ORQQVX",$J,"OUTPUT",OUTCNT)=DATESEQ_U_DATETIME
- .S TESTSEQ=0 F S TESTSEQ=$O(^TMP("ORQQV",$J,"RESULTS",IDT,TESTSEQ)) Q:TESTSEQ<1 S RESULT=^(TESTSEQ) D
- ..S VCNT=VCNT+1
- ..S ^TMP("ORQQV",$J,"VALUES",VCNT)=DATESEQ_U_TESTSEQ_U_RESULT
- .I RTIMES S RCNT=RCNT+1 I RCNT=RTIMES S RQUIT=1
- S $P(^TMP("ORQQVX",$J,"OUTPUT",1),U,2,3)=DATESEQ_U_VCNT
- S VCNT=0 F S VCNT=$O(^TMP("ORQQV",$J,"VALUES",VCNT)) Q:VCNT<1 S VALUES=^(VCNT) D
- .S OUTCNT=OUTCNT+1
- .S ^TMP("ORQQVX",$J,"OUTPUT",OUTCNT)=VALUES
- K ^TMP("ORQQV",$J)
- Q
- ORQQVI1 ;SLC/STAFF- Vitals rpc grid ;2/4/99 21:11
- +1 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**10,285**;Dec 17, 1997;Build 5
- +2 ;
- +3 ;DBIA for PXRMINDX(120.5 is 4290
- +4 ;DBIA for ^GMVPXRM is 3647
- TEST ; test use only
- +1 NEW CNT,I
- KILL ^TMP("ORQQVX",$JOB)
- +2 SET ^TMP("ORQQVX",$JOB,"INPUT",1)="16^2970902^2920202^3"
- +3 SET CNT=1
- +4 FOR I="WEIGHT","RESPIRATION","PULSE","HEIGHT"
- SET CNT=CNT+1
- SET ^TMP("ORQQVX",$JOB,"INPUT",CNT)=I
- +5 DO GRIDDATA
- +6 SET I=0
- FOR
- SET I=$ORDER(^TMP("ORQQVX",$JOB,"OUTPUT",I))
- IF I<1
- QUIT
- WRITE !,^(I)
- +7 KILL ^TMP("ORQQVX",$JOB)
- +8 QUIT
- +9 ;
- DETAIL(ROOT,DFN,DATE1,DATE2,RTIMES,TESTS) ; from Remote Procedure file
- +1 NEW CNT,NUM,TEMPDATE
- +2 IF DATE1<DATE2
- SET TEMPDATE=DATE1
- SET DATE1=DATE2
- SET DATE2=TEMPDATE
- +3 KILL ^TMP("ORQQVX",$JOB,"INPUT"),^("OUTPUT")
- +4 SET ROOT=$NAME(^TMP("ORQQVX",$JOB,"OUTPUT"))
- +5 SET ^TMP("ORQQVX",$JOB,"INPUT",1)=DFN_U_DATE1_U_DATE2_U_RTIMES
- +6 SET CNT=1
- SET NUM=0
- FOR
- SET NUM=$ORDER(TESTS(NUM))
- IF NUM<1
- QUIT
- Begin DoDot:1
- +7 SET CNT=CNT+1
- +8 SET ^TMP("ORQQVX",$JOB,"INPUT",CNT)=TESTS(NUM)
- End DoDot:1
- +9 DO MEMODATA
- +10 QUIT
- +11 ;
- MEMODATA ;
- +1 ; input format
- +2 ; ^TMP("ORQQVX",$J,"INPUT",1)=dfn^start date^end date^restrict # time values
- +3 ; ^TMP("ORQQVX",$J,"INPUT",#)=test# (tests displayed in this order)
- +4 ;
- +5 SET ^TMP("ORQQVX",$JOB,"OUTPUT",1)=""
- +6 NEW CHECKOK,DATANUM,DATESEQ,DATETIME,DFN,EDATE,EDT,ENTERBY,IDT,LINE,LINE1,LOC,MAIN,NUM,OUTCNT,RCNT,RQUIT,RESULT,RTIMES,SDATE,TESTNAME,TESTNUM,TESTSEQ,VCNT,ZERO
- +7 KILL ^TMP("ORQQV",$JOB)
- +8 SET DFN=+^TMP("ORQQVX",$JOB,"INPUT",1)
- SET SDATE=+$PIECE(^(1),U,2)
- SET EDATE=+$PIECE(^(1),U,3)
- SET RTIMES=+$PIECE(^(1),U,4)
- +9 IF 'DFN
- QUIT
- IF 'SDATE
- IF 'EDATE
- IF 'RTIMES
- QUIT
- +10 IF RTIMES
- IF 'SDATE
- IF 'EDATE
- SET SDATE=DT
- SET EDATE=2750101
- +11 IF SDATE
- IF 'EDATE
- QUIT
- +12 IF EDATE
- IF 'SDATE
- QUIT
- +13 SET OUTCNT=1
- SET TESTSEQ=0
- +14 SET NUM=1
- FOR
- SET NUM=$ORDER(^TMP("ORQQVX",$JOB,"INPUT",NUM))
- IF NUM<1
- QUIT
- SET TESTNAME=^(NUM)
- Begin DoDot:1
- +15 SET TESTNAME=$$UP^XLFSTR(TESTNAME)
- +16 SET TESTNUM=$$FIND1^DIC(120.51,"","BX",TESTNAME,"","","ERR")
- +17 IF 'TESTNUM
- QUIT
- +18 SET TESTSEQ=TESTSEQ+1
- +19 SET LINE=TESTSEQ_U_TESTNUM_U_$$MIXED^ORU(TESTNAME)
- +20 SET ^TMP("ORQQV",$JOB,"TEST",TESTSEQ)=LINE
- +21 SET OUTCNT=OUTCNT+1
- End DoDot:1
- +22 SET EDATE=EDATE\1
- +23 SET TESTSEQ=0
- FOR
- SET TESTSEQ=$ORDER(^TMP("ORQQV",$JOB,"TEST",TESTSEQ))
- IF TESTSEQ<1
- QUIT
- SET TESTNUM=$PIECE(^(TESTSEQ),U,2)
- Begin DoDot:1
- +24 SET IDT=SDATE
- SET (RCNT,RQUIT)=0
- +25 FOR
- SET IDT=$ORDER(^PXRMINDX(120.5,"PI",DFN,TESTNUM,SDATE))
- IF IDT<1
- QUIT
- IF IDT>EDATE
- QUIT
- Begin DoDot:2
- +26 SET DATANUM=""
- FOR
- SET DATANUM=$ORDER(^PXRMINDX(120.5,"PI",DFN,TESTNUM,SDATE,DATANUM))
- IF $LENGTH(DATANUM)'>0
- QUIT
- Begin DoDot:3
- +27 DO EN^GMVPXRM(.ZERO,DATANUM,"I")
- +28 IF $PIECE(ZERO(1),U)=-1
- QUIT
- +29 IF $PIECE(ZERO(2),U)'=DFN
- QUIT
- IF $PIECE(ZERO(3),U)'=TESTNUM
- QUIT
- +30 SET RESULT=$$STRIP^ORCMEDIT($PIECE(ZERO(7),U))
- SET DATETIME=$PIECE(ZERO(1),U)
- SET LOC=+$PIECE(ZERO(5),U)
- SET ENTERBY=+$PIECE(ZERO(6),U)
- +31 ;$$FMTE^XLFDT(DATETIME)_" Location: "_$P($G(^SC(+LOC,0)),U)_" Entered by: "_$P($G(^VA(200,+ENTERBY,0)),U)
- SET ^TMP("ORQQV",$JOB,"RESULTS",IDT)=DATETIME_U_LOC_U_ENTERBY
- +32 SET LINE=" "_$PIECE(^TMP("ORQQV",$JOB,"TEST",TESTSEQ),U,3)
- +33 SET LINE=$$SETSTR^VALM1(RESULT,LINE,22,1+$LENGTH(RESULT))_U_LOC_U_ENTERBY
- +34 SET ^TMP("ORQQV",$JOB,"RESULTS",IDT,TESTSEQ)=LINE
- +35 IF RTIMES
- SET RCNT=RCNT+1
- IF RCNT=RTIMES
- SET RQUIT=1
- End DoDot:3
- IF RQUIT
- QUIT
- End DoDot:2
- IF RQUIT
- QUIT
- End DoDot:1
- +36 SET (DATESEQ,RCNT,RQUIT,VCNT)=0
- +37 SET IDT=0
- FOR
- SET IDT=$ORDER(^TMP("ORQQV",$JOB,"RESULTS",IDT))
- IF IDT<1
- QUIT
- SET LINE=^(IDT)
- Begin DoDot:1
- +38 SET CHECKOK=1
- Begin DoDot:2
- +39 SET MAIN=$PIECE(LINE,U,2,3)
- +40 SET TESTSEQ=0
- FOR
- SET TESTSEQ=$ORDER(^TMP("ORQQV",$JOB,"RESULTS",IDT,TESTSEQ))
- IF TESTSEQ<1
- QUIT
- SET RESULT=$PIECE(^(TESTSEQ),U,2,3)
- IF RESULT'=MAIN
- SET CHECKOK=0
- QUIT
- End DoDot:2
- +41 IF CHECKOK
- Begin DoDot:2
- +42 SET DATETIME=$$FMTE^XLFDT($PIECE(LINE,U))
- SET DATETIME=$PIECE(DATETIME,":",1,2)
- +43 SET DATETIME=DATETIME_" Location: "_$PIECE($GET(^SC($PIECE(LINE,U,2),0)),U)
- +44 SET DATETIME=$$SETSTR^VALM1(" Entered by: "_$PIECE($GET(^VA(200,$PIECE(LINE,U,3),0)),U),DATETIME,50,30)
- End DoDot:2
- +45 IF '$TEST
- SET DATETIME=$$FMTE^XLFDT($PIECE(LINE,U))
- SET DATETIME=$PIECE(DATETIME,":",1,2)
- +46 SET DATESEQ=DATESEQ+1
- +47 SET OUTCNT=OUTCNT+1
- +48 SET ^TMP("ORQQVX",$JOB,"OUTPUT",OUTCNT)=DATETIME
- +49 SET TESTSEQ=0
- FOR
- SET TESTSEQ=$ORDER(^TMP("ORQQV",$JOB,"RESULTS",IDT,TESTSEQ))
- IF TESTSEQ<1
- QUIT
- SET LINE1=^(TESTSEQ)
- Begin DoDot:2
- +50 IF CHECKOK
- SET RESULT=$PIECE(LINE1,U)
- +51 IF '$TEST
- Begin DoDot:3
- +52 SET RESULT=$$SETSTR^VALM1(" Location: "_$PIECE($GET(^SC($PIECE(LINE1,U,2),0)),U),$PIECE(LINE1,U),30,25)
- +53 SET RESULT=$$SETSTR^VALM1(" Entered by; "_$PIECE($GET(^VA(200,$PIECE(LINE1,U,3),0)),U),RESULT,50,30)
- End DoDot:3
- +54 SET OUTCNT=OUTCNT+1
- +55 SET ^TMP("ORQQVX",$JOB,"OUTPUT",OUTCNT)=RESULT
- End DoDot:2
- +56 IF RTIMES
- SET RCNT=RCNT+1
- IF RCNT=RTIMES
- SET RQUIT=1
- End DoDot:1
- IF RQUIT
- QUIT
- +57 KILL ^TMP("ORQQV",$JOB)
- +58 QUIT
- +59 ;
- GRID(ROOT,DFN,DATE1,DATE2,RTIMES,TESTS) ; from Remote Procedure file
- +1 NEW CNT,NUM,TEMPDATE
- +2 IF DATE1<DATE2
- SET TEMPDATE=DATE1
- SET DATE1=DATE2
- SET DATE2=TEMPDATE
- +3 KILL ^TMP("ORQQVX",$JOB,"INPUT"),^("OUTPUT")
- +4 SET ROOT=$NAME(^TMP("ORQQVX",$JOB,"OUTPUT"))
- +5 SET ^TMP("ORQQVX",$JOB,"INPUT",1)=DFN_U_DATE1_U_DATE2_U_RTIMES
- +6 SET CNT=1
- SET NUM=0
- FOR
- SET NUM=$ORDER(TESTS(NUM))
- IF NUM<1
- QUIT
- Begin DoDot:1
- +7 SET CNT=CNT+1
- +8 SET ^TMP("ORQQVX",$JOB,"INPUT",CNT)=TESTS(NUM)
- End DoDot:1
- +9 DO GRIDDATA
- +10 QUIT
- +11 ;
- GRIDDATA ;
- +1 ; input format
- +2 ; ^TMP("ORQQVX",$J,"INPUT",1)=dfn^start date^end date^restrict # time values
- +3 ; ^TMP("ORQQVX",$J,"INPUT",#)=test# (tests displayed in this order)
- +4 ;
- +5 SET ^TMP("ORQQVX",$JOB,"OUTPUT",1)="0^0^0"
- +6 NEW DATANUM,DATESEQ,DATETIME,DFN,EDATE,EDT,IDT,LINE,NUM,OUTCNT,RCNT,RQUIT,RESULT,RTIMES,SDATE,TESTNAME,TESTNUM,TESTSEQ,VALUES,VCNT,ZERO
- +7 KILL ^TMP("ORQQV",$JOB)
- +8 SET DFN=+^TMP("ORQQVX",$JOB,"INPUT",1)
- SET SDATE=+$PIECE(^(1),U,2)
- SET EDATE=+$PIECE(^(1),U,3)
- SET RTIMES=+$PIECE(^(1),U,4)
- +9 IF 'DFN
- QUIT
- IF 'SDATE
- IF 'EDATE
- IF 'RTIMES
- QUIT
- +10 IF RTIMES
- IF 'SDATE
- IF 'EDATE
- SET SDATE=DT
- SET EDATE=2750101
- +11 IF SDATE
- IF 'EDATE
- QUIT
- +12 IF EDATE
- IF 'SDATE
- QUIT
- +13 SET OUTCNT=1
- SET TESTSEQ=0
- +14 SET NUM=1
- FOR
- SET NUM=$ORDER(^TMP("ORQQVX",$JOB,"INPUT",NUM))
- IF NUM<1
- QUIT
- SET TESTNAME=^(NUM)
- Begin DoDot:1
- +15 SET TESTNAME=$$UP^XLFSTR(TESTNAME)
- +16 SET TESTNUM=$$FIND1^DIC(120.51,"","BX",TESTNAME,"","","ERR")
- +17 IF 'TESTNUM
- QUIT
- +18 SET TESTSEQ=TESTSEQ+1
- +19 SET LINE=TESTSEQ_U_TESTNUM_U_TESTNAME
- +20 SET ^TMP("ORQQV",$JOB,"TEST",TESTSEQ)=LINE
- +21 SET OUTCNT=OUTCNT+1
- +22 SET ^TMP("ORQQVX",$JOB,"OUTPUT",OUTCNT)=LINE
- End DoDot:1
- +23 SET ^TMP("ORQQVX",$JOB,"OUTPUT",1)=TESTSEQ
- +24 SET EDATE=EDATE\1
- +25 SET EDT=EDATE
- +26 SET TESTSEQ=0
- FOR
- SET TESTSEQ=$ORDER(^TMP("ORQQV",$JOB,"TEST",TESTSEQ))
- IF TESTSEQ<1
- QUIT
- SET TESTNUM=$PIECE(^(TESTSEQ),U,2)
- Begin DoDot:1
- +27 SET IDT=SDATE
- SET (RCNT,RQUIT)=0
- +28 FOR
- SET IDT=$ORDER(^PXRMINDX(120.5,"PI",DFN,TESTNUM,IDT))
- IF IDT<1
- QUIT
- IF IDT>EDT
- QUIT
- Begin DoDot:2
- +29 SET DATANUM=0
- FOR
- SET DATANUM=$ORDER(^PXRMINDX(120.5,"PI",DFN,TESTNUM,IDT,DATANUM))
- IF DATANUM<1
- QUIT
- Begin DoDot:3
- +30 DO EN^GMVPXRM(.ZERO,DATANUM,"I")
- +31 IF $PIECE(ZERO(1),U)=-1
- QUIT
- +32 IF $PIECE(ZERO(2),U)'=DFN
- QUIT
- IF $PIECE(ZERO(3),U)'=TESTNUM
- QUIT
- +33 SET RESULT=$$STRIP^ORCMEDIT($PIECE(ZERO(7),U))
- SET DATETIME=$PIECE(ZERO(1),U)
- +34 SET ^TMP("ORQQV",$JOB,"RESULTS",IDT)=DATETIME
- +35 SET ^TMP("ORQQV",$JOB,"RESULTS",IDT,TESTSEQ)=RESULT
- +36 IF RTIMES
- SET RCNT=RCNT+1
- IF RCNT=RTIMES
- SET RQUIT=1
- End DoDot:3
- IF RQUIT
- QUIT
- End DoDot:2
- IF RQUIT
- QUIT
- End DoDot:1
- +37 SET (DATESEQ,RCNT,RQUIT,VCNT)=0
- +38 SET IDT="A"
- FOR
- SET IDT=$ORDER(^TMP("ORQQV",$JOB,"RESULTS",IDT),-1)
- IF IDT=""
- QUIT
- SET DATETIME=^(IDT)
- Begin DoDot:1
- +39 SET DATESEQ=DATESEQ+1
- +40 SET OUTCNT=OUTCNT+1
- +41 SET ^TMP("ORQQVX",$JOB,"OUTPUT",OUTCNT)=DATESEQ_U_DATETIME
- +42 SET TESTSEQ=0
- FOR
- SET TESTSEQ=$ORDER(^TMP("ORQQV",$JOB,"RESULTS",IDT,TESTSEQ))
- IF TESTSEQ<1
- QUIT
- SET RESULT=^(TESTSEQ)
- Begin DoDot:2
- +43 SET VCNT=VCNT+1
- +44 SET ^TMP("ORQQV",$JOB,"VALUES",VCNT)=DATESEQ_U_TESTSEQ_U_RESULT
- End DoDot:2
- +45 IF RTIMES
- SET RCNT=RCNT+1
- IF RCNT=RTIMES
- SET RQUIT=1
- End DoDot:1
- IF RQUIT
- QUIT
- +46 SET $PIECE(^TMP("ORQQVX",$JOB,"OUTPUT",1),U,2,3)=DATESEQ_U_VCNT
- +47 SET VCNT=0
- FOR
- SET VCNT=$ORDER(^TMP("ORQQV",$JOB,"VALUES",VCNT))
- IF VCNT<1
- QUIT
- SET VALUES=^(VCNT)
- Begin DoDot:1
- +48 SET OUTCNT=OUTCNT+1
- +49 SET ^TMP("ORQQVX",$JOB,"OUTPUT",OUTCNT)=VALUES
- End DoDot:1
- +50 KILL ^TMP("ORQQV",$JOB)
- +51 QUIT