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

GMRAOR0.m

Go to the documentation of this file.
  1. GMRAOR0 ;HIRMFO/WAA,FPT - OERR HL7 UTILITY;05/28/2015 09:18 ;Jan 31, 2020@13:06:49
  1. ;;4.0;Adverse Reaction Tracking;**4,46,51**;Mar 29, 1996;Build 189
  1. DUPCHK(DFN,GMRALL) ;CHECK FOR DUPS
  1. ;Input variable:
  1. ; DFN = Patient DFN
  1. ; GMRALL = Free text of allergy
  1. ;
  1. ;return variable:
  1. ; GMRAFLG = (0,1,-1)
  1. ; 0 Patient has no matching reactions on file
  1. ; 1 Patient has a matching reaction.
  1. ; -1 Patient has a matching reaction but is E/E
  1. ;
  1. ;********************************************************************
  1. N GMRAFLG,GMRAPA
  1. S GMRAFLG=0,GMRAPA=0
  1. ;Loop through all the patient's reaction and look for matches
  1. F S GMRAPA=$O(^GMR(120.8,"B",DFN,GMRAPA)) Q:GMRAPA<1 D Q:GMRAFLG=1
  1. .Q:GMRALL'=$P($G(^GMR(120.8,GMRAPA,0)),U,2) ;Not a match
  1. .I +$G(^GMR(120.8,GMRAPA,"ER")) S GMRAFLG=-1 Q ;E/E
  1. .S GMRAFLG=1 ;Matching allergy.
  1. .Q
  1. Q GMRAFLG
  1. ;********************************************************************
  1. ;CONTINUATION FROM GMRAOR
  1. REMOTE(DFN) ;OBTAIN DATA STORED REMOTELY
  1. ;PARAMTER: DFN => IEN IN THE PATIENT (#2) FILE
  1. Q:$$HDRDATA^GMRAHDR()<1
  1. N J,GMRAOTH
  1. S GMRAOTH=$O(^GMRD(120.83,"B","OTHER REACTION",0))
  1. S J=0 F S J=$O(^XTMP("ORRDI","ART",DFN,J)) Q:'+J D
  1. .N SEVERE,SYMPTOM,AGENT,CLASSES,INGS,DATE,IN,DC,GL,IEN,DD,INDEX,DATA,REACT,IN,OBSHIS
  1. .N VUID,FILE,GMRARAY,DC,GMRAING,GMRADC,K,INGLST,I,PRIM,COMMID,MECH
  1. .S GL=$NA(^XTMP("ORRDI","ART",DFN,J)),DATE=""
  1. .I +$G(@GL@("ORIGINATION DATE/TIME",0))'=0 S DATE=$$HL7TFM^XLFDT(@GL@("ORIGINATION DATE/TIME",0))
  1. .S DATA=$P($G(@GL@("FACILITY",0)),U)_U_"R"_U_DATE
  1. .S REACT=$G(@GL@("GMRALLERGY",0))
  1. .I REACT'="" D
  1. ..S VUID=$P(REACT,U,1)
  1. ..S FILE=$P($P(REACT,U,3),"99VA",2)
  1. ..D GETIREF^XTID(FILE,,VUID,"GMRARAY")
  1. ..D FILE^DID(FILE,,"GLOBAL NAME","DD")
  1. ..S IEN=0 F S IEN=$O(GMRARAY(FILE,.01,IEN)) Q:+$G(IEN)=0 D
  1. ...S AGENT=+IEN_";"_$P(DD("GLOBAL NAME"),U,2)
  1. ..K VUID,FILE,GMRARAY,IEN
  1. .I $D(@GL@("SEVERITY"))>9 D
  1. ..S SEVERE="|"_$P(@GL@("SEVERITY",0),U)
  1. .I $D(@GL@("SIGNS/SYMPTOMS"))>9 D
  1. ..S INDEX=0 F S INDEX=$O(@GL@("SIGNS/SYMPTOMS",INDEX)) Q:+$G(INDEX)=0 D
  1. ...I $P($G(@GL@("SIGNS/SYMPTOMS",INDEX)),U,3)="L" D
  1. ....S SYMPTOM=$S($G(SYMPTOM)'="":SYMPTOM_"~",1:"")_GMRAOTH
  1. ...I $P($G(@GL@("SIGNS/SYMPTOMS",INDEX)),U,3)'="L" D
  1. ....S VUID=$P(@GL@("SIGNS/SYMPTOMS",INDEX),U,1)
  1. ....S FILE=$P($P(@GL@("SIGNS/SYMPTOMS",INDEX),U,3),"99VA",2)
  1. ....D GETIREF^XTID(FILE,,VUID,"GMRARAY")
  1. ....S IEN=0 F S IEN=$O(GMRARAY(FILE,.01,IEN)) Q:+$G(IEN)=0 S SYMPTOM=$S($G(SYMPTOM)'="":SYMPTOM_"~",1:"")_+IEN
  1. ....K VUID,FILE,GMRARAY,IEN
  1. .I $D(@GL@("OBS/HISTORICAL"))>9 D
  1. ..D GETIREF^XTID(120.8,,$P($G(@GL@("OBS/HISTORICAL",0)),U,1),"GMRARAY")
  1. ..S OBSHIS=$O(GMRARAY(120.8,6,""))
  1. ..K GMRARAY
  1. .S MECH=""
  1. .I $D(@GL@("MECHANISM"))>9 D
  1. ..S MECH=$P($G(@GL@("MECHANISM",0)),U,2)
  1. ..S MECH=$S(MECH="ALLERGY":"A",MECH="PHARMACOLOGIC":"P",1:"U")
  1. .S DATA=DATA_U_$G(SEVERE)_U_$G(SYMPTOM)_U_$G(@GL@("REACTANT",0))_U_$G(AGENT)_U_$G(OBSHIS)
  1. .S $P(DATA,U,11)=$G(MECH)
  1. .I $D(^XTMP("ORRDI","ART",DFN,J,"DRUG INGREDIENTS")) D
  1. ..S IN=0 F S IN=$O(^XTMP("ORRDI","ART",DFN,J,"DRUG INGREDIENTS",IN)) Q:'+IN D
  1. ...S VUID=$P(@GL@("DRUG INGREDIENTS",IN),U),FILE=$P(^(IN),U,3)
  1. ...S FILE=$P(FILE,"99VA",2)
  1. ...D GETIREF^XTID(FILE,,VUID,"GMRARAY")
  1. ...S IEN=0 F S IEN=$O(GMRARAY(FILE,.01,IEN)) Q:'+IEN D
  1. ....;*BD
  1. ....S ^TMP("GMRAOC",$J,"API",+IEN)=$$SETNODE^GMRAOR1($G(^TMP("GMRAOC",$J,"API",+IEN)),"REMOTE SITE(S)")
  1. ....;*ED
  1. ....S:'$D(INGS(+IEN)) INGS(+IEN)=""
  1. ...K VUID,FILE,GMRARAY,IEN
  1. .I $D(@GL@("DRUG CLASSES")) D
  1. ..S DC=0 F S DC=$O(@GL@("DRUG CLASSES",DC)) Q:'+DC D
  1. ...;*BD
  1. ...N DCLASS
  1. ...S DCLASS=$P(@GL@("DRUG CLASSES",DC),U,4)
  1. ...S ^TMP("GMRAOC",$J,"APC",DCLASS)=$$SETNODE^GMRAOR1($G(^TMP("GMRAOC",$J,"APC",DCLASS)),"REMOTE SITE(S)")
  1. ...;*ED
  1. ...S VUID=$P(@GL@("DRUG CLASSES",DC),U,1),FILE=$P($P(^(DC),U,3),"99VA",2)
  1. ...D GETIREF^XTID(FILE,,VUID,"GMRARAY")
  1. ...S IEN=0 F S IEN=$O(GMRARAY(FILE,.01,IEN)) Q:'+IEN D
  1. ....S:'$D(CLASSES(+IEN)) CLASSES(+IEN)=$P(@GL@("DRUG CLASSES",DC),U,4)
  1. ...K GMRARAY
  1. .D FIND(REACT,.GMRAING,.GMRADC) I $D(GMRAING)!($D(GMRADC)) D
  1. ..S K=0 F S K=$O(GMRAING(K)) Q:'+K D
  1. ...;*BD
  1. ...S ^TMP("GMRAOC",$J,"API",K)=$$SETNODE^GMRAOR1($G(^TMP("GMRAOC",$J,"API",K)),"REMOTE SITE(S)")
  1. ...;*ED
  1. ...S:'$D(INGS(K)) INGS(K)=""
  1. ..S K="" F S K=$O(GMRADC(K)) Q:K="" D
  1. ...;*BD
  1. ...S ^TMP("GMRAOC",$J,"APC",GMRADC(K))=$$SETNODE^GMRAOR1($G(^TMP("GMRAOC",$J,"APC",GMRADC(K))),"REMOTE SITE(S)")
  1. ...;*ED
  1. ...S:'$D(CLASSES(K)) CLASSES(K)=GMRADC(K)
  1. .S $P(DATA,U,9)="V"
  1. .S COMMID=$O(^GMR(120.88,"PR",DFN_";DPT(",$P(DATA,U)_";"_$P(DATA,U,6),""),-1)
  1. .S $P(DATA,U,10)=$S(COMMID="":"",1:$G(^GMR(120.88,COMMID,1)))
  1. .S IN="" F S IN=$O(INGS(IN)) Q:IN="" S ^TMP("GMRAOC",$J,"API",IN,"R"_J)=$G(DATA)
  1. .S DC="" F S DC=$O(CLASSES(DC)) Q:DC="" S ^TMP("GMRAOC",$J,"APC",CLASSES(DC),"R"_J)=$G(DATA)
  1. I $D(^TMP("GMRAOC",$J,"API")) D
  1. .N I,INGLST
  1. .S I=0 F S I=$O(^TMP("GMRAOC",$J,"API",I)) Q:'I D
  1. ..N PRIM
  1. ..S PRIM=$$PRIMARY(I)
  1. ..I PRIM M INGLST(PRIM)=^TMP("GMRAOC",$J,"API",I) K ^TMP("GMRAOC",$J,"API",I)
  1. .S I=0 F S I=$O(INGLST(I)) Q:'I M ^TMP("GMRAOC",$J,"API",I)=INGLST(I)
  1. Q
  1. FIND(REACT,ING,DC) ;DETERMINE DRUG INGREDIENTS AND CLASSES FOR REACTANT USING LOCAL DATA
  1. ;PARAMETERS: REACT => REACTANT TO RETURN DRUG INGREDIENTS AND CLASSES FOR
  1. ; FORMAT: VUID^NAME^FILE, WHERE VUID IS UNIQUE ID FOR REACTANT,
  1. ; NAME IS THE NAME OF THE REACTANT, AND FILE IS THE FILE
  1. ; CONTAINING THE REACTANT, IN THE FORMAT 99VA#
  1. ; EX.: 4637287^EGGS^99VA120.82
  1. ; ING => ARRAY REFERENCE TO RETURN DRUG INGREDIENTS IN
  1. ; DC => ARRAY REFERENCE TO RETRUN DRUG CLASSES IN
  1. Q:$G(REACT)=""
  1. N VUID,FILE,PSNDA,GMRAIEN,LIST,GMRAI,GMRALIST,GMRARAY,J,SUB
  1. S VUID=$P(REACT,U)
  1. S FILE=$P(REACT,U,3)
  1. S FILE=$P(FILE,"99VA",2)
  1. D GETIREF^XTID(,,VUID,"GMRARAY")
  1. S FILE="" F S FILE=$O(GMRARAY(FILE)) Q:FILE="" D
  1. .S GMRAIEN=0 F S GMRAIEN=$O(GMRARAY(FILE,.01,GMRAIEN)) Q:'+GMRAIEN D
  1. ..I FILE=50.6 D
  1. ...K ^TMP("PSN",$J) S PSNDA=+GMRAIEN D ^PSNNGR
  1. ...S GMRAI=0 F S GMRAI=$O(^TMP("PSN",$J,GMRAI)) Q:GMRAI<1 S ING(GMRAI)=""
  1. ...K ^TMP("PSN",$J),GMRARAY
  1. ...S PSNDA=+GMRAIEN,GMRALIST=$$CLIST^PSNAPIS(PSNDA,.GMRALIST) Q:'$G(GMRALIST)
  1. ...S GMRALIST=0 F S GMRALIST=$O(GMRALIST(GMRALIST)) Q:'GMRALIST S DC(GMRALIST)=$P(GMRALIST(GMRALIST),U,2)
  1. ..I FILE=120.82 D
  1. ...S SUB=0 F S SUB=$O(^GMRD(120.82,+GMRAIEN,"ING",SUB)) Q:'+SUB S ING(+$P($G(^GMRD(120.82,+GMRAIEN,"ING",SUB,0)),U))=""
  1. ...S SUB=0 F S SUB=$O(^GMRD(120.82,+GMRAIEN,"CLASS",SUB)) Q:'+SUB S DC(+$P($G(^GMRD(120.82,+GMRAIEN,"CLASS",SUB,0)),U))=$P($$CLASS2^PSNAPIS(+$P($G(^GMRD(120.82,+GMRAIEN,"CLASS",SUB,0)),U)),U)
  1. ..I FILE=50.605 D
  1. ...S DC(+GMRAIEN)=$P($$CLASS2^PSNAPIS(+GMRAIEN),U)
  1. ..I FILE=50.416 D
  1. ...S ING(+GMRAIEN)=""
  1. Q
  1. PRIMARY(INGIEN) ;DETERMINE IF AN INGREDIENT IS A PRIMARY INGREDIENT
  1. ;PARAMTER: INGIEN => IEN IN THE DRUG INGREDIENTS FILE (#50.416)
  1. ;RETURN: 0 => INGIEN IS PRIMARY
  1. ; # => IEN IN THE DRUG INGREDIENTS FILE OF INGIEN'S PRIMARY INGREDIENT
  1. N RETURN
  1. K ^TMP($J,"GMRALIST")
  1. D ZERO^PSN50P41(INGIEN,,,"GMRALIST")
  1. S RETURN=+$G(^TMP($J,"GMRALIST",INGIEN,2))
  1. K ^TMP($J,"GMRALIST")
  1. Q RETURN