| 1 | ORQQVI1 ;SLC/STAFF- Vitals rpc grid ;2/4/99  21:11
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;**10**;Dec 17, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | TEST ; test use only
 | 
|---|
| 5 |  N CNT,I K ^TMP("ORQQVX",$J)
 | 
|---|
| 6 |  S ^TMP("ORQQVX",$J,"INPUT",1)="16^2970902^2920202^3"
 | 
|---|
| 7 |  S CNT=1
 | 
|---|
| 8 |  F I="WEIGHT","RESPIRATION","PULSE","HEIGHT" S CNT=CNT+1,^TMP("ORQQVX",$J,"INPUT",CNT)=I
 | 
|---|
| 9 |  D GRIDDATA
 | 
|---|
| 10 |  S I=0 F  S I=$O(^TMP("ORQQVX",$J,"OUTPUT",I)) Q:I<1  W !,^(I)
 | 
|---|
| 11 |  K ^TMP("ORQQVX",$J)
 | 
|---|
| 12 |  Q
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 | DETAIL(ROOT,DFN,DATE1,DATE2,RTIMES,TESTS) ; from Remote Procedure file
 | 
|---|
| 15 |  N CNT,NUM,TEMPDATE
 | 
|---|
| 16 |  I DATE1<DATE2 S TEMPDATE=DATE1,DATE1=DATE2,DATE2=TEMPDATE
 | 
|---|
| 17 |  K ^TMP("ORQQVX",$J,"INPUT"),^("OUTPUT")
 | 
|---|
| 18 |  S ROOT=$NA(^TMP("ORQQVX",$J,"OUTPUT"))
 | 
|---|
| 19 |  S ^TMP("ORQQVX",$J,"INPUT",1)=DFN_U_DATE1_U_DATE2_U_RTIMES
 | 
|---|
| 20 |  S CNT=1,NUM=0 F  S NUM=$O(TESTS(NUM)) Q:NUM<1  D
 | 
|---|
| 21 |  .S CNT=CNT+1
 | 
|---|
| 22 |  .S ^TMP("ORQQVX",$J,"INPUT",CNT)=TESTS(NUM)
 | 
|---|
| 23 |  D MEMODATA
 | 
|---|
| 24 |  Q
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 | MEMODATA ;
 | 
|---|
| 27 |  ; input format
 | 
|---|
| 28 |  ; ^TMP("ORQQVX",$J,"INPUT",1)=dfn^start date^end date^restrict # time values
 | 
|---|
| 29 |  ; ^TMP("ORQQVX",$J,"INPUT",#)=test#  (tests displayed in this order)
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 |  S ^TMP("ORQQVX",$J,"OUTPUT",1)=""
 | 
|---|
| 32 |  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
 | 
|---|
| 33 |  K ^TMP("ORQQV",$J)
 | 
|---|
| 34 |  S DFN=+^TMP("ORQQVX",$J,"INPUT",1),SDATE=+$P(^(1),U,2),EDATE=+$P(^(1),U,3),RTIMES=+$P(^(1),U,4)
 | 
|---|
| 35 |  Q:'DFN  I 'SDATE,'EDATE,'RTIMES Q
 | 
|---|
| 36 |  I RTIMES,'SDATE,'EDATE S SDATE=DT,EDATE=2750101
 | 
|---|
| 37 |  I SDATE,'EDATE Q
 | 
|---|
| 38 |  I EDATE,'SDATE Q
 | 
|---|
| 39 |  S OUTCNT=1,TESTSEQ=0
 | 
|---|
| 40 |  S NUM=1 F  S NUM=$O(^TMP("ORQQVX",$J,"INPUT",NUM)) Q:NUM<1  S TESTNAME=^(NUM) D
 | 
|---|
| 41 |  .S TESTNAME=$$UP^XLFSTR(TESTNAME)
 | 
|---|
| 42 |  .S TESTNUM=$$FIND1^DIC(120.51,"","BX",TESTNAME,"","","ERR")
 | 
|---|
| 43 |  .I 'TESTNUM Q
 | 
|---|
| 44 |  .S TESTSEQ=TESTSEQ+1
 | 
|---|
| 45 |  .S LINE=TESTSEQ_U_TESTNUM_U_$$MIXED^ORU(TESTNAME)
 | 
|---|
| 46 |  .S ^TMP("ORQQV",$J,"TEST",TESTSEQ)=LINE
 | 
|---|
| 47 |  .S OUTCNT=OUTCNT+1
 | 
|---|
| 48 |  S EDATE=EDATE\1
 | 
|---|
| 49 |  S EDT=9999999-EDATE
 | 
|---|
| 50 |  S TESTSEQ=0 F  S TESTSEQ=$O(^TMP("ORQQV",$J,"TEST",TESTSEQ)) Q:TESTSEQ<1  S TESTNUM=$P(^(TESTSEQ),U,2) D
 | 
|---|
| 51 |  .S IDT=9999999-SDATE,(RCNT,RQUIT)=0
 | 
|---|
| 52 |  .F  S IDT=$O(^GMR(120.5,"AA",DFN,TESTNUM,IDT)) Q:IDT<1  Q:IDT>EDT  D  Q:RQUIT
 | 
|---|
| 53 |  ..S DATANUM=0 F  S DATANUM=$O(^GMR(120.5,"AA",DFN,TESTNUM,IDT,DATANUM)) Q:DATANUM<1  D  Q:RQUIT
 | 
|---|
| 54 |  ...Q:$P($G(^GMR(120.5,DATANUM,2)),U)  S ZERO=$G(^(0))
 | 
|---|
| 55 |  ...Q:$P(ZERO,U,2)'=DFN  Q:$P(ZERO,U,3)'=TESTNUM
 | 
|---|
| 56 |  ...S RESULT=$$STRIP^ORCMEDIT($P(ZERO,U,8)),DATETIME=$P(ZERO,U),LOC=+$P(ZERO,U,5),ENTERBY=+$P(ZERO,U,6)
 | 
|---|
| 57 |  ...S ^TMP("ORQQV",$J,"RESULTS",IDT)=DATETIME_U_LOC_U_ENTERBY ;$$FMTE^XLFDT(DATETIME)_"  Location: "_$P($G(^SC(+$P(ZERO,U,5),0)),U)_"  Entered by: "_$P($G(^VA(200,+$P(ZERO,U,6),0)),U)
 | 
|---|
| 58 |  ...S LINE="  "_$P(^TMP("ORQQV",$J,"TEST",TESTSEQ),U,3)
 | 
|---|
| 59 |  ...S LINE=$$SETSTR^VALM1(RESULT,LINE,22,1+$L(RESULT))_U_LOC_U_ENTERBY
 | 
|---|
| 60 |  ...S ^TMP("ORQQV",$J,"RESULTS",IDT,TESTSEQ)=LINE
 | 
|---|
| 61 |  ...I RTIMES S RCNT=RCNT+1 I RCNT=RTIMES S RQUIT=1
 | 
|---|
| 62 |  S (DATESEQ,RCNT,RQUIT,VCNT)=0
 | 
|---|
| 63 |  S IDT=0 F  S IDT=$O(^TMP("ORQQV",$J,"RESULTS",IDT)) Q:IDT<1  S LINE=^(IDT) D  Q:RQUIT
 | 
|---|
| 64 |  .S CHECKOK=1 D
 | 
|---|
| 65 |  ..S MAIN=$P(LINE,U,2,3)
 | 
|---|
| 66 |  ..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
 | 
|---|
| 67 |  .I CHECKOK D
 | 
|---|
| 68 |  ..S DATETIME=$$FMTE^XLFDT($P(LINE,U)),DATETIME=$P(DATETIME,":",1,2)
 | 
|---|
| 69 |  ..S DATETIME=DATETIME_"      Location: "_$P($G(^SC($P(LINE,U,2),0)),U)
 | 
|---|
| 70 |  ..S DATETIME=$$SETSTR^VALM1("  Entered by: "_$P($G(^VA(200,$P(LINE,U,3),0)),U),DATETIME,50,30)
 | 
|---|
| 71 |  .E  S DATETIME=$$FMTE^XLFDT($P(LINE,U)),DATETIME=$P(DATETIME,":",1,2)
 | 
|---|
| 72 |  .S DATESEQ=DATESEQ+1
 | 
|---|
| 73 |  .S OUTCNT=OUTCNT+1
 | 
|---|
| 74 |  .S ^TMP("ORQQVX",$J,"OUTPUT",OUTCNT)=DATETIME
 | 
|---|
| 75 |  .S TESTSEQ=0 F  S TESTSEQ=$O(^TMP("ORQQV",$J,"RESULTS",IDT,TESTSEQ)) Q:TESTSEQ<1  S LINE1=^(TESTSEQ) D
 | 
|---|
| 76 |  ..I CHECKOK S RESULT=$P(LINE1,U)
 | 
|---|
| 77 |  ..E  D
 | 
|---|
| 78 |  ...S RESULT=$$SETSTR^VALM1("  Location: "_$P($G(^SC($P(LINE1,U,2),0)),U),$P(LINE1,U),30,25)
 | 
|---|
| 79 |  ...S RESULT=$$SETSTR^VALM1("  Entered by; "_$P($G(^VA(200,$P(LINE1,U,3),0)),U),RESULT,50,30)
 | 
|---|
| 80 |  ..S OUTCNT=OUTCNT+1
 | 
|---|
| 81 |  ..S ^TMP("ORQQVX",$J,"OUTPUT",OUTCNT)=RESULT
 | 
|---|
| 82 |  .I RTIMES S RCNT=RCNT+1 I RCNT=RTIMES S RQUIT=1
 | 
|---|
| 83 |  K ^TMP("ORQQV",$J)
 | 
|---|
| 84 |  Q
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 | GRID(ROOT,DFN,DATE1,DATE2,RTIMES,TESTS) ; from Remote Procedure file
 | 
|---|
| 87 |  N CNT,NUM,TEMPDATE
 | 
|---|
| 88 |  I DATE1<DATE2 S TEMPDATE=DATE1,DATE1=DATE2,DATE2=TEMPDATE
 | 
|---|
| 89 |  K ^TMP("ORQQVX",$J,"INPUT"),^("OUTPUT")
 | 
|---|
| 90 |  S ROOT=$NA(^TMP("ORQQVX",$J,"OUTPUT"))
 | 
|---|
| 91 |  S ^TMP("ORQQVX",$J,"INPUT",1)=DFN_U_DATE1_U_DATE2_U_RTIMES
 | 
|---|
| 92 |  S CNT=1,NUM=0 F  S NUM=$O(TESTS(NUM)) Q:NUM<1  D
 | 
|---|
| 93 |  .S CNT=CNT+1
 | 
|---|
| 94 |  .S ^TMP("ORQQVX",$J,"INPUT",CNT)=TESTS(NUM)
 | 
|---|
| 95 |  D GRIDDATA
 | 
|---|
| 96 |  Q
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 | GRIDDATA ;
 | 
|---|
| 99 |  ; input format
 | 
|---|
| 100 |  ; ^TMP("ORQQVX",$J,"INPUT",1)=dfn^start date^end date^restrict # time values
 | 
|---|
| 101 |  ; ^TMP("ORQQVX",$J,"INPUT",#)=test#  (tests displayed in this order)
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 |  S ^TMP("ORQQVX",$J,"OUTPUT",1)="0^0^0"
 | 
|---|
| 104 |  N DATANUM,DATESEQ,DATETIME,DFN,EDATE,EDT,IDT,LINE,NUM,OUTCNT,RCNT,RQUIT,RESULT,RTIMES,SDATE,TESTNAME,TESTNUM,TESTSEQ,VALUES,VCNT,ZERO
 | 
|---|
| 105 |  K ^TMP("ORQQV",$J)
 | 
|---|
| 106 |  S DFN=+^TMP("ORQQVX",$J,"INPUT",1),SDATE=+$P(^(1),U,2),EDATE=+$P(^(1),U,3),RTIMES=+$P(^(1),U,4)
 | 
|---|
| 107 |  Q:'DFN  I 'SDATE,'EDATE,'RTIMES Q
 | 
|---|
| 108 |  I RTIMES,'SDATE,'EDATE S SDATE=DT,EDATE=2750101
 | 
|---|
| 109 |  I SDATE,'EDATE Q
 | 
|---|
| 110 |  I EDATE,'SDATE Q
 | 
|---|
| 111 |  S OUTCNT=1,TESTSEQ=0
 | 
|---|
| 112 |  S NUM=1 F  S NUM=$O(^TMP("ORQQVX",$J,"INPUT",NUM)) Q:NUM<1  S TESTNAME=^(NUM) D
 | 
|---|
| 113 |  .S TESTNAME=$$UP^XLFSTR(TESTNAME)
 | 
|---|
| 114 |  .S TESTNUM=$$FIND1^DIC(120.51,"","BX",TESTNAME,"","","ERR")
 | 
|---|
| 115 |  .I 'TESTNUM Q
 | 
|---|
| 116 |  .S TESTSEQ=TESTSEQ+1
 | 
|---|
| 117 |  .S LINE=TESTSEQ_U_TESTNUM_U_TESTNAME
 | 
|---|
| 118 |  .S ^TMP("ORQQV",$J,"TEST",TESTSEQ)=LINE
 | 
|---|
| 119 |  .S OUTCNT=OUTCNT+1
 | 
|---|
| 120 |  .S ^TMP("ORQQVX",$J,"OUTPUT",OUTCNT)=LINE
 | 
|---|
| 121 |  S ^TMP("ORQQVX",$J,"OUTPUT",1)=TESTSEQ
 | 
|---|
| 122 |  S EDATE=EDATE\1
 | 
|---|
| 123 |  S EDT=9999999-EDATE
 | 
|---|
| 124 |  S TESTSEQ=0 F  S TESTSEQ=$O(^TMP("ORQQV",$J,"TEST",TESTSEQ)) Q:TESTSEQ<1  S TESTNUM=$P(^(TESTSEQ),U,2) D
 | 
|---|
| 125 |  .S IDT=9999999-SDATE,(RCNT,RQUIT)=0
 | 
|---|
| 126 |  .F  S IDT=$O(^GMR(120.5,"AA",DFN,TESTNUM,IDT)) Q:IDT<1  Q:IDT>EDT  D  Q:RQUIT
 | 
|---|
| 127 |  ..S DATANUM=0 F  S DATANUM=$O(^GMR(120.5,"AA",DFN,TESTNUM,IDT,DATANUM)) Q:DATANUM<1  D  Q:RQUIT
 | 
|---|
| 128 |  ...Q:$P($G(^GMR(120.5,DATANUM,2)),U)  S ZERO=$G(^(0))
 | 
|---|
| 129 |  ...Q:$P(ZERO,U,2)'=DFN  Q:$P(ZERO,U,3)'=TESTNUM
 | 
|---|
| 130 |  ...S RESULT=$$STRIP^ORCMEDIT($P(ZERO,U,8)),DATETIME=$P(ZERO,U)
 | 
|---|
| 131 |  ...S ^TMP("ORQQV",$J,"RESULTS",IDT)=DATETIME
 | 
|---|
| 132 |  ...S ^TMP("ORQQV",$J,"RESULTS",IDT,TESTSEQ)=RESULT
 | 
|---|
| 133 |  ...I RTIMES S RCNT=RCNT+1 I RCNT=RTIMES S RQUIT=1
 | 
|---|
| 134 |  S (DATESEQ,RCNT,RQUIT,VCNT)=0
 | 
|---|
| 135 |  S IDT="A" F  S IDT=$O(^TMP("ORQQV",$J,"RESULTS",IDT),-1) Q:IDT=""  S DATETIME=^(IDT) D  Q:RQUIT
 | 
|---|
| 136 |  .S DATESEQ=DATESEQ+1
 | 
|---|
| 137 |  .S OUTCNT=OUTCNT+1
 | 
|---|
| 138 |  .S ^TMP("ORQQVX",$J,"OUTPUT",OUTCNT)=DATESEQ_U_DATETIME
 | 
|---|
| 139 |  .S TESTSEQ=0 F  S TESTSEQ=$O(^TMP("ORQQV",$J,"RESULTS",IDT,TESTSEQ)) Q:TESTSEQ<1  S RESULT=^(TESTSEQ) D
 | 
|---|
| 140 |  ..S VCNT=VCNT+1
 | 
|---|
| 141 |  ..S ^TMP("ORQQV",$J,"VALUES",VCNT)=DATESEQ_U_TESTSEQ_U_RESULT
 | 
|---|
| 142 |  .I RTIMES S RCNT=RCNT+1 I RCNT=RTIMES S RQUIT=1
 | 
|---|
| 143 |  S $P(^TMP("ORQQVX",$J,"OUTPUT",1),U,2,3)=DATESEQ_U_VCNT
 | 
|---|
| 144 |  S VCNT=0 F  S VCNT=$O(^TMP("ORQQV",$J,"VALUES",VCNT)) Q:VCNT<1  S VALUES=^(VCNT) D
 | 
|---|
| 145 |  .S OUTCNT=OUTCNT+1
 | 
|---|
| 146 |  .S ^TMP("ORQQVX",$J,"OUTPUT",OUTCNT)=VALUES
 | 
|---|
| 147 |  K ^TMP("ORQQV",$J)
 | 
|---|
| 148 |  Q
 | 
|---|