PXRMART ;SLC/DAN - ART computed finding ;08/01/2013
;;2.0;CLINICAL REMINDERS;**26**;Feb 04, 2005;Build 404
;Refererences to ^GMR(120.8 covered by DBIA #905.
ARTCL(DFN,NGET,BDT,EDT,NFOUND,TEST,DATE,DATA,TEXT) ;
S TEST=$$UP^XLFSTR(TEST)
S NFOUND=0
Q:TEST=""!(NGET=0)!("^IN:^DR:^"'[("^"_$E(TEST,1,3)_"^"))
N WILD,ITEM,SUB,ING,INGT,TERM
S WILD=$S(TEST["*":1,1:0),SUB=$S($E(TEST,1,2)="IN":"API",1:"APC")
S TEST=$P(TEST,":",2)
I 'WILD S ITEM=$S(SUB="API":+$O(^PS(50.416,"B",TEST,0)),1:TEST) Q:ITEM=0 D GETINFO Q
S ITEM=$E(TEST,1,$L($P(TEST,"*")))
I SUB="APC" F S ITEM=$O(^GMR(120.8,SUB,DFN,ITEM)) Q:ITEM=""!(ITEM'[($E(TEST,1,$L($P(TEST,"*")))))!(NFOUND=NGET) D GETINFO
I SUB="API" S TERM=ITEM,ING=0 F S ING=$O(^GMR(120.8,SUB,DFN,ING)) Q:'+ING S INGT=$P(^PS(50.416,ING,0),U) I $E(INGT,1,$L(TERM))=TERM S ITEM=ING D GETINFO
Q
;
GETINFO ;
N EDATE,IEN,GMRA0,GMRDATA
S IEN="" F S IEN=$O(^GMR(120.8,SUB,DFN,ITEM,IEN),-1) Q:'+IEN!(NFOUND=NGET) D
.S GMRAR0=^GMR(120.8,IEN,0)
.S EDATE=$P(GMRAR0,U,4)
.Q:EDATE<BDT!(EDATE>EDT)
.S NFOUND=NFOUND+1,TEST(NFOUND)=1,DATE(NFOUND)=EDATE
.S DATA(NFOUND,"REACTANT")=$P(GMRAR0,U,2)
.S DATA(NFOUND,"OBSERVED/HISTORICAL")=$$EXTERNAL^DILFD(120.8,6,"",$P(GMRAR0,U,6))
.S DATA(NFOUND,"MECHANISM")=$$EXTERNAL^DILFD(120.8,17,"",$P(GMRAR0,U,14))
.S DATA(NFOUND,"ALLERGY TYPE")=$P(GMRAR0,U,20)
.S TEXT(NFOUND)="Documented reaction "_$S(SUB="API":"that includes the ingredient ",1:"to an agent in class ")_$S(SUB="APC":ITEM,1:$P(^PS(50.416,ITEM,0),U))_", reactant was: "_DATA(NFOUND,"REACTANT")_"."
Q
PXRMART ;SLC/DAN - ART computed finding ;08/01/2013
+1 ;;2.0;CLINICAL REMINDERS;**26**;Feb 04, 2005;Build 404
+2 ;Refererences to ^GMR(120.8 covered by DBIA #905.
ARTCL(DFN,NGET,BDT,EDT,NFOUND,TEST,DATE,DATA,TEXT) ;
+1 SET TEST=$$UP^XLFSTR(TEST)
+2 SET NFOUND=0
+3 IF TEST=""!(NGET=0)!("^IN
QUIT
+4 NEW WILD,ITEM,SUB,ING,INGT,TERM
+5 SET WILD=$SELECT(TEST["*":1,1:0)
SET SUB=$SELECT($EXTRACT(TEST,1,2)="IN":"API",1:"APC")
+6 SET TEST=$PIECE(TEST,":",2)
+7 IF 'WILD
SET ITEM=$SELECT(SUB="API":+$ORDER(^PS(50.416,"B",TEST,0)),1:TEST)
IF ITEM=0
QUIT
DO GETINFO
QUIT
+8 SET ITEM=$EXTRACT(TEST,1,$LENGTH($PIECE(TEST,"*")))
+9 IF SUB="APC"
FOR
SET ITEM=$ORDER(^GMR(120.8,SUB,DFN,ITEM))
IF ITEM=""!(ITEM'[($EXTRACT(TEST,1,$LENGTH($PIECE(TEST,"*")))))!(NFOUND=NGET)
QUIT
DO GETINFO
+10 IF SUB="API"
SET TERM=ITEM
SET ING=0
FOR
SET ING=$ORDER(^GMR(120.8,SUB,DFN,ING))
IF '+ING
QUIT
SET INGT=$PIECE(^PS(50.416,ING,0),U)
IF $EXTRACT(INGT,1,$LENGTH(TERM))=TERM
SET ITEM=ING
DO GETINFO
+11 QUIT
+12 ;
GETINFO ;
+1 NEW EDATE,IEN,GMRA0,GMRDATA
+2 SET IEN=""
FOR
SET IEN=$ORDER(^GMR(120.8,SUB,DFN,ITEM,IEN),-1)
IF '+IEN!(NFOUND=NGET)
QUIT
Begin DoDot:1
+3 SET GMRAR0=^GMR(120.8,IEN,0)
+4 SET EDATE=$PIECE(GMRAR0,U,4)
+5 IF EDATE<BDT!(EDATE>EDT)
QUIT
+6 SET NFOUND=NFOUND+1
SET TEST(NFOUND)=1
SET DATE(NFOUND)=EDATE
+7 SET DATA(NFOUND,"REACTANT")=$PIECE(GMRAR0,U,2)
+8 SET DATA(NFOUND,"OBSERVED/HISTORICAL")=$$EXTERNAL^DILFD(120.8,6,"",$PIECE(GMRAR0,U,6))
+9 SET DATA(NFOUND,"MECHANISM")=$$EXTERNAL^DILFD(120.8,17,"",$PIECE(GMRAR0,U,14))
+10 SET DATA(NFOUND,"ALLERGY TYPE")=$PIECE(GMRAR0,U,20)
+11 SET TEXT(NFOUND)="Documented reaction "_$SELECT(SUB="API":"that includes the ingredient ",1:"to an agent in class ")_$SELECT(SUB="APC":ITEM,1:$PIECE(^PS(50.416,ITEM,0),U))_", reactant was: "_DATA(NFOUND,"REACTANT")_"."
End DoDot:1
+12 QUIT