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

BGPMUUT6.m

Go to the documentation of this file.
  1. BGPMUUT6 ;IHS/MSC/MGH - Find is med is active on date ;02-Mar-2011 16:47;DU
  1. ;;11.0;IHS CLINICAL REPORTING;**4**;JAN 06, 2011;Build 84
  1. Q
  1. FIND(DFN,TAX,BDATE,MEDTYPE,EDATE) ; EP
  1. ;This function is designed to see if the patient has any INPT ONLY
  1. ;in the given taxonomy that were active on the date(s) in question
  1. ;
  1. N BGPYR,BGPIND,BGPINDIC,BGPNODE,BGPRX,BGPTYPE,BGPIDX,BGPMED,BGPEND,FOUND
  1. K ^TMP("PS",$J)
  1. ;Start by getting the patients drugs from admit to discharge
  1. D OCL^PSOORRL(DFN,BDATE,EDATE)
  1. S BGPIND=0,BGPINDIC="",FOUND=0
  1. F S BGPIND=$O(^TMP("PS",$J,BGPIND)) Q:'+BGPIND!(+FOUND) D
  1. .S BGPNODE=$G(^TMP("PS",$J,BGPIND,0))
  1. .S BGPRX=+($P(BGPNODE,U,1))
  1. .Q:$L($P(BGPNODE,U,2))=0 ;Discard Blank Meds
  1. .;Only use the type of meds chosen (OP,UD,IV)
  1. .S BGPTYPE=$P($P(BGPNODE,U),";",2)
  1. .S BGPTYPE=$S(BGPTYPE="O":"OP",BGPTYPE="I":"UD",1:"")
  1. .I $O(^TMP("PS",$J,BGPIND,"A",0))>0 S BGPTYPE="IV"
  1. .E I $O(^TMP("PS",$J,BGPIND,"B",0))>0 S BGPTYPE="IV"
  1. .I BGPTYPE=MEDTYPE!(MEDTYPE="ALL") D
  1. ..S BGPMED=$P(BGPNODE,U,2)
  1. ..N IDX,ID
  1. ..S ID=$P(BGPNODE,U),IDX=+ID,ID=$E(ID,$L(IDX)+1,$L(ID))
  1. ..;Check date on unit dose
  1. ..I ID="U;I" S FOUND=$$INPAT(DFN,IDX,ID,BDATE,EDATE,TAX) Q:+FOUND
  1. ..;Check dates on IVs
  1. ..I ID="V;I" S FOUND=$$IV(DFN,IDX,ID,BDATE,EDATE,TAX) Q:+FOUND
  1. Q FOUND
  1. INPAT(DFN,IDX,ID,BDATE,BGPEND,TAX) ;EP
  1. N RESULT,NODE,NODE2,DISP,NDC,X
  1. S RESULT=0
  1. S NODE=$G(^PS(55,DFN,5,IDX,0))
  1. S NODE2=$G(^PS(55,DFN,5,IDX,2))
  1. I $P($P(NODE2,U,2),".",1)=BDATE!($P(NODE2,U,2)<BDATE) D ;Med started
  1. .I ($P($P(NODE2,U,4),".",1)=$P(BGPEND,".",1))!($P(NODE2,U,4)>BGPEND) D
  1. ..;Med was active in range suggested
  1. ..;Now find the dispense drug(s) and see if they are in the taxonomy
  1. ..S X=0 F S X=$O(^PS(55,DFN,5,IDX,1,X)) Q:'+X!(+RESULT) D
  1. ...S DISP=$G(^PS(55,DFN,5,IDX,1,X,0))
  1. ...S DRUG=$P(DISP,U,1)
  1. ...S RESULT=$$NDC^BGPMUUT4(DRUG,TAX)
  1. Q RESULT
  1. Q
  1. IV(DFN,IDX,ID,BDATE,BGPEND,TAX) ;EP
  1. N RESULT,NODE,ADD,SOL,DRUG,GDRUG
  1. S RESULT=0
  1. S NODE=$G(^PS(55,DFN,"IV",IDX,0))
  1. I ($P($P(NODE,U,2),".",1)=BDATE)!($P(NODE,U,2)<BDATE) D ;Med started
  1. .I ($P($P(NODE,U,3),".",1)=$P(BGPEND,".",1))!($P(NODE,U,3)>BGPEND) D
  1. ..;Med was active, now find the dispense drug and see if in taxonomy
  1. ..S ADD=0 F S ADD=$O(^PS(55,DFN,"IV",IDX,"AD",ADD)) Q:ADD=""!(+RESULT) D
  1. ...S DRUG=$P($G(^PS(55,DFN,"IV",IDX,"AD",ADD,0)),U,1)
  1. ...I +DRUG S GDRUG=$P($G(^PS(52.6,DRUG,0)),U,2)
  1. ...S RESULT=$$NDC^BGPMUUT4(GDRUG,TAX)
  1. ..I '+RESULT D
  1. ...S SOL=0 F S SOL=$O(^PS(55,DFN,"IV",IDX,"SOL",SOL)) Q:SOL=""!(+RESULT) D
  1. ....S DRUG=$P($G(^PS(55,DFN,"IV",IDX,"SOL",SOL,0)),U,1)
  1. ....I +DRUG S GDRUG=$P($G(^PS(52.7,DRUG,0)),U,2)
  1. ....S RESULT=$$NDC^BGPMUUT4(GDRUG,TAX)
  1. Q RESULT