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
|
---|