| [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 | 
|---|