LEXQDRG3 ;ISL/KER - Query - DRG Calc. (DGPT) ;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
; ^DIC ICR 10006
; $$FIND1^DIC ICR 2051
; $$GET1^DIQ ICR 2056
; ^DIR ICR 10026
; ^ICDDRG ICR 371
; $$DT^XLFDT ICR 10103
; $$FMADD^XLFDT ICR 10103
; $$FMTE^XLFDT ICR 10103
; $$UP^XLFSTR ICR 10104
;
; ICDDATE Date
; ICDEXP Patient died during episode of care 1/0
; ICDTRS Was patient transferred to acute care 1/0
; ICDDMS Patient discharged against medical advice 1/0
; SEX Patient's Sex (pre-surgical M/F
; AGE Patient's Age Numeric
;
; ICDDX(1) Array of ICD Principal Diagnosis
; ICDDX(n) Array of ICD Secondary Diagnosis
; ICDPRC(n) Array of ICD Procedures
;
EN ; Main Entry Point
N AGE,DFN,DIC,DIR,DIROUT,DIRUT,DTOUT,DUOUT,ICDDATE,ICDDMS,ICDDRG,ICDDX,ICDEXP
N ICDPRC,ICDTRS,LEX1,LEXB,LEXC,LEXCODE,LEXD,LEXDCH,LEXDES,LEXDFN,LEXDOB
N LEXDRG,LEXDT,LEXDX,LEXLEXP,LEXF,LEXFL,LEXFLG,LEXGDAT,LEXI,LEXI1,LEXI2,LEXI3
N LEXID,LEXIEN,LEXIENS,LEXIPT,LEXIT,LEXMN,LEXMNE,LEXMX,LEXMXE,LEXN,LEXNAM
N LEXOK,LEXOUT,LEXPDX,LEXPR,LEXPR1,LEXPRDT,LEXPRE,LEXPRS,LEXPTF,LEXSCC
N LEXSDX,LEXSR,LEXSR1,LEXSRDT,LEXSRS,LEXT,LEXTD,LEXTMP,LEXVAP,SEX,X,Y
S LEXVAP=$$VAP I +LEXVAP'>0,$L($P(LEXVAP,"^",2)) W !!," ",$P(LEXVAP,"^",2) Q
I +LEXVAP'>0 W !!," Patient not selected" Q
S X=$P($$EFF,".",1) I X'?7N,$L($P(X,"^",2)) W !!," ",$P(X,"^",2) Q
I X'?7N W !!," 'Effective date' missing or invalid" Q
S (LEXGDAT,ICDDATE)=X,LEXVAP=+($G(LEXVAP)) S LEXOK=$$GETPAT(LEXVAP)
I LEXOK'>0,$L($P(LEXOK,"^",2)) W !!," ",$P(LEXOK,"^",2) Q
I LEXOK'>0 W !!," 'Patient treatment information' missing or invalid" Q
D ^ICDDRG I +($G(ICDDRG))>0 W:$L($G(IOF)) @IOF D DCD^LEXQDRG4,WRT^LEXQDRG4(ICDDRG,ICDDATE)
Q
EFF(X) ; Effective date
N DIR,DIROUT,DIRUT,DTOUT,DUOUT,LEXB,LEXF,LEXID,LEXMN,LEXMNE,LEXMX,LEXMXE,LEXN,Y,LEXIMP
S LEXIMP=$$IMPDATE^LEXU(30),LEXN=$$DT^XLFDT,LEXF=$$FMADD^XLFDT(LEXN,60),LEXID="LEXQDRG "_$G(DUZ)_" DATE"
S LEXB=$P($G(^XTMP(LEXID,"PRE")),".",1) S:LEXB?7N DIR("B")=$$UP^XLFSTR($$FMTE^XLFDT(LEXB,"1D"))
S LEXMN=2781001,LEXMX=DT S:LEXMX'>LEXIMP LEXMX=LEXIMP S LEXMX=$$FMADD^XLFDT(LEXMX,730)
S LEXMNE=$$FMTE^XLFDT(+($G(LEXMN)),"1D"),LEXMXE=$$FMTE^XLFDT(+($G(LEXMX)),"1D")
S LEXMNE=$$UP^XLFSTR(LEXMNE),LEXMXE=$$UP^XLFSTR(LEXMXE) S DIR(0)="DAO^"_LEXMN_":"_LEXMX
S DIR("?")="^D EFH1^LEXQDRG3" S DIR("??")="^D EFH2^LEXQDRG3"
S DIR("A")=" Enter the diagnosis effective date: "
W:+($G(LEXHAS))'>0&('$D(DFN)) ! D ^DIR Q:$D(DTOUT) "0^'Effective date' selection timed-out"
I $D(DIROUT)!($D(DIRUT))!($D(DUOUT)) D Q X
. S X="0^'Effective date' selection aborted"
S Y=$P(Y,".",1) Q:Y'?7N "0^Missing or invalid 'effective date'"
I Y?7N S ^XTMP(LEXID,0)=LEXF_"^"_LEXN_"^Previous",^XTMP(LEXID,"PRE")=Y N DFN
S X=Y Q:X?7N X
Q "0^Invalid 'effective date'"
EFH1 ; Effective Date Help #1
W !," Enter the effective date of the patient's diagnosis"
I $L($G(LEXMXE)),$L($G(LEXMNE)) D
. W !!," Select a date from ",LEXMNE," to ",LEXMXE
Q
EFH2 ; Effective Date Help #2
D EFH1 W !
W !," JAN 20 2012 or 20 JAN 12 or 1/20/12 or 012012"
W !," T (for TODAY), T+1 (for TOMORROW), T+2, etc."
W !," T-1 (for YESTERDAY), T-3W (for 3 WEEKS AGO), etc."
W !," If the year is omitted, the computer uses CURRENT"
W !," YEAR. Two digit year assumes no more than 20 "
W !," years in the future, or 80 years in the past."
W:$L($G(DIR("B"))) !," Press return to accept the default date."
W !," Enter ""^"" to abort."
Q
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
VAP(X) ; VA Patient File #2
N DIC,DTOUT,DUOUT,LEXB,LEXDFN,LEXLEXP,LEXF,LEXID,LEXN,LEXNAM,LEXSCC,Y
S LEXN=$$DT^XLFDT,LEXF=$$FMADD^XLFDT(LEXN,60),LEXID="LEXQDRG "_$G(DUZ)_" VAP"
S LEXB=$G(^XTMP(LEXID,"PRE")),LEXB=$$GET1^DIQ(2,(+LEXB_","),.01)
S DIC="^DPT(",DIC(0)="AEQMZ",DIC("A")=" Select VA Patient: ",DIC("S")="I +($$VAS^LEXQDRG3)>0"
D ^DIC Q:$D(DTOUT) "0^'VA Patient' selection timed-out"
I $D(DUOUT) S X="0^'VA Patient' selection aborted" Q X
I +Y'>0 S X="0^'VA Patient' not selected" Q X
S X=Y I +Y>0 S DFN=+Y,^XTMP(LEXID,0)=LEXF_"^"_LEXN_"^Previous",^XTMP(LEXID,"PRE")=+Y
Q X
VAS(X) ; VA Patient File #2 Screen (live/service connected)
N LEXDFN,LEXNAM,LEXLEXP,LEXSCC S LEXDFN=+($G(Y)) Q:LEXDFN'>0 0
S LEXNAM=$$GET1^DIQ(2,(+($G(Y))_","),.01) Q:'$L(LEXNAM) 0
S LEXLEXP=$$GET1^DIQ(2,(+($G(Y))_","),.351,"I") Q:+LEXLEXP>0 0
S LEXSCC=$$GET1^DIQ(2,(+($G(Y))_","),.301,"I") Q:$E(LEXSCC,1)'="Y" 0
Q 1
;
GETPAT(X) ; Get Patient Values
N LEXDCH,LEXDFN,LEXDOB,LEXNAM,LEXOUT,LEXPTF
K AGE,ICDDMS,ICDDX,ICDEXP,ICDPRC,ICDTRS,SEX
S LEXOUT=1,LEXDFN=+($G(X))
Q:$G(LEXDFN)'>0 "0^Patient (DFN) undefined"
S LEXNAM=$$GET1^DIQ(2,(+($G(LEXDFN))_","),.01)
Q:'$L(LEXNAM) "0^Patient (DFN) not found"
S LEXPTF=$$FIND1^DIC(45,,"B",LEXNAM,"B")
Q:LEXPTF'>0 "0^Patient Treatment Record not found"
; ICDEXP Did patient die during care 1/0
S ICDEXP=$$GET1^DIQ(45,(+($G(LEXPTF))_","),72,"I"),ICDEXP=$S(ICDEXP>5:1,1:0)
; ICDDSM Discharged against medical advice 1/0
S ICDDMS=$$GET1^DIQ(45,(+($G(LEXPTF))_","),72,"I"),ICDEXP=$S(ICDDMS=4:1,1:0)
; ICDTRS Transfer to acute care facility 1/0
S ICDTRS=$$GET1^DIQ(45,(+($G(LEXPTF))_","),76.2),ICDTRS=$S(ICDEXP:1,1:0)
; SEX Sex M/F
S SEX=$$GET1^DIQ(2,(+($G(LEXDFN))_","),.02,"I")
; AGE Age Numeric
S LEXDCH=$$GET1^DIQ(45,(+($G(LEXPTF))_","),70,"I")
S LEXDOB=$$GET1^DIQ(2,(+($G(LEXDFN))_","),.03,"I")
S AGE=$S(LEXDCH:LEXDCH,1:DT)-LEXDOB\10000
K LEXDX S LEXDX=$$DX^LEXQDRG4(LEXPTF)
K LEXSR S LEXSR=$$SR^LEXQDRG4(LEXPTF)
K LEXPR S LEXPR=$$PR^LEXQDRG4(LEXPTF)
D ICDDXPR^LEXQDRG4
S LEXOUT=1 S:"^1^0^"'[("^"_ICDEXP_"^") LEXOUT=-1
S:"^1^0^"'[("^"_ICDTRS_"^") LEXOUT=-2
S:"^1^0^"'[("^"_ICDDMS_"^") LEXOUT=-3
S:"^M^F^"'[("^"_SEX_"^") LEXOUT=-4
S:AGE'?1N.N LEXOUT=-5
S:$O(ICDDX(0))'>0 LEXOUT=-6
K:LEXOUT'>0 AGE,SEX,ICDDMS,ICDDX,ICDEXP,ICDPRC,ICDTRS
S X=LEXOUT S:X'>0 X="0^Error extracting patient treatment information"
Q X
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLEXQDRG3 7236 printed Dec 13, 2024@02:08:36 Page 2
LEXQDRG3 ;ISL/KER - Query - DRG Calc. (DGPT) ;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 ; ^DIC ICR 10006
+8 ; $$FIND1^DIC ICR 2051
+9 ; $$GET1^DIQ ICR 2056
+10 ; ^DIR ICR 10026
+11 ; ^ICDDRG ICR 371
+12 ; $$DT^XLFDT ICR 10103
+13 ; $$FMADD^XLFDT ICR 10103
+14 ; $$FMTE^XLFDT ICR 10103
+15 ; $$UP^XLFSTR ICR 10104
+16 ;
+17 ; ICDDATE Date
+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 medical advice 1/0
+21 ; SEX Patient's Sex (pre-surgical M/F
+22 ; AGE Patient's Age Numeric
+23 ;
+24 ; ICDDX(1) Array of ICD Principal Diagnosis
+25 ; ICDDX(n) Array of ICD Secondary Diagnosis
+26 ; ICDPRC(n) Array of ICD Procedures
+27 ;
EN ; Main Entry Point
+1 NEW AGE,DFN,DIC,DIR,DIROUT,DIRUT,DTOUT,DUOUT,ICDDATE,ICDDMS,ICDDRG,ICDDX,ICDEXP
+2 NEW ICDPRC,ICDTRS,LEX1,LEXB,LEXC,LEXCODE,LEXD,LEXDCH,LEXDES,LEXDFN,LEXDOB
+3 NEW LEXDRG,LEXDT,LEXDX,LEXLEXP,LEXF,LEXFL,LEXFLG,LEXGDAT,LEXI,LEXI1,LEXI2,LEXI3
+4 NEW LEXID,LEXIEN,LEXIENS,LEXIPT,LEXIT,LEXMN,LEXMNE,LEXMX,LEXMXE,LEXN,LEXNAM
+5 NEW LEXOK,LEXOUT,LEXPDX,LEXPR,LEXPR1,LEXPRDT,LEXPRE,LEXPRS,LEXPTF,LEXSCC
+6 NEW LEXSDX,LEXSR,LEXSR1,LEXSRDT,LEXSRS,LEXT,LEXTD,LEXTMP,LEXVAP,SEX,X,Y
+7 SET LEXVAP=$$VAP
IF +LEXVAP'>0
IF $LENGTH($PIECE(LEXVAP,"^",2))
WRITE !!," ",$PIECE(LEXVAP,"^",2)
QUIT
+8 IF +LEXVAP'>0
WRITE !!," Patient not selected"
QUIT
+9 SET X=$PIECE($$EFF,".",1)
IF X'?7N
IF $LENGTH($PIECE(X,"^",2))
WRITE !!," ",$PIECE(X,"^",2)
QUIT
+10 IF X'?7N
WRITE !!," 'Effective date' missing or invalid"
QUIT
+11 SET (LEXGDAT,ICDDATE)=X
SET LEXVAP=+($GET(LEXVAP))
SET LEXOK=$$GETPAT(LEXVAP)
+12 IF LEXOK'>0
IF $LENGTH($PIECE(LEXOK,"^",2))
WRITE !!," ",$PIECE(LEXOK,"^",2)
QUIT
+13 IF LEXOK'>0
WRITE !!," 'Patient treatment information' missing or invalid"
QUIT
+14 DO ^ICDDRG
IF +($GET(ICDDRG))>0
if $LENGTH($GET(IOF))
WRITE @IOF
DO DCD^LEXQDRG4
DO WRT^LEXQDRG4(ICDDRG,ICDDATE)
+15 QUIT
EFF(X) ; Effective date
+1 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,LEXB,LEXF,LEXID,LEXMN,LEXMNE,LEXMX,LEXMXE,LEXN,Y,LEXIMP
+2 SET LEXIMP=$$IMPDATE^LEXU(30)
SET LEXN=$$DT^XLFDT
SET LEXF=$$FMADD^XLFDT(LEXN,60)
SET LEXID="LEXQDRG "_$GET(DUZ)_" DATE"
+3 SET LEXB=$PIECE($GET(^XTMP(LEXID,"PRE")),".",1)
if LEXB?7N
SET DIR("B")=$$UP^XLFSTR($$FMTE^XLFDT(LEXB,"1D"))
+4 SET LEXMN=2781001
SET LEXMX=DT
if LEXMX'>LEXIMP
SET LEXMX=LEXIMP
SET LEXMX=$$FMADD^XLFDT(LEXMX,730)
+5 SET LEXMNE=$$FMTE^XLFDT(+($GET(LEXMN)),"1D")
SET LEXMXE=$$FMTE^XLFDT(+($GET(LEXMX)),"1D")
+6 SET LEXMNE=$$UP^XLFSTR(LEXMNE)
SET LEXMXE=$$UP^XLFSTR(LEXMXE)
SET DIR(0)="DAO^"_LEXMN_":"_LEXMX
+7 SET DIR("?")="^D EFH1^LEXQDRG3"
SET DIR("??")="^D EFH2^LEXQDRG3"
+8 SET DIR("A")=" Enter the diagnosis effective date: "
+9 if +($GET(LEXHAS))'>0&('$DATA(DFN))
WRITE !
DO ^DIR
if $DATA(DTOUT)
QUIT "0^'Effective date' selection timed-out"
+10 IF $DATA(DIROUT)!($DATA(DIRUT))!($DATA(DUOUT))
Begin DoDot:1
+11 SET X="0^'Effective date' selection aborted"
End DoDot:1
QUIT X
+12 SET Y=$PIECE(Y,".",1)
if Y'?7N
QUIT "0^Missing or invalid 'effective date'"
+13 IF Y?7N
SET ^XTMP(LEXID,0)=LEXF_"^"_LEXN_"^Previous"
SET ^XTMP(LEXID,"PRE")=Y
NEW DFN
+14 SET X=Y
if X?7N
QUIT X
+15 QUIT "0^Invalid 'effective date'"
EFH1 ; Effective Date Help #1
+1 WRITE !," Enter the effective date of the patient's diagnosis"
+2 IF $LENGTH($GET(LEXMXE))
IF $LENGTH($GET(LEXMNE))
Begin DoDot:1
+3 WRITE !!," Select a date from ",LEXMNE," to ",LEXMXE
End DoDot:1
+4 QUIT
EFH2 ; Effective Date Help #2
+1 DO EFH1
WRITE !
+2 WRITE !," JAN 20 2012 or 20 JAN 12 or 1/20/12 or 012012"
+3 WRITE !," T (for TODAY), T+1 (for TOMORROW), T+2, etc."
+4 WRITE !," T-1 (for YESTERDAY), T-3W (for 3 WEEKS AGO), etc."
+5 WRITE !," If the year is omitted, the computer uses CURRENT"
+6 WRITE !," YEAR. Two digit year assumes no more than 20 "
+7 WRITE !," years in the future, or 80 years in the past."
+8 if $LENGTH($GET(DIR("B")))
WRITE !," Press return to accept the default date."
+9 WRITE !," Enter ""^"" to abort."
+10 QUIT
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
VAP(X) ; VA Patient File #2
+1 NEW DIC,DTOUT,DUOUT,LEXB,LEXDFN,LEXLEXP,LEXF,LEXID,LEXN,LEXNAM,LEXSCC,Y
+2 SET LEXN=$$DT^XLFDT
SET LEXF=$$FMADD^XLFDT(LEXN,60)
SET LEXID="LEXQDRG "_$GET(DUZ)_" VAP"
+3 SET LEXB=$GET(^XTMP(LEXID,"PRE"))
SET LEXB=$$GET1^DIQ(2,(+LEXB_","),.01)
+4 SET DIC="^DPT("
SET DIC(0)="AEQMZ"
SET DIC("A")=" Select VA Patient: "
SET DIC("S")="I +($$VAS^LEXQDRG3)>0"
+5 DO ^DIC
if $DATA(DTOUT)
QUIT "0^'VA Patient' selection timed-out"
+6 IF $DATA(DUOUT)
SET X="0^'VA Patient' selection aborted"
QUIT X
+7 IF +Y'>0
SET X="0^'VA Patient' not selected"
QUIT X
+8 SET X=Y
IF +Y>0
SET DFN=+Y
SET ^XTMP(LEXID,0)=LEXF_"^"_LEXN_"^Previous"
SET ^XTMP(LEXID,"PRE")=+Y
+9 QUIT X
VAS(X) ; VA Patient File #2 Screen (live/service connected)
+1 NEW LEXDFN,LEXNAM,LEXLEXP,LEXSCC
SET LEXDFN=+($GET(Y))
if LEXDFN'>0
QUIT 0
+2 SET LEXNAM=$$GET1^DIQ(2,(+($GET(Y))_","),.01)
if '$LENGTH(LEXNAM)
QUIT 0
+3 SET LEXLEXP=$$GET1^DIQ(2,(+($GET(Y))_","),.351,"I")
if +LEXLEXP>0
QUIT 0
+4 SET LEXSCC=$$GET1^DIQ(2,(+($GET(Y))_","),.301,"I")
if $EXTRACT(LEXSCC,1)'="Y"
QUIT 0
+5 QUIT 1
+6 ;
GETPAT(X) ; Get Patient Values
+1 NEW LEXDCH,LEXDFN,LEXDOB,LEXNAM,LEXOUT,LEXPTF
+2 KILL AGE,ICDDMS,ICDDX,ICDEXP,ICDPRC,ICDTRS,SEX
+3 SET LEXOUT=1
SET LEXDFN=+($GET(X))
+4 if $GET(LEXDFN)'>0
QUIT "0^Patient (DFN) undefined"
+5 SET LEXNAM=$$GET1^DIQ(2,(+($GET(LEXDFN))_","),.01)
+6 if '$LENGTH(LEXNAM)
QUIT "0^Patient (DFN) not found"
+7 SET LEXPTF=$$FIND1^DIC(45,,"B",LEXNAM,"B")
+8 if LEXPTF'>0
QUIT "0^Patient Treatment Record not found"
+9 ; ICDEXP Did patient die during care 1/0
+10 SET ICDEXP=$$GET1^DIQ(45,(+($GET(LEXPTF))_","),72,"I")
SET ICDEXP=$SELECT(ICDEXP>5:1,1:0)
+11 ; ICDDSM Discharged against medical advice 1/0
+12 SET ICDDMS=$$GET1^DIQ(45,(+($GET(LEXPTF))_","),72,"I")
SET ICDEXP=$SELECT(ICDDMS=4:1,1:0)
+13 ; ICDTRS Transfer to acute care facility 1/0
+14 SET ICDTRS=$$GET1^DIQ(45,(+($GET(LEXPTF))_","),76.2)
SET ICDTRS=$SELECT(ICDEXP:1,1:0)
+15 ; SEX Sex M/F
+16 SET SEX=$$GET1^DIQ(2,(+($GET(LEXDFN))_","),.02,"I")
+17 ; AGE Age Numeric
+18 SET LEXDCH=$$GET1^DIQ(45,(+($GET(LEXPTF))_","),70,"I")
+19 SET LEXDOB=$$GET1^DIQ(2,(+($GET(LEXDFN))_","),.03,"I")
+20 SET AGE=$SELECT(LEXDCH:LEXDCH,1:DT)-LEXDOB\10000
+21 KILL LEXDX
SET LEXDX=$$DX^LEXQDRG4(LEXPTF)
+22 KILL LEXSR
SET LEXSR=$$SR^LEXQDRG4(LEXPTF)
+23 KILL LEXPR
SET LEXPR=$$PR^LEXQDRG4(LEXPTF)
+24 DO ICDDXPR^LEXQDRG4
+25 SET LEXOUT=1
if "^1^0^"'[("^"_ICDEXP_"^")
SET LEXOUT=-1
+26 if "^1^0^"'[("^"_ICDTRS_"^")
SET LEXOUT=-2
+27 if "^1^0^"'[("^"_ICDDMS_"^")
SET LEXOUT=-3
+28 if "^M^F^"'[("^"_SEX_"^")
SET LEXOUT=-4
+29 if AGE'?1N.N
SET LEXOUT=-5
+30 if $ORDER(ICDDX(0))'>0
SET LEXOUT=-6
+31 if LEXOUT'>0
KILL AGE,SEX,ICDDMS,ICDDX,ICDEXP,ICDPRC,ICDTRS
+32 SET X=LEXOUT
if X'>0
SET X="0^Error extracting patient treatment information"
+33 QUIT X