On nous a demandé à un client d'incorporer des codes ICD-9 dans un système. P>
Je recherche une bonne ressource pour obtenir une liste complète des codes et des descriptions qui se retrouveront dans une base de données SQL. p>
Malheureusement, un service Web est hors de question comme une quantité équitable du temps que les membres du temps seront hors ligne à l'aide de l'application. P>
J'ai trouvé http://icd9cm.chrisendres.com/ et J'ai aussi trouvé http://www.cms.hhs.gov/minimumDataSets20/ 07_ravensoftware.asp qui possède une base de données des codes ICD-9, mais ils ne sont pas dans le format correct et je ne suis pas sûr à 100% comment convertir correctement (il affiche le code 5566 qui est vraiment 556.6 mais je peux 't Trouver une règle sur la manière / quand convertir le code pour inclure une décimale) p>
Je suis en train de marquer cela avec des données médicales et des données depuis que je ne suis pas sûr à 100% où il devrait vraiment être étiqueté ... Toute aide il y aurait également apprécié. P>
6 Réponses :
J'ai enfin trouvé ce qui suit: p>
"Le champ du capital de la CIM-9-CM et d'autres codes de diagnostic est de six caractères, avec le point décimal impliqué entre les troisième et quatrième chiffre pour tous les codes de diagnostic autres que les codes V. La décimale est impliquée pour V codes entre le deuxième et le troisième chiffre. " P>
Ainsi, j'ai pu obtenir une liste complète de la CIM-9 et de reformater au besoin. P>
Vous trouverez peut-être que les codes ICD-9 suivent le format suivant: p>
Vérifiez ceci: http://fr.wikipedia.org/wiki/list_of_icd-9_codes p>
J'ai eu du mal à ce sujet moi-même depuis longtemps. La meilleure ressource que j'ai pu trouver pour ce sont les fichiers zip ici: p>
https://www.cms.gov/icd9providerDiagnosticCodes/06_codes.asp < / p>
Il est malheureux parce qu'ils manquent (étrangement) manquent les décimales, mais comme plusieurs autres affiches ont souligné, les ajoutant est assez facile car les règles sont connues. J'ai pu utiliser une expression régulière basée sur «Rechercher et remplacer» dans mon éditeur de texte pour les ajouter. Une chose à surveiller si vous allez cet itinéraire, c'est que vous pouvez vous retrouver avec des codes qui ont une fuite "." mais pas zéro après cela. Ce n'est pas valide, vous devrez peut-être passer et faire une autre trouvaille / remplacer pour nettoyer ceux-ci. P>
La chose agaçante sur les fichiers de données dans le lien ci-dessus est qu'il n'y a pas de relation avec les catégories. Dont vous pourriez avoir besoin en fonction de votre application. J'ai fini par prendre l'un des fichiers de catégorie basés sur la RTF que j'ai trouvés en ligne et le redéfinissez-le pour obtenir les gammes de chaque catégorie. Qui était toujours faisable dans un éditeur de texte avec des expressions régulières créatives. P>
CMS n'est que la source d'une source à utiliser car ils paient pour une telle partie des réclamations et la facturation privée suivent la CMS.
Voulez-vous simplement chimer sur la manière de corriger les décimales de code. Premièrement, il y a quatre points généraux à considérer:
Ainsi, la logique générale de la manière de corriger les erreurs est p> j'ai implémenté cela avec deux relevés de mise à jour SQL: numéro 2 - pour les codes E: p> semblait faire le Trick pour moi (en utilisant SQL Server 2008). p> p>
Numéro 1, pour non e-codes: p>
Solution de regex: codes réguliers et e - (e)? (\ D {3}) (\ d {3}) (\ d {1,2}) code>, V codes: (v) (\ d {2 }) (\ d {1,2}) code>. Remplacer par $ 1 $ $ $ 3 code> pour les deux
J'ai couru dans ce même problème un moment et a fini par construire ma propre solution à partir de zéro. Récemment, je propose une API ouverte pour les codes d'autres personnes à utiliser: http://aqua.io/codes / ICD9 / Documentation P>
Vous pouvez simplement télécharger tous les codes de JSON ( http://api.aqua.io /Codes/beta/icd9.json ) ou tirez un code individuel ( http://api.aqua.io/codes/beta/icd9/250-1.json ). Tirer un code unique vous donne non seulement que le passage de piéton-planche à piétons à 10 "ICD-10 (équivalents), mais aussi quelques goodies supplémentaires, comme des liens de Wikipedia pertinents. P>
Merci Michael ... Ce sera une aide énorme. Comment conservez-vous la liste à jour?
Je tire les codes ICD-9 du site CDC. Les codes ICD-10 proviennent de l'OMS. Chacun publie chacun une mise à jour CM chaque année.
@Michael c'est génial! Je serai en contact. Je veux parler avec vous des projets futurs pour cette API.
@Natebird génial. En fait, allez faire des améliorations majeures bientôt, les commentaires sont donc toujours appréciés! Frappe-moi: michael [at] aqua.io
aqua.io est en train de fermer et ces liens ne fonctionnent plus
J'ai pu utiliser les réponses utiles ici et créer un script groovy pour décimaliser le code et combiner des descriptions longues et courtes dans une liste séparée par onglet. Si cela aide tout le monde, j'inclus mon code ici:
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"
}
}
}