| [623] | 1 | GMPLX1 ; SLC/MKB/KER -- Problem List Person Utilities ; 04/15/2002
 | 
|---|
 | 2 |  ;;2.0;Problem List;**3,26**;Aug 25, 1994
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 |  ; External References
 | 
|---|
 | 5 |  ;   DBIA   348  ^DPT(
 | 
|---|
 | 6 |  ;   DBIA  3106  ^DIC(49
 | 
|---|
 | 7 |  ;   DBIA   872  ^ORD(101
 | 
|---|
 | 8 |  ;   DBIA 10060  ^VA(200
 | 
|---|
 | 9 |  ;   DBIA 10062  7^VADPT
 | 
|---|
 | 10 |  ;   DBIA 10062  DEM^VADPT
 | 
|---|
 | 11 |  ;   DBIA  2716  $$GETSTAT^DGMSTAPI
 | 
|---|
 | 12 |  ;   DBIA  3457  $$GETCUR^DGNTAPI
 | 
|---|
 | 13 |  ;   DBIA 10104  $$REPEAT^XLFSTR
 | 
|---|
 | 14 |  ;   DBIA 10006  ^DIC
 | 
|---|
 | 15 |  ;   DBIA 10018  ^DIE
 | 
|---|
 | 16 |  ;   DBIA 10026  ^DIR
 | 
|---|
 | 17 |  ;
 | 
|---|
 | 18 | PAT() ; Select patient -- returns DFN^NAME^BID
 | 
|---|
 | 19 |  N DIC,X,Y,DFN,VADM,VA,PAT
 | 
|---|
 | 20 | P1 S DIC="^AUPNPAT(",DIC(0)="AEQM" D ^DIC I +Y<1 Q -1
 | 
|---|
 | 21 |  I $P(Y,U,2)'=$P(^DPT(+Y,0),U) W $C(7),!!,"ERROR -- Please check your Patient Files #2 and #9000001 for inconsistencies.",! G P1
 | 
|---|
 | 22 |  S DFN=+Y,PAT=Y D DEM^VADPT
 | 
|---|
 | 23 |  S PAT=PAT_U_$E($P(PAT,U,2))_VA("BID"),AUPNSEX=$P(VADM(5),U)
 | 
|---|
 | 24 |  I VADM(6) S PAT=PAT_U_+VADM(6) ; date of death
 | 
|---|
 | 25 |  Q PAT
 | 
|---|
 | 26 |  ;          
 | 
|---|
 | 27 | VADPT(DFN) ; Get Service/Elig Flags
 | 
|---|
 | 28 |  ;          
 | 
|---|
 | 29 |  ; Returns = 1/0/"" if Y/N/unknown
 | 
|---|
 | 30 |  ;   GMPSC     Service Connected
 | 
|---|
 | 31 |  ;   GMPAGTOR  Agent Orange Exposure
 | 
|---|
 | 32 |  ;   GMPION    Ionizing Radiation Exposure
 | 
|---|
 | 33 |  ;   GMPGULF   Persian Gulf Exposure
 | 
|---|
 | 34 |  ;   GMPMST    Military Sexual Trauma
 | 
|---|
 | 35 |  ;   GMPHNC    Head and/or Neck Cancer
 | 
|---|
 | 36 |  ;          
 | 
|---|
 | 37 |  N VAEL,VASV,VAERR,HNC,X D 7^VADPT S GMPSC=VAEL(3),GMPAGTOR=VASV(2)
 | 
|---|
 | 38 |  S GMPION=VASV(3),X=$P($G(^DPT(DFN,.322)),U,10),GMPGULF=$S(X="Y":1,X="N":0,1:"")
 | 
|---|
 | 39 |  S X=$P($$GETSTAT^DGMSTAPI(DFN),"^",2),GMPMST=$S(X="Y":1,X="N":0,1:"")
 | 
|---|
 | 40 |  S X=$$GETCUR^DGNTAPI(DFN,"HNC"),X=+($G(HNC("STAT"))),GMPHNC=$S(X=4:1,X=5:1,X=1:0,X=6:0,1:"")
 | 
|---|
 | 41 |  Q
 | 
|---|
 | 42 | SCS(PROB,SC) ; Get Exposure/Conditions Strings
 | 
|---|
 | 43 |  ;                 
 | 
|---|
 | 44 |  ;   Input     PROB  Pointer to Problem #9000011
 | 
|---|
 | 45 |  ;               
 | 
|---|
 | 46 |  ;   Returns   SC Array passed by reference
 | 
|---|
 | 47 |  ;             SC(1)="AO/IR/EC/HNC/MST"
 | 
|---|
 | 48 |  ;             SC(2)="A/I/E/H/M"
 | 
|---|
 | 49 |  ;             SC(3)="AIEHM"
 | 
|---|
 | 50 |  ;                     
 | 
|---|
 | 51 |  ;   NOTE:  Military Sexual Trauma (MST) is suppressed
 | 
|---|
 | 52 |  ;          if the current device is a printer.
 | 
|---|
 | 53 |  ;                     
 | 
|---|
 | 54 |  N ND,DA,FL,AO,IR,EC,HNC,MST,PTR S DA=+($G(PROB)) Q:+DA=0
 | 
|---|
 | 55 |  S ND=$G(^AUPNPROB(+DA,1)),AO=+($P(ND,"^",11)),IR=+($P(ND,"^",12))
 | 
|---|
 | 56 |  S EC=+($P(ND,"^",13)),HNC=+($P(ND,"^",15)),MST=+($P(ND,"^",16))
 | 
|---|
 | 57 |  S PTR=$$PTR^GMPLUTL4
 | 
|---|
 | 58 |  I +AO>0 D
 | 
|---|
 | 59 |  . S:$G(SC(1))'["AO" SC(1)=$G(SC(1))_"/AO" S:$G(SC(2))'["A" SC(2)=$G(SC(2))_"/A" S:$G(SC(3))'["A" SC(3)=$G(SC(3))_"A"
 | 
|---|
 | 60 |  I +IR>0 D
 | 
|---|
 | 61 |  . S:$G(SC(1))'["IR" SC(1)=$G(SC(1))_"/IR" S:$G(SC(2))'["I" SC(2)=$G(SC(2))_"/I" S:$G(SC(3))'["I" SC(3)=$G(SC(3))_"I"
 | 
|---|
 | 62 |  I +EC>0 D
 | 
|---|
 | 63 |  . S:$G(SC(1))'["EC" SC(1)=$G(SC(1))_"/EC" S:$G(SC(2))'["E" SC(2)=$G(SC(2))_"/E" S:$G(SC(3))'["E" SC(3)=$G(SC(3))_"E"
 | 
|---|
 | 64 |  I +HNC>0 D
 | 
|---|
 | 65 |  . S:$G(SC(1))'["HNC" SC(1)=$G(SC(1))_"/HNC" S:$G(SC(2))'["H" SC(2)=$G(SC(2))_"/H" S:$G(SC(3))'["H" SC(3)=$G(SC(3))_"H"
 | 
|---|
 | 66 |  I +PTR'>0 D
 | 
|---|
 | 67 |  . I +MST>0 S:$G(SC(1))'["MST" SC(1)=$G(SC(1))_"/MST" S:$G(SC(2))'["M" SC(2)=$G(SC(2))_"/M" S:$G(SC(3))'["M" SC(3)=$G(SC(3))_"M"
 | 
|---|
 | 68 |  S:$D(SC(1)) SC(1)=$$RS(SC(1)) S:$D(SC(2)) SC(2)=$$RS(SC(2))
 | 
|---|
 | 69 |  Q
 | 
|---|
 | 70 | SCCOND(DFN,SC) ; Get Service/Elig Flags (array)
 | 
|---|
 | 71 |  ; Returns local array .SC passed by value
 | 
|---|
 | 72 |  N HNC,VAEL,VASV,VAERR,X D 7^VADPT
 | 
|---|
 | 73 |  S SC("DFN")=$G(DFN),SC("SC")=$P(VAEL(3),"^",1)
 | 
|---|
 | 74 |  S SC("AO")=$P(VASV(2),"^",1)
 | 
|---|
 | 75 |  S SC("IR")=$P(VASV(3),"^",1)
 | 
|---|
 | 76 |  S X=$P($G(^DPT(DFN,.322)),U,10),SC("PG")=$S(X="Y":1,X="N":0,1:"")
 | 
|---|
 | 77 |  S X=$P($$GETSTAT^DGMSTAPI(DFN),"^",2),SC("MST")=$S(X="Y":1,X="N":0,1:"")
 | 
|---|
 | 78 |  S X=$$GETCUR^DGNTAPI(DFN,"HNC"),X=+($G(HNC("STAT"))),SC("HNC")=$S(X=4:1,X=5:1,X=1:0,X=6:0,1:"")
 | 
|---|
 | 79 |  Q
 | 
|---|
 | 80 |  ;
 | 
|---|
 | 81 | CKDEAD(DATE) ; Dead patient ... continue?  Returns 1 if YES, 0 otherwise
 | 
|---|
 | 82 |  N DIR,X,Y S DIR(0)="YA",DIR("B")="NO"
 | 
|---|
 | 83 |  S DIR("A")="Are you sure you want to continue? "
 | 
|---|
 | 84 |  S DIR("?",1)="   Enter YES to continue and add new problem(s) for this patient:",DIR("?")="   press <return> to select another action."
 | 
|---|
 | 85 |  W $C(7),!!,"DATE OF DEATH: "_$$EXTDT^GMPLX(DATE)
 | 
|---|
 | 86 |  D ^DIR
 | 
|---|
 | 87 |  Q +Y
 | 
|---|
 | 88 |  ;
 | 
|---|
 | 89 | REQPROV() ; Returns requesting provider
 | 
|---|
 | 90 |  N DIR,X,Y
 | 
|---|
 | 91 |  I $D(GMPLUSER) S Y=DUZ_U_$P(^VA(200,DUZ,0),U) Q Y
 | 
|---|
 | 92 |  S DIR("?")="Enter the name of the provider responsible for this data."
 | 
|---|
 | 93 |  S DIR(0)="PA^200:AEQM",DIR("A")="Provider: "
 | 
|---|
 | 94 |  S:$G(GMPROV) DIR("B")=$P(GMPROV,U,2) W ! D ^DIR
 | 
|---|
 | 95 |  I $D(DUOUT)!($D(DTOUT))!(+Y'>0) Q -1
 | 
|---|
 | 96 |  Q Y
 | 
|---|
 | 97 |  ;
 | 
|---|
 | 98 | NAME(USER) ; Formats user name into "Lastname,F"
 | 
|---|
 | 99 |  N NAME,LAST,FIRST
 | 
|---|
 | 100 |  S NAME=$P($G(^VA(200,+USER,0)),U) I '$L(NAME) Q ""
 | 
|---|
 | 101 |  S LAST=$P(NAME,","),FIRST=$P(NAME,",",2)
 | 
|---|
 | 102 |  S:$E(FIRST)=" " FIRST=$E(FIRST,2,99)
 | 
|---|
 | 103 |  Q $E(LAST,1,15)_","_$E(FIRST)
 | 
|---|
 | 104 |  ;
 | 
|---|
 | 105 | SERVICE(USER) ; Returns User's service/section from file #49
 | 
|---|
 | 106 |  N X S X=+$P($G(^VA(200,USER,5)),U)
 | 
|---|
 | 107 |  I $P($G(^DIC(49,X,0)),U,9)'="C" S X=0
 | 
|---|
 | 108 |  S:X>0 X=X_U_$P($G(^DIC(49,X,0)),U) S:X'>0 X=""
 | 
|---|
 | 109 |  Q X
 | 
|---|
 | 110 |  ;
 | 
|---|
 | 111 | SERV(X) ; Return service name abbreviation
 | 
|---|
 | 112 |  N NODE,ABBREV
 | 
|---|
 | 113 |  S NODE=$G(^DIC(49,+X,0)) I NODE="" Q ""
 | 
|---|
 | 114 |  S ABBREV=$P(NODE,U,2) I ABBREV="" S ABBREV=$E($P(NODE,U),1,4)
 | 
|---|
 | 115 |  Q ABBREV_"/"
 | 
|---|
 | 116 |  ;
 | 
|---|
 | 117 | CLINIC(LAST) ; Returns clinic from file #44
 | 
|---|
 | 118 |  N X,Y,DIC,DIR S Y="" G:$E(GMPLVIEW("VIEW"))="S" CLINQ
 | 
|---|
 | 119 |  S DIR(0)="FAO^1:30",DIR("A")="Clinic: " S:$L(LAST) DIR("B")=$P(LAST,U,2)
 | 
|---|
 | 120 |  S DIR("?")="Enter the clinic to be associated with these problems, if available"
 | 
|---|
 | 121 |  S DIR("??")="^D LISTCLIN^GMPLMGR1 W !,DIR(""?"")_""."""
 | 
|---|
 | 122 | CLIN1 ; Ask Clinic
 | 
|---|
 | 123 |  D ^DIR S:$D(DUOUT)!($D(DTOUT)) Y="^" S:Y="@" Y="" G:("^"[Y) CLINQ
 | 
|---|
 | 124 |  S DIC="^SC(",DIC(0)="EMQ",DIC("S")="I $P(^(0),U,3)=""C"""
 | 
|---|
 | 125 |  D ^DIC I Y'>0 W !?5,"Only clinics are allowed!",! G CLIN1
 | 
|---|
 | 126 | CLINQ ; Quit Asking
 | 
|---|
 | 127 |  Q Y
 | 
|---|
 | 128 |  ;
 | 
|---|
 | 129 | VIEW(USER) ; Returns user's preferred view
 | 
|---|
 | 130 |  N X S X=$P($G(^VA(200,USER,125)),U)
 | 
|---|
 | 131 |  Q X
 | 
|---|
 | 132 |  ;
 | 
|---|
 | 133 | VOCAB() ; Select search vocabulary
 | 
|---|
 | 134 |  N DIR,X,Y S DIR(0)="SAOM^N:NURSING;I:IMMUNOLOGIC;D:DENTAL;S:SOCIAL WORK;P:GENERAL PROBLEM"
 | 
|---|
 | 135 |  S DIR("A")="Select Specialty Subset: ",DIR("B")="GENERAL PROBLEM"
 | 
|---|
 | 136 |  S DIR("?",1)="Because many discipline-specific terms are synonyms to other terms,"
 | 
|---|
 | 137 |  S DIR("?",2)="they are not accessible unless you specify the appropriate subset of the"
 | 
|---|
 | 138 |  S DIR("?",3)="Clinical Lexicon to select from.  Choose from:  Nursing"
 | 
|---|
 | 139 |  S DIR("?",4)=$$REPEAT^XLFSTR(" ",48)_"Immunologic"
 | 
|---|
 | 140 |  S DIR("?",5)=$$REPEAT^XLFSTR(" ",48)_"Dental"
 | 
|---|
 | 141 |  S DIR("?",6)=$$REPEAT^XLFSTR(" ",48)_"Social Work"
 | 
|---|
 | 142 |  S DIR("?")=$$REPEAT^XLFSTR(" ",48)_"General Problem"
 | 
|---|
 | 143 |  D ^DIR S X=$S(Y="N":"NUR",Y="I":"IMM",Y="D":"DEN",Y="S":"SOC",Y="P":"PL1",1:"^")
 | 
|---|
 | 144 |  Q X
 | 
|---|
 | 145 |  ;
 | 
|---|
 | 146 | PARAMS ; Edit pkg parameters in file #125.99
 | 
|---|
 | 147 |  N DIE,DA,DR,OLDVERFY,VERFY,BLANK S BLANK="       "
 | 
|---|
 | 148 |  S OLDVERFY=+$P($G(^GMPL(125.99,1,0)),U,2)
 | 
|---|
 | 149 |  S DIE="^GMPL(125.99,",DA=1,DR="1:6" D ^DIE
 | 
|---|
 | 150 |  Q:+$P($G(^GMPL(125.99,1,0)),U,2)=OLDVERFY
 | 
|---|
 | 151 |  S DA(1)=$O(^ORD(101,"B","GMPL PROBLEM LIST",0)) Q:'DA(1)
 | 
|---|
 | 152 |  S VERFY=$O(^ORD(101,"B","GMPL VERIFY",0)) W "."
 | 
|---|
 | 153 |  S DA=$O(^ORD(101,DA(1),10,"B",VERFY,0)) Q:'DA
 | 
|---|
 | 154 |  S DR=$S(OLDVERFY:"2///@;6///^S X=BLANK",1:"2////$;6///@") W "."
 | 
|---|
 | 155 |  S DIE="^ORD(101,"_DA(1)_",10,"
 | 
|---|
 | 156 |  D ^DIE W "."
 | 
|---|
 | 157 |  Q
 | 
|---|
 | 158 | RS(X) ; Remove Slashes
 | 
|---|
 | 159 |  S X=$G(X) F  Q:$E(X,1)'="/"  S X=$E(X,2,$L(X))
 | 
|---|
 | 160 |  F  Q:$E(X,$L(X))'="/"  S X=$E(X,1,($L(X)-1))
 | 
|---|
 | 161 |  Q X
 | 
|---|