LEXQDRG ;ISL/KER - Query - DRG Calc. ;12/19/2014
 ;;2.0;LEXICON UTILITY;**86**;Sep 23, 1996;Build 1
 ;               
 ; Global Variables
 ;    ^XTMP(ID)           SACC 2.3.2.5.2
 ;               
 ; External References
 ;    HOME^%ZIS           ICR  10086
 ;    $$GET1^DIQ          ICR   2056
 ;    ^DIR                ICR  10026
 ;    ^ICDDRG             ICR    371
 ;    $$DT^XLFDT          ICR  10103
 ;    $$FMADD^XLFDT       ICR  10103
 ;    $$UP^XLFSTR         ICR  10104
 ;               
 ; Non-Namespaced variables used
 ; 
 ;   ICDDATE    Effective Date                         nnnnnnn
 ;   ICDEXP     Patient died during episode of care    1/0
 ;   ICDTRS     Was patient transferred to acute care  1/0
 ;   ICDDMS     Patient discharged against med advice  1/0
 ;   SEX        Patient's Sex (pre-surgical)           M/F
 ;   AGE        Patient's Age                          Numeric
 ;   ICDDX(1)   ICD Principal Diagnosis file 80        IEN
 ;   ICDDX(n)   ICD Secondary Diagnosis file 80        IENs
 ;   ICDPRC(n)  ICD Procedures file 80.1               IENs
 ;   ICDPOA(n)  Presence on Admission     (Y,N,W,U or BLANK)
 ; 
EN ; Main Entry Point
 N AGE,DIC,DIR,DIROUT,DIRUT,DTOUT,DUOUT,ICDDATE,ICDDMS,ICDDRG,ICDDX,ICDEXP,ICDPOA
 N ICDPRC,ICDTRS,LEX,LEXB,LEXBG,LEXC,LEXCUR,LEXENV,LEXF,LEXGDAT,LEXHAS
 N LEXI,LEXID,LEXIEN,LEXIT,LEXLS,LEXN,LEXOK,LEXPTF,LEXS,LEXV,LEXX,SEX,X,Y
 S LEXENV=$$EV Q:'$L(LEXENV)
 S U="^",(LEXOK,LEXPTF,LEXCUR)=0 S:$D(LEXDEV) LEXPTF=$$PAT
 I +LEXPTF'>0,$L($P(LEXPTF,"^",2)) W !!,"   ",$P(LEXPTF,"^",2) Q
 I LEXPTF>0 D EN^LEXQDRG3  Q
 S LEXHAS=$$HASPRE^LEXQDRG2 S:LEXHAS>0 LEXCUR=$$UC S:LEXCUR>0 LEXOK=$$GETPRE^LEXQDRG2
 I LEXCUR>0,LEXOK'>0,$L($P(LEXOK,"^",2)) W !!,"   ",$P(LEXOK,"^",2) Q
 I LEXCUR>0,LEXOK'>0 W !!,"   Missing or invalid input variables" Q
 S:LEXCUR'>0 LEXOK=$$ASK I +LEXOK'>0 D  Q
 . I $L($P(LEXOK,"^",2)) W !!,"   ",$P(LEXOK,"^",2) Q
 . W !!,"   Missing or invalid input variables"
 D ^ICDDRG I +($G(ICDDRG))>0 D
 . W:$L($G(IOF)) @IOF D DCD^LEXQDRG4,WRT^LEXQDRG4($G(ICDDRG),$G(ICDDATE))
 Q
UC(X) ; Use Previously Saved Values
 N DIR,DIROUT,DIRUT,DTOUT,DUOUT,LEXB,LEXF,LEXID,LEXN,LEXV,Y
 S LEXID="LEXQDRG "_$G(DUZ)_" UC"
 S LEXN=$$DT^XLFDT,LEXF=$$FMADD^XLFDT(LEXN,60)
 S DIR(0)="YAO",DIR("A")=" Use previously saved values:  (Y/N)  "
 S (X,DIR("PRE"))="S X=$$UCP^LEXQDRG($G(X))"
 S LEXB=$G(^XTMP(LEXID,"UC")) S:$L(LEXB) DIR("B")=LEXB
 D ^DIR Q:$D(DTOUT) "-1^'Use previously saved values' selection timed-out"
 I $D(DIROUT)!($D(DIRUT))!($D(DUOUT)) D  Q X
 . S X="-1^'Use previously saved values' selection aborted"
 S:"^0^1^"'[("^"_Y_"^") Y="^"
 Q:"^0^1^"'[("^"_Y_"^") "-1^'Use previously saved values' selection aborted"
 S X=Y,LEXV=$S(Y="0":"No",Y="1":"Yes",1:"") I $L(LEXV) D
 . S ^XTMP(LEXID,0)=LEXF_"^"_LEXN_"^Use Previous"
 . S ^XTMP(LEXID,"UC")=LEXV
 Q X
UCP(X) ; Use Previously Saved Values (Preprocess)
 S X=$G(X) Q:'$L(X) ""  Q:X["?" "??"
 I $G(DIR(0))["YAO",$E(X,1)'="^","^Y^N^"'[("^"_$$UP^XLFSTR($E(X,1)_"^")) Q "??"
 Q X
ASK(X) ; Ask for input parameters
 N LEXIMP S LEXIMP=$$IMPDATE^LEXU(30)
 S X=$$EFF^LEXQDRG3 Q:X'?7N X S (LEXGDAT,ICDDATE)=X
 I ICDDATE<LEXIMP S X=$$AGE Q:X'?1N.N!(X["^") X S AGE=X
 S X=$$SEX Q:"^M^F^"'[("^"_X_"^") X S SEX=X
 S X=$$EXP Q:"^1^0^"'[("^"_X_"^") X S ICDEXP=X
 S:$G(ICDEXP)>0 (ICDDMS,ICDTRS)=0
 I $G(ICDEXP)'>0 S X=$$DMS Q:"^1^0^"'[("^"_X_"^") X S ICDDMS=X
 I $G(ICDEXP)'>0 S X=$$TRS Q:"^1^0^"'[("^"_X_"^") X S ICDTRS=X
 K ICDDX W ! S X=$$PDX^LEXQDRG2(ICDDATE) Q:+X'>0 X  W ! S X=$$SEC^LEXQDRG2(ICDDATE) Q:+X'>0 X
 K ICDDX("B") K ICDPRC W ! S X=$$PRO^LEXQDRG2(ICDDATE) Q:+X'>0 X  K ICDPRC("B")
 Q 1
AGE(X) ;   What is the patient's age
 N DIR,DIROUT,DIRUT,DTOUT,DUOUT,LEXB,LEXF,LEXID,LEXN,LEXX,Y
 S LEXN=$$DT^XLFDT,LEXF=$$FMADD^XLFDT(LEXN,60),LEXID="LEXQDRG "_$G(DUZ)_" AGE"
 S LEXB=$G(^XTMP(LEXID,"PRE")) S:LEXB>0 DIR("B")=LEXB
 S DIR(0)="NOA^0:124:0",DIR("A")=" Enter the patient's age:  (0-124)  "
 S (DIR("?"),DIR("??"))="^D AGEH^LEXQDRG"
 S DIR("PRE")="S:X[""?"" X=""??"" S LEXX=X"
 D ^DIR Q:X["^"!($D(DIROUT))!($D(DIRUT))!($D(DTOUT))!($D(DUOUT)) "^"
 W:'$L($G(LEXX))&(+Y>0)&(+Y<125) +Y," year",$S(X>1:"s",1:"")," old"
 W:$L($G(LEXX))&(+Y>0)&(+Y<125) " year",$S(X>1:"s",1:"")," old"
 I +Y>0 S ^XTMP(LEXID,0)=LEXF_"^"_LEXN_"^Previous",^XTMP(LEXID,"PRE")=Y
 S X=Y
 Q X
AGEH ;   What is the patient's age Help
 W !,"   Enter the patient's age, 0-124."
 Q
SEX(X) ;   What is the sex of the patient
 N DIR,DIROUT,DIRUT,DTOUT,DUOUT,LEXB,LEXF,LEXID,LEXN,Y
 S LEXN=$$DT^XLFDT,LEXF=$$FMADD^XLFDT(LEXN,60),LEXID="LEXQDRG "_$G(DUZ)_" SEX"
 S LEXB=$G(^XTMP(LEXID,"PRE")) S:'$L(LEXB) LEXB="Male"
 S LEXB=$S(LEXB="M":"Male",LEXB="F":"Female",1:"") S:$L(LEXB) DIR("B")=LEXB
 S DIR(0)="SAO^M:Male;F:Female",DIR("A")=" Enter the patient's sex:  (M/F)  "
 S (DIR("??"),DIR("?"))="^D SEXH^LEXQDRG"
 S DIR("PRE")="S X=$$UP^XLFSTR(X) S:$E(X,1)'=""M""&($E(X,1)'=""F"")&($L(X)) X=""??"" S:X[""?"" X=""??"""
 D ^DIR Q:X["^"!($D(DIROUT))!($D(DIRUT))!($D(DTOUT))!($D(DUOUT)) "^"
 I "^M^F^"[("^"_Y_"^") S ^XTMP(LEXID,0)=LEXF_"^"_LEXN_"^Previous",^XTMP(LEXID,"PRE")=Y
 S X=Y
 Q X
SEXH ;   What is the sex of the patient Help
 W !,"   Answer M for Male or F for Female."
 Q
DMS(X) ;   Discharged against medical advice
 N DIR,DIROUT,DIRUT,DTOUT,DUOUT,LEXB,LEXF,LEXID,LEXN,Y
 S LEXN=$$DT^XLFDT,LEXF=$$FMADD^XLFDT(LEXN,60),LEXID="LEXQDRG "_$G(DUZ)_" DMS"
 S LEXB=$G(^XTMP(LEXID,"PRE")),LEXB=$S(LEXB="1":"YES",LEXB="0":"NO",1:"") S:$L(LEXB) DIR("B")=LEXB
 S DIR(0)="YAO",DIR("A")=" Was the patient discharged against medical advice?  (Y/N)  "
 S DIR("?")="   Answer YES if the patient was discharged against medical advice."
 S DIR("PRE")="S:X[""?"" X=""?""" D ^DIR
 Q:$D(DTOUT) "0^'Discharged against medical advice' selection timed-out"
 I $D(DIROUT)!($D(DIRUT))!($D(DUOUT))!("^1^0^"'[("^"_Y_"^")) D  Q X
 . S X="0^'Discharged against medical advice' selection aborted"
 I "^1^0^"[("^"_Y_"^") S ^XTMP(LEXID,0)=LEXF_"^"_LEXN_"^Previous",^XTMP(LEXID,"PRE")=Y
 S X=Y
 Q X
TRS(X) ;   Was the patient transferred to acute care
 N DIR,DIROUT,DIRUT,DTOUT,DUOUT,LEXB,LEXF,LEXID,LEXN,Y
 S LEXN=$$DT^XLFDT,LEXF=$$FMADD^XLFDT(LEXN,60),LEXID="LEXQDRG "_$G(DUZ)_" TRS"
 S LEXB=$G(^XTMP(LEXID,"PRE")),LEXB=$S(LEXB="1":"YES",LEXB="0":"NO",1:"") S:$L(LEXB) DIR("B")=LEXB
 S DIR(0)="YAO",DIR("A")=" Was the patient transferred to an acute care facility?  (Y/N)  "
 S DIR("?")="   Answer YES if the patient was transferred to an acute care facility."
 S DIR("PRE")="S:X[""?"" X=""?"""
 D ^DIR Q:$D(DTOUT) "0^'Was the patient transferred to acute care' selection timed-out"
 I $D(DIROUT)!($D(DIRUT))!($D(DUOUT))!("^1^0^"'[("^"_Y_"^")) D  Q X
 . S X="0^'Was the patient transferred to acute care' selection aborted"
 I "^1^0^"[("^"_Y_"^") S ^XTMP(LEXID,0)=LEXF_"^"_LEXN_"^Previous",^XTMP(LEXID,"PRE")=Y
 S X=Y
 Q X
EXP(X) ;   Did the patient die during episode of care
 N DIR,DIROUT,DIRUT,DTOUT,DUOUT,LEXB,LEXF,LEXID,LEXN,Y
 S LEXN=$$DT^XLFDT,LEXF=$$FMADD^XLFDT(LEXN,60),LEXID="LEXQDRG "_$G(DUZ)_" EXP"
 S LEXB=$G(^XTMP(LEXID,"PRE")),LEXB=$S(LEXB="1":"YES",LEXB="0":"NO",1:"") S:$L(LEXB) DIR("B")=LEXB
 S DIR(0)="YAO",DIR("A")=" Did the patient die during this episode of care?    (Y/N)  "
 S DIR("?")="   Answer YES if the patient died during this episode of care."
 S DIR("PRE")="S:X[""?"" X=""?""" D ^DIR
 Q:$D(DTOUT) "0^'Did the patient die during episode of care' selection timed-out"
 I $D(DIROUT)!($D(DIRUT))!($D(DUOUT))!("^1^0^"'[("^"_Y_"^")) D  Q X
 . S X="0^'Did the patient die during episode of care' selection aborted"
 I "^1^0^"[("^"_Y_"^") S ^XTMP(LEXID,0)=LEXF_"^"_LEXN_"^Previous",^XTMP(LEXID,"PRE")=Y
 S X=Y
 Q X
PAT(X) ;   Patient
 N DIR,DIROUT,DIRUT,DTOUT,DUOUT,LEXB,LEXF,LEXID,LEXN,Y
 S LEXN=$$DT^XLFDT,LEXF=$$FMADD^XLFDT(LEXN,60),LEXID="LEXQDRG "_$G(DUZ)_" PAT"
 S LEXB=$G(^XTMP(LEXID,"PRE")),LEXB=$S(LEXB="1":"YES",1:"NO") S:$L(LEXB) DIR("B")=LEXB
 S DIR(0)="YAO",DIR("A")=" Calculate DRGs for a Registered Patient?  (Y/N)  "
 S DIR("?")="Enter 'Yes' if the patient has been previously registered, enter 'No' for other patient."
 S DIR("PRE")="S:X[""?"" X=""?""" D ^DIR
 Q:$D(DTOUT) "0^'Calculate DRGs for a Registered Patient' selection timed-out"
 I $D(DIROUT)!($D(DIRUT))!($D(DUOUT))!("^1^0^"'[("^"_Y_"^")) D  Q X
 . S X="0^'Calculate DRGs for a Registered Patient' selection aborted"
 I "^1^0^"[("^"_Y_"^") S ^XTMP(LEXID,0)=LEXF_"^"_LEXN_"^Previous",^XTMP(LEXID,"PRE")=Y
 S X=Y
 Q X
SXTMP ;   Show ^XTMP DX/PR
 N LEXSYS F LEXSYS="ICD","ICP","10D","ICP" D
 . N LEXCT,LEXIN S LEXCT=0
 . F LEXIN=1:1:10 D
 . . N LEXNN,LEXNC,LEXID
 . . S LEXID="LEXQDRG "_+($G(DUZ))_" DX"_LEXIN_" "_LEXSYS
 . . S LEXNN="^XTMP("""_LEXID_""")",LEXNC="^XTMP("""_LEXID_""","
 . . F  S LEXNN=$Q(@LEXNN) Q:'$L(LEXNN)!(LEXNN'[LEXNC)  D
 . . . S LEXCT=LEXCT+1 W:LEXCT=1 ! W !,LEXNN,"=",@LEXNN
 . F LEXIN=1:1:10 D
 . . N LEXNN,LEXNC,LEXID S LEXID="LEXQDRG "_+($G(DUZ))_" PR"_LEXIN_" "_LEXSYS
 . . S LEXNN="^XTMP("""_LEXID_""")",LEXNC="^XTMP("""_LEXID_""","
 . . F  S LEXNN=$Q(@LEXNN) Q:'$L(LEXNN)!(LEXNN'[LEXNC)  D
 . . . S LEXCT=LEXCT+1 W:LEXCT=1 ! W !,LEXNN,"=",@LEXNN
 W !
 Q
EV(X) ;   Check environment
 N LEX,LEXDEV S DT=$$DT^XLFDT D HOME^%ZIS S U="^" I +($G(DUZ))=0 W !!,?5,"DUZ not defined" Q 0
 S LEX=$$GET1^DIQ(200,(DUZ_","),.01) I '$L(LEX) W !!,?5,"DUZ not valid" Q 0
 Q 1
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLEXQDRG   9415     printed  Sep 23, 2025@19:44:27                                                                                                                                                                                                     Page 2
LEXQDRG   ;ISL/KER - Query - DRG Calc. ;12/19/2014
 +1       ;;2.0;LEXICON UTILITY;**86**;Sep 23, 1996;Build 1
 +2       ;               
 +3       ; Global Variables
 +4       ;    ^XTMP(ID)           SACC 2.3.2.5.2
 +5       ;               
 +6       ; External References
 +7       ;    HOME^%ZIS           ICR  10086
 +8       ;    $$GET1^DIQ          ICR   2056
 +9       ;    ^DIR                ICR  10026
 +10      ;    ^ICDDRG             ICR    371
 +11      ;    $$DT^XLFDT          ICR  10103
 +12      ;    $$FMADD^XLFDT       ICR  10103
 +13      ;    $$UP^XLFSTR         ICR  10104
 +14      ;               
 +15      ; Non-Namespaced variables used
 +16      ; 
 +17      ;   ICDDATE    Effective Date                         nnnnnnn
 +18      ;   ICDEXP     Patient died during episode of care    1/0
 +19      ;   ICDTRS     Was patient transferred to acute care  1/0
 +20      ;   ICDDMS     Patient discharged against med advice  1/0
 +21      ;   SEX        Patient's Sex (pre-surgical)           M/F
 +22      ;   AGE        Patient's Age                          Numeric
 +23      ;   ICDDX(1)   ICD Principal Diagnosis file 80        IEN
 +24      ;   ICDDX(n)   ICD Secondary Diagnosis file 80        IENs
 +25      ;   ICDPRC(n)  ICD Procedures file 80.1               IENs
 +26      ;   ICDPOA(n)  Presence on Admission     (Y,N,W,U or BLANK)
 +27      ; 
EN        ; Main Entry Point
 +1        NEW AGE,DIC,DIR,DIROUT,DIRUT,DTOUT,DUOUT,ICDDATE,ICDDMS,ICDDRG,ICDDX,ICDEXP,ICDPOA
 +2        NEW ICDPRC,ICDTRS,LEX,LEXB,LEXBG,LEXC,LEXCUR,LEXENV,LEXF,LEXGDAT,LEXHAS
 +3        NEW LEXI,LEXID,LEXIEN,LEXIT,LEXLS,LEXN,LEXOK,LEXPTF,LEXS,LEXV,LEXX,SEX,X,Y
 +4        SET LEXENV=$$EV
           if '$LENGTH(LEXENV)
               QUIT 
 +5        SET U="^"
           SET (LEXOK,LEXPTF,LEXCUR)=0
           if $DATA(LEXDEV)
               SET LEXPTF=$$PAT
 +6        IF +LEXPTF'>0
               IF $LENGTH($PIECE(LEXPTF,"^",2))
                   WRITE !!,"   ",$PIECE(LEXPTF,"^",2)
                   QUIT 
 +7        IF LEXPTF>0
               DO EN^LEXQDRG3
               QUIT 
 +8        SET LEXHAS=$$HASPRE^LEXQDRG2
           if LEXHAS>0
               SET LEXCUR=$$UC
           if LEXCUR>0
               SET LEXOK=$$GETPRE^LEXQDRG2
 +9        IF LEXCUR>0
               IF LEXOK'>0
                   IF $LENGTH($PIECE(LEXOK,"^",2))
                       WRITE !!,"   ",$PIECE(LEXOK,"^",2)
                       QUIT 
 +10       IF LEXCUR>0
               IF LEXOK'>0
                   WRITE !!,"   Missing or invalid input variables"
                   QUIT 
 +11       if LEXCUR'>0
               SET LEXOK=$$ASK
           IF +LEXOK'>0
               Begin DoDot:1
 +12               IF $LENGTH($PIECE(LEXOK,"^",2))
                       WRITE !!,"   ",$PIECE(LEXOK,"^",2)
                       QUIT 
 +13               WRITE !!,"   Missing or invalid input variables"
               End DoDot:1
               QUIT 
 +14       DO ^ICDDRG
           IF +($GET(ICDDRG))>0
               Begin DoDot:1
 +15               if $LENGTH($GET(IOF))
                       WRITE @IOF
                   DO DCD^LEXQDRG4
                   DO WRT^LEXQDRG4($GET(ICDDRG),$GET(ICDDATE))
               End DoDot:1
 +16       QUIT 
UC(X)     ; Use Previously Saved Values
 +1        NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,LEXB,LEXF,LEXID,LEXN,LEXV,Y
 +2        SET LEXID="LEXQDRG "_$GET(DUZ)_" UC"
 +3        SET LEXN=$$DT^XLFDT
           SET LEXF=$$FMADD^XLFDT(LEXN,60)
 +4        SET DIR(0)="YAO"
           SET DIR("A")=" Use previously saved values:  (Y/N)  "
 +5        SET (X,DIR("PRE"))="S X=$$UCP^LEXQDRG($G(X))"
 +6        SET LEXB=$GET(^XTMP(LEXID,"UC"))
           if $LENGTH(LEXB)
               SET DIR("B")=LEXB
 +7        DO ^DIR
           if $DATA(DTOUT)
               QUIT "-1^'Use previously saved values' selection timed-out"
 +8        IF $DATA(DIROUT)!($DATA(DIRUT))!($DATA(DUOUT))
               Begin DoDot:1
 +9                SET X="-1^'Use previously saved values' selection aborted"
               End DoDot:1
               QUIT X
 +10       if "^0^1^"'[("^"_Y_"^")
               SET Y="^"
 +11       if "^0^1^"'[("^"_Y_"^")
               QUIT "-1^'Use previously saved values' selection aborted"
 +12       SET X=Y
           SET LEXV=$SELECT(Y="0":"No",Y="1":"Yes",1:"")
           IF $LENGTH(LEXV)
               Begin DoDot:1
 +13               SET ^XTMP(LEXID,0)=LEXF_"^"_LEXN_"^Use Previous"
 +14               SET ^XTMP(LEXID,"UC")=LEXV
               End DoDot:1
 +15       QUIT X
UCP(X)    ; Use Previously Saved Values (Preprocess)
 +1        SET X=$GET(X)
           if '$LENGTH(X)
               QUIT ""
           if X["?"
               QUIT "??"
 +2        IF $GET(DIR(0))["YAO"
               IF $EXTRACT(X,1)'="^"
                   IF "^Y^N^"'[("^"_$$UP^XLFSTR($EXTRACT(X,1)_"^"))
                       QUIT "??"
 +3        QUIT X
ASK(X)    ; Ask for input parameters
 +1        NEW LEXIMP
           SET LEXIMP=$$IMPDATE^LEXU(30)
 +2        SET X=$$EFF^LEXQDRG3
           if X'?7N
               QUIT X
           SET (LEXGDAT,ICDDATE)=X
 +3        IF ICDDATE<LEXIMP
               SET X=$$AGE
               if X'?1N.N!(X["^")
                   QUIT X
               SET AGE=X
 +4        SET X=$$SEX
           if "^M^F^"'[("^"_X_"^")
               QUIT X
           SET SEX=X
 +5        SET X=$$EXP
           if "^1^0^"'[("^"_X_"^")
               QUIT X
           SET ICDEXP=X
 +6        if $GET(ICDEXP)>0
               SET (ICDDMS,ICDTRS)=0
 +7        IF $GET(ICDEXP)'>0
               SET X=$$DMS
               if "^1^0^"'[("^"_X_"^")
                   QUIT X
               SET ICDDMS=X
 +8        IF $GET(ICDEXP)'>0
               SET X=$$TRS
               if "^1^0^"'[("^"_X_"^")
                   QUIT X
               SET ICDTRS=X
 +9        KILL ICDDX
           WRITE !
           SET X=$$PDX^LEXQDRG2(ICDDATE)
           if +X'>0
               QUIT X
           WRITE !
           SET X=$$SEC^LEXQDRG2(ICDDATE)
           if +X'>0
               QUIT X
 +10       KILL ICDDX("B")
           KILL ICDPRC
           WRITE !
           SET X=$$PRO^LEXQDRG2(ICDDATE)
           if +X'>0
               QUIT X
           KILL ICDPRC("B")
 +11       QUIT 1
AGE(X)    ;   What is the patient's age
 +1        NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,LEXB,LEXF,LEXID,LEXN,LEXX,Y
 +2        SET LEXN=$$DT^XLFDT
           SET LEXF=$$FMADD^XLFDT(LEXN,60)
           SET LEXID="LEXQDRG "_$GET(DUZ)_" AGE"
 +3        SET LEXB=$GET(^XTMP(LEXID,"PRE"))
           if LEXB>0
               SET DIR("B")=LEXB
 +4        SET DIR(0)="NOA^0:124:0"
           SET DIR("A")=" Enter the patient's age:  (0-124)  "
 +5        SET (DIR("?"),DIR("??"))="^D AGEH^LEXQDRG"
 +6        SET DIR("PRE")="S:X[""?"" X=""??"" S LEXX=X"
 +7        DO ^DIR
           if X["^"!($DATA(DIROUT))!($DATA(DIRUT))!($DATA(DTOUT))!($DATA(DUOUT))
               QUIT "^"
 +8        if '$LENGTH($GET(LEXX))&(+Y>0)&(+Y<125)
               WRITE +Y," year",$SELECT(X>1:"s",1:"")," old"
 +9        if $LENGTH($GET(LEXX))&(+Y>0)&(+Y<125)
               WRITE " year",$SELECT(X>1:"s",1:"")," old"
 +10       IF +Y>0
               SET ^XTMP(LEXID,0)=LEXF_"^"_LEXN_"^Previous"
               SET ^XTMP(LEXID,"PRE")=Y
 +11       SET X=Y
 +12       QUIT X
AGEH      ;   What is the patient's age Help
 +1        WRITE !,"   Enter the patient's age, 0-124."
 +2        QUIT 
SEX(X)    ;   What is the sex of the patient
 +1        NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,LEXB,LEXF,LEXID,LEXN,Y
 +2        SET LEXN=$$DT^XLFDT
           SET LEXF=$$FMADD^XLFDT(LEXN,60)
           SET LEXID="LEXQDRG "_$GET(DUZ)_" SEX"
 +3        SET LEXB=$GET(^XTMP(LEXID,"PRE"))
           if '$LENGTH(LEXB)
               SET LEXB="Male"
 +4        SET LEXB=$SELECT(LEXB="M":"Male",LEXB="F":"Female",1:"")
           if $LENGTH(LEXB)
               SET DIR("B")=LEXB
 +5        SET DIR(0)="SAO^M:Male;F:Female"
           SET DIR("A")=" Enter the patient's sex:  (M/F)  "
 +6        SET (DIR("??"),DIR("?"))="^D SEXH^LEXQDRG"
 +7        SET DIR("PRE")="S X=$$UP^XLFSTR(X) S:$E(X,1)'=""M""&($E(X,1)'=""F"")&($L(X)) X=""??"" S:X[""?"" X=""??"""
 +8        DO ^DIR
           if X["^"!($DATA(DIROUT))!($DATA(DIRUT))!($DATA(DTOUT))!($DATA(DUOUT))
               QUIT "^"
 +9        IF "^M^F^"[("^"_Y_"^")
               SET ^XTMP(LEXID,0)=LEXF_"^"_LEXN_"^Previous"
               SET ^XTMP(LEXID,"PRE")=Y
 +10       SET X=Y
 +11       QUIT X
SEXH      ;   What is the sex of the patient Help
 +1        WRITE !,"   Answer M for Male or F for Female."
 +2        QUIT 
DMS(X)    ;   Discharged against medical advice
 +1        NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,LEXB,LEXF,LEXID,LEXN,Y
 +2        SET LEXN=$$DT^XLFDT
           SET LEXF=$$FMADD^XLFDT(LEXN,60)
           SET LEXID="LEXQDRG "_$GET(DUZ)_" DMS"
 +3        SET LEXB=$GET(^XTMP(LEXID,"PRE"))
           SET LEXB=$SELECT(LEXB="1":"YES",LEXB="0":"NO",1:"")
           if $LENGTH(LEXB)
               SET DIR("B")=LEXB
 +4        SET DIR(0)="YAO"
           SET DIR("A")=" Was the patient discharged against medical advice?  (Y/N)  "
 +5        SET DIR("?")="   Answer YES if the patient was discharged against medical advice."
 +6        SET DIR("PRE")="S:X[""?"" X=""?"""
           DO ^DIR
 +7        if $DATA(DTOUT)
               QUIT "0^'Discharged against medical advice' selection timed-out"
 +8        IF $DATA(DIROUT)!($DATA(DIRUT))!($DATA(DUOUT))!("^1^0^"'[("^"_Y_"^"))
               Begin DoDot:1
 +9                SET X="0^'Discharged against medical advice' selection aborted"
               End DoDot:1
               QUIT X
 +10       IF "^1^0^"[("^"_Y_"^")
               SET ^XTMP(LEXID,0)=LEXF_"^"_LEXN_"^Previous"
               SET ^XTMP(LEXID,"PRE")=Y
 +11       SET X=Y
 +12       QUIT X
TRS(X)    ;   Was the patient transferred to acute care
 +1        NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,LEXB,LEXF,LEXID,LEXN,Y
 +2        SET LEXN=$$DT^XLFDT
           SET LEXF=$$FMADD^XLFDT(LEXN,60)
           SET LEXID="LEXQDRG "_$GET(DUZ)_" TRS"
 +3        SET LEXB=$GET(^XTMP(LEXID,"PRE"))
           SET LEXB=$SELECT(LEXB="1":"YES",LEXB="0":"NO",1:"")
           if $LENGTH(LEXB)
               SET DIR("B")=LEXB
 +4        SET DIR(0)="YAO"
           SET DIR("A")=" Was the patient transferred to an acute care facility?  (Y/N)  "
 +5        SET DIR("?")="   Answer YES if the patient was transferred to an acute care facility."
 +6        SET DIR("PRE")="S:X[""?"" X=""?"""
 +7        DO ^DIR
           if $DATA(DTOUT)
               QUIT "0^'Was the patient transferred to acute care' selection timed-out"
 +8        IF $DATA(DIROUT)!($DATA(DIRUT))!($DATA(DUOUT))!("^1^0^"'[("^"_Y_"^"))
               Begin DoDot:1
 +9                SET X="0^'Was the patient transferred to acute care' selection aborted"
               End DoDot:1
               QUIT X
 +10       IF "^1^0^"[("^"_Y_"^")
               SET ^XTMP(LEXID,0)=LEXF_"^"_LEXN_"^Previous"
               SET ^XTMP(LEXID,"PRE")=Y
 +11       SET X=Y
 +12       QUIT X
EXP(X)    ;   Did the patient die during episode of care
 +1        NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,LEXB,LEXF,LEXID,LEXN,Y
 +2        SET LEXN=$$DT^XLFDT
           SET LEXF=$$FMADD^XLFDT(LEXN,60)
           SET LEXID="LEXQDRG "_$GET(DUZ)_" EXP"
 +3        SET LEXB=$GET(^XTMP(LEXID,"PRE"))
           SET LEXB=$SELECT(LEXB="1":"YES",LEXB="0":"NO",1:"")
           if $LENGTH(LEXB)
               SET DIR("B")=LEXB
 +4        SET DIR(0)="YAO"
           SET DIR("A")=" Did the patient die during this episode of care?    (Y/N)  "
 +5        SET DIR("?")="   Answer YES if the patient died during this episode of care."
 +6        SET DIR("PRE")="S:X[""?"" X=""?"""
           DO ^DIR
 +7        if $DATA(DTOUT)
               QUIT "0^'Did the patient die during episode of care' selection timed-out"
 +8        IF $DATA(DIROUT)!($DATA(DIRUT))!($DATA(DUOUT))!("^1^0^"'[("^"_Y_"^"))
               Begin DoDot:1
 +9                SET X="0^'Did the patient die during episode of care' selection aborted"
               End DoDot:1
               QUIT X
 +10       IF "^1^0^"[("^"_Y_"^")
               SET ^XTMP(LEXID,0)=LEXF_"^"_LEXN_"^Previous"
               SET ^XTMP(LEXID,"PRE")=Y
 +11       SET X=Y
 +12       QUIT X
PAT(X)    ;   Patient
 +1        NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,LEXB,LEXF,LEXID,LEXN,Y
 +2        SET LEXN=$$DT^XLFDT
           SET LEXF=$$FMADD^XLFDT(LEXN,60)
           SET LEXID="LEXQDRG "_$GET(DUZ)_" PAT"
 +3        SET LEXB=$GET(^XTMP(LEXID,"PRE"))
           SET LEXB=$SELECT(LEXB="1":"YES",1:"NO")
           if $LENGTH(LEXB)
               SET DIR("B")=LEXB
 +4        SET DIR(0)="YAO"
           SET DIR("A")=" Calculate DRGs for a Registered Patient?  (Y/N)  "
 +5        SET DIR("?")="Enter 'Yes' if the patient has been previously registered, enter 'No' for other patient."
 +6        SET DIR("PRE")="S:X[""?"" X=""?"""
           DO ^DIR
 +7        if $DATA(DTOUT)
               QUIT "0^'Calculate DRGs for a Registered Patient' selection timed-out"
 +8        IF $DATA(DIROUT)!($DATA(DIRUT))!($DATA(DUOUT))!("^1^0^"'[("^"_Y_"^"))
               Begin DoDot:1
 +9                SET X="0^'Calculate DRGs for a Registered Patient' selection aborted"
               End DoDot:1
               QUIT X
 +10       IF "^1^0^"[("^"_Y_"^")
               SET ^XTMP(LEXID,0)=LEXF_"^"_LEXN_"^Previous"
               SET ^XTMP(LEXID,"PRE")=Y
 +11       SET X=Y
 +12       QUIT X
SXTMP     ;   Show ^XTMP DX/PR
 +1        NEW LEXSYS
           FOR LEXSYS="ICD","ICP","10D","ICP"
               Begin DoDot:1
 +2                NEW LEXCT,LEXIN
                   SET LEXCT=0
 +3                FOR LEXIN=1:1:10
                       Begin DoDot:2
 +4                        NEW LEXNN,LEXNC,LEXID
 +5                        SET LEXID="LEXQDRG "_+($GET(DUZ))_" DX"_LEXIN_" "_LEXSYS
 +6                        SET LEXNN="^XTMP("""_LEXID_""")"
                           SET LEXNC="^XTMP("""_LEXID_""","
 +7                        FOR 
                               SET LEXNN=$QUERY(@LEXNN)
                               if '$LENGTH(LEXNN)!(LEXNN'[LEXNC)
                                   QUIT 
                               Begin DoDot:3
 +8                                SET LEXCT=LEXCT+1
                                   if LEXCT=1
                                       WRITE !
                                   WRITE !,LEXNN,"=",@LEXNN
                               End DoDot:3
                       End DoDot:2
 +9                FOR LEXIN=1:1:10
                       Begin DoDot:2
 +10                       NEW LEXNN,LEXNC,LEXID
                           SET LEXID="LEXQDRG "_+($GET(DUZ))_" PR"_LEXIN_" "_LEXSYS
 +11                       SET LEXNN="^XTMP("""_LEXID_""")"
                           SET LEXNC="^XTMP("""_LEXID_""","
 +12                       FOR 
                               SET LEXNN=$QUERY(@LEXNN)
                               if '$LENGTH(LEXNN)!(LEXNN'[LEXNC)
                                   QUIT 
                               Begin DoDot:3
 +13                               SET LEXCT=LEXCT+1
                                   if LEXCT=1
                                       WRITE !
                                   WRITE !,LEXNN,"=",@LEXNN
                               End DoDot:3
                       End DoDot:2
               End DoDot:1
 +14       WRITE !
 +15       QUIT 
EV(X)     ;   Check environment
 +1        NEW LEX,LEXDEV
           SET DT=$$DT^XLFDT
           DO HOME^%ZIS
           SET U="^"
           IF +($GET(DUZ))=0
               WRITE !!,?5,"DUZ not defined"
               QUIT 0
 +2        SET LEX=$$GET1^DIQ(200,(DUZ_","),.01)
           IF '$LENGTH(LEX)
               WRITE !!,?5,"DUZ not valid"
               QUIT 0
 +3        QUIT 1