首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML、CSV或数据库格式的ICD-9代码列表

XML、CSV或数据库格式的ICD-9代码列表
EN

Stack Overflow用户
提问于 2010-09-07 03:13:50
回答 4查看 46.6K关注 0票数 31

我正在寻找一个完整的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列表。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-21 22:39:57

删除RTF后,解析文件并将其转换为CSV并不是太难。我得到的包含所有2009ICD-9疾病和程序代码的解析文件在这里:http://www.jacotay.com/files/Disease_and_ProcedureCodes_Parsed.zip我写的解析器在这里:http://www.jacotay.com/files/RTFApp.zip基本上是一个两步的过程-从CDC FTP站点获取文件,并从中删除RTF,然后选择RTF-free文件并将它们解析成CSV文件。这里的代码非常粗糙,因为我只需要输出一次结果。

以下是解析应用程序的代码,以防外部链接关闭(后端到一个表单,该表单允许您选择一个文件名,然后单击按钮使其生效)

代码语言:javascript
复制
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, ",", "&#44;")
                    DestFileLine = Strings.Replace(DestFileLine, """", "&quot;").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, ",", "&#44;")
                DestFileLine = Strings.Replace(DestFileLine, """", "&quot;").Trim
                DestFileText.AppendLine(CurCode & ",""" & DestFileLine & """")
                CurCode = ""
                DestFileLine = ""
            End If
        End If
    Next

    If CurCode <> "" Then
        DestFileLine = Strings.Replace(DestFileLine, ",", "&#44;")
        DestFileLine = Strings.Replace(DestFileLine, """", "&quot;").Trim
        DestFileText.AppendLine(CurCode & ",""" & DestFileLine & """")
        CurCode = ""
        DestFileLine = ""
    End If

    IO.File.WriteAllText(Replace(pFile.FullName, pFile.Extension, "_parsed" & pFile.Extension), DestFileText.ToString)
End Sub

结束类

票数 11
EN

Stack Overflow用户

发布于 2011-07-15 04:15:01

医疗补助和医疗保险服务中心提供了excel文件,其中只包含代码和诊断,可以直接导入到一些SQL数据库,sans转换。

Zipped Excel files, by version number

(更新:基于以下评论的新链接)

票数 22
EN

Stack Overflow用户

发布于 2014-11-07 06:03:31

医疗保险服务中心(CMS)实际上收取ICD费用,所以我认为你们参考的CDC版本可能只是副本或重新处理的副本。这是(~难以找到)的联邦医疗保险页面,我认为它包含原始数据(“真相来源”)。

http://www.cms.gov/Medicare/Coding/ICD9ProviderDiagnosticCodes/codes.html

看起来在这篇文章中最新的版本是v32。您下载的zip将包含4个纯文本文件,它们将代码映射到描述( DIAG|PROC和SHORT|LONG的每种组合对应一个文件)。它还包含两个excel文件(每个文件用于DIAG_PROC),这两个文件有三列,因此将代码映射到这两个描述(长描述和短描述)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3653811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档