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

LRPXSXRL.m

Go to the documentation of this file.
  1. LRPXSXRL ; SLC/PKR - Build indexes for Lab. ;9/27/03 22:37
  1. ;;5.2;LAB SERVICE;**295,445**;Sep 27, 1994;Build 6
  1. Q
  1. ;===============================================================
  1. LAB ; this entry point is called to rebuild ALL Lab indexes in ^PXRMINDX(63
  1. ; dbia 4247
  1. ;Build the indexes for LAB DATA.
  1. N DAE,DAS,DAT,DATE,DFN,DNODE,END,ENTRIES,ETEXT,GLOBAL,IND
  1. N LRDFN,LRDN,LRIDT,NE,NERROR
  1. N START,TEMP,TENP,TEST,TEXT
  1. K ^TMP("LRPXTEST",$J)
  1. ;Dont leave any old stuff around.
  1. D CLEANL
  1. S GLOBAL=$$GET1^DID(63,"","","GLOBAL NAME")_"""CH"")"
  1. S NERROR=0
  1. S ENTRIES=$P(^LR(0),U,4)
  1. S TENP=ENTRIES/10
  1. S TENP=+$P(TENP,".",1)
  1. I TENP<1 S TENP=1
  1. D BMES^XPDUTL("Building indexes for LAB DATA - CH")
  1. S TEXT="There are "_ENTRIES_" entries to process."
  1. D MES^XPDUTL(TEXT)
  1. S START=$H
  1. S (IND,NE)=0
  1. K ^TMP("LRPXSXRL",$J)
  1. S TEST=0
  1. F S TEST=$O(^LAB(60,TEST)) Q:TEST<1 D ; preset values (lrdn)=test#
  1. . S DNODE=$P($G(^LAB(60,TEST,0)),U,5)
  1. . I $P(DNODE,";")'="CH" Q
  1. . I $P(DNODE,";",3)'=1 Q
  1. . S LRDN=+$P(DNODE,";",2)
  1. . I 'LRDN Q
  1. . S ^TMP("LRPXSXRL",$J,LRDN)=TEST_U_$D(^TMP("LRPXSXRL",$J,LRDN))
  1. S LRDFN=.9
  1. F S LRDFN=$O(^LR(LRDFN)) Q:LRDFN<1 D
  1. . S TEMP=$G(^LR(LRDFN,0))
  1. . I $P(TEMP,U,2)'=2 Q
  1. . S DFN=+$P(TEMP,U,3)
  1. . I LRDFN'=$$LRDFN^LRPXAPIU(DFN) Q
  1. . S IND=IND+1
  1. . I IND#TENP=0 D
  1. .. S TEXT="Processing entry "_IND
  1. .. D MES^XPDUTL(TEXT)
  1. . S LRIDT=0
  1. . F S LRIDT=$O(^LR(LRDFN,"CH",LRIDT)) Q:LRIDT<1 D
  1. .. I '$P($G(^LR(LRDFN,"CH",LRIDT,0)),U,3) Q ; check for completed
  1. .. S DAT=LRDFN_";CH;"_LRIDT
  1. .. S DATE=9999999-LRIDT
  1. .. S LRDN=1
  1. .. F S LRDN=$O(^LR(LRDFN,"CH",LRIDT,LRDN)) Q:LRDN<1 D
  1. ... S DAS=DAT_";"_LRDN
  1. ... S TEMP=^LR(LRDFN,"CH",LRIDT,LRDN)
  1. ... S TEST=+$P($P(TEMP,U,3),"!",7) ; get test, use ^LR node
  1. ... I 'TEST D ; if not available on ^LR node
  1. .... I $P($G(^TMP("LRPXSXRL",$J,LRDN)),U,2) D ; if duplicates, use file 60
  1. ..... S TEST=+$O(^LAB(60,"C","CH;"_$G(LRDN)_";1",0))
  1. .... E S TEST=+$G(^TMP("LRPXSXRL",$J,LRDN)) ; otherwise, use preset value
  1. ... I 'TEST D
  1. .... S DAE=LRDFN_","_"""CH"""_","_LRIDT_","_LRDN
  1. .... S ETEXT=DAE_" No lab test"
  1. .... I $D(^TMP("LRPXTEST",$J,LRDN)) Q
  1. .... D ADDERROR^PXRMSXRM(GLOBAL,ETEXT,.NERROR) ; dbia 4113
  1. .... S ^TMP("LRPXTEST",$J,LRDN)=""
  1. ... E D
  1. .... D SLAB^LRPX(DFN,DATE,TEST,DAS)
  1. .... S NE=NE+1
  1. K ^TMP("LRPXSXRL",$J),^TMP("LRPXTEST",$J)
  1. S TEXT=NE_" LAB DATA (CH) results indexed."
  1. D MES^XPDUTL(TEXT)
  1. S END=$H
  1. D DETIME^PXRMSXRM(START,END) ; dbia 4113
  1. ;If there were errors send a message.
  1. I NERROR>0 D ERRMSG^PXRMSXRM(NERROR,GLOBAL) ; dbia 4113
  1. ;Send a MailMan message with the results.
  1. D COMMSG^PXRMSXRM(GLOBAL,START,END,NE,NERROR) ; dbia 4113
  1. ;
  1. D AP^LRPXSXRA
  1. D MICRO^LRPXSXRB
  1. Q
  1. ;
  1. FRESH ; deletes all Lab, Micro, and AP ^PXRMINDX(63 indexes
  1. K ^PXRMINDX(63) ; dbia 4114
  1. Q
  1. ;
  1. CLEANL ;
  1. D BMES^XPDUTL("Cleaning up old Lab entries")
  1. D FRESH ; remove all lab indexes
  1. Q
  1. ;
  1. RESETAP ; reindex AP
  1. D BMES^XPDUTL("Reindex Anatomic Pathology Data")
  1. D REMOVE("A")
  1. D AP^LRPXSXRA
  1. Q
  1. ;
  1. RESETMI ; reindex Micro
  1. D BMES^XPDUTL("Reindex Microbiology Data")
  1. D REMOVE("M")
  1. D MICRO^LRPXSXRB
  1. Q
  1. ;
  1. RESETAM ; reindex AP and Micro
  1. D RESETAP
  1. D RESETMI
  1. Q
  1. ;
  1. REMOVE(TYPE) ; remove these types of indexes
  1. N DATE,DFN,ITEM,REF,STOP
  1. S STOP=TYPE_"Z"
  1. S ITEM=TYPE
  1. F S ITEM=$O(^PXRMINDX(63,"IP",ITEM)) Q:ITEM="" Q:ITEM]STOP D
  1. . S DFN=0
  1. . F S DFN=$O(^PXRMINDX(63,"IP",ITEM,DFN)) Q:DFN<1 D
  1. .. S DATE=0
  1. .. F S DATE=$O(^PXRMINDX(63,"IP",ITEM,DFN,DATE)) Q:DATE<1 D
  1. ... S REF=""
  1. ... F S REF=$O(^PXRMINDX(63,"IP",ITEM,DFN,DATE,REF)) Q:REF="" D
  1. .... D KLAB^LRPX(DFN,DATE,ITEM,REF)
  1. Q