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

BQITRPPT.m

Go to the documentation of this file.
  1. BQITRPPT ;PRXM/HC/ALA-Treatment Prompt ; 24 Apr 2007 11:47 AM
  1. ;;2.1;ICARE MANAGEMENT SYSTEM;;Feb 07, 2011
  1. ;
  1. Q
  1. ;
  1. FND(BQTRMT,BQGLOB,BQDFN,BQRM) ;EP
  1. ;
  1. ; Input Parameters
  1. ; BQTRMT - Treatment Prompt
  1. ; BQGLOB - Reference to store data
  1. ; BQDFN - Patient IEN
  1. ; BQRM - Remarks array
  1. ; Output Parameter
  1. ; MEET - If zero, didn't meet the criteria
  1. ; If one, did meet the criteria
  1. ;
  1. NEW BQREF,CEXE,MEET,N,TAX,NIT,TMFRAME,FREF,ABS,CONT,GREF,TREF,IEN,TIEN,EXEC
  1. NEW CEXEC,BQIAND,BQIOR
  1. ;S BQREF="BQIRY" K @BQREF
  1. ;D BLD(BQTRMT,BQREF,.CEXEC)
  1. ;
  1. ; Find if there is a special executable for the treatment prompt
  1. S EXEC=$G(^BQI(90508.5,BQTRMT,2))
  1. I $G(EXEC)'="" X EXEC
  1. ; EXEC should always return RESULT
  1. ;
  1. ; update remarks if patient passed all the checks
  1. I $P(RESULT,U,1)=1 D
  1. . K PARMS
  1. . ; Set the parameter values returned from API
  1. . F BN=3:1:$L(RESULT,U) S PARMS(BN-2)=$P(RESULT,U,BN)
  1. . S BN=0
  1. . F S BN=$O(BQRM(BN)) Q:BN="" D
  1. .. I BQRM(BN)'["|" Q
  1. .. ; Apply parameters into remarks
  1. .. S NDESC=BQRM(BN)
  1. .. F Q:'$F(NDESC,"|") D PRS
  1. .. S BQRM(BN)=PDESC
  1. Q RESULT
  1. ;
  1. S MEET=1
  1. ;
  1. ; If taxonomy checks are used to determine whether patient meets criteria or not
  1. I $D(@BQREF) D
  1. . S N=0 F S N=$O(@BQREF@(N)) Q:'N D
  1. .. S TAX=$P(@BQREF@(N),U,1),NIT=$P(@BQREF@(N),U,2)
  1. .. S TMFRAME=$P(@BQREF@(N),U,3),FREF=$P(@BQREF@(N),U,4)
  1. .. I TMFRAME'="" S EDATE=$$DATE^BQIUL1(TMFRAME),BDATE=DT
  1. .. I TMFRAME="" S EDATE=$$DATE^BQIUL1("T-12M"),BDATE=DT
  1. .. S ABS=$P(@BQREF@(N),U,5),CONT=+$P(@BQREF@(N),U,6)
  1. .. ;
  1. .. ; Check for a contraindication executable
  1. .. S CEXE=$G(CEXEC(N))
  1. .. I $G(CEXE)'="" D Q
  1. ... S DFN=BQDFN
  1. ... ;I $G(DFN)="" S DFN=BQDFN
  1. ... X CEXE
  1. ... ;
  1. ... ; If absence/presence is defined
  1. ... I ABS'="" D
  1. .... I 'X,'ABS S MEET=1 Q
  1. .... I 'X,ABS S MEET=0 Q
  1. .... I X,'ABS S MEET=0 Q
  1. .... I X,ABS S MEET=1
  1. ... ; If absence/presence is not defined
  1. ... I ABS="" D
  1. .... I X S MEET=1 Q
  1. .... I 'X S MEET=0
  1. ... ;I MEET,X,CONT S MEET=0
  1. ... ;I MEET,X,'CONT S MEET=1
  1. ... ;I MEET,'X,'CONT S MEET=0
  1. ... ; If met criteria but also met contraindication
  1. ... I MEET,CONT S MEET=0
  1. ... I MEET,'CONT S MEET=1
  1. ... I 'MEET,CONT S MEET=1
  1. ... I 'MEET,'CONT S MEET=0
  1. ... ;
  1. ... Q:'MEET
  1. ... ; update remarks if patient passed all the checks
  1. ... K PARMS
  1. ... F BN=2:1:$L(X,U) S PARMS(BN-1)=$P(X,U,BN)
  1. ... S BN=0
  1. ... F S BN=$O(BQRM(BN)) Q:BN="" D
  1. .... I BQRM(BN)'["|" Q
  1. .... S NDESC=BQRM(BN)
  1. .... F Q:'$F(NDESC,"|") D PRS
  1. .... ;I PDESC["~"
  1. .... S BQRM(BN)=PDESC
  1. .. ;
  1. .. S GREF=$$ROOT^DILFD(FREF,"",1),TREF=$NA(^TMP("BQITAX",UID))
  1. .. ; Build the taxonomy reference
  1. .. K @TREF
  1. .. Q:TAX=""
  1. .. D BLD^BQITUTL(TAX,TREF)
  1. .. S IEN="",QFL=0
  1. .. F S IEN=$O(@GREF@("AC",BQDFN,IEN),-1) Q:IEN="" D Q:QFL
  1. ... S TIEN=$$GET1^DIQ(FREF,IEN_",",.01,"I") I TIEN="" Q
  1. ... I '$D(@TREF@(TIEN)) Q
  1. ... S VISIT=$$GET1^DIQ(FREF,IEN_",",.03,"I") I VISIT="" Q
  1. ... I $$GET1^DIQ(9000010,VISIT_",",.11,"I")=1 Q
  1. ... S VSDTM=$$GET1^DIQ(9000010,VISIT_",",.01,"I")\1 I VSDTM=0 Q
  1. ... I $G(TMFRAME)'="",VSDTM<EDATE Q
  1. ... ; If absence of data, then it did not meet the criteria
  1. ... I ABS=0 S MEET=0,QFL=1 Q
  1. ... S MEET=1_U_VSDTM_U_U_VISIT_U_IEN,QFL=1
  1. .. I $G(BQIAND)'="" D
  1. ... I BQIAND,MEET Q
  1. ... I 'BQIAND,MEET S MEET=0
  1. ;
  1. I $G(EXEC)'="" X EXEC
  1. ;
  1. XIT Q MEET
  1. ;
  1. BLD(TRMT,REF,CEXEC) ;EP
  1. K CEXEC
  1. NEW BN,IEN,DATA
  1. S BN=0
  1. F S BN=$O(^BQI(90508.5,TRMT,5,"B",BN)) Q:'BN D
  1. . S IEN=0
  1. . F S IEN=$O(^BQI(90508.5,TRMT,5,"B",BN,IEN)) Q:'IEN D
  1. .. S DATA=^BQI(90508.5,TRMT,5,IEN,0)
  1. .. ; Exclude the SEARCH ORDER field and only take pieces 2-7
  1. .. S @REF@(BN)=$P(DATA,U,2,7)
  1. .. S CEXEC(BN)=$G(^BQI(90508.5,TRMT,5,IEN,1))
  1. Q
  1. ;
  1. PRS ; Parse description
  1. S NDESC=$P(NDESC,"|",1)_$G(PARMS($P(NDESC,"|",2)))_$P(NDESC,"|",3,99)
  1. S PDESC=NDESC
  1. Q