Je recherche une liste complète des codes de la CIM-9 (codes médicaux) pour les maladies et les procédures dans un format qui peut être importé dans une base de données et référencé par programme. Ma question est fondamentalement exactement la même que Recherche de ressources pour les codes de la CIM-9 , mais l'affiche originale a négligé de mentionner où exactement "il a obtenu" sa liste complète.
Google n'est certainement pas mon ami ici, car j'ai passé de nombreuses heures à rechercher le problème et à trouver de nombreuses listes de types de texte riche (comme le CDC) ou des sites Web où je peux explorer la liste complète de manière interactive, mais je ne trouve pas où obtenir la liste qui remplirait ces sites Web et peut être analysée dans une base de données. Je crois que les fichiers ici ftp://ftp.cdc.gov/pub/Health_Statistics/NCHS/Publications/ICD9-CM/2009/ ont ce que je recherche, mais les fichiers sont au format texte riche et contiennent beaucoup de déchets et de mise en forme qui seraient difficiles à supprimer avec précision.
Je sais que cela a dû être fait par d'autres et j'essaie d'éviter de dupliquer les efforts des autres, mais je ne trouve tout simplement pas de liste xml/CSV/Excel.
Après avoir supprimé le RTF il n'a pas été trop difficile d'analyser le fichier et de le transformer en CSV. Mes fichiers analysés résultants contenant tous les codes 2009 de la CIM-9 pour les maladies et les procédures sont ici: - http://www.jacotay.com/files/Disease_and_ProcedureCodes_Parsed.Zip Mon analyseur que j'ai écrit est ici: http://www.jacotay.com/files/RTFApp.Zip Fondamentalement, il s'agit d'un processus en deux étapes - prenez les fichiers du site FTP du CDC et supprimez-les RTF, puis sélectionnez les fichiers sans RTF et analysez-les dans les fichiers CSV. Le code ici c'est assez difficile car je n'ai eu besoin de sortir les résultats qu'une seule fois.
Voici le code de l'application d'analyse au cas où les liens externes tomberaient (retour à un formulaire qui vous permet de sélectionner un nom de fichier et de cliquer sur les boutons pour le faire fonctionner)
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
Fin de classe
Centers for Medicaid & Medicare services fournit des fichiers Excel qui contiennent uniquement les codes et le diagnostic, qui peuvent être importés directement dans certaines bases de données SQL, sans conversion.
Fichiers Excel zippés, par numéro de version
(Mise à jour: nouveau lien basé sur le commentaire ci-dessous)
Le Center for Medicare Services (CMS) est en fait chargé de l'ICD, donc je pense que les versions CDC auxquelles vous faites référence peuvent être simplement des copies ou des copies retraitées. Voici la page (~ difficile à trouver) de l'assurance-maladie qui, je pense, contient les données brutes originales ("source de vérité").
http://www.cms.gov/Medicare/Coding/ICD9ProviderDiagnosticCodes/codes.html
Il semblerait que la dernière version soit la v32. Le fichier Zip que vous téléchargez contiendra 4 fichiers en texte brut qui mappent le code à la description (un fichier pour chaque combinaison de DIAG | PROC et SHORT | LONG). Il contient également deux fichiers Excel (un pour DIAG_PROC chacun) qui ont trois colonnes afin de mapper le code sur les deux descriptions (longues et court).
De toute évidence, un fil très ancien, mais j'ai récemment entrepris cette tâche et l'ai écrit ici avec des liens vers les données source -
http://colinwhite.net/dropplets/ICD
J'essayais d'obtenir à la fois la CIM-9 et la CIM-10 dans une base de données SQLite.
Semble avoir bien fonctionné.
Vous pouvez obtenir les fichiers de code originaux RTF ici http://ftp.cdc.gov/pub/Health_Statistics/NCHS/Publications/ICD9-CM/2009/