Подтвердить что ты не робот

Список кодов ICD-9 в формате XML, CSV или базы данных

Я ищу полный список кодов ICD-9 (Медицинские коды) для болезней и процедур в формате, который можно импортировать в базу данных и ссылаться программно. Мой вопрос в основном такой же, как Поиск ресурсов для кодов ICD-9, но в оригинальном плакате не упоминалось, где именно он "получил" свой полный список.

Google определенно не мой друг здесь, так как я потратил много часов на поиск проблемы и нашел множество списков типов расширенного текста (например, CDC) или веб-сайтов, где я могу перейти к полному списку в интерактивном режиме, но я не могу найти где можно получить список, который будет заполнять эти веб-сайты и может быть проанализирован в базе данных. Я считаю, что файлы здесь ftp://ftp.cdc.gov/pub/Health_Statistics/NCHS/Publications/ICD9-CM/2009/ имеют то, что я ищу, но файлы имеют богатый текстовый формат и содержат много мусора и форматирования, которые будет трудно удалить точно.

Я знаю, что это нужно делать другим, и я стараюсь избегать дублирования усилий других людей, но я просто не могу найти список xml/CSV/Excel.

4b9b3361

Ответ 1

После удаления RTF было не слишком сложно разобрать файл и превратить его в CSV. Полученные в результате анализируемые файлы, содержащие все коды ICD-9 2009 года для болезней и процедур, приведены здесь: http://www.jacotay.com/files/Disease_and_ProcedureCodes_Parsed.zip Мой парсер, который я написал, находится здесь: http://www.jacotay.com/files/RTFApp.zip В основном это двухэтапный процесс: возьмите файлы с FTP-сайта CDC и удалите 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, ",", "&#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

Конечный класс

Ответ 2

Центры Medicaid и Medicare предоставляют файлы excel, содержащие только коды и диагностику, которые могут быть импортированы непосредственно в некоторые базы данных SQL, без преобразования.

Файлы с zipped Excel по номеру версии

(Обновление: новая ссылка, основанная на комментарии ниже)

Ответ 3

Ясно, что очень старый поток, но я недавно взял на себя эту задачу и написал ее здесь со ссылками на исходные данные -

http://colinwhite.net/dropplets/ICD

Я пытался получить как ICD-9, так и ICD-10 в базу данных SQLite.

Кажется, что он хорошо работал.

Ответ 4

Центр Medicare Services (CMS) фактически взимается с ICD, поэтому я думаю, что версии CDC, которые вы, ребята, ссылаетесь, могут быть просто копиями или переработанными копиями. Вот страница (~ трудно найти) медикаментов, которая, я думаю, содержит исходные исходные данные ( "источник истины" ).

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

Похоже, что на этом посту последняя версия - v32. Загружаемый zip будет содержать 4 файла текстового текста, которые преобразуют код в описание (один файл для каждой комбинации DIAG | PROC и SHORT | LONG). Он также содержит два файла excel (по одному для DIAG_PROC), которые имеют три столбца, поэтому код карты для обоих описаний (длинный и короткий).