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

BPXRMDRG.m

Go to the documentation of this file.
  1. BPXRMDRG ; IHS/MSC/MGH - Use V Meds in reminder resolution. ;25-Nov-2013 14:57;DU
  1. ;;2.0;CLINICAL REMINDERS;**1001**;Feb 04, 2005;Build 21
  1. ;===================================================================
  1. VMED(DFN,TEST,DATE,VALUE,TEXT) ;EP
  1. N BPXTRM
  1. Q:TEST=""
  1. S BPXTRM="" S BPXTRM=$O(^PXRMD(811.5,"B",TEST,BPXTRM))
  1. I BPXTRM="" S TEST=0,DATE=DT,TEXT="Reminder term does not exist" Q
  1. D GETVAR(BPXTRM)
  1. Q
  1. GETVAR(BPXTRM) ;EP
  1. ;Get the needed data from the reminder term. This includes
  1. ;the test name(s) and the value to search for
  1. N X,Y,BPXFIND,BPXTYPE,BPXOFF,BPXFILE,BPXRESLT,BPXCNT,BPXTEST,ARRAY
  1. K ^TMP("PXRMMED",$J)
  1. D GETMEDS(DFN)
  1. S BPXCNT=0,BPXRESLT=0
  1. S BPXFIND=0 F S BPXFIND=$O(^PXRMD(811.5,BPXTRM,20,BPXFIND)) Q:BPXFIND=""!(BPXFIND?1A.A)!(BPXRESLT=1) D
  1. .S BPXTYPE=$P($G(^PXRMD(811.5,BPXTRM,20,BPXFIND,0)),U,1)
  1. .S BPXTEST=$P(BPXTYPE,";",1),BPXFILE=$P(BPXTYPE,";",2)
  1. .;This needs to be a term of medications
  1. .Q:(BPXFILE'="PSNDF(50.6,")&(BPXFILE'="PSDRUG(,")
  1. .S BPXOFF=$P($G(^PXRMD(811.5,BPXTRM,20,BPXFIND,0)),U,8)
  1. .;Call next routine with patient,start and stop dates,test name
  1. .D RESULT(DFN,BPXTEST,BPXFILE)
  1. ;Loop through results and return most recent
  1. S BPXRESLT="" S BPXRESLT=$O(ARRAY(BPXRESLT))
  1. I BPXRESLT="" S TEST=0,VALUE=TEST
  1. I +BPXRESLT D
  1. .S TEST=1,VALUE=$P(ARRAY(BPXRESLT),U,1)
  1. .S VALUE=$$GET1^DIQ(50,VALUE,.01)
  1. .S DATE=$P(ARRAY(BPXRESLT),U,2)
  1. Q
  1. GETMEDS(DFN) ;EP
  1. ;EP Find a patients labs in the V MED file
  1. ;Get up to the last 3 years.
  1. ;If not, add it to the array to be used in the reminder
  1. ;===================================================================
  1. N ORDER,DRUG,SDATE,INVDATE,VMIEN,MED,TEMP,EVDT,DATE,STARTDT,X1,X2
  1. N DISC,DSUP,INVDTE
  1. K ^TMP("PXRMMED",$J)
  1. S X1=DT,X2=-1095 D C^%DTC S STARTDT=X
  1. S STARTDT=9999999-STARTDT
  1. Q:'$D(^AUPNVMED("AA",DFN))
  1. S (VMIEN,INVDATE)=0
  1. F S INVDATE=$O(^AUPNVMED("AA",DFN,INVDATE)) Q:INVDATE=""!(INVDATE>STARTDT) D
  1. .S VMIEN="" F S VMIEN=$O(^AUPNVMED("AA",DFN,INVDATE,VMIEN)) Q:VMIEN="" D
  1. ..S EVDT=$P($G(^AUPNVMED(VMIEN,12)),U,1)
  1. ..I $P($G(^AUPNVMED(VMIEN,11)),U,8)'="" S EVDT=DT
  1. ..S TEMP=$G(^AUPNVMED(VMIEN,0))
  1. .S MED=$P(TEMP,U,1)
  1. .S DSUP=$P(TEMP,U,7)
  1. .S DISC=$P(TEMP,U,8)
  1. .Q:DISC'=""
  1. .S INVDTE=9999999-EVDT
  1. .S ^TMP("PXRMMED",$J,INVDTE,MED)=EVDT
  1. Q
  1. RESULT(DFN,BPXTEST,BPXFILE) ;FIND MATCHES
  1. ;Loop through med list looking for matches
  1. N DTE,MED,POI
  1. S DTE="" F S DTE=$O(^TMP("PXRMMED",$J,DTE)) Q:DTE="" D
  1. .S MED="" F S MED=$O(^TMP("PXRMMED",$J,DTE,MED)) Q:MED="" D
  1. ..I BPXFILE="PSDRUG(," D
  1. ...I BPXTEST=MED S ARRAY(DTE)=MED
  1. ..I BPXFILE="PSNDF(50.6," D
  1. ...I $D(^PSDRUG("AND",BPXTEST,MED))>0 S ARRAY(DTE)=MED_U_$G(^TMP("PXRMMED",$J,DTE,MED))
  1. Q