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

ICDEXS.m

Go to the documentation of this file.
  1. ICDEXS ;SLC/KER - ICD Extractor - Support ;12/19/2014
  1. ;;18.0;DRG Grouper;**57,67**;Oct 20, 2000;Build 1
  1. ;
  1. ; Global Variables
  1. ; ^ICD0( N/A
  1. ; ^ICD9( N/A
  1. ; ^ICDS( N/A
  1. ;
  1. ; External References
  1. ; $$GET1^DIQ ICR 2056
  1. ; $$DT^XLFDT ICR 10103
  1. ; $$FMTE^XLFDT ICR 10103
  1. ; $$UP^XLFSTR ICR 10104
  1. ;
  1. EFF(FILE,IEN,EDT) ; returns effective date and status for code/modifier
  1. ;
  1. ; Input:
  1. ;
  1. ; FILE File number 80/80.1 (required)
  1. ; IEN ICD IEN (required)
  1. ; EDT Date to check (FileMan format) (required)
  1. ;
  1. ; Output:
  1. ;
  1. ; A 3 piece "^" delimited string
  1. ;
  1. ; 1 Status
  1. ; 1 - Active
  1. ; 0 - Inactive
  1. ; 2 Inactivation Date
  1. ; 3 Activation Date
  1. ; -or-
  1. ; -1^error message
  1. ;
  1. N EFF,EFFB,EFFDOS,EFFDT,EFFN,EFFST,EFILE,ICDY,ROOT,STR
  1. I $G(IEN)=""!(IEN'?1N.N) Q "-1^No Code Selected"
  1. S FILE=$$FILE($G(FILE)) Q:+FILE'>0 "-1^Invalid File"
  1. S ROOT=$$ROOT(FILE)
  1. Q:"^ICD9(^ICD0(^"'[("^"_$E(ROOT,2,$L(ROOT))_"^") "-1^Invalid Global"
  1. Q:'$G(EDT) "-1^No Date Selected" S EDT=$P(EDT,".",1)
  1. Q:EDT'?7N "-1^Invalid Date Selected"
  1. S IEN=+($G(IEN)) Q:+IEN'>0 "-1^IEN Invalid" S EFILE=ROOT_IEN_",66,"
  1. S ICDY=$P($G(@(ROOT_+IEN_",1)")),"^",1) Q:+ICDY'>0 "-1^Invalid Coding System"
  1. S EDT=$S($G(EDT)="":$$DT^XLFDT,1:$$DTBR^ICDEX(EDT,,ICDY))+.001
  1. S EFF=$O(@(EFILE_"""B"","_EDT_")"),-1) Q:'EFF "0^^"
  1. S EFFN=$O(@(EFILE_"""B"","_EFF_",0)")),STR=$G(@(EFILE_EFFN_",0)")) Q:STR="" "0^^"
  1. S EFFDT=$P(STR,"^"),EFFST=$P(STR,"^",2),EFFB=0,EFF=+EFF
  1. F S EFF=$O(@(EFILE_"""B"","_EFF_")"),-1) Q:'EFF!EFFB D
  1. . S EFFN=$O(@(EFILE_"""B"","_EFF_",0)")) I 'EFFN S EFFB=1 Q
  1. . S EFFDOS=$G(@(EFILE_EFFN_",0)")) I 'EFFDOS S EFFB=1 Q
  1. . S EFFB=(EFFST'=$P(EFFDOS,"^",2))
  1. S EFFDOS=$P($G(EFFDOS),"^")
  1. I EFFST S $P(STR,"^",3,4)=(EFFDOS)_"^"_EFFDT
  1. E S $P(STR,"^",3,4)=EFFDT_"^"_(EFFDOS)
  1. Q $P(STR,"^",2,4)
  1. IA(FILE,IEN) ; Initial Activation Date
  1. ;
  1. ; Input:
  1. ;
  1. ; FILE Global Root/File Number (Required)
  1. ; IEN Internal Entry Number (Required)
  1. ;
  1. ; Output:
  1. ;
  1. ; $$IA Initial Activation Date OR -1 ^ Error Message
  1. ;
  1. N ROOT,EFF,HIS,NOD,ACT,INA
  1. S FILE=$$FILE($G(FILE)) Q:+FILE'>0 "-1^Invalid File" S ROOT=$$ROOT(FILE)
  1. Q:"^ICD9(^ICD0(^"'[("^"_$E(ROOT,2,$L(ROOT))_"^") "-1^Invalid Global"
  1. S IEN=$G(IEN) Q:+IEN'>0!('$D(@(ROOT_+IEN_")"))) "-1^Invalid Code"
  1. S ACT="",EFF=""
  1. F S EFF=$O(@(ROOT_+IEN_",66,""B"","""_EFF_""")")) Q:(EFF'?7N)!($L(ACT)) D Q:$L(ACT)
  1. . S HIS=" " F S HIS=$O(@(ROOT_+IEN_",66,""B"","_EFF_","""_HIS_""")"),-1) Q:+HIS'>0 D Q:$L(ACT)
  1. . . N NOD,STA S NOD=$G(@(ROOT_+IEN_",66,"_+HIS_",0)"))
  1. . . S STA=$P(NOD,"^",2) S:STA?1N&(+STA>0)&('$L(ACT)) ACT=EFF
  1. S:'$L(ACT) ACT="-1^Initial activation date not found"
  1. Q ACT
  1. LA(FILE,IEN,CDT) ; Last Current Activation Date
  1. ;
  1. ; Input:
  1. ;
  1. ; FILE Global Root/File Number (Required)
  1. ; IEN Internal Entry Number (Required)
  1. ; CDT Date (default = TODAY) (Optional)
  1. ;
  1. ; Output:
  1. ;
  1. ; $$LA Last Activation Date OR -1 ^ Error Message
  1. ;
  1. N ROOT,EFF,HIS,NOD,ACT,INA,ICDF
  1. S FILE=$$FILE($G(FILE)) Q:+FILE'>0 "-1^Invalid File" S ROOT=$$ROOT(FILE)
  1. Q:"^ICD9(^ICD0(^"'[("^"_$E(ROOT,2,$L(ROOT))_"^") "-1^Invalid Global"
  1. S CDT=$G(CDT) S:CDT'?7N CDT=$$DT^XLFDT S IEN=$G(IEN)
  1. Q:+IEN'>0!('$D(@(ROOT_+IEN_")"))) "-1^Invalid Code"
  1. S ACT="",EFF=CDT+.000001
  1. F S EFF=$O(@(ROOT_+IEN_",66,""B"","""_EFF_""")"),-1) Q:(EFF'?7N)!($L(ACT)) D Q:$L(ACT)
  1. . S HIS=" " F S HIS=$O(@(ROOT_+IEN_",66,""B"","_EFF_","""_HIS_""")"),-1) Q:+HIS'>0 D Q:$L(ACT)
  1. . . N NOD,STA S NOD=$G(@(ROOT_+IEN_",66,"_+HIS_",0)"))
  1. . . S STA=$P(NOD,"^",2) S:STA?1N&(+STA>0)&('$L(ACT)) ACT=EFF
  1. S:'$L(ACT) ACT="-1^Not activated on or before "_$$FMTE^XLFDT($G(CDT),"5DZ")
  1. Q ACT
  1. LI(FILE,IEN,CDT) ; Last Current Inactivation Date
  1. ;
  1. ; Input:
  1. ;
  1. ; IEN Internal Entry Number (Required)
  1. ; FILE Global Root/File Number (Required)
  1. ; CDT Date (default = TODAY) (Optional)
  1. ;
  1. ; Output:
  1. ;
  1. ; $$LI Last Inactivation Date OR -1 ^ Error Message
  1. ;
  1. N ROOT,EFF,HIS,NOD,ACT,INA
  1. S FILE=$$FILE($G(FILE)) Q:+FILE'>0 "-12^Invalid File" S ROOT=$$ROOT(FILE)
  1. Q:"^ICD9(^ICD0(^"'[("^"_$E(ROOT,2,$L(ROOT))_"^") "-1^Invalid Global"
  1. S CDT=$G(CDT) S:CDT'?7N CDT=$$DT^XLFDT S IEN=$G(IEN)
  1. Q:+IEN'>0!('$D(@(ROOT_+IEN_")"))) "-1^Invalid Code"
  1. S INA="",EFF=CDT+.000001
  1. F S EFF=$O(@(ROOT_+IEN_",66,""B"","""_EFF_""")"),-1) Q:'$L(EFF)!(EFF'?7N)!($L(INA)) D Q:$L(INA)
  1. . S HIS=" " F S HIS=$O(@(ROOT_+IEN_",66,""B"","_EFF_","""_HIS_""")"),-1) Q:+HIS'>0 D Q:$L(INA)
  1. . . N NOD,STA S NOD=$G(@(ROOT_+IEN_",66,"_+HIS_",0)"))
  1. . . S STA=$P(NOD,"^",2) S:STA?1N&(+STA'>0)&('$L(INA)) INA=EFF
  1. S:'$L(INA) INA="-1^Not inactivated on or before "_$$FMTE^XLFDT($G(CDT),"5DZ")
  1. Q INA
  1. LS(FILE,IEN,CDT,FMT) ; Last Status
  1. ;
  1. ; Input:
  1. ;
  1. ; FILE Global Root/File Number (Required)
  1. ; IEN Internal Entry Number (Required)
  1. ; CDT Date (default = TODAY) (Optional)
  1. ; FMT Format
  1. ; 0 Last Status only (default)
  1. ; 1 Last Status ^ Effective Date
  1. ;
  1. ; Output:
  1. ;
  1. ; $$LS Last Status (1/0) OR -1 ^ Error Message
  1. ;
  1. N ROOT,EFF,HIS,NOD,ACT,INA,LEF,STA
  1. S FILE=$$FILE($G(FILE)) Q:+FILE'>0 "-12^Invalid File" S ROOT=$$ROOT(FILE)
  1. Q:"^ICD9(^ICD0(^"'[("^"_$E(ROOT,2,$L(ROOT))_"^") "-1^Invalid Global"
  1. S CDT=$G(CDT) S:CDT'?7N CDT=$$DT^XLFDT S IEN=$G(IEN)
  1. Q:+IEN'>0!('$D(@(ROOT_+IEN_")"))) "-1^Invalid Code"
  1. S INA="",EFF=CDT+.000001 S EFF=$O(@(ROOT_+IEN_",66,""B"","""_EFF_""")"),-1)
  1. Q:'$L(EFF)!(EFF'?7N) "-1^No status on or before "_$$FMTE^XLFDT($G(CDT),"5DZ")
  1. S HIS="~",HIS=$O(@(ROOT_+IEN_",66,""B"","_EFF_","""_HIS_""")"),-1)
  1. Q:+HIS'>0 "-1^No status on or before "_$$FMTE^XLFDT($G(CDT),"5DZ")
  1. S NOD=$G(@(ROOT_+IEN_",66,"_+HIS_",0)")),STA=$P(NOD,"^",2),LEF=$P(NOD,"^",1)
  1. Q:"^0^1^"'[("^"_STA_"^") "-1^No status on or before "_$$FMTE^XLFDT($G(CDT),"5DZ")
  1. S:+($G(FMT))>0&($G(LEF)?7N) STA=STA_"^"_LEF
  1. Q STA
  1. ;
  1. NUM(CODE) ; Convert Code to a Numeric Value (opposite of $$COD)
  1. ;
  1. ; Input:
  1. ;
  1. ; CODE ICD CODE (required)
  1. ;
  1. ; Output:
  1. ;
  1. ; NUM Numerical representation of CODE
  1. ;
  1. ; or
  1. ;
  1. ; -1 on error
  1. ;
  1. S CODE=$G(CODE) Q:'$L($G(CODE)) 0
  1. N PSN,OUT,CHR,ERR S ERR=0,OUT="" F PSN=1:1:9 D
  1. . S CHR=$E(CODE,PSN) S CHR=$S($L(CHR):$A(CHR),1:32),CHR=CHR-30
  1. . S:CHR'>0 ERR=1 F Q:$L(CHR)>1 S CHR="0"_CHR
  1. . S:$L(CHR)'=2 ERR=1 S OUT=OUT_CHR
  1. Q:ERR -1 S:+OUT>0 OUT="1"_OUT
  1. Q OUT
  1. COD(NUM) ; Convert Numeric Value to a Code (opposite of $$NUM)
  1. ;
  1. ; Input:
  1. ;
  1. ; NUM Numerical representation of an ICD Code (required)
  1. ;
  1. ; Output:
  1. ;
  1. ; CODE ICD Code
  1. ;
  1. ; or
  1. ;
  1. ; null on error
  1. ;
  1. Q:'$L(NUM) "" Q:$E(NUM,1)'=1 "" S NUM=$E(NUM,2,$L(NUM))
  1. N PSN,OUT,CHR,ADD S OUT=""
  1. F PSN=1:2 S CHR=$E(NUM,PSN,(PSN+1)) Q:'$L(CHR) D
  1. . S CHR=+CHR+30 S ADD="" S:CHR'=32 ADD=$C(CHR) S:$L(ADD) OUT=OUT_ADD
  1. Q OUT
  1. IE(X) ; Internal or External
  1. ;
  1. ; Input:
  1. ;
  1. ; X ICD code or IEN
  1. ;
  1. ; Output:
  1. ;
  1. ; $$IE Set of Codes
  1. ;
  1. ; I Internal format (IEN)
  1. ; E External format (Code)
  1. ;
  1. ; Null on error
  1. ;
  1. N IN,OUT
  1. S IN=$G(X) Q:'$L(X) ""
  1. Q:IN?1N.N&('$D(^ICD9("BA",(IN_" "))))&('$D(^ICD0("BA",(IN_" ")))) "I"
  1. Q:$D(^ICD9("BA",(IN_" ")))!($D(^ICD0("BA",(IN_" ")))) "E"
  1. Q ""
  1. FILE(X) ; File Number
  1. ;
  1. ; Input:
  1. ;
  1. ; X File/Identifier/Coding System/Code (required)
  1. ;
  1. ; Output:
  1. ;
  1. ; FILE File Number or -1 on error
  1. ;
  1. N ICDX,ICDF S (ICDX,X)=$G(X) Q:'$L(X) -1 N ICDR
  1. I X?1N.N Q:X?1N&(+X=0) 80.1 Q:X?1N&(+X=9) 80
  1. S ICDR=$$ROOT(X) Q:$D(^ICD9("BA",(X_" "))) 80 Q:$D(^ICD0("BA",(X_" "))) 80.1
  1. Q:X=80 80 Q:X=80.1 80.1 Q:X["ICD9" 80 Q:X["ICD0" 80.1 Q:X["DX"!(X["DIAG") 80 Q:X["PR"!(X["PROC")!(X["OP")!(X["PCS") 80.1
  1. I ICDX?1N.N I ICDX'["." Q:$D(^ICD9("ABA",+ICDX)) 80 Q:$D(^ICD0("ABA",+ICDX)) 80.1
  1. Q:$D(^ICD9("BA",(X_" "))) 80 Q:$D(^ICD0("BA",(X_" "))) 80.1
  1. Q:$D(^ICD9("AVA",(X_" "))) 80 Q:$D(^ICD0("AVA",(X_" "))) 80.1
  1. Q:$D(^ICD9("AEXC",(X_" "))) 80 Q:$D(^ICD0("AEXC",(X_" "))) 80.1
  1. Q:ICDR["ICD9" 80 Q:ICDR["ICD0" 80.1
  1. Q -1
  1. ROOT(X) ; Global Root
  1. ;
  1. ; Input:
  1. ;
  1. ; X File Number, File Name, Root, Identifier
  1. ; or Coding System (required)
  1. ;
  1. ; Output:
  1. ;
  1. ; ROOT Global Root for File or null
  1. ;
  1. N ICDR,ICDF S ICDR=$$RY($G(X)) Q:$L(ICDR) ICDR
  1. S ICDR=$$RC($G(X)) Q:$L(ICDR) ICDR S X=$$UP^XLFSTR($G(X))
  1. S ICDR=$$RF($G(X)) Q:$L(ICDR) ICDR
  1. S ICDR=$$RR($G(X)) Q:$L(ICDR) ICDR
  1. S:X?1N.N ICDR=$$RS(+($G(X))) Q:$L(ICDR) ICDR
  1. Q ""
  1. RY(SYS) ; Global Root from System
  1. N FILE,ROOT S SYS=$G(SYS) Q:SYS'?1N.N "" Q:SYS=80!(SYS=80.1) "" Q:'$D(^ICDS(+SYS)) ""
  1. S FILE=$P($G(^ICDS(+SYS,0)),"^",3) Q:+FILE'>0 "" S ROOT=$$RF(FILE) Q:$L(ROOT) ROOT
  1. Q ""
  1. RF(FILE) ; Global Root from File
  1. Q:$G(FILE)=80 "^ICD9(" Q:$G(FILE)=80.1 "^ICD0("
  1. Q ""
  1. RR(ID) ; Global Root from Root or Identifier
  1. Q:ID["ICD9" "^ICD9(" Q:ID["ICD0" "^ICD0(" Q:ID="DX"!(ID["DIA") "^ICD9(" Q:ID="PR"!(ID["PRO")!(ID["OP") "^ICD0("
  1. Q:ID="ICD"!(ID="10D") "^ICD9(" Q:ID="ICP"!(ID="10P") "^ICD0("
  1. Q ""
  1. RS(SYS) ; Global Root from Coding System
  1. S SYS=$TR(SYS," ","") Q:$D(^ICD9("ABA",+SYS)) "^ICD9(" Q:$D(^ICD0("ABA",+SYS)) "^ICD0("
  1. Q ""
  1. RC(COD) ; Global Root from Code
  1. Q:$D(^ICD9("BA",($G(COD)_" "))) "^ICD9(" Q:$D(^ICD0("BA",($G(COD)_" "))) "^ICD0("
  1. Q:$D(^ICD9("AVA",(X_" "))) "^ICD9(" Q:$D(^ICD0("AVA",(X_" "))) "^ICD0("
  1. Q:$D(^ICD9("AEXC",(X_" "))) "^ICD9(" Q:$D(^ICD0("AEXC",(X_" "))) "^ICD0("
  1. Q ""
  1. ;
  1. SYS(SYS,CDT,FMT) ; Resolve System (uses file 80.4)
  1. ;
  1. ; Input:
  1. ;
  1. ; SYS System/Source Abbreviation/System Identifier/Code
  1. ; CDT Date (optional)
  1. ; FMT Output Format (optional)
  1. ;
  1. ; I Internal (default)
  1. ; E External
  1. ; B Both Internal ^ External
  1. ;
  1. ; Output:
  1. ;
  1. ; $$SYS System (numeric or alpha)
  1. ;
  1. ; Internal External
  1. ; 1 ICD-9-CM
  1. ; 2 ICD-9 Proc
  1. ; 30 ICD-10-CM
  1. ; 31 ICD-10-PCS
  1. ; or
  1. ; -1 on error
  1. ;
  1. N ICDC,ICDD,ICDF,ICDI,ICDO,ICDT,ICDU,ICDX,ICDT S ICDI=$G(SYS) Q:'$L(ICDI) -1
  1. S ICDD=$P($G(CDT),".",1) S ICDF=$$UP^XLFSTR($G(FMT)) S:'$L(ICDF) ICDF="I"
  1. S:"^E^B^"'[("^"_ICDF_"^") ICDF="I" S ICDU=$$UP^XLFSTR(ICDI)
  1. S ICDO=$$SC(ICDI) Q:+ICDO>0 $S(ICDF["B":(+ICDO_"^"_$$SNAM(+ICDO)),ICDF["E":$$SNAM(+ICDO),1:+ICDO)
  1. I ICDI?1N.N Q:$D(^ICDS(+ICDI)) $S(ICDF["B":(+ICDI_"^"_$$SNAM(+ICDI)),ICDF["E":$$SNAM(+ICDI),1:+ICDI)
  1. S ICDO=$$SS(ICDI) Q:+ICDO>0 $S(ICDF["B":(+ICDO_"^"_$$SNAM(+ICDO)),ICDF["E":$$SNAM(+ICDO),1:+ICDO)
  1. S ICDO=$$SM(ICDI,ICDD) Q:+ICDO>0 $S(ICDF["B":(+ICDO_"^"_$$SNAM(+ICDO)),ICDF["E":$$SNAM(+ICDO),1:+ICDO)
  1. S ICDO=$$SP(ICDI) Q:+ICDO>0 $S(ICDF["B":(+ICDO_"^"_$$SNAM(+ICDO)),ICDF["E":$$SNAM(+ICDO),1:+ICDO)
  1. Q -1
  1. SS(X) ; System from Coding System file 80.4
  1. N ICDC,ICDI,ICDO,ICDU S ICDI=$G(X) Q:'$L(ICDI) "" S ICDU=$$UP^XLFSTR(ICDI)
  1. S ICDO="",ICDC="AZ" F S ICDC=$O(^ICDS(ICDC)) Q:'$L(ICDC) D Q:+ICDO>0
  1. . Q:ICDC="F" N ICDT S ICDT=$O(^ICDS(ICDC,ICDI,0))
  1. . S:+ICDT'>0 ICDT=$O(^ICDS(ICDC,ICDU,0)) S:+ICDT>0 ICDO=ICDT
  1. Q ICDO
  1. SM(X,CDT) ; System from a Mnemonic
  1. N ICDD,ICDX,ICDO,ICDU S ICDU=$$UP^XLFSTR($G(X)) Q:'$L(ICDU) "" S ICDD=$G(CDT) S:ICDD'?7N ICDD=$$DT^XLFDT
  1. S ICDX=$P($G(^ICDS(30,0)),"^",4),ICDO=""
  1. I (ICDU["DIAG"!(ICDU["ICD9")!(ICDU="80")!(ICDU="DX")) I ICDD?7N,ICDX?7N S ICDO=$S(ICDD<ICDX:1,1:30)
  1. I (ICDU["PROC"!(ICDU["OPER")!(ICDU["ICD0")!(ICDU["ICP9")!(ICDU="80.1")!(ICDU="PR")) I ICDD?7N,ICDX?7N S ICDO=$S(ICDD<ICDX:2,1:31)
  1. Q ICDO
  1. SP(X) ; System from Pattern Match
  1. N ICDT,ICDI,ICDO S ICDO="",ICDT=$$UP^XLFSTR($G(X)) Q:'$L(ICDT) ""
  1. F Q:ICDT'["ICD" S ICDT=$P(ICDT,"ICD",1)_$P(ICDT,"ICD",2)
  1. Q:'$L(ICDT) "" S ICDI="" F S ICDI=$O(^ICDS("B",ICDI)) Q:'$L(ICDI) D Q:+ICDO>0
  1. . S:ICDT["9"&(ICDT["D")&(ICDT'["P")&(ICDI["9")&(ICDI["CM") ICDO=$O(^ICDS("B",ICDI,0)) Q:ICDO>0
  1. . S:ICDT["9"&((ICDT["P")!(ICDT["O"))&(ICDI["9")&(ICDI["P") ICDO=$O(^ICDS("B",ICDI,0)) Q:ICDO>0
  1. . S:ICDT["10"&(ICDT["D")&(ICDT'["P")&(ICDI["10")&(ICDI["CM") ICDO=$O(^ICDS("B",ICDI,0)) Q:ICDO>0
  1. . S:ICDT["10"&((ICDT["P")!(ICDT["O"))&(ICDI["10")&(ICDI["P") ICDO=$O(^ICDS("B",ICDI,0)) Q:ICDO>0
  1. Q ICDO
  1. SC(X) ; System from Code
  1. N ICDI,ICDC,ICDO,ICDR,ICDU S ICDI=$G(X) S ICDC=$TR(ICDI," ","") Q:'$L(ICDC) ""
  1. S ICDU=$$UP^XLFSTR(ICDC) S ICDO="" F ICDR="^ICD9(","^ICD0(" D Q:+ICDO>0
  1. . N TMP F TMP=ICDC,ICDU D Q:+ICDO>0
  1. . . N ICDS,ICDV,ICDE S ICDS=0 F S ICDS=$O(@(ICDR_"""ABA"","_ICDS_")")) Q:+ICDS'>0 D Q:ICDO>0
  1. . . . S:$D(@(ICDR_"""ABA"","_ICDS_","""_TMP_" "")")) ICDO=ICDS
  1. . . Q:ICDO>0 S ICDV=$O(@(ICDR_"""AVA"","""_TMP_" "",0)"))
  1. . . S:+ICDV>0 ICDO=$P($G(@(ICDR_+ICDV_",1)")),"^",1) Q:ICDO>0
  1. . . S ICDE=$O(@(ICDR_"""AEXC"","""_TMP_" "",0)"))
  1. . . S:+ICDE>0 ICDO=$P($G(@(ICDR_+ICDE_",1)")),"^",1) Q:ICDO>0
  1. Q ICDO
  1. SINFO(SYS,CDT) ; System Info (uses file 80.4)
  1. ;
  1. ; Input:
  1. ;
  1. ; SYS System/Source Abbreviation/System Identifier/Code
  1. ; CDT Date (optional)
  1. ;
  1. ; Output:
  1. ;
  1. ; $$SINFO System Info (numeric or alpha)
  1. ;
  1. ; Internal External
  1. ; 1 IEN to file 80.4
  1. ; 2 Coding System
  1. ; 3 Abbreviation
  1. ; 4 File Number
  1. ; 5 Implementation Date
  1. ; 6 Content
  1. ;
  1. ; or
  1. ; -1 on error
  1. ;
  1. N ICDD,ICDS,ICDN,ICDT
  1. S ICDD=$S($G(CDT)'?7N:$$DT^XLFDT,1:$G(CDT))
  1. S ICDS=$$SYS($G(SYS),ICDD,"I")
  1. Q:+ICDS'>0 "-1^Coding System Unknown"
  1. S ICDN=$G(^ICDS(+ICDS,0)) Q:'$L(ICDN) "-1^Coding System not found"
  1. S ICDT=$S($P(ICDN,"^",3)=80:"Diagnosis",$P(ICDN,"^",3)=80.1:"Procedure",1:"")
  1. S SYS=ICDS_"^"_ICDN S:$L(ICDT) SYS=SYS_"^"_ICDT
  1. Q SYS
  1. SNAM(SYS) ; System Name
  1. ;
  1. ; Input:
  1. ;
  1. ; SYS Numeric System Identifier (field 1.1)
  1. ;
  1. ; Output:
  1. ;
  1. ; $$SYS Character System Name
  1. ;
  1. ; or -1 on error
  1. ;
  1. S SYS=+($G(SYS)) S SYS=$P($G(^ICDS(+SYS,0)),"^",1)
  1. Q $S($L(SYS):SYS,1:-1)
  1. SAB(X,Y) ; Source Abbreviation
  1. ;
  1. ; Input:
  1. ;
  1. ; X Source Abbreviation or Identifier
  1. ; Y Date used to determine SAB
  1. ;
  1. ; Output:
  1. ;
  1. ; $$SAB 3 Character System Identifier
  1. ;
  1. N SYS,CDT,TY,VR,OUT,TMP,ICD10 S SYS=$G(X),CDT=$G(Y)
  1. S:CDT'?7N CDT=$$DT^XLFDT S ICD10=+($$IMP^ICDEX(30))
  1. S TMP=$$SYS(SYS,CDT) S:+TMP>0&($D(^ICDS(+TMP,0))) SYS=TMP
  1. Q:+SYS=1 "ICD" Q:+SYS=2 "ICP" Q:+SYS=30 "10D" Q:+SYS=31 "10P"
  1. Q:SYS="DIAG" $S(CDT'<ICD10:"10D",1:"ICD")
  1. Q:SYS["ICD9" $S(CDT'<ICD10:"10D",1:"ICD")
  1. Q:SYS="PROC" $S(CDT'<ICD10:"10P",1:"ICP")
  1. Q:SYS["ICD0" $S(CDT'<ICD10:"10P",1:"ICP")
  1. Q:"^ICD^ICP^10D^10P^"[("^"_SYS_"^") SYS
  1. Q ""
  1. EXC(FILE,IEN) ; Exclude From lookup
  1. ;
  1. ; Input:
  1. ;
  1. ; FILE File number 80 or 80.1
  1. ; IEN Internal Entry Number
  1. ;
  1. ; Output:
  1. ;
  1. ; $$EXC Boolean value 1 = Yes 0 = No
  1. ;
  1. N ICDF,ICDI,ICDR S ICDF=+($G(FILE)),ICDI=+($G(IEN)) Q:"^80^80.1^"'[("^"_ICDF_"^") 0
  1. S ICDR=$$ROOT(ICDF) Q:"^ICD9(^ICD0(^"'[("^"_$E(ICDR,2,$L(ICDR))_"^") 0 Q:'$D(@(ICDR_+ICDI_",0)")) 0
  1. Q $S(+($$GET1^DIQ(ICDF,(+ICDI_","),1.8))'>0:0,1:1)