| [613] | 1 | GMPL1 ; SLC/MKB/AJB -- Problem List actions ; 04/22/03
 | 
|---|
 | 2 |  ;;2.0;Problem List;**3,20,28**;Aug 25, 1994
 | 
|---|
 | 3 |  ; 10 MAR 2000 - MA - Added to the routine another user prompt
 | 
|---|
 | 4 |  ; to backup and refine Lexicon search if ICD code 799.9
 | 
|---|
 | 5 | ADD ;add new entry to list - Requires GMPDFN
 | 
|---|
 | 6 |  N GMPROB,GMPTERM,GMPICD,Y,DUP W !
 | 
|---|
 | 7 |  S GMPROB=$$TEXT^GMPLEDT4("") I GMPROB="^" S GMPQUIT=1 Q
 | 
|---|
 | 8 |  I 'GMPARAM("CLU")!('$D(GMPLUSER)&('$D(^XUSEC("GMPL ICD CODE",DUZ)))) S GMPTERM="",GMPICD="799.9" G ADD1
 | 
|---|
 | 9 |  F  D  Q:$D(GMPQUIT)!(+$G(Y))
 | 
|---|
 | 10 |  . D SEARCH^GMPLX(.GMPROB,.Y,"PROBLEM: ","1")
 | 
|---|
 | 11 |  . I +Y'>0 S GMPQUIT=1 Q
 | 
|---|
 | 12 |  . S DUP=$$DUPL^GMPLX(+GMPDFN,+Y,GMPROB)
 | 
|---|
 | 13 |  . I DUP,'$$DUPLOK^GMPLX(DUP) S (Y,GMPROB)=""
 | 
|---|
 | 14 |  . I +Y=1 D ICDMSG
 | 
|---|
 | 15 |  Q:$D(GMPQUIT)
 | 
|---|
 | 16 |  S GMPTERM=$S(+$G(Y)>1:Y,1:""),GMPICD=$G(Y(1))
 | 
|---|
 | 17 |  S:'$L(GMPICD) GMPICD="799.9"
 | 
|---|
 | 18 | ADD1 ; set up default values
 | 
|---|
 | 19 |  ; -- May enter here with GMPROB=text,GMPICD=code,GMPTERM=#^term
 | 
|---|
 | 20 |  ; added for Code Set Versioning (CSV)
 | 
|---|
 | 21 |  I '+$$STATCHK^ICDAPIU(GMPICD,DT) W !,GMPROB,!,"has an inactive code.  Please edit before adding." H 3 Q
 | 
|---|
 | 22 |  N OK,GMPI,GMPFLD K GMPLJUMP
 | 
|---|
 | 23 |  S GMPFLD(1.01)=GMPTERM,GMPFLD(.05)=U_GMPROB
 | 
|---|
 | 24 |  S GMPFLD(.01)=$O(^ICD9("AB",GMPICD_" ",0))_U_GMPICD
 | 
|---|
 | 25 |  S:'GMPFLD(.01) GMPFLD(.01)=$$NOS^GMPLX ; cannot resolve code
 | 
|---|
 | 26 |  S (GMPFLD(1.04),GMPFLD(1.05))=$G(GMPROV),GMPFLD(1.03)=DUZ
 | 
|---|
 | 27 |  S GMPFLD(1.06)=$$SERVICE^GMPLX1(+GMPFLD(1.04)),GMPFLD(1.08)=$G(GMPCLIN)
 | 
|---|
 | 28 |  S (GMPFLD(.08),GMPFLD(1.09))=DT_U_$$EXTDT^GMPLX(DT)
 | 
|---|
 | 29 |  S GMPFLD(.12)="A^ACTIVE",GMPFLD(1.14)="",GMPFLD(10,0)=0
 | 
|---|
 | 30 |  S GMPFLD(1.02)=$S('$G(GMPARAM("VER")):"P",$D(GMPLUSER):"P",1:"T")
 | 
|---|
 | 31 |  S (GMPFLD(.13),GMPFLD(1.07))="" ; initialize dates
 | 
|---|
 | 32 |  S GMPFLD(1.1)=$S('GMPSC:"0^NO",1:""),GMPFLD(1.11)=$S('GMPAGTOR:"0^NO",1:"")
 | 
|---|
 | 33 |  S GMPFLD(1.12)=$S('GMPION:"0^NO",1:""),GMPFLD(1.13)=$S('GMPGULF:"0^NO",1:"")
 | 
|---|
 | 34 | ADD2 ; prompt for values
 | 
|---|
 | 35 |  D FLDS^GMPLEDT3 ; set GMPFLD("FLD") of editable fields
 | 
|---|
 | 36 |  F GMPI=2:1:7 D @(GMPFLD("FLD",GMPI)_"^GMPLEDT1") Q:$D(GMPQUIT)  K GMPLJUMP ; cannot ^-jump here
 | 
|---|
 | 37 |  Q:$D(GMPQUIT)
 | 
|---|
 | 38 | ADD3 ; Ok to save?
 | 
|---|
 | 39 |  S OK=$$ACCEPT^GMPLDIS1(.GMPFLD),GMPLJUMP=0 ; ok to save values?
 | 
|---|
 | 40 |  I OK="^" W !!?10,"< Nothing Saved !! >",! S GMPQUIT=1 H 1 Q
 | 
|---|
 | 41 |  I OK D  Q  ; ck DA for error?
 | 
|---|
 | 42 |  . N I W !!,"Saving ..." D NEW^GMPLSAVE
 | 
|---|
 | 43 |  . S I=$S(GMPLIST(0)'>0:1,GMPARAM("REV"):$O(GMPLIST(0))-.01,1:GMPLIST(0)+1)
 | 
|---|
 | 44 |  . S GMPLIST(I)=DA,GMPLIST("B",DA)=I,GMPLIST(0)=$G(GMPLIST(0))+1
 | 
|---|
 | 45 |  . W " done."
 | 
|---|
 | 46 |  ; Not ok -- edit values, ask again
 | 
|---|
 | 47 |  F GMPI=1:1:GMPFLD("FLD",0) D @(GMPFLD("FLD",GMPI)_"^GMPLEDT1") Q:$D(GMPQUIT)!($D(GMPSAVED))  I $G(GMPLJUMP) S GMPI=GMPLJUMP-1 S GMPLJUMP=0 ; reset GMPI to desired fld
 | 
|---|
 | 48 |  Q:$D(DTOUT)  K GMPQUIT,DUOUT G ADD3
 | 
|---|
 | 49 |  Q
 | 
|---|
 | 50 |  ;
 | 
|---|
 | 51 |  ; *********************************************************************
 | 
|---|
 | 52 |  ; *  GMPIFN expected for the following calls:
 | 
|---|
 | 53 |  ;
 | 
|---|
 | 54 | STATUS ; -- inactivate problem
 | 
|---|
 | 55 |  N DIE,DA,DR,X,Y,CHNGE,GMPFLD,PROMPT,DEFAULT
 | 
|---|
 | 56 |  S GMPFLD(.13)=$P($G(^AUPNPROB(GMPIFN,0)),U,13) ; Onset
 | 
|---|
 | 57 |  W !!,$$PROBTEXT^GMPLX(GMPIFN) D RESOLVED^GMPLEDT4 Q:$D(GMPQUIT)
 | 
|---|
 | 58 |  S PROMPT="COMMENT (<60 char): ",DEFAULT="" D EDNOTE^GMPLEDT4 Q:$D(GMPQUIT)
 | 
|---|
 | 59 |  W ! I Y'="" S GMPFLD(10,"NEW",1)=Y D NEWNOTE^GMPLSAVE W "."
 | 
|---|
 | 60 |  S DIE="^AUPNPROB(",DR=".12///I;1.07////"_$P($G(GMPFLD(1.07)),U)
 | 
|---|
 | 61 |  S DA=GMPIFN D ^DIE W "."
 | 
|---|
 | 62 |  S CHNGE=GMPIFN_"^.12^"_$$HTFM^XLFDT($H)_U_DUZ_"^A^I^^"_+$G(GMPROV)
 | 
|---|
 | 63 |  D AUDIT^GMPLX(CHNGE,"") W "." ; audit trail
 | 
|---|
 | 64 |  D DTMOD^GMPLX(GMPIFN) W "." ; update Dt Last Mod
 | 
|---|
 | 65 |  W "... inactivated!",!
 | 
|---|
 | 66 |  H 1 S GMPSAVED=1
 | 
|---|
 | 67 |  Q
 | 
|---|
 | 68 |  ;
 | 
|---|
 | 69 | NEWNOTE ; -- add a new comment
 | 
|---|
 | 70 |  N GMPFLD
 | 
|---|
 | 71 |  W !!,$$PROBTEXT^GMPLX(GMPIFN)
 | 
|---|
 | 72 |  I '$$CODESTS^GMPLX(GMPIFN,DT) W !,"is inactive.  Edit the problem before adding comments.",! H 2 Q
 | 
|---|
 | 73 |  D NOTE^GMPLEDT1 Q:$D(GMPQUIT)!($D(GMPFLD(10,"NEW"))'>9)
 | 
|---|
 | 74 |  D NEWNOTE^GMPLSAVE,DTMOD^GMPLX(GMPIFN)
 | 
|---|
 | 75 |  S GMPSAVED=1
 | 
|---|
 | 76 |  Q
 | 
|---|
 | 77 |  ;
 | 
|---|
 | 78 | DELETE ; -- delete a problem
 | 
|---|
 | 79 |  N PROMPT,DEFAULT,X,Y,CHNGE,GMPFLD
 | 
|---|
 | 80 |  W !!,$$PROBTEXT^GMPLX(GMPIFN)
 | 
|---|
 | 81 |  S PROMPT="REASON FOR REMOVAL: ",DEFAULT=""
 | 
|---|
 | 82 |  D EDNOTE^GMPLEDT4 Q:$D(GMPQUIT)  W !
 | 
|---|
 | 83 |  I Y'="" S GMPFLD(10,"NEW",1)=Y D NEWNOTE^GMPLSAVE W "."
 | 
|---|
 | 84 |  S CHNGE=GMPIFN_"^1.02^"_$$HTFM^XLFDT($H)_U_DUZ_"^P^H^Deleted^"_+$G(GMPROV)
 | 
|---|
 | 85 |  S $P(^AUPNPROB(GMPIFN,1),U,2)="H",GMPSAVED=1 W "."
 | 
|---|
 | 86 |  D AUDIT^GMPLX(CHNGE,""),DTMOD^GMPLX(GMPIFN) W "."
 | 
|---|
 | 87 |  W "... removed!",! H 1
 | 
|---|
 | 88 |  Q
 | 
|---|
 | 89 |  ;
 | 
|---|
 | 90 | VERIFY ; -- verify a transcribed problem, if parameter on
 | 
|---|
 | 91 |  N NOW,CHNGE S NOW=$$HTFM^XLFDT($H)
 | 
|---|
 | 92 |  W !!,$$PROBTEXT^GMPLX(GMPIFN),!
 | 
|---|
 | 93 |  I '$$CODESTS^GMPLX(GMPIFN,DT) W "has an inactive ICD9 code. Edit the problem before verification.",! H 2 Q
 | 
|---|
 | 94 |  I $P($G(^AUPNPROB(GMPIFN,1)),U,2)'="T" W "does not require verification.",! H 2 Q
 | 
|---|
 | 95 |  L +^AUPNPROB(GMPIFN,0):1 I '$T W $C(7),$$LOCKED^GMPLX,! H 2 Q
 | 
|---|
 | 96 |  S $P(^AUPNPROB(GMPIFN,1),U,2)="P",GMPSAVED=1 W "."
 | 
|---|
 | 97 |  S CHNGE=GMPIFN_"^1.02^"_NOW_U_DUZ_"^T^P^Verified^"_DUZ W "."
 | 
|---|
 | 98 |  D AUDIT^GMPLX(CHNGE,""),DTMOD^GMPLX(GMPIFN) W "."
 | 
|---|
 | 99 |  L -^AUPNPROB(GMPIFN,0) W " verified.",!
 | 
|---|
 | 100 |  Q
 | 
|---|
 | 101 | ICDMSG ; If Lexicon returns ICD code 799.9
 | 
|---|
 | 102 |  N DIR,DTOUT,DUOUT
 | 
|---|
 | 103 |  S DIR(0)="YAO"
 | 
|---|
 | 104 |  S DIR("A",1)="<< If you PROCEED WITH THIS NON SPECIFIC TERM, an ICD CODE OF 799.9 >>"
 | 
|---|
 | 105 |  S DIR("A",2)="<< OTHER UNKNOWN AND UNSPECIFIED CAUSE OF MORBIDITY OR MORTALITY    >>"
 | 
|---|
 | 106 |  S DIR("A",3)="<< will be assigned.  Adding more specificity to your diagnosis may >>"
 | 
|---|
 | 107 |  S DIR("A",4)="<< allow a more accurate ICD code.                                  >>"
 | 
|---|
 | 108 |  S DIR("A",5)=""
 | 
|---|
 | 109 |  S DIR("A")="Continue (YES/NO) ",DIR("B")="NO"
 | 
|---|
 | 110 |  S DIR("T")=DTIME
 | 
|---|
 | 111 |  D ^DIR
 | 
|---|
 | 112 |  I $D(DTOUT)!$D(DUOUT) S Y=0
 | 
|---|
 | 113 |  I +Y=0 S (GMPLY,GMPROB)=""
 | 
|---|
 | 114 |  Q
 | 
|---|