XML、CSV、またはデータベース形式のICD-9コードリスト[閉じた
質問
私は、データベースにインポートしてプログラムで参照できる形式で、病気と手順に関するICD-9コード(医療コード)の完全なリストを探しています。私の質問は基本的にまったく同じです ICD-9コードのリソースを探しています, 、しかし、元のポスターは、彼が完全なリストを正確に「手に入れた」場所について言及することを怠った。
私は問題をグーグルでグーグルで費やし、多くの豊富なテキストタイプリスト(CDCなど)や完全なリストまでインタラクティブにドリルダウンできることを見つけたので、Googleは間違いなくここに私の友人ではありません。これらのWebサイトに入力し、データベースに解析できるリスト。ここでファイルを信じています ftp://ftp.cdc.gov/pub/health_statistics/nchs/publications/icd9-cm/2009/ 私が探しているものを持っていますが、ファイルは豊富なテキスト形式であり、正確に削除するのが難しい多くのゴミとフォーマットが含まれています。
私はこれが他の人によって行われたに違いないことを知っており、他の人々の努力の複製を避けようとしていますが、XML/CSV/Excelリストを見つけることができません。
解決 2
RTFを削除した後、ファイルを解析してCSVに変えるのはそれほど難しくありませんでした。病気と手順のための2009のICD-9コードすべてを含む私の結果の解析されたファイルはこちらです。 http://www.jacotay.com/files/disease_and_procedurecodes_parsed.zip私が書いた私のパーサーはここにあります: http://www.jacotay.com/files/rtfapp.zip 基本的には2段階のプロセスです - 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
エンドクラス
他のヒント
Medicaid&Medicare Servicesのセンターは、コードと診断のみを含むExcelファイルを提供します。これは、一部のSQLデータベースに直接インポートできます。
(更新:以下のコメントに基づく新しいリンク)
Center for Medicare Services(CMS)は実際にICDで請求されているため、CDCバージョンのリファレンスはコピーまたは再処理されたコピーであると思います。以下は、元の生データ(「真実のソース」)が含まれていると思うメディケアページ(見つけるのが難しい)です。
http://www.cms.gov/medicare/coding/icd9providerdiagnosticcodes/codes.html
この投稿の時点で、最新バージョンはV32のようです。ダウンロードするzipには、コードからデスプリシンスをマッピングする4つのプレーンテキストファイルが含まれます(DIAG | procとshort | longのすべての組み合わせの1つのファイル)。また、3つの列を持つ2つのExcelファイル(DIAG_PROC用にそれぞれ1つ)が含まれているため、コードをマップする 両方とも 説明(長い と 短い)。
明らかに、非常に古いスレッドですが、私は最近このタスクを引き受け、ソースデータへのリンクでここに書きました -
http://colinwhite.net/dropplets/icd
ICD-9とICD-10の両方をSQLiteデータベースに入れようとしていました。
うまくいったようです。
ここから元のRTFコードファイルを入手できますhttp://ftp.cdc.gov/pub/health_statistics/nchs/publications/icd9-cm/2009/