C0QGMRAD ;HIRMFO/RM,WAA-UTILITY TO GATHER PATIENT DATA ;1/15/98 13:47 ;;4.0;Adverse Reaction Tracking;**2,10**;Mar 29, 1996;Build 14 EN1 ; ENTRY TO GATHER PATIENT A/AR DATA ;INPUT VARIABLES: ; ; DFN Pointer to Patient file. ; GMRA (OPTIONAL) A^B^C DEFAULT="0^0^111^0" **LOCAL ; where A = 0 return all reactions (allergic/non-allergic). ; 1 return allergies only. ; 2 return non-allergies only. ; B = 0 return all data (verified or non-verified). ; 1 return only verified data. ; 2 return only non-verified data. ; C = X_Y_Z ; where X, Y, and Z are either 0 or 1. 1 would mean to ; return an Adverse Reaction of that particular type, ; and zero means do not return an Adverse Reaction of ; that type. ; X is for TYPE=OTHER ; Y is for TYPE=FOOD ; Z is for TYPE=DRUG. ; E.g., 001 (return drug only), 111 (returns all types), ; and 010 (returns food only). ; **LOCAL ; D = 0 return both Observed and Historical ; 1 return only Observed ; **LOCAL ;OUTPUT VARIABLES: ; GMRAL = 1 if patient has Adverse Reaction ; 0 if patient has no known Adverse Reaction ; null if patient has not been asked about Adverse Reaction ; GMRAL(PTR TO 120.8) = A^B^C^D^E^F^G^H^I ; where A = Pointer to Patient file. ; B = Free text of causative agent. ; *C = Type of reaction, where D is drug, F is food, and O is ; other. ; D = 1 if Adverse Reaction has been verified ; 0 if Adverse Reaction has not been verified ; E = 0 if this is an allergic reaction ; 1 if this is not an allergic reaction ; **F = the mechanism of reaction in the format: ; External format;Internal format ; (ALLERGY;0, PHARMACOLOGIC;2, UNKNOWN;U). ; G = Type of reaction. ; where D = drug ; DF = drug/food ; DFO = drug/food/other ; DO = drug/other ; F = food ; FO = food/other ; O = other ; H = the mechanism of reaction in the format: ; External format;Internal format ; (ALLERGY;A, PHARMACOLOGIC;P, UNKNOWN;U) ; I = IEN and Global root of reactant (stored in piece B above) ; set equal to the GMR ALLERGY field (#1) of the PATIENT ; ALLERGY file (#120.8) ; GMRAL(PTR TO 120.8,"S",COUNT) = S ; where COUNT = number 1 to number of signs/symptoms for this ; reaction. ; S = a sign/symptom for this reaction in the format: ; External format;Internal format ; ;* NOTE: This piece will no longer be supported after 9/1/97, ; Please use piece G. ;** NOTE: This piece will no longer be supported after 9/1/97, ; Please use piece H. ; N GMRAOTH Q:'$D(DFN) S:'$D(GMRA)#2 GMRA="0^0^111^1" K GMRAL DPT ; ;Read NKA Node in file 120.86 S GMRAL=$P($G(^GMR(120.86,DFN,0)),U,2) ;Do not set GMRAL array if patient is unassessed or NKA. I GMRAL=0 Q ;PATIENT HAS NO KNOWN ALLERGIES F GMRAREC=0:0 S GMRAREC=$O(^GMR(120.8,"B",DFN,GMRAREC)) Q:GMRAREC'>0 S GMRANODE=$S($D(^GMR(120.8,GMRAREC,0)):^(0),1:"") D:GMRANODE SETAL I GMRAL=1,+$O(GMRAL(0))'>0 S GMRAL=0 ;if flag is set to 1 (reactions exist), then make certain the reactions are passed in the GMRAL array K GMRA,GMRANODE,GMRAOSOF,GMRAREC,GMRATCNT Q SETAL ; N %,GMRAI,GMRASIGN ;Q:'$P(GMRANODE,"^",12)&'$D(GMRAOSOF) ;IF NOT SIGNED OFF MARK IT Q:+$G(^GMR(120.8,GMRAREC,"ER"))&'$D(GMRAERR) ;IF ENTERED IN ERROR QUIT I GMRAL'=1 S GMRAL=1 ; PATIENT HAS ALLERGIES S GMRAI=0 ; BEGIN CHECK FOR ADR/ALL CRITERIA I $P(GMRA,"^",4),$P(GMRANODE,"^",6)="h" Q ;QUIT IF HISTORICAL EXCLUDED **LOCAL I '$P(GMRA,"^") S GMRAI=1 E I $P(GMRA,"^")=1 S:$F("AU",$P(GMRANODE,"^",14))>1 GMRAI=1 E S:$F("P",$P(GMRANODE,"^",14))>1 GMRAI=1 Q:'GMRAI ; QUIT IF ADR/ALL CRITERIA NOT MET Q:2-$P(GMRA,"^",2)=(1-$P(GMRANODE,"^",16)) ;QUIT IF VER/NON VER CRITERIA NOT MET S GMRAI=0 ; BEGIN CHECK FOR ALLERGY TYPE CRITERIA F %=1:1:3 I $E($P(GMRA,"^",3),%),$P(GMRANODE,"^",20)[$E("OFD",%) S GMRAI=1 Q Q:'GMRAI ; QUIT IF ALLERGY TYPE CRITERIA NOT MET D PASS(GMRAREC,.GMRAL) Q PASS(GMRAREC,GMRAL) ; Data filer ; This subroutine will store all the patient date for a reaction is an ; array. ; Input: ; GMRAREC = The IEN for the entry in 120.8 ;Output: ; GMRAL(GMRAREC) the array entry for the record ; N GMRANODE S GMRANODE=$G(^GMR(120.8,GMRAREC,0)) Q:GMRANODE="" S %=$P(GMRANODE,"^",14) S GMRAL(GMRAREC)=$P(GMRANODE,"^",1,2)_"^"_$E($P(GMRANODE,"^",20))_"^"_+$P(GMRANODE,"^",16)_"^"_$S(%="A"!(%="U"):0,1:1) S GMRAL(GMRAREC)=GMRAL(GMRAREC)_"^"_$S(%="A":"ALLERGY;0",%="P":"PHARMACOLOGIC;2",%="U":"UNKNOWN;U",1:"")_"^"_$P(GMRANODE,"^",20)_"^"_$S(%="A":"ALLERGY;A",%="P":"PHARMACOLOGIC;P",%="U":"UNKNOWN;U",1:"") S GMRAL(GMRAREC)=GMRAL(GMRAREC)_"^"_$P(GMRANODE,"^",3) Q:'$O(^GMR(120.8,GMRAREC,10,0)) ;QUIT IF NO SIGNS/SYMPTOMS S:'$D(GMRAOTH) GMRAOTH=$O(^GMRD(120.83,"B","OTHER REACTION",0)) S GMRAX=0,GMRAY=1 F S GMRAX=$O(^GMR(120.8,GMRAREC,10,GMRAX)) Q:GMRAX<1 D I GMRAZ'="" S GMRAL(GMRAREC,"S",GMRAY)=GMRAZ(1),GMRAY=GMRAY+1 .S GMRAZ=$G(^GMR(120.8,GMRAREC,10,GMRAX,0)) .S GMRAZ(1)=$S(+GMRAZ'=GMRAOTH:$P($G(^GMRD(120.83,+GMRAZ,0)),U)_";"_+GMRAZ,1:$P(GMRAZ,U,2)_";"_+GMRAZ) .Q K GMRAX,GMRAY,GMRAZ Q