Rexact
Cheatsheet

Regex code ATC (médicament)

La classification ATC de l'OMS (centre collaborateur d'Oslo) a cinq niveaux : un groupe anatomique (14 lettres : A B C D G H J L M N P R S V), un sous-groupe thérapeutique (2 chiffres), pharmacologique (1 lettre), chimique (1 lettre) et la substance (2 chiffres), soit « A10BA02 » pour la metformine. Les tentatives relues ne suivent pas cette liste : bioregistry et identifiers.org acceptent n'importe quelle lettre et un nombre quelconque de chiffres, l'expression Wikidata (format) exige un chiffre final et accepte jusqu'à « V », celle de la contrainte Wikidata est correcte mais sans ancres. Voici un motif qui limite le premier caractère aux 14 groupes et accepte les niveaux 1, 2, 3, 4 et 5, comparé à ces tentatives.

/^[ABCDGHJLMNPRSV](?:[0-9]{2}(?:[A-Z](?:[A-Z](?:[0-9]{2})?)?)?)?$/
passe 36/36 cas

Comparatif des patterns existants

Implémentation

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

Limites

  • Valide seulement la FORME : un code correct du point de vue des lettres et des chiffres peut ne pas exister dans l'index de l'OMS (« A99ZZ99 » passe). L'existence se vérifie dans l'ATC/DDD Index, mis à jour chaque année.
  • Codes vétérinaires ATCvet (préfixe Q, par exemple QA07AA90) refusés : ils relèvent d'un autre index. Les niveaux 2, 3 et 4 sont acceptés (« N02 », « N02B », « N02BE ») ; la longueur de 2 ou 6 caractères est refusée.
  • Ne dit rien des codes de combinaison ni des doses (DDD) ; les codes d'un même principe actif peuvent changer d'une année à l'autre.

Pages liées