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

ICDID.m

Go to the documentation of this file.
  1. ICDID ;ISL/KER - ICD Identifiers ;04/21/2014
  1. ;;18.0;DRG Grouper;**12,15,57**;Oct 20, 2000;Build 1
  1. ;
  1. ; Global Variables
  1. ; None
  1. ;
  1. ; External References
  1. ; $$GET1^DIQ ICR 2056
  1. ; $$DT^XLFDT ICR 10103
  1. ; $$FMTE^XLFDT ICR 10103
  1. ;
  1. Q
  1. ; Identifiers for ICD Diagnosis file 80
  1. IDDX(Y,X) ; ICD Diagnosis Identifiers (versioned)
  1. N FLD,MSG,CODE,TYPE S FLD=+($G(X)),Y=+($G(Y)) Q:+FLD'>0 "" Q:+Y'>0 ""
  1. S TYPE=$$CSI^ICDEX(80,+Y)
  1. I '$D(ICDVDT) N ICDVDT S ICDVDT=$$DT^XLFDT
  1. S MSG=$$MSG^ICDEX($G(ICDVDT),,TYPE),CODE=$$CODEC^ICDEX(80,+Y)
  1. I FLD=3 S X=$$VSTD^ICDEX(+Y,$G(ICDVDT))_$S($L(MSG):(" ("_MSG_")"),1:"") Q X
  1. I FLD=10 S X=$$VLTD^ICDEX(+Y,$G(ICDVDT))_$S($L(MSG):(" ("_MSG_")"),1:"") Q X
  1. I FLD=100 S X=$$STA(+($$STATCHK^ICDEX(CODE,$G(ICDVDT),TYPE))) Q X
  1. I FLD=20!(FLD=30)!(FLD=40)!(FLD=66)!(FLD=67)!(FLD=68) Q ""
  1. S X=$$GET1^DIQ(80,(+($G(Y))_","),FLD)
  1. Q X
  1. IDDXF(Y) ; ICD Diannosis Full
  1. N CC,CODE,TYPE,SYS,EF,ICDAT,ICID,MSG,SE,ST,LDX,IEN S (IEN,Y)=+($G(Y)) Q:+IEN'>0 ""
  1. S (SYS,TYPE)=$$CSI^ICDEX(80,+IEN),TYPE=$S(TYPE=1:"ICD-9 ",TYPE=30:"ICD-10",1:"")
  1. S CODE=$$CODEC^ICDEX(80,+IEN) I '$D(ICDVDT) N ICDVDT S ICDVDT=$$DT^XLFDT
  1. S ICDAT=$$ICDDX^ICDEX(IEN,$G(ICDVDT),,"I",1) S MSG=$$MSG^ICDEX($G(ICDVDT),,TYPE) S:MSG["CODE " MSG="Text may be inaccurate"
  1. S ICID=$$UP($P(ICDAT,"^",4)),LDX="" S:ICID'=""&(TYPE'="") ICID=TYPE_" "_CODE_" "_ICID
  1. I ICID="",$P($$UP(ICDAT),"^",2)["VA LOCAL CODE" S LDX=$$VSTD^ICDEX(+IEN,9990101) I $L(LDX) D
  1. . S:'$L(TYPE) ICID=CODE_" "_LDX S:$L(TYPE) ICID=TYPE_" "_CODE_" "_LDX
  1. . S:$P(ICDAT,"^",7)'>0 MSG="Local code, do not use"
  1. S:$L(MSG)&($L(ICID)) ICID=ICID_" ("_MSG_")"
  1. S EF="",ST=$P(ICDAT,"^",10) S:+ST'>0 EF=$P(ICDAT,"^",12)
  1. S:+ST>0 EF=$P(ICDAT,"^",17) S ST=+ST
  1. I ST'>0,'$L(EF) S EF=$$LS^ICDEX(80,+IEN,9990101,1),ST=+($P(EF,"^",1)),EF=+($P(EF,"^",2))
  1. S SE=$$SF(80,IEN,ICDVDT),CC=$$CC(+$P(ICDAT,"^",19)) S:$L(CC) ICID=ICID_$S('$L(MSG):" ",1:"")_" ("_CC_")"
  1. S:$L(SE) ICID=ICID_$S('$L(MSG)&('$L(CC)):" ",1:"")_" "_SE
  1. S Y=$$TML(ICID)
  1. Q Y
  1. IDDXS(Y) ; ICD Diagnosis Identifiers (versioned - short)
  1. N ICID,ICDAT,MSG,CODE,SYS,TYPE,ST,IEN,CC,X S (IEN,Y)=+($G(Y)) Q:+Y'>0 ""
  1. S (SYS,TYPE)=$$CSI^ICDEX(80,+IEN) I '$D(ICDVDT) N ICDVDT S ICDVDT=$$DT^XLFDT
  1. S MSG=$$MSG^ICDEX($G(ICDVDT),,TYPE) S:MSG["CODE " MSG="Text may be inaccurate"
  1. S CODE=$$CODEC^ICDEX(80,+IEN),ICID=$$VSTD^ICDEX(+Y,$G(ICDVDT))
  1. S:$L(MSG) ICID=ICID_" ("_MSG_")"
  1. S ST=$$STA(+($$STATCHK^ICDEX(CODE,$G(ICDVDT),TYPE)))
  1. S CC=+$P($$ICDDX^ICDEX(IEN,$G(ICDVDT),,"I",1),"^",19),CC=$$CC(+CC)
  1. S:$L(CC) ICID=ICID_$S('$L(MSG):" ",1:"")_" ("_CC_")"
  1. S:$L(ST) ICID=ICID_$S('$L(MSG)&('$L(CC)):" ",1:"")_" "_ST
  1. F Q:$E(ICID,1)'=" " S ICID=$E(ICID,2,$L(ICID))
  1. S Y=ICID
  1. Q Y
  1. ;
  1. ; Identifiers for ICD Procedure file 80.1
  1. IDOP(Y,X) ; ICD Procedure Identifiers (versioned)
  1. N FLD,MSG,CODE S FLD=+($G(X)),Y=+($G(Y)) Q:+FLD'>0 "" Q:+Y'>0 ""
  1. S TYPE=$$CSI^ICDEX(80.1,+IEN)
  1. I '$D(ICDVDT) N ICDVDT S ICDVDT=$$DT^XLFDT
  1. S MSG=$$MSG^ICDEX($G(ICDVDT),,TYPE),CODE=$$CODEC^ICDEX(80.1,+IEN)
  1. I FLD=4 S X=$$VSTP^ICDEX(+Y,$G(ICDVDT))_$S($L(MSG):(" ("_MSG_")"),1:"") Q X
  1. I FLD=10 S X=$$VLTP^ICDEX(+Y,$G(ICDVDT))_$S($L(MSG):(" ("_MSG_")"),1:"") Q X
  1. I FLD=100 S X=$$STA(+($$STATCHK^ICDEX(CODE,$G(ICDVDT),TYPE))) Q X
  1. I FLD=7!(FLD=66)!(FLD=67)!(FLD=68) Q ""
  1. S X=$$GET1^DIQ(80.1,(+($G(Y))_","),FLD)
  1. Q X
  1. IDOPF(Y) ; ICD Procedure Full
  1. N CODE,EF,IEN,ICDAT,ICID,MSG,SE,ST,LOP,SYS,TYPE,LHE,LHI,LHN,LST S (IEN,Y)=+($G(Y)) Q:+IEN'>0 ""
  1. S CODE=$$CODEC^ICDEX(80.1,+IEN)
  1. S (SYS,TYPE)=$$CSI^ICDEX(80.1,+IEN) S TYPE=$S(TYPE=2:"ICD-9 ",TYPE=31:"ICD-10",1:"") I '$D(ICDVDT) N ICDVDT S ICDVDT=$$DT^XLFDT
  1. S ICDAT=$$ICDOP^ICDEX(IEN,ICDVDT,,"I",1),MSG=$$MSG^ICDEX($G(ICDVDT),,TYPE) S:MSG["CODE " MSG="Text may be inaccurate"
  1. S ICID=$$UP($P(ICDAT,"^",5)),LOP="" S:ICID'=""&(TYPE'="") ICID=TYPE_" "_CODE_" "_ICID
  1. I ICID="",$P($$UP(ICDAT),"^",2)["VA LOCAL CODE" S LOP=$$VSTP^ICDEX(+IEN,9990101) I $L(LOP) D
  1. . S:'$L(TYPE) ICID=CODE_" "_LOP S:$L(TYPE) ICID=TYPE_" "_CODE_" "_LOP
  1. . S:$P(ICDAT,"^",10)'>0 MSG="Local code, do not use"
  1. S:$L(MSG)&($L(ICID)) ICID=ICID_" ("_MSG_")"
  1. S EF="",ST=$P(ICDAT,"^",10) S:+ST'>0 EF=$P(ICDAT,"^",12) S:+ST>0 EF=$P(ICDAT,"^",13) S ST=+ST
  1. I ST'>0,'$L(EF) S EF=$$LS^ICDEX(80.1,+IEN,9990101,1),ST=+($P(EF,"^",1)),EF=+($P(EF,"^",2))
  1. S SE=$$SF(80.1,IEN,ICDVDT) S:$L(SE) ICID=ICID_$S('$L(MSG):" ",1:"")_" "_SE S Y=$$TML(ICID)
  1. Q Y
  1. IDOPS(Y) ; ICD Procedure Identifiers (versioned - short)
  1. N ICID,MSG,CODE,LHE,LHI,LHN,LST,TYPE,ST,X S Y=+($G(Y)) Q:+Y'>0 "" I '$D(ICDVDT) N ICDVDT S ICDVDT=$$DT^XLFDT
  1. S TYPE=$$CSI^ICDEX(80.1,+IEN),MSG=$$MSG^ICDEX($G(ICDVDT),,TYPE) S:MSG["CODE " MSG="Text may be inaccurate"
  1. S CODE=$$CODEC^ICDEX(80.1,+IEN),ICID=$$VSTP^ICDEX(+Y,$G(ICDVDT)) S:$L(MSG) ICID=ICID_" ("_MSG_")"
  1. S ST=$$STA(+($$STATCHK^ICDEX(CODE,$G(ICDVDT),TYPE)))
  1. S:$L(ST) ICID=ICID_$S('$L(MSG):" ",1:"")_" "_ST
  1. F Q:$E(ICID,1)'=" " S ICID=$E(ICID,2,$L(ICID))
  1. S Y=ICID
  1. Q Y
  1. ;
  1. ; Identifiers for DRG file 80.2
  1. IDDG(Y,X) ; DRG Identifiers (versioned)
  1. N FLD,MSG S FLD=+($G(X)),Y=+($G(Y)) Q:+FLD'>0 "" Q:+Y'>0 ""
  1. I '$D(ICDVDT) N ICDVDT S ICDVDT=$$DT^XLFDT
  1. S MSG=$$MSG^ICDEX($G(ICDVDT)) I FLD=1 D Q X
  1. . N DRG D VLTDR^ICDGTDRG(+Y,$G(ICDVDT),.DRG)
  1. . S X=$G(DRG(1)) S:$L(MSG) X=X_" ("_MSG_")"
  1. I FLD=15 D Q X
  1. . N VD,I,ST S VD=$O(^ICD(+Y,66,"B"," "),-1)
  1. . S I=$O(^ICD(+Y,66,"B",+VD," "),-1),X=$$STA(+($P($G(^ICD(+Y,66,+I,0)),"^",3)))
  1. I FLD=20!(FLD=30)!(FLD=66)!(FLD=68) Q ""
  1. S X=$$GET1^DIQ(80.2,(+($G(Y))_","),FLD)
  1. Q X
  1. IDDGS(Y) ; DRG Identifiers (versioned - Short)
  1. N MSG,X,ICDRG,ICID,VD,I,ST S Y=+($G(Y)) Q:+Y'>0 ""
  1. I '$D(ICDVDT) N ICDVDT S ICDVDT=$$DT^XLFDT
  1. S MSG=$$MSG^ICDEX($G(ICDVDT)) S:MSG["CODE " MSG="Text may be inaccurate"
  1. D VLTDR^ICDGTDRG(+Y,$G(ICDVDT),.ICDRG)
  1. S ICID=$G(ICDRG(1)) S:$L(MSG) ICID=ICID_" ("_MSG_")"
  1. S VD=$O(^ICD(+Y,66,"B"," "),-1)
  1. S I=$O(^ICD(+Y,66,"B",+VD," "),-1)
  1. S ST=$$STA(+($P($G(^ICD(+Y,66,+I,0)),"^",3)))
  1. S:$L(ST) ICID=ICID_$S('$L(MSG):" ",1:"")_" "_ST
  1. F Q:$E(ICID,1)'=" " S ICID=$E(ICID,2,$L(ICID))
  1. S Y=ICID
  1. Q Y
  1. ;
  1. ; Miscellaneous
  1. STA(X) ; Format Status
  1. Q $S(+($G(X)):"",1:"INACTIVE")
  1. STED(X) ; Format Inactive Flag (Status) and Effective Date
  1. N ST,ED S ST=$P(X,"^",1) Q:+ST>0 "" S ED=$P(X,"^",2) S:ED'?7N ED="" S:$L(ED) ED=$TR($$FMTE^XLFDT(ED,"5DZ"),"@"," ")
  1. S X="Inactive" S:$L(ED)=10 X=X_" "_ED
  1. Q X
  1. SF(X,Y,Z) ; Status Flag
  1. N FI,RT,EF,IE,HIS,STA,EFF S FI=+($G(X)) Q:"^80^80.1^"'[("^"_FI_"^") ""
  1. S RT=$S(FI=80:$$ROOT^ICDEX(80),FI=80.1:$$ROOT^ICDEX(80.1),1:"") Q:'$L(RT) ""
  1. S IE=+($G(Y)) Q:+Y'>0 "" Q:'$D(@(RT_IE_",0)")) "" S EF=$G(Z) Q:EF'?7N ""
  1. S EFF=$O(@(RT_IE_",66,""B"","_(EF+.000009)_")"),-1)
  1. I EFF'?7N D Q X
  1. . S X="" S EFF=$O(@(RT_IE_",66,""B"","_EF_")")) I EFF?7N D
  1. . . N HIS,STA S HIS=$O(@(RT_IE_",66,""B"","_EFF_","" "")"),-1) Q:+HIS'>0
  1. . . S STA=$G(@(RT_IE_",66,"_HIS_",0)"),-1)
  1. . . I $P(STA,"^",2)>0 S X="(Pending "_$TR($$FMTE^XLFDT(EFF,"5DZ"),"@"," ")_")"
  1. S HIS=$O(@(RT_IE_",66,""B"","_EFF_","" "")"),-1) Q:+HIS'>0 ""
  1. S STA=$G(@(RT_IE_",66,"_HIS_",0)"),-1)
  1. I $P(STA,"^",2)'>0 D Q X
  1. . S X="(Inactive "_$TR($$FMTE^XLFDT(EFF,"5DZ"),"@"," ")_")"
  1. Q ""
  1. CC(X) ; Format CC
  1. Q $S(+($G(X))=1:"C/C",+($G(X))=2:"Major C/C",1:"")
  1. TML(X) ; Trim Leading Spaces
  1. S X=$G(X) F Q:$E(X,1)'=" " S X=$E(X,2,$L(X))
  1. Q X
  1. UP(X) ; Uppercase
  1. Q $TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")