我正在寻找疾病和程序的ICD-9代码(医疗代码)的完整列表,其格式可以导入数据库并以编程方式引用。我的问题基本上与Looking for resources for ICD-9 codes完全相同,但原始海报忽略了提到他“完全清楚”他的完整清单的地方。
谷歌绝对不是我的朋友,因为我花了很多时间来搜索问题并找到了许多富文本类型列表(例如CDC)或网站,我可以交互式深入查看完整列表,但我找不到在哪里获取将填充这些网站的列表,并可以解析为数据库。我相信这里的文件ftp://ftp.cdc.gov/pub/Health_Statistics/NCHS/Publications/ICD9-CM/2009/有我想要的东西,但文件是富文本格式,包含很多垃圾和格式很难准确删除。
我知道这必须由其他人完成,我试图避免重复其他人的努力,但我找不到xml / CSV / Excel列表。
答案 0 :(得分:22)
医疗补助中心& Medicare服务提供excel文件,其中只包含代码和诊断,可以直接导入某些SQL数据库,无需转换。
Zipped Excel files, by version number
(更新:基于以下评论的新链接)
答案 1 :(得分:11)
删除RTF后,解析文件并将其变为CSV并不困难。我得到的解析文件包含疾病和程序的所有2009 ICD-9代码:http://www.jacotay.com/files/Disease_and_ProcedureCodes_Parsed.zip 我写的解析器在这里:http://www.jacotay.com/files/RTFApp.zip 基本上它是一个两步过程 - 从CDC FTP站点获取文件,并从中删除RTF,然后选择无RTF文件并将其解析为CSV文件。 这里的代码非常粗糙,因为我只需要将结果输出一次。
以下是解析应用程序的代码,以防外部链接关闭(后端为允许您选择文件名并单击按钮的表单)
Public Class Form1
Private Sub btnBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBrowse.Click
Dim p As New OpenFileDialog With {.CheckFileExists = True, .Multiselect = False}
Dim pResult = p.ShowDialog()
If pResult = Windows.Forms.DialogResult.Cancel OrElse pResult = Windows.Forms.DialogResult.Abort Then
Exit Sub
End If
txtFileName.Text = p.FileName
End Sub
Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
Dim pFile = New IO.FileInfo(txtFileName.Text)
Dim FileText = IO.File.ReadAllText(pFile.FullName)
FileText = RemoveRTF(FileText)
IO.File.WriteAllText(Replace(pFile.FullName, pFile.Extension, "_fixed" & pFile.Extension), FileText)
End Sub
Function RemoveRTF(ByVal rtfText As String)
Dim rtBox As System.Windows.Forms.RichTextBox = New System.Windows.Forms.RichTextBox
'// Get the contents of the RTF file. Note that when it is
'// stored in the string, it is encoded as UTF-16.
rtBox.Rtf = rtfText
Dim plainText = rtBox.Text
Return plainText
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim pFile = New IO.FileInfo(txtFileName.Text)
Dim FileText = IO.File.ReadAllText(pFile.FullName)
Dim DestFileLine As String = ""
Dim DestFileText As New System.Text.StringBuilder
'Need to parse at lines with numbers, lines with all caps are thrown away until next number
FileText = Strings.Replace(FileText, vbCr, "")
Dim pFileLines = FileText.Split(vbLf)
Dim CurCode As String = ""
For Each pLine In pFileLines
If pLine.Length = 0 Then
Continue For
End If
pLine = pLine.Replace(ChrW(9), " ")
pLine = pLine.Trim
Dim NonCodeLine As Boolean = False
If IsNumeric(pLine.Substring(0, 1)) OrElse (pLine.Length > 3 AndAlso (pLine.Substring(0, 1) = "E" OrElse pLine.Substring(0, 1) = "V") AndAlso IsNumeric(pLine.Substring(1, 1))) Then
Dim SpacePos As Int32
SpacePos = InStr(pLine, " ")
Dim NewCode As String
NewCode = ""
If SpacePos >= 3 Then
NewCode = Strings.Left(pLine, SpacePos - 1)
End If
If SpacePos < 3 OrElse Strings.Mid(pLine, SpacePos - 1, 1) = "." OrElse InStr(NewCode, "-") > 0 Then
NonCodeLine = True
Else
If CurCode <> "" Then
DestFileLine = Strings.Replace(DestFileLine, ",", ",")
DestFileLine = Strings.Replace(DestFileLine, """", """).Trim
DestFileText.AppendLine(CurCode & ",""" & DestFileLine & """")
CurCode = ""
DestFileLine = ""
End If
CurCode = NewCode
DestFileLine = Strings.Mid(pLine, SpacePos + 1)
End If
Else
NonCodeLine = True
End If
If NonCodeLine = True AndAlso CurCode <> "" Then 'If we are not on a code keep going, otherwise check it
Dim pReg As New System.Text.RegularExpressions.Regex("[a-z]")
Dim pRegCaps As New System.Text.RegularExpressions.Regex("[A-Z]")
If pReg.IsMatch(pLine) OrElse pLine.Length <= 5 OrElse pRegCaps.IsMatch(pLine) = False OrElse (Strings.Left(pLine, 3) = "NOS" OrElse Strings.Left(pLine, 2) = "IQ") Then
DestFileLine &= " " & pLine
Else 'Is all caps word
DestFileLine = Strings.Replace(DestFileLine, ",", ",")
DestFileLine = Strings.Replace(DestFileLine, """", """).Trim
DestFileText.AppendLine(CurCode & ",""" & DestFileLine & """")
CurCode = ""
DestFileLine = ""
End If
End If
Next
If CurCode <> "" Then
DestFileLine = Strings.Replace(DestFileLine, ",", ",")
DestFileLine = Strings.Replace(DestFileLine, """", """).Trim
DestFileText.AppendLine(CurCode & ",""" & DestFileLine & """")
CurCode = ""
DestFileLine = ""
End If
IO.File.WriteAllText(Replace(pFile.FullName, pFile.Extension, "_parsed" & pFile.Extension), DestFileText.ToString)
End Sub
结束班
答案 2 :(得分:5)
医疗保险服务中心(CMS)实际上是收取ICD的,因此我认为您提到的CDC版本可能只是副本或重新处理的副本。这是(〜很难找到)医疗保险页面,我认为它包含原始原始数据(&#34;事实来源&#34;)。
http://www.cms.gov/Medicare/Coding/ICD9ProviderDiagnosticCodes/codes.html
看起来像这篇文章的最新版本是v32。您下载的zip将包含4个纯文本文件,这些文件映射代码到描述(DIAG | PROC和SHORT | LONG的每个组合都有一个文件)。它还包含两个excel文件(DIAG_PROC各一个),它们有三列,因此将代码映射到两个描述(long 和 short)。
答案 3 :(得分:4)
显然,这是一个非常古老的线程,但我最近承担了这项任务,并在此处将其与源数据链接写在一起 -
http://colinwhite.net/dropplets/ICD
我试图将ICD-9和ICD-10都放到SQLite数据库中。
似乎运作良好。
答案 4 :(得分:3)
您可以从此处获取原始RTF代码文件 http://ftp.cdc.gov/pub/Health_Statistics/NCHS/Publications/ICD9-CM/2009/