Rexact
Cheatsheet

Regex code ICD-10-CM (diagnostic)

Un code ICD-10-CM (diagnostic américain) a 3 à 7 caractères : une lettre, un chiffre, puis un chiffre ou « A » et « B » (« D3A », « Z3A »), un point après le troisième caractère, puis 1 à 4 caractères alphanumériques, par exemple « E11.9 » ou « S72.001A ». Les lignes directrices officielles du CMS disent que les caractères peuvent être des lettres ou des chiffres et que les codes ont 3, 4, 5, 6 ou 7 caractères. Les tentatives relues sont soit trop strictes (Wikidata P4229 impose un chiffre en 3e caractère et rejette « D3A.8 »), soit trop lâches (identifiers.org accepte « A1.- »…), soit acceptent des plages de blocs « E08-E13 » (bioregistry). Voici un motif sur la structure du CMS, comparé à ces tentatives.

/^[A-Z][0-9][0-9AB](?:\.[0-9A-Z]{1,4})?$/
passe 32/32 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^[A-Z][0-9][0-9AB](?:\\.[0-9A-Z]{1,4})?$", "");
re.test(input);

Limites

  • Valide seulement la FORME ICD-10-CM : un code bien formé peut ne pas exister (« Z99.999Z » passe) ni être facturable (les codes de 3 à 6 caractères peuvent avoir des sous-divisions et seul le dernier niveau est utilisable pour le reporting). L'existence se vérifie dans la liste annuelle du CDC/CMS ou une API (NLM Clinical Tables).
  • Ne vaut pas pour la CIM-10 de l'OMS (sans « U » étendu ni 7e caractère) ni pour ICD-10-PCS (7 caractères sans point) ni pour la CIM-11. La forme sans point (« E119 »), utilisée en facturation, est refusée : ajoutez ou retirez le point avant validation.
  • Les minuscules sont refusées (les lignes directrices ne disent pas que la casse compte : normalisez en majuscules). Les plages de blocs (« E08-E13 ») ne sont pas des codes et sont refusées.

Pages liées