database - fda - Lista de códigos ICD-9 en XML, CSV o formato de base de datos
fda database (5)
Estoy buscando una lista completa de los Códigos ICD-9 (Códigos Médicos) para Enfermedades y Procedimientos en un formato que se pueda importar a una base de datos y hacer referencia programáticamente. Básicamente, mi pregunta es exactamente la misma que Buscando recursos para los códigos ICD-9 , pero el póster original no mencionó de dónde sacó su lista completa.
Google definitivamente no es mi amigo aquí, ya que he pasado muchas horas buscando en Google el problema y he encontrado muchas listas de tipo de texto enriquecido (como los CDC) o sitios web donde puedo profundizar en la lista completa de manera interactiva, pero no puedo encontrar dónde obtener la lista que llenaría estos sitios web y se puede analizar en una base de datos. Creo que los archivos aquí ftp://ftp.cdc.gov/pub/Health_Statistics/NCHS/Publications/ICD9-CM/2009/ tienen lo que estoy buscando pero los archivos tienen formato de texto enriquecido y contienen mucha basura y formato. Eso sería difícil de eliminar con precisión.
Sé que otros deben haberlo hecho y estoy tratando de evitar la duplicación del esfuerzo de otras personas, pero simplemente no puedo encontrar una lista xml / CSV / Excel.
Claramente, un hilo muy antiguo, pero recientemente realicé esta tarea y la escribí aquí con enlaces a datos fuente:
http://colinwhite.net/dropplets/ICD
Estaba tratando de obtener tanto ICD-9 como ICD-10 en una base de datos SQLite.
Parece haber funcionado bien.
Después de eliminar el RTF, no fue demasiado difícil analizar el archivo y convertirlo en un archivo CSV. Mis archivos analizados resultantes que contienen todos los códigos ICD-9 de 2009 para enfermedades y procedimientos están aquí: http://www.jacotay.com/files/Disease_and_ProcedureCodes_Parsed.zip Mi analizador que escribí está aquí: http://www.jacotay.com/files/RTFApp.zip Básicamente es un proceso de dos pasos: tome los archivos del sitio FTP de CDC y elimine el RTF de ellos, luego seleccione los archivos sin RTF y analícelos en los archivos CSV. El código aquí es bastante aproximado porque solo necesitaba obtener los resultados una vez.
Aquí está el código para la aplicación de análisis en caso de que los enlaces externos se caigan (parte posterior de un formulario que le permite seleccionar un nombre de archivo y hacer clic en los botones para que funcione)
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
Clase final
El Centro de Servicios de Medicare (CMS, por sus siglas en inglés) se cobra actualmente por ICD, por lo que creo que las versiones de CDC que ustedes hacen referencia pueden ser simplemente copias o copias reprocesadas. Aquí está la página de Medicare (que es difícil de encontrar) que, en mi opinión, contiene los datos brutos originales ("fuente de la verdad").
http://www.cms.gov/Medicare/Coding/ICD9ProviderDiagnosticCodes/codes.html
Parece que a partir de este post la última versión es v32. El archivo zip que descargue contendrá 4 archivos de texto plano que asignan código a descripción (un archivo para cada combinación de DIAG | PROC y SHORT | LONG). También contiene dos archivos de Excel (uno para DIAG_PROC) que tienen tres columnas, así que asigna el código a ambas descripciones (larga y corta).
Los centros de servicios de Medicaid y Medicare proporcionan archivos de Excel que solo contienen los códigos y el diagnóstico, que se pueden importar directamente en algunas bases de datos SQL, sin conversión.
Archivos de Excel comprimidos, por número de versión
(Actualización: Nuevo enlace basado en el comentario a continuación)
Puede obtener los archivos de código RTF originales aquí http://ftp.cdc.gov/pub/Health_Statistics/NCHS/Publications/ICD9-CM/2009/