2010-09-06 75 views
30

Tôi đang tìm danh sách đầy đủ các mã ICD-9 (Mã y tế) cho bệnh và thủ tục ở định dạng có thể được nhập vào cơ sở dữ liệu và được tham chiếu theo chương trình. Câu hỏi của tôi về cơ bản chính xác giống như Looking for resources for ICD-9 codes, nhưng áp phích ban đầu bị bỏ quên để đề cập đến nơi chính xác ông "đã nhận được" danh sách đầy đủ của mình.Danh sách mã ICD-9 ở định dạng XML, CSV hoặc Cơ sở dữ liệu

Google chắc chắn không phải là bạn của tôi ở đây vì tôi đã dành nhiều giờ để giải quyết vấn đề và tìm thấy nhiều danh sách loại văn bản phong phú (chẳng hạn như CDC) hoặc các trang web mà tôi có thể đi sâu vào danh sách hoàn chỉnh tương tác, nhưng tôi không thể tìm nơi để lấy danh sách sẽ điền các trang web này và có thể được phân tích cú pháp thành Cơ sở dữ liệu. Tôi tin rằng các tập tin ở đây ftp://ftp.cdc.gov/pub/Health_Statistics/NCHS/Publications/ICD9-CM/2009/ có những gì tôi đang tìm kiếm nhưng các tập tin có định dạng văn bản phong phú và chứa rất nhiều rác và định dạng mà sẽ rất khó để loại bỏ chính xác.

Tôi biết điều này đã được thực hiện bởi những người khác và tôi đang cố gắng tránh sao chép nỗ lực của người khác nhưng tôi không thể tìm thấy danh sách xml/CSV/Excel.

+0

Bạn có thể xem câu trả lời [tại đây] (http://stackoverflow.com/a/1596643/65400) để thảo luận về cách định dạng – Aaron

Trả lời

11

Sau khi xóa RTF, không quá khó để phân tích tệp và biến tệp thành CSV. Các tệp được phân tích cú pháp của tôi chứa tất cả các mã ICD-9 2009 cho các bệnh và thủ tục ở đây: http://www.jacotay.com/files/Disease_and_ProcedureCodes_Parsed.zip Trình phân tích cú pháp của tôi mà tôi đã viết là: http://www.jacotay.com/files/RTFApp.zip Về cơ bản đó là quy trình gồm hai bước - lấy các tệp từ trang FTP của CDC và xóa RTF từ họ, sau đó chọn các tập tin RTF-miễn phí và phân tích chúng thành các tập tin CSV. Mã ở đây khá thô vì tôi chỉ cần có kết quả một lần.

Đây là mã cho các ứng dụng phân tích trong trường hợp các liên kết bên ngoài đi xuống (lại kết thúc với một hình thức mà cho phép bạn chọn một tên tập tin và nhấp vào nút để làm cho nó đi)

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 

End Class

+0

Bạn có thể đề cập đến nơi bạn tìm thấy mã từ đó không. –

+0

Cảm ơn bạn vì điều này. Tôi đã tự tìm kiếm một bộ mã. Thật không thể tin được chính phủ gặp khó khăn như thế nào khi làm việc với công cụ này. – Yuck

+0

các tệp được nén được liên kết chứa tệp RTF, dường như có nhiều hơn một dòng trên mỗi mã. Nó không hữu ích cho tôi. – userJT

22

Trung tâm Medicaid & dịch vụ Medicare cung cấp các file excel mà chỉ chứa các mã và chẩn đoán, wh ich có thể được nhập trực tiếp vào một số cơ sở dữ liệu SQL, sans conversion.

Zipped Excel files, by version number

(Cập nhật: liên kết mới dựa trên bình luận dưới đây)

+4

Liên kết mới: https://www.cms.gov/Medicare/Coding/ICD9ProviderDiagnosticCodes/codes.html – JohnKlehm

4

Rõ ràng, một sợi rất cũ nhưng gần đây tôi đã tiến hành nhiệm vụ này và viết nó lên đây với các liên kết đến nguồn dữ liệu -

http://colinwhite.net/dropplets/ICD

Tôi đã cố gắng đưa cả ICD-9 và ICD-10 vào cơ sở dữ liệu SQLite.

Dường như đã hoạt động tốt.

4

Trung tâm Dịch vụ Medicare (CMS) thực sự được tính phí với ICD, vì vậy tôi nghĩ các phiên bản CDC mà các bạn tham khảo có thể chỉ là bản sao hoặc bản sao được xử lý lại. Đây là trang y tế (khó tìm) mà tôi nghĩ có chứa dữ liệu thô ban đầu ("nguồn gốc của sự thật").

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

Dường như phiên bản mới nhất này là v32.Mã zip bạn tải xuống sẽ chứa 4 tệp văn bản thuần túy ánh xạ mã để mô tả (một tệp cho mọi kết hợp của DIAG | PROC và SHORT | LONG). Nó cũng chứa hai tệp excel (một tệp cho mỗi DIAG_PROC) có ba cột để mã bản đồ là cả hai mô tả (dài ngắn).

+0

Có vẻ như tôi đã tìm thấy một người đào mộ. Tôi nhận thấy rằng câu trả lời liên quan đến một loạt các phân tích cú pháp, và tôi nhận ra rằng tôi đã sử dụng các tập thô trước đây, vậy tôi đã lấy chúng ở đâu? Tôi vừa mới đăng ... và thấy liên kết của bạn. (truy cập!) – DoverAudio

+0

Nếu tất cả những gì bạn muốn là mã ICD-9-CM, thì mã zip CMS này có tất cả những gì bạn cần, nhưng nếu bạn muốn các tên danh mục con, tức là các mã đại diện cho các nhóm mã khác, thì bạn ' lại may mắn. Đối với điều này, bạn cần phân tích cú pháp RTF và khó xử. Ngẫu nhiên, các mô tả thường khác nhau giữa các phiên bản RTF và CDC. Tôi nghĩ thật công bằng khi nói toàn bộ sự việc là một mớ hỗn độn, được thiết kế để in và đọc, chứ không phải phân tích cú pháp tự động. Có XML cho ICD-10. –

Các vấn đề liên quan