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

BQIDCABK.m

Go to the documentation of this file.
  1. BQIDCABK ;PRXM/HC/ALA-Kernel Alerts for Abnormal Labs ; 14 Jul 2006 4:44 PM
  1. ;;2.1;ICARE MANAGEMENT SYSTEM;;Feb 07, 2011
  1. ;
  1. Q
  1. ;
  1. ALR(DATA,PARMS,MPARMS) ;EP
  1. ;
  1. ;Description
  1. ; Executable that determines abnormal lab Kernal alerts
  1. ;Input
  1. ; PARMS = Array of parameters and their values
  1. ; MPARMS = Multiple array of a parameter
  1. ;Parameters
  1. ; TMFRAME = Relative time frame
  1. ; FDT = Starting date for the time frame
  1. ; TDT = Ending date for the time frame
  1. ; IEN = Lab record internal entry number
  1. ; VIEN = Visit record internal entry number
  1. ; ABNFL = Abnormal lab result
  1. ;Output
  1. ; All records found will be put into ^TMP by patient and Alert internal entry
  1. ; numbers. The patient will be checked against the patients found in all the
  1. ; panels and added to the ICARE PATIENT INDEX file.
  1. ;
  1. NEW UID,TDATA
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("BQIDCABK",UID))
  1. S TDATA=$NA(^TMP("BQITMP",UID))
  1. K @DATA,@TDATA
  1. ;
  1. NEW IEN,NM,FDT,TDT,VTYP,X,DIC,Y,RSTM,VIEN,DFN,USR,ALRT,ALRIEN
  1. NEW LRDFN,TYP,LDT,LREC,ACC,LIEN,TMFRAME,%DT,LDATA,ALDATA
  1. S NM=""
  1. F S NM=$O(PARMS(NM)) Q:NM="" S @NM=PARMS(NM)
  1. ;
  1. I $G(TMFRAME)="" S TMFRAME="T-6M"
  1. I TMFRAME["T-" D
  1. . S %DT="",X=TMFRAME D ^%DT S FDT=Y
  1. I $G(DT)="" D DT^DICRW
  1. S TDT=DT
  1. ;
  1. ; Go through the Alert file for the designated time frame to find any
  1. ; abnormal lab results
  1. S USR=0
  1. F S USR=$O(^XTV(8992,USR)) Q:'USR D
  1. . S RSTM=FDT
  1. . F S RSTM=$O(^XTV(8992,USR,"XQA",RSTM)) Q:RSTM=""!(RSTM\1>TDT) D
  1. .. I $G(^XTV(8992,USR,"XQA",RSTM,0))'["Abnormal lab" Q
  1. .. S ALRT=$P(^XTV(8992,USR,"XQA",RSTM,0),U,2)
  1. .. S ALRIEN=$O(^XTV(8992.1,"B",ALRT,"")) I ALRIEN="" Q
  1. .. ;S DFN=$P($P(ALRT,";"),",",2)
  1. .. S DFN=$P($G(^XTV(8992.1,ALRIEN,0)),U,4) I DFN="" Q
  1. .. S ALDATA=$G(^XTV(8992.1,ALRIEN,2))
  1. .. S LDATA=$P(ALDATA,"@",2)
  1. .. S LRDFN=$P($G(^DPT(DFN,"LR")),U,1) I LRDFN="" Q
  1. .. S TYP=$P(LDATA,";",4) I TYP="" Q
  1. .. S LDT=$P(LDATA,";",5) I LDT="" Q
  1. .. S LREC=$G(^LR(LRDFN,TYP,LDT,0)),ACC=$P(LREC,U,6) I ACC="" Q
  1. .. S LIEN=""
  1. .. F S LIEN=$O(^AUPNVLAB("AC",DFN,LIEN)) Q:LIEN="" D
  1. ... I $P(^AUPNVLAB(LIEN,0),U,6)'=ACC Q
  1. ... S VIEN=$$GET1^DIQ(9000010.09,LIEN_",",.03,"I")
  1. ... I VIEN="" Q
  1. ... I $$GET1^DIQ(9000010,VIEN,.11,"I")=1 Q
  1. ... S @TDATA@(DFN,VIEN)=ALRIEN_U_$$GET1^DIQ(9000010,VIEN,.01,"I")
  1. ;
  1. S DFN=""
  1. F S DFN=$O(@TDATA@(DFN)) Q:DFN="" D
  1. . S VIEN=""
  1. . F S VIEN=$O(@TDATA@(DFN,VIEN)) Q:VIEN="" D
  1. .. S ALRIEN=$P(@TDATA@(DFN,VIEN),U,1),VSDTM=$P(@TDATA@(DFN,VIEN),U,2)
  1. .. S @DATA@(DFN,ALRIEN)=VIEN_U_VSDTM
  1. K @TDATA
  1. Q