قائمة رمز ICD-9 في تنسيق XML أو CSV أو قاعدة البيانات [مغلق

StackOverflow https://stackoverflow.com/questions/3653811

  •  01-10-2019
  •  | 
  •  

سؤال

أبحث عن قائمة كاملة من رموز ICD-9 (الرموز الطبية) للأمراض والإجراءات بتنسيق يمكن استيراده إلى قاعدة بيانات والرجوع إليه برمجيًا. سؤالي هو نفسه بالضبط مثل تبحث عن موارد لرموز ICD-9, ، لكن الملصق الأصلي أهمل أن يذكر أين "حصل على" قائمته الكاملة بالضبط.

من المؤكد أن Google ليست صديقي هنا لأنني قضيت عدة ساعات في غوغرة المشكلة ووجدت العديد من قوائم أنواع النص الغنية (مثل مركز السيطرة على الأمراض) أو مواقع الويب حيث يمكنني التنقل إلى القائمة الكاملة بشكل تفاعلي ، لكن لا يمكنني العثور على مكان الحصول عليها القائمة التي من شأنها ملء هذه المواقع ويمكن تحليلها في قاعدة بيانات. أعتقد أن الملفات هنا ftp://ftp.cdc.gov/pub/health_statistics/nchs/publications/icd9-cm/2009/ احصل على ما أبحث عنه ولكن الملفات هي تنسيق نص غني وتحتوي على الكثير من القمامة والتنسيق الذي سيكون من الصعب إزالته بدقة.

أعلم أن هذا يجب أن يكون قد تم القيام به من قبل الآخرين وأحاول تجنب تكرار جهد الشعوب الأخرى ، لكنني لا أستطيع العثور على قائمة XML/CSV/Excel.

هل كانت مفيدة؟

المحلول 2

بعد إزالة RTF ، لم يكن من الصعب تحليل الملف وتحويله إلى CSV. الملفات المحلية الناتجة التي تحتوي على جميع رموز ICD-9 لعام 2009 للأمراض والإجراءات موجودة هنا: http://www.jacotay.com/files/disease_and_procedurecodes_parsed.zipالمحلل الخاص بي الذي كتبته هنا: http://www.jacotay.com/files/rtfapp.zip إنها في الأساس عملية من خطوتين - خذ الملفات من موقع 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, ",", "&#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

الطبقة النهائية

نصائح أخرى

توفر مراكز خدمات Medicaid & Medicare ملفات Excel التي تحتوي فقط على الرموز والتشخيص ، والتي يمكن استيرادها مباشرة إلى بعض قواعد بيانات SQL ، وتحويل SANS.

ملفات excel المضغوطة ، حسب رقم الإصدار

(تحديث: رابط جديد استنادًا إلى التعليق أدناه)

يتم شحن مركز خدمات Medicare (CMS) بالفعل بـ ICD ، لذلك أعتقد أن إصدارات CDC التي تشير إليها قد تكون مجرد نسخ أو نسخ معالجة. فيما يلي صفحة Medicare (التي يصعب العثور عليها) والتي أعتقد أنها تحتوي على البيانات الأولية الأصلية ("مصدر الحقيقة").

http://www.cms.gov/medicare/coding/icd9providerdiagnosticcodes/codes.html

يبدو الأمر كما هو الحال في هذا المنشور ، أحدث إصدار هو V32. سيحتوي تنزيل ZIP الذي تحمله على 4 ملفات نصية عادي تقوم بها رمز الخريطة إلى الوصف (ملف واحد لكل مجموعة من diag | proc و Short | long). كما أنه يحتوي على ملفين excel (واحد لكل منهما لـ DIAG_PROC) الذي يحتوي على ثلاثة أعمدة لذا خريطة رمز إلى على حد سواء الأوصاف (طويلة و قصيرة).

من الواضح أن موضوعًا قديمًا جدًا لكنني قمت مؤخرًا بتنفيذ هذه المهمة وكتبتها هنا مع روابط إلى بيانات المصدر -

http://colinwhite.net/dropplets/icd

كنت أحاول الحصول على كل من ICD-9 و ICD-10 في قاعدة بيانات SQLite.

يبدو أنه عمل بشكل جيد.

يمكنك الحصول على ملفات رمز RTF Orginal من هناhttp://ftp.cdc.gov/pub/health_statistics/nchs/publications/icd9-cm/2009/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top