11

クライアントから、ICD-9 コードをシステムに組み込むように依頼されました。

最終的に SQL データベースになるコードと説明の完全なリストを取得するための優れたリソースを探しています。

残念なことに、Web サービスは問題外です。かなりの時間、人々はアプリケーションを使用してオフラインになるからです。

http://icd9cm.chrisendres.com/http://www.icd9data.com/を見つけましたが、見つけたデータのダウンロード/エクスポートはどちらも提供していません。

ICD-9コードのデータベースがあるhttp://www.cms.hhs.gov/MinimumDataSets20/07_RAVENSoftware.aspも見つけましたが、正しい形式ではなく、適切に変換する方法が100%わかりません(実際には 556.6 であるコード 5566 が表示されますが、コードをいつどのように変換して 10 進数を含めるかについての規則が見つかりません)

私はこれに医療とデータをタグ付けしています。なぜなら、実際にタグ付けする必要がある場所が 100% わからないからです。

4

6 に答える 6

11

コードの小数点以下の桁数を修正する方法を知りたかっただけです。まず、考慮すべき4つの大まかなポイントがあります。

  1. 標準コードの小数点以下の桁数は XXX.XX です。
  2. 一部のコードには小数点以下の桁数がありません
  3. V コードも XXX.XX フォーマットに従います --> V54.31
  4. E コードは XXXX.X に従います --> E850.9

したがって、エラーを修正する方法の一般的なロジックは次のとおりです。

If first character = E:
    If 5th character = '':
        Ignore
    Else replace XXXXX with XXXX.X                
Else If 4th-5th Char is not '':                      (XXXX or XXXXX)
    replace XXXXX with XXX + . + remainder           (XXX.XX or XXX.X)
(All remaining are XXX)

これを 2 つの SQL Update ステートメントで実装しました。
番号 1、非 E コード用:

USE MainDb;
UPDATE "dbo"."icd9cm_diagnosis_codes" 
    SET "DIAGNOSIS CODE" = SUBSTRING("DIAGNOSIS CODE",1,3)+'.'+SUBSTRING("DIAGNOSIS CODE",4,5)
FROM "dbo"."icd9cm_diagnosis_codes"
WHERE 
    SUBSTRING("DIAGNOSIS CODE",4,5) != ''
    AND
    LEFT("DIAGNOSIS CODE",1) != 'E'

番号 2 - E コードの場合:

UPDATE "dbo"."icd9cm_diagnosis_codes" 
    SET "DIAGNOSIS CODE" = SUBSTRING("DIAGNOSIS CODE",1,4)+'.'+SUBSTRING("DIAGNOSIS CODE",5,5)
FROM "dbo"."icd9_Diagnosis_table"
WHERE
    LEFT("DIAGNOSIS CODE",1) = 'E'
    AND
    SUBSTRING("DIAGNOSIS CODE",5,5) != ''

私のためにトリックをしたようです(SQL Server 2008を使用)。

于 2011-07-14T20:13:59.630 に答える
9

しばらく前にこの同じ問題に遭遇し、独自のソリューションをゼロから構築することになりました。最近、他の人が使用できるようにコード用のオープン API を作成しました: http://aqua.io/codes/icd9/documentation

すべてのコードを JSON でダウンロードするか ( http://api.aqua.io/codes/beta/icd9.json )、個別のコードをプルすることができます ( http://api.aqua.io/codes/beta/icd9/250 )。 -1.json )。単一のコードを取得すると、ICD-10 の「横断歩道」(同等のもの) が得られるだけでなく、関連するウィキペディアのリンクなど、いくつかの追加機能も得られます。

于 2013-02-27T14:44:02.753 に答える
4

私は最終的に以下を見つけました:

「ICD-9-CM プリンシパルおよびその他の診断コードのフィールドの長さは 6 文字で、V コード以外のすべての診断コードの 3 桁目と 4 桁目の間に小数点が含まれています。 2 桁目と 3 桁目です。」

そのため、完全な ICD-9 リストを入手し、必要に応じて再フォーマットすることができました。

于 2009-10-07T15:43:30.920 に答える
3

私自身もこの問題に長い間苦労しました。これらについて私が見つけることができた最高のリソースは、こちらの zip ファイルです。

https://www.cms.gov/ICD9ProviderDiagnosticCodes/06_codes.asp

(奇妙なことに) 小数点以下の桁数がないのは残念ですが、他の何人かの投稿者が指摘しているように、ルールがわかっているため、小数点以下の桁数を追加するのはかなり簡単です。テキストエディタで正規表現ベースの「検索と置換」を使用してそれらを追加できました。その方法を使用する場合に注意すべきことの 1 つは、末尾に「.」があるコードになってしまう可能性があることです。しかし、その後ゼロではありません。これは有効ではないため、それらをクリーンアップするために、別の検索/置換を実行する必要がある場合があります。

上記のリンクのデータ ファイルで厄介なのは、カテゴリとの関係がないことです。アプリケーションによっては必要になる場合があります。最終的に、オンラインで見つけた RTF ベースのカテゴリ ファイルの 1 つを取得し、それを再フォーマットして、各カテゴリの範囲を取得しました。これは、いくつかの創造的な正規表現を使用して、テキスト エディターで実行できました。

于 2011-06-14T15:01:06.530 に答える
3

ICD-9 コードは次の形式に従っている場合があります。

  • すべてのコードは 6 文字です
  • 小数点は3文字目と4文字目の間にある
  • コードが V 文字で始まる場合、小数点は 2 番目と 3 番目の文字の間にあります。

これをチェックしてください:http://en.wikipedia.org/wiki/List_of_ICD-9_codes

于 2009-10-20T18:57:12.277 に答える
1

ここで役立つ回答を使用して、グルーヴィーなスクリプトを作成してコードを10進数化し、長い説明と短い説明を組み合わせてタブ区切りのリストにすることができました。これが誰かに役立つ場合に備えて、ここに私のコードを含めます:

import org.apache.log4j.BasicConfigurator
import org.apache.log4j.Level
import org.apache.log4j.Logger

import java.util.regex.Matcher
import java.util.regex.Pattern

Logger log = Logger.getRootLogger()
BasicConfigurator.configure();
Logger.getRootLogger().setLevel(Level.INFO);

Map shortDescMap = [:]
new File('CMS31_DESC_SHORT_DX.txt').eachLine {String l ->
    int split = l.indexOf(' ')
    String code = l[0..split].trim()
    String desc = l[split+1..-1].trim()
    shortDescMap.put(code, desc)
}
int shortLenCheck = 40      // arbitrary lengths, but provide some sanity checking...
int longLenCheck = 300
File longDescFile = new File('CMS31_DESC_LONG_DX.txt')
Map cmsRows = [:]
Pattern p = Pattern.compile(/^(\w*)\s+(.*)$/)
new File('parsedICD9.csv').withWriter { out ->
    out.write('ICD9 Code\tShort Description\tLong Description\n')
    longDescFile.eachLine {String row ->
        Matcher m = row =~ p
        if (m.matches()) {
            String code = m.group(1)
            String shortDescription = shortDescMap.get(code)
            String longDescription = m.group(2)
            if(shortDescription.size() > shortLenCheck){
                log.info("Not short? $shortDescription")
            }
            if(longDescription.size() > longLenCheck){
                log.info("${longDescription.size()} == Too long? $longDescription")
            }
            log.debug("Match 1:${code} -- 2:${longDescription} -- orig:$row")

            if (code.startsWith('V')) {
                if (code.size() > 3) {
                    code = code[0..2] + '.' + code[3..-1]
                }
                log.info("Code: $code")

            } else if (code.startsWith('E')) {
                if (code.size() > 4) {
                    code = code[0..3] + '.' + code[4..-1]
                }
                log.info("Code: $code")
            } else if (code.size() > 3) {
                code = code[0..2] + '.' + code[3..-1]
            }
            if (code) {
                cmsRows.put(code, ['longDesc': longDescription])
            }
            out.write("$code\t$shortDescription\t$longDescription\n")
        } else {
            log.warn "No match for row: $row"
        }
    }
}

これが誰かに役立つことを願っています。

ショーン

于 2014-09-15T03:00:53.190 に答える