1 | LRPXSXRL ; SLC/PKR - Build indexes for Lab. ;9/27/03 22:37
|
---|
2 | ;;5.2;LAB SERVICE;**295**;Sep 27, 1994
|
---|
3 | Q
|
---|
4 | ;===============================================================
|
---|
5 | LAB ; this entry point is called to rebuild ALL Lab indexes in ^PXRMINDX(63
|
---|
6 | ; dbia 4247
|
---|
7 | ;Build the indexes for LAB DATA.
|
---|
8 | N DAE,DAS,DAT,DATE,DFN,DNODE,END,ENTRIES,ETEXT,GLOBAL,IND
|
---|
9 | N LRDFN,LRDN,LRIDT,NE,NERROR
|
---|
10 | N START,TEMP,TENP,TEST,TEXT
|
---|
11 | K ^TMP("LRPXTEST",$J)
|
---|
12 | ;Dont leave any old stuff around.
|
---|
13 | D CLEANL
|
---|
14 | S GLOBAL=$$GET1^DID(63,"","","GLOBAL NAME")_"""CH"")"
|
---|
15 | S NERROR=0
|
---|
16 | S ENTRIES=$P(^LR(0),U,4)
|
---|
17 | S TENP=ENTRIES/10
|
---|
18 | S TENP=+$P(TENP,".",1)
|
---|
19 | I TENP<1 S TENP=1
|
---|
20 | D BMES^XPDUTL("Building indexes for LAB DATA - CH")
|
---|
21 | S TEXT="There are "_ENTRIES_" entries to process."
|
---|
22 | D MES^XPDUTL(TEXT)
|
---|
23 | S START=$H
|
---|
24 | S (IND,NE)=0
|
---|
25 | K ^TMP("LRPXSXRL",$J)
|
---|
26 | S TEST=0
|
---|
27 | F S TEST=$O(^LAB(60,TEST)) Q:TEST<1 D ; preset values (lrdn)=test#
|
---|
28 | . S DNODE=$P($G(^LAB(60,TEST,0)),U,5)
|
---|
29 | . I $P(DNODE,";")'="CH" Q
|
---|
30 | . I $P(DNODE,";",3)'=1 Q
|
---|
31 | . S LRDN=+$P(DNODE,";",2)
|
---|
32 | . I 'LRDN Q
|
---|
33 | . S ^TMP("LRPXSXRL",$J,LRDN)=TEST_U_$D(^TMP("LRPXSXRL",$J,LRDN))
|
---|
34 | S LRDFN=.9
|
---|
35 | F S LRDFN=$O(^LR(LRDFN)) Q:LRDFN<1 D
|
---|
36 | . S TEMP=$G(^LR(LRDFN,0))
|
---|
37 | . I $P(TEMP,U,2)'=2 Q
|
---|
38 | . S DFN=+$P(TEMP,U,3)
|
---|
39 | . I LRDFN'=$$LRDFN^LRPXAPIU(DFN) Q
|
---|
40 | . S IND=IND+1
|
---|
41 | . I IND#TENP=0 D
|
---|
42 | .. S TEXT="Processing entry "_IND
|
---|
43 | .. D MES^XPDUTL(TEXT)
|
---|
44 | . S LRIDT=0
|
---|
45 | . F S LRIDT=$O(^LR(LRDFN,"CH",LRIDT)) Q:LRIDT<1 D
|
---|
46 | .. I '$P($G(^LR(LRDFN,"CH",LRIDT,0)),U,3) Q ; check for completed
|
---|
47 | .. S DAT=LRDFN_";CH;"_LRIDT
|
---|
48 | .. S DATE=9999999-LRIDT
|
---|
49 | .. S LRDN=1
|
---|
50 | .. F S LRDN=$O(^LR(LRDFN,"CH",LRIDT,LRDN)) Q:LRDN<1 D
|
---|
51 | ... S DAS=DAT_";"_LRDN
|
---|
52 | ... S TEMP=^LR(LRDFN,"CH",LRIDT,LRDN)
|
---|
53 | ... S TEST=+$P($P(TEMP,U,3),"!",6) ; get test, use ^LR node
|
---|
54 | ... I 'TEST D ; if not available on ^LR node
|
---|
55 | .... I $P($G(^TMP("LRPXSXRL",$J,LRDN)),U,2) D ; if duplicates, use file 60
|
---|
56 | ..... S TEST=+$O(^LAB(60,"C","CH;"_$G(LRDN)_";1",0))
|
---|
57 | .... E S TEST=+$G(^TMP("LRPXSXRL",$J,LRDN)) ; otherwise, use preset value
|
---|
58 | ... I 'TEST D
|
---|
59 | .... S DAE=LRDFN_","_"""CH"""_","_LRIDT_","_LRDN
|
---|
60 | .... S ETEXT=DAE_" No lab test"
|
---|
61 | .... I $D(^TMP("LRPXTEST",$J,LRDN)) Q
|
---|
62 | .... D ADDERROR^PXRMSXRM(GLOBAL,ETEXT,.NERROR) ; dbia 4113
|
---|
63 | .... S ^TMP("LRPXTEST",$J,LRDN)=""
|
---|
64 | ... E D
|
---|
65 | .... D SLAB^LRPX(DFN,DATE,TEST,DAS)
|
---|
66 | .... S NE=NE+1
|
---|
67 | K ^TMP("LRPXSXRL",$J),^TMP("LRPXTEST",$J)
|
---|
68 | S TEXT=NE_" LAB DATA (CH) results indexed."
|
---|
69 | D MES^XPDUTL(TEXT)
|
---|
70 | S END=$H
|
---|
71 | D DETIME^PXRMSXRM(START,END) ; dbia 4113
|
---|
72 | ;If there were errors send a message.
|
---|
73 | I NERROR>0 D ERRMSG^PXRMSXRM(NERROR,GLOBAL) ; dbia 4113
|
---|
74 | ;Send a MailMan message with the results.
|
---|
75 | D COMMSG^PXRMSXRM(GLOBAL,START,END,NE,NERROR) ; dbia 4113
|
---|
76 | ;
|
---|
77 | D AP^LRPXSXRA
|
---|
78 | D MICRO^LRPXSXRB
|
---|
79 | Q
|
---|
80 | ;
|
---|
81 | FRESH ; deletes all Lab, Micro, and AP ^PXRMINDX(63 indexes
|
---|
82 | K ^PXRMINDX(63) ; dbia 4114
|
---|
83 | Q
|
---|
84 | ;
|
---|
85 | CLEANL ;
|
---|
86 | D BMES^XPDUTL("Cleaning up old Lab entries")
|
---|
87 | D FRESH ; remove all lab indexes
|
---|
88 | Q
|
---|
89 | ;
|
---|
90 | RESETAP ; reindex AP
|
---|
91 | D BMES^XPDUTL("Reindex Anatomic Pathology Data")
|
---|
92 | D REMOVE("A")
|
---|
93 | D AP^LRPXSXRA
|
---|
94 | Q
|
---|
95 | ;
|
---|
96 | RESETMI ; reindex Micro
|
---|
97 | D BMES^XPDUTL("Reindex Microbiology Data")
|
---|
98 | D REMOVE("M")
|
---|
99 | D MICRO^LRPXSXRB
|
---|
100 | Q
|
---|
101 | ;
|
---|
102 | RESETAM ; reindex AP and Micro
|
---|
103 | D RESETAP
|
---|
104 | D RESETMI
|
---|
105 | Q
|
---|
106 | ;
|
---|
107 | REMOVE(TYPE) ; remove these types of indexes
|
---|
108 | N DATE,DFN,ITEM,REF,STOP
|
---|
109 | S STOP=TYPE_"Z"
|
---|
110 | S ITEM=TYPE
|
---|
111 | F S ITEM=$O(^PXRMINDX(63,"IP",ITEM)) Q:ITEM="" Q:ITEM]STOP D
|
---|
112 | . S DFN=0
|
---|
113 | . F S DFN=$O(^PXRMINDX(63,"IP",ITEM,DFN)) Q:DFN<1 D
|
---|
114 | .. S DATE=0
|
---|
115 | .. F S DATE=$O(^PXRMINDX(63,"IP",ITEM,DFN,DATE)) Q:DATE<1 D
|
---|
116 | ... S REF=""
|
---|
117 | ... F S REF=$O(^PXRMINDX(63,"IP",ITEM,DFN,DATE,REF)) Q:REF="" D
|
---|
118 | .... D KLAB^LRPX(DFN,DATE,ITEM,REF)
|
---|
119 | Q
|
---|