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

VPRSDAL.m

Go to the documentation of this file.
  1. VPRSDAL ;SLC/MKB -- SDA Allergy utilities ;10/25/18 15:29
  1. ;;1.0;VIRTUAL PATIENT RECORD;**8,10,14,29,31**;Sep 01, 2011;Build 3
  1. ;;Per VHA Directive 6402, this routine should not be modified.
  1. ;
  1. ; External References DBIA#
  1. ; ------------------- -----
  1. ; ^GMR(120.8 6973
  1. ; ^GMR(120.86 3449
  1. ; DILFD 2055
  1. ; DIQ 2056
  1. ; GMRADPT 10099
  1. ; GMRAOR2 2422
  1. ;
  1. QRY ; -- Allergies/Adverse Reactions query
  1. ; Expects DSTRT, DSTOP, DMAX from DDEGET and returns DLIST(#)=ien
  1. N X,ERR,VPRN,GMRA,ID
  1. S X=$G(FILTER("status")),ERR=$S(X="":1,X["I":1,1:0) ;In/Active
  1. S VPRN=0,GMRA="0^0^111^0^"_ERR
  1. I $L($T(EN2^GMRADPT)) D EN2^GMRADPT I 1
  1. E D EN1^GMRADPT
  1. I 'GMRAL,ERR,$D(^GMR(120.8,"B",DFN)) D Q
  1. . S ID=0 ;if only inactives, GMRADPT returns nothing
  1. . F S ID=$O(^GMR(120.8,"B",DFN,ID)) Q:ID<1 S VPRN=VPRN+1,DLIST(VPRN)=ID
  1. S ID=0 F S ID=+$O(GMRAL(ID)) Q:ID<1 S VPRN=VPRN+1,DLIST(VPRN)=ID Q:VPRN'<DMAX
  1. Q
  1. ;
  1. ALG1(IEN) ; -- return info for single allergy in VPRALG & GMRAY arrays
  1. N GMRA K VPRALG
  1. I '$D(^GMR(120.8,+$G(IEN),0)) S DDEOUT=1 Q
  1. I '$D(GMRAL) D
  1. . N DFN S DFN=+$$GET1^DIQ(120.8,IEN_",",.01,"I")
  1. . S GMRA="0^0^111^0^1"
  1. . I $L($T(EN2^GMRADPT)) D EN2^GMRADPT Q
  1. . D EN1^GMRADPT
  1. M VPRALG=GMRAL(IEN)
  1. I $G(VPRALG)="" S VPRALG="" ;S DDEOUT=1 Q
  1. I $L($T(EN2^GMRAOR2)) D EN2^GMRAOR2(IEN,"GMRAY") Q
  1. D EN1^GMRAOR2(IEN,"GMRAY")
  1. Q
  1. ;
  1. ALLERGEN(VPTR) ; -- return code^name^system for Allergen
  1. N Y,FN,TYPE,CSYS S VPTR=$G(VPTR)
  1. S FN=$S(VPTR["PSDRUG":50,1:+$P(VPTR,"(",2)),TYPE=$P(VPRALG,U,7)
  1. S CSYS=$S(TYPE="D":"RXN^UNI^SCT",TYPE["D":"RXN^SCT^UNI",1:"SCT^UNI")
  1. S Y=$$CODE^VPRSDA(+VPTR,FN,CSYS) I Y="" D
  1. . N NAME S NAME=$$GET1^DIQ(FN,+VPTR,$S(FN=50.605:1,1:.01))
  1. . ; $$EXTERNAL^DILFD(120.8,1,,VPTR)
  1. . S Y=$$VUID^VPRD(+VPTR,FN) I Y S Y=Y_U_NAME_"^VHAT" Q
  1. . S Y=+$G(VPTR)_U_NAME_"^VA"_FN
  1. Q Y
  1. ;
  1. CMT1(IEN,TYPE) ; -- return TYPE comment
  1. N I,TXT,Y
  1. S IEN=+$G(IEN),TYPE=$G(TYPE,"E") ;default to Error
  1. S I=$O(^GMR(120.8,IEN,26,"AVER",TYPE,0)),Y=""
  1. I I M TXT=^GMR(120.8,IEN,26,I,2) S Y=$$STRING^VPRD(.TXT)
  1. Q Y
  1. ;
  1. CMTS(IEN) ; -- return list of comments in
  1. ; DLIST(#) = id ^ date ^ user ^ type ^ facility ^ text
  1. ; expects VASITE (read only) from Entity
  1. N I,X,Y,TXT S IEN=+$G(IEN)
  1. S I=0 F S I=$O(^GMR(120.8,IEN,26,I)) Q:I<1 S X=$G(^(I,0)) D
  1. . Q:$P(X,U,3)="E"
  1. . S $P(X,U,3)=$$EXTERNAL^DILFD(120.826,1.5,,$P(X,U,3))
  1. . M TXT=^GMR(120.8,IEN,26,I,2) S Y=$$STRING^VPRD(.TXT)
  1. . S DLIST(I)=I_","_IEN_U_X_U_+$G(VASITE)_U_Y
  1. Q
  1. ;
  1. SEVRTY(IEN) ; -- return overall Allergy Severity
  1. N I,SEV,X,Y
  1. S (SEV,Y)="",I=0
  1. I $D(GMRAY("H")) S SEV=$P(GMRAY("H"),U,2)
  1. ; else find highest severity among reactions
  1. F S I=$O(GMRAY("O",I)) Q:I<1 S X=$P(GMRAY("O",I),U,2) I $L(X) D
  1. . I X?1"LIFE".E S SEV=X Q
  1. . I X]SEV S SEV=X
  1. I $L(SEV)>1 S Y=$$SNOMED(SEV)
  1. Q Y
  1. ;
  1. SNOMED(SEV) ; -- return SEVerity name as coded element
  1. N X,Y S SEV=$G(SEV),X=$E(SEV,1,2)
  1. S Y=$S(X="MI":255604002,X="MO":6736007,X="SE":24484000,X="LI":442452003,1:"")
  1. I Y S Y=Y_U_SEV_"^SNOMED CT"
  1. E S Y=SEV_U_SEV
  1. Q Y
  1. ;
  1. EVTDT(IEN) ; -- return first D/T of Event
  1. I $G(GMRAY("H")) S Y=$P(GMRAY("H"),U) Q Y
  1. N I,RDT,X,Y
  1. S I=0,RDT=9999999,Y=""
  1. ; find first date.time among reactions
  1. F S I=$O(GMRAY("O",I)) Q:I<1 S X=$P(GMRAY("O",I),U) S:X<RDT RDT=X
  1. S:RDT<9999999 Y=RDT
  1. Q Y
  1. ;
  1. REACTN(IEN) ; -- convert ien^name[^date] to national code for Sign/Symptom
  1. ; Returns +IEN, VPRDT=date [for extension],
  1. ; VPREACTN=code^name^system [SNOMED or VUID],
  1. ; VPRNAME =local name [Original Text]
  1. N Y S Y="" K VPRNAME
  1. S VPREACTN=$P($G(IEN),U,1,2),VPRDT=$P($G(IEN),U,3),IEN=+$G(IEN)
  1. S Y=$$CODE^VPRSDA(IEN,120.83,"SCT") S:$L(Y) VPRNAME=$P(VPREACTN,U,2)
  1. I Y="" S Y=$$VUID^VPRD(IEN,120.83) S:$L(Y) Y=Y_U_$P(VPREACTN,U,2)_"^VHAT"
  1. S:$L(Y) VPREACTN=Y ;return code string
  1. Q
  1. ;
  1. ASSESS ; -- get Assessment #120.86 for patient
  1. ; expects ID (read only) from Entity
  1. I '$G(DFN),$G(ID) S DFN=ID
  1. Q:'$G(DFN) Q:$P($G(^GMR(120.86,DFN,0)),U,2) ;has allergies
  1. S DLIST(1)=DFN
  1. Q