Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ORQQVI1

ORQQVI1.m

Go to the documentation of this file.
  1. 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
  1. ;
  1. ;DBIA for PXRMINDX(120.5 is 4290
  1. ;DBIA for ^GMVPXRM is 3647
  1. TEST ; test use only
  1. N CNT,I K ^TMP("ORQQVX",$J)
  1. S ^TMP("ORQQVX",$J,"INPUT",1)="16^2970902^2920202^3"
  1. S CNT=1
  1. F I="WEIGHT","RESPIRATION","PULSE","HEIGHT" S CNT=CNT+1,^TMP("ORQQVX",$J,"INPUT",CNT)=I
  1. D GRIDDATA
  1. S I=0 F S I=$O(^TMP("ORQQVX",$J,"OUTPUT",I)) Q:I<1 W !,^(I)
  1. K ^TMP("ORQQVX",$J)
  1. Q
  1. ;
  1. DETAIL(ROOT,DFN,DATE1,DATE2,RTIMES,TESTS) ; from Remote Procedure file
  1. N CNT,NUM,TEMPDATE
  1. I DATE1<DATE2 S TEMPDATE=DATE1,DATE1=DATE2,DATE2=TEMPDATE
  1. K ^TMP("ORQQVX",$J,"INPUT"),^("OUTPUT")
  1. S ROOT=$NA(^TMP("ORQQVX",$J,"OUTPUT"))
  1. S ^TMP("ORQQVX",$J,"INPUT",1)=DFN_U_DATE1_U_DATE2_U_RTIMES
  1. S CNT=1,NUM=0 F S NUM=$O(TESTS(NUM)) Q:NUM<1 D
  1. .S CNT=CNT+1
  1. .S ^TMP("ORQQVX",$J,"INPUT",CNT)=TESTS(NUM)
  1. D MEMODATA
  1. Q
  1. ;
  1. MEMODATA ;
  1. ; input format
  1. ; ^TMP("ORQQVX",$J,"INPUT",1)=dfn^start date^end date^restrict # time values
  1. ; ^TMP("ORQQVX",$J,"INPUT",#)=test# (tests displayed in this order)
  1. ;
  1. S ^TMP("ORQQVX",$J,"OUTPUT",1)=""
  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
  1. K ^TMP("ORQQV",$J)
  1. S DFN=+^TMP("ORQQVX",$J,"INPUT",1),SDATE=+$P(^(1),U,2),EDATE=+$P(^(1),U,3),RTIMES=+$P(^(1),U,4)
  1. Q:'DFN I 'SDATE,'EDATE,'RTIMES Q
  1. I RTIMES,'SDATE,'EDATE S SDATE=DT,EDATE=2750101
  1. I SDATE,'EDATE Q
  1. I EDATE,'SDATE Q
  1. S OUTCNT=1,TESTSEQ=0
  1. S NUM=1 F S NUM=$O(^TMP("ORQQVX",$J,"INPUT",NUM)) Q:NUM<1 S TESTNAME=^(NUM) D
  1. .S TESTNAME=$$UP^XLFSTR(TESTNAME)
  1. .S TESTNUM=$$FIND1^DIC(120.51,"","BX",TESTNAME,"","","ERR")
  1. .I 'TESTNUM Q
  1. .S TESTSEQ=TESTSEQ+1
  1. .S LINE=TESTSEQ_U_TESTNUM_U_$$MIXED^ORU(TESTNAME)
  1. .S ^TMP("ORQQV",$J,"TEST",TESTSEQ)=LINE
  1. .S OUTCNT=OUTCNT+1
  1. S EDATE=EDATE\1
  1. S TESTSEQ=0 F S TESTSEQ=$O(^TMP("ORQQV",$J,"TEST",TESTSEQ)) Q:TESTSEQ<1 S TESTNUM=$P(^(TESTSEQ),U,2) D
  1. .S IDT=SDATE,(RCNT,RQUIT)=0
  1. .F S IDT=$O(^PXRMINDX(120.5,"PI",DFN,TESTNUM,SDATE)) Q:IDT<1 Q:IDT>EDATE D Q:RQUIT
  1. ..S DATANUM="" F S DATANUM=$O(^PXRMINDX(120.5,"PI",DFN,TESTNUM,SDATE,DATANUM)) Q:$L(DATANUM)'>0 D Q:RQUIT
  1. ...D EN^GMVPXRM(.ZERO,DATANUM,"I")
  1. ...Q:$P(ZERO(1),U)=-1
  1. ...Q:$P(ZERO(2),U)'=DFN Q:$P(ZERO(3),U)'=TESTNUM
  1. ...S RESULT=$$STRIP^ORCMEDIT($P(ZERO(7),U)),DATETIME=$P(ZERO(1),U),LOC=+$P(ZERO(5),U),ENTERBY=+$P(ZERO(6),U)
  1. ...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)
  1. ...S LINE=" "_$P(^TMP("ORQQV",$J,"TEST",TESTSEQ),U,3)
  1. ...S LINE=$$SETSTR^VALM1(RESULT,LINE,22,1+$L(RESULT))_U_LOC_U_ENTERBY
  1. ...S ^TMP("ORQQV",$J,"RESULTS",IDT,TESTSEQ)=LINE
  1. ...I RTIMES S RCNT=RCNT+1 I RCNT=RTIMES S RQUIT=1
  1. S (DATESEQ,RCNT,RQUIT,VCNT)=0
  1. S IDT=0 F S IDT=$O(^TMP("ORQQV",$J,"RESULTS",IDT)) Q:IDT<1 S LINE=^(IDT) D Q:RQUIT
  1. .S CHECKOK=1 D
  1. ..S MAIN=$P(LINE,U,2,3)
  1. ..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
  1. .I CHECKOK D
  1. ..S DATETIME=$$FMTE^XLFDT($P(LINE,U)),DATETIME=$P(DATETIME,":",1,2)
  1. ..S DATETIME=DATETIME_" Location: "_$P($G(^SC($P(LINE,U,2),0)),U)
  1. ..S DATETIME=$$SETSTR^VALM1(" Entered by: "_$P($G(^VA(200,$P(LINE,U,3),0)),U),DATETIME,50,30)
  1. .E S DATETIME=$$FMTE^XLFDT($P(LINE,U)),DATETIME=$P(DATETIME,":",1,2)
  1. .S DATESEQ=DATESEQ+1
  1. .S OUTCNT=OUTCNT+1
  1. .S ^TMP("ORQQVX",$J,"OUTPUT",OUTCNT)=DATETIME
  1. .S TESTSEQ=0 F S TESTSEQ=$O(^TMP("ORQQV",$J,"RESULTS",IDT,TESTSEQ)) Q:TESTSEQ<1 S LINE1=^(TESTSEQ) D
  1. ..I CHECKOK S RESULT=$P(LINE1,U)
  1. ..E D
  1. ...S RESULT=$$SETSTR^VALM1(" Location: "_$P($G(^SC($P(LINE1,U,2),0)),U),$P(LINE1,U),30,25)
  1. ...S RESULT=$$SETSTR^VALM1(" Entered by; "_$P($G(^VA(200,$P(LINE1,U,3),0)),U),RESULT,50,30)
  1. ..S OUTCNT=OUTCNT+1
  1. ..S ^TMP("ORQQVX",$J,"OUTPUT",OUTCNT)=RESULT
  1. .I RTIMES S RCNT=RCNT+1 I RCNT=RTIMES S RQUIT=1
  1. K ^TMP("ORQQV",$J)
  1. Q
  1. ;
  1. GRID(ROOT,DFN,DATE1,DATE2,RTIMES,TESTS) ; from Remote Procedure file
  1. N CNT,NUM,TEMPDATE
  1. I DATE1<DATE2 S TEMPDATE=DATE1,DATE1=DATE2,DATE2=TEMPDATE
  1. K ^TMP("ORQQVX",$J,"INPUT"),^("OUTPUT")
  1. S ROOT=$NA(^TMP("ORQQVX",$J,"OUTPUT"))
  1. S ^TMP("ORQQVX",$J,"INPUT",1)=DFN_U_DATE1_U_DATE2_U_RTIMES
  1. S CNT=1,NUM=0 F S NUM=$O(TESTS(NUM)) Q:NUM<1 D
  1. .S CNT=CNT+1
  1. .S ^TMP("ORQQVX",$J,"INPUT",CNT)=TESTS(NUM)
  1. D GRIDDATA
  1. Q
  1. ;
  1. GRIDDATA ;
  1. ; input format
  1. ; ^TMP("ORQQVX",$J,"INPUT",1)=dfn^start date^end date^restrict # time values
  1. ; ^TMP("ORQQVX",$J,"INPUT",#)=test# (tests displayed in this order)
  1. ;
  1. S ^TMP("ORQQVX",$J,"OUTPUT",1)="0^0^0"
  1. N DATANUM,DATESEQ,DATETIME,DFN,EDATE,EDT,IDT,LINE,NUM,OUTCNT,RCNT,RQUIT,RESULT,RTIMES,SDATE,TESTNAME,TESTNUM,TESTSEQ,VALUES,VCNT,ZERO
  1. K ^TMP("ORQQV",$J)
  1. S DFN=+^TMP("ORQQVX",$J,"INPUT",1),SDATE=+$P(^(1),U,2),EDATE=+$P(^(1),U,3),RTIMES=+$P(^(1),U,4)
  1. Q:'DFN I 'SDATE,'EDATE,'RTIMES Q
  1. I RTIMES,'SDATE,'EDATE S SDATE=DT,EDATE=2750101
  1. I SDATE,'EDATE Q
  1. I EDATE,'SDATE Q
  1. S OUTCNT=1,TESTSEQ=0
  1. S NUM=1 F S NUM=$O(^TMP("ORQQVX",$J,"INPUT",NUM)) Q:NUM<1 S TESTNAME=^(NUM) D
  1. .S TESTNAME=$$UP^XLFSTR(TESTNAME)
  1. .S TESTNUM=$$FIND1^DIC(120.51,"","BX",TESTNAME,"","","ERR")
  1. .I 'TESTNUM Q
  1. .S TESTSEQ=TESTSEQ+1
  1. .S LINE=TESTSEQ_U_TESTNUM_U_TESTNAME
  1. .S ^TMP("ORQQV",$J,"TEST",TESTSEQ)=LINE
  1. .S OUTCNT=OUTCNT+1
  1. .S ^TMP("ORQQVX",$J,"OUTPUT",OUTCNT)=LINE
  1. S ^TMP("ORQQVX",$J,"OUTPUT",1)=TESTSEQ
  1. S EDATE=EDATE\1
  1. S EDT=EDATE
  1. S TESTSEQ=0 F S TESTSEQ=$O(^TMP("ORQQV",$J,"TEST",TESTSEQ)) Q:TESTSEQ<1 S TESTNUM=$P(^(TESTSEQ),U,2) D
  1. .S IDT=SDATE,(RCNT,RQUIT)=0
  1. .F S IDT=$O(^PXRMINDX(120.5,"PI",DFN,TESTNUM,IDT)) Q:IDT<1 Q:IDT>EDT D Q:RQUIT
  1. ..S DATANUM=0 F S DATANUM=$O(^PXRMINDX(120.5,"PI",DFN,TESTNUM,IDT,DATANUM)) Q:DATANUM<1 D Q:RQUIT
  1. ...D EN^GMVPXRM(.ZERO,DATANUM,"I")
  1. ...Q:$P(ZERO(1),U)=-1
  1. ...Q:$P(ZERO(2),U)'=DFN Q:$P(ZERO(3),U)'=TESTNUM
  1. ...S RESULT=$$STRIP^ORCMEDIT($P(ZERO(7),U)),DATETIME=$P(ZERO(1),U)
  1. ...S ^TMP("ORQQV",$J,"RESULTS",IDT)=DATETIME
  1. ...S ^TMP("ORQQV",$J,"RESULTS",IDT,TESTSEQ)=RESULT
  1. ...I RTIMES S RCNT=RCNT+1 I RCNT=RTIMES S RQUIT=1
  1. S (DATESEQ,RCNT,RQUIT,VCNT)=0
  1. S IDT="A" F S IDT=$O(^TMP("ORQQV",$J,"RESULTS",IDT),-1) Q:IDT="" S DATETIME=^(IDT) D Q:RQUIT
  1. .S DATESEQ=DATESEQ+1
  1. .S OUTCNT=OUTCNT+1
  1. .S ^TMP("ORQQVX",$J,"OUTPUT",OUTCNT)=DATESEQ_U_DATETIME
  1. .S TESTSEQ=0 F S TESTSEQ=$O(^TMP("ORQQV",$J,"RESULTS",IDT,TESTSEQ)) Q:TESTSEQ<1 S RESULT=^(TESTSEQ) D
  1. ..S VCNT=VCNT+1
  1. ..S ^TMP("ORQQV",$J,"VALUES",VCNT)=DATESEQ_U_TESTSEQ_U_RESULT
  1. .I RTIMES S RCNT=RCNT+1 I RCNT=RTIMES S RQUIT=1
  1. S $P(^TMP("ORQQVX",$J,"OUTPUT",1),U,2,3)=DATESEQ_U_VCNT
  1. S VCNT=0 F S VCNT=$O(^TMP("ORQQV",$J,"VALUES",VCNT)) Q:VCNT<1 S VALUES=^(VCNT) D
  1. .S OUTCNT=OUTCNT+1
  1. .S ^TMP("ORQQVX",$J,"OUTPUT",OUTCNT)=VALUES
  1. K ^TMP("ORQQV",$J)
  1. Q