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

GMPL1.m

Go to the documentation of this file.
  1. GMPL1 ; SLC/MKB/AJB/TC -- Problem List actions ; 04/22/03 [5/24/12 9:35am]
  1. ;;2.0;Problem List;**3,20,28,43**;Aug 25, 1994;Build 4
  1. ; 10 MAR 2000 - MA - Added to the routine another user prompt
  1. ; to backup and refine Lexicon search if ICD code 799.9
  1. ADD ;add new entry to list - Requires GMPDFN
  1. N GMPROB,GMPTERM,GMPICD,Y,DUP W !
  1. S GMPROB=$$TEXT^GMPLEDT4("") I GMPROB="^" S GMPQUIT=1 Q
  1. I 'GMPARAM("CLU")!('$D(GMPLUSER)&('$D(^XUSEC("GMPL ICD CODE",DUZ)))) S GMPTERM="",GMPICD="799.9" G ADD1
  1. F D Q:$D(GMPQUIT)!(+$G(Y))
  1. . D SEARCH^GMPLX(.GMPROB,.Y,"PROBLEM: ","1")
  1. . I +Y'>0 S GMPQUIT=1 Q
  1. . S DUP=$$DUPL^GMPLX(+GMPDFN,+Y,GMPROB)
  1. . I DUP,'$$DUPLOK^GMPLX(DUP) S (Y,GMPROB)=""
  1. . I +Y=1 D ICDMSG
  1. Q:$D(GMPQUIT)
  1. S GMPTERM=$S(+$G(Y)>1:Y,1:""),GMPICD=$G(Y(1))
  1. S:'$L(GMPICD) GMPICD="799.9"
  1. ADD1 ; set up default values
  1. ; -- May enter here with GMPROB=text,GMPICD=code,GMPTERM=#^term
  1. ; added for Code Set Versioning (CSV)
  1. I '+$$STATCHK^ICDAPIU(GMPICD,DT) W !,GMPROB,!,"has an inactive code. Please edit before adding." H 3 Q
  1. N OK,GMPI,GMPFLD K GMPLJUMP
  1. S GMPFLD(1.01)=GMPTERM,GMPFLD(.05)=U_GMPROB
  1. ;S GMPFLD(.01)=$O(^ICD9("AB",GMPICD_" ",0))_U_GMPICD
  1. S GMPFLD(.01)=$P($$CODEN^ICDCODE(GMPICD,80),"~")_U_GMPICD ; Replacing direct global read to ^ICD9
  1. S:'GMPFLD(.01)!($P(GMPFLD(.01),U)<0) GMPFLD(.01)=$$NOS^GMPLX ; cannot resolve code
  1. S (GMPFLD(1.04),GMPFLD(1.05))=$G(GMPROV),GMPFLD(1.03)=DUZ
  1. S GMPFLD(1.06)=$$SERVICE^GMPLX1(+GMPFLD(1.04)),GMPFLD(1.08)=$G(GMPCLIN)
  1. S (GMPFLD(.08),GMPFLD(1.09))=DT_U_$$EXTDT^GMPLX(DT)
  1. S GMPFLD(.12)="A^ACTIVE",GMPFLD(1.14)="",GMPFLD(10,0)=0
  1. S GMPFLD(1.02)=$S('$G(GMPARAM("VER")):"P",$D(GMPLUSER):"P",1:"T")
  1. S (GMPFLD(.13),GMPFLD(1.07))="" ; initialize dates
  1. S GMPFLD(1.1)=$S('GMPSC:"0^NO",1:""),GMPFLD(1.11)=$S('GMPAGTOR:"0^NO",1:"")
  1. S GMPFLD(1.12)=$S('GMPION:"0^NO",1:""),GMPFLD(1.13)=$S('GMPGULF:"0^NO",1:"")
  1. ADD2 ; prompt for values
  1. D FLDS^GMPLEDT3 ; set GMPFLD("FLD") of editable fields
  1. F GMPI=2:1:7 D @(GMPFLD("FLD",GMPI)_"^GMPLEDT1") Q:$D(GMPQUIT) K GMPLJUMP ; cannot ^-jump here
  1. Q:$D(GMPQUIT)
  1. ADD3 ; Ok to save?
  1. S OK=$$ACCEPT^GMPLDIS1(.GMPFLD),GMPLJUMP=0 ; ok to save values?
  1. I OK="^" W !!?10,"< Nothing Saved !! >",! S GMPQUIT=1 H 1 Q
  1. I OK D Q ; ck DA for error?
  1. . N I W !!,"Saving ..." D NEW^GMPLSAVE
  1. . S I=$S(GMPLIST(0)'>0:1,GMPARAM("REV"):$O(GMPLIST(0))-.01,1:GMPLIST(0)+1)
  1. . S GMPLIST(I)=DA,GMPLIST("B",DA)=I,GMPLIST(0)=$G(GMPLIST(0))+1
  1. . W " done."
  1. ; Not ok -- edit values, ask again
  1. 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
  1. Q:$D(DTOUT) K GMPQUIT,DUOUT G ADD3
  1. Q
  1. ;
  1. ; *********************************************************************
  1. ; * GMPIFN expected for the following calls:
  1. ;
  1. STATUS ; -- inactivate problem
  1. N DIE,DA,DR,X,Y,CHNGE,GMPFLD,PROMPT,DEFAULT
  1. S GMPFLD(.13)=$P($G(^AUPNPROB(GMPIFN,0)),U,13) ; Onset
  1. W !!,$$PROBTEXT^GMPLX(GMPIFN) D RESOLVED^GMPLEDT4 Q:$D(GMPQUIT)
  1. S PROMPT="COMMENT (<60 char): ",DEFAULT="" D EDNOTE^GMPLEDT4 Q:$D(GMPQUIT)
  1. W ! I Y'="" S GMPFLD(10,"NEW",1)=Y D NEWNOTE^GMPLSAVE W "."
  1. S DIE="^AUPNPROB(",DR=".12///I;1.07////"_$P($G(GMPFLD(1.07)),U)
  1. S DA=GMPIFN D ^DIE W "."
  1. S CHNGE=GMPIFN_"^.12^"_$$HTFM^XLFDT($H)_U_DUZ_"^A^I^^"_+$G(GMPROV)
  1. D AUDIT^GMPLX(CHNGE,"") W "." ; audit trail
  1. D DTMOD^GMPLX(GMPIFN) W "." ; update Dt Last Mod
  1. W "... inactivated!",!
  1. H 1 S GMPSAVED=1
  1. Q
  1. ;
  1. NEWNOTE ; -- add a new comment
  1. N GMPFLD
  1. W !!,$$PROBTEXT^GMPLX(GMPIFN)
  1. I '$$CODESTS^GMPLX(GMPIFN,DT) W !,"is inactive. Edit the problem before adding comments.",! H 2 Q
  1. D NOTE^GMPLEDT1 Q:$D(GMPQUIT)!($D(GMPFLD(10,"NEW"))'>9)
  1. D NEWNOTE^GMPLSAVE,DTMOD^GMPLX(GMPIFN)
  1. S GMPSAVED=1
  1. Q
  1. ;
  1. DELETE ; -- delete a problem
  1. N PROMPT,DEFAULT,X,Y,CHNGE,GMPFLD
  1. W !!,$$PROBTEXT^GMPLX(GMPIFN)
  1. S PROMPT="REASON FOR REMOVAL: ",DEFAULT=""
  1. D EDNOTE^GMPLEDT4 Q:$D(GMPQUIT) W !
  1. I Y'="" S GMPFLD(10,"NEW",1)=Y D NEWNOTE^GMPLSAVE W "."
  1. S CHNGE=GMPIFN_"^1.02^"_$$HTFM^XLFDT($H)_U_DUZ_"^P^H^Deleted^"_+$G(GMPROV)
  1. S $P(^AUPNPROB(GMPIFN,1),U,2)="H",GMPSAVED=1 W "."
  1. D AUDIT^GMPLX(CHNGE,""),DTMOD^GMPLX(GMPIFN) W "."
  1. W "... removed!",! H 1
  1. Q
  1. ;
  1. VERIFY ; -- verify a transcribed problem, if parameter on
  1. N NOW,CHNGE S NOW=$$HTFM^XLFDT($H)
  1. W !!,$$PROBTEXT^GMPLX(GMPIFN),!
  1. I '$$CODESTS^GMPLX(GMPIFN,DT) W "has an inactive ICD9 code. Edit the problem before verification.",! H 2 Q
  1. I $P($G(^AUPNPROB(GMPIFN,1)),U,2)'="T" W "does not require verification.",! H 2 Q
  1. L +^AUPNPROB(GMPIFN,0):1 I '$T W $C(7),$$LOCKED^GMPLX,! H 2 Q
  1. S $P(^AUPNPROB(GMPIFN,1),U,2)="P",GMPSAVED=1 W "."
  1. S CHNGE=GMPIFN_"^1.02^"_NOW_U_DUZ_"^T^P^Verified^"_DUZ W "."
  1. D AUDIT^GMPLX(CHNGE,""),DTMOD^GMPLX(GMPIFN) W "."
  1. L -^AUPNPROB(GMPIFN,0) W " verified.",!
  1. Q
  1. ICDMSG ; If Lexicon returns ICD code 799.9
  1. N DIR,DTOUT,DUOUT
  1. S DIR(0)="YAO"
  1. S DIR("A",1)="<< If you PROCEED WITH THIS NON SPECIFIC TERM, an ICD CODE OF 799.9 >>"
  1. S DIR("A",2)="<< OTHER UNKNOWN AND UNSPECIFIED CAUSE OF MORBIDITY OR MORTALITY >>"
  1. S DIR("A",3)="<< will be assigned. Adding more specificity to your diagnosis may >>"
  1. S DIR("A",4)="<< allow a more accurate ICD code. >>"
  1. S DIR("A",5)=""
  1. S DIR("A")="Continue (YES/NO) ",DIR("B")="NO"
  1. S DIR("T")=DTIME
  1. D ^DIR
  1. I $D(DTOUT)!$D(DUOUT) S Y=0
  1. I +Y=0 S (GMPLY,GMPROB)=""
  1. Q