{
  "page": "ndc",
  "name": "NDC — National Drug Code",
  "address": "https://barcoding.dev/schemes/ndc",
  "scheme": "ndc",
  "reference": {
    "grammar": "10 digits in three layouts — 4-4-2, 5-3-2, 5-4-1 (labeler–product–package); the layout is data from the labeler code, not guessable from the digits alone.",
    "check": "None — structurally validated only; the output says \"check\": \"none\".",
    "canonical": "The 11-digit 5-4-2 form (the billing convention), zero-padded per segment.",
    "symbologies": "The US drug UPC/GTIN embeds the NDC behind the “3” prefix; serialized DSCSA packs carry GS1 DataMatrix with AI 01+21+17+10",
    "enrichment": "openFDA drug/ndc (CC0), updated daily, inside the provenance envelope",
    "join": "GTIN-14/UPC embedding extraction returns separate wrapper-vs-contents verdicts: the GTIN can pass mod-10 while the embedded NDC is the real identity."
  },
  "registry": {
    "ndc": {
      "scheme": "ndc",
      "title": "NDC — National Drug Code",
      "grammar": "^\\d{4}-\\d{4}-\\d{2}$|^\\d{5}-\\d{3}-\\d{2}$|^\\d{5}-\\d{4}-\\d{1}$|^\\d{5}-\\d{4}-\\d{2}$|^\\d{10,11}$",
      "check": {
        "algorithm": "none",
        "label": "none",
        "source": "FDA NDC has no check digit — honesty field rendered as-is",
        "vectors": [
          {
            "value": "0002-3227-30",
            "valid": true
          },
          {
            "value": "50090-3421-0",
            "valid": true
          }
        ]
      },
      "canonical": "11-digit 5-4-2 billing form",
      "segments": [
        {
          "name": "labeler",
          "note": "the three parallel rulers: 4-4-2 / 5-3-2 / 5-4-1 — all plausible segmentations displayed, never a hidden guess"
        },
        {
          "name": "product"
        },
        {
          "name": "package"
        }
      ],
      "symbologies": [
        "gs1datamatrix",
        "upca"
      ],
      "generate": {
        "emits": [
          "gs1datamatrix"
        ]
      },
      "policy": {},
      "handoff": "read here · resolved by id.org.ai",
      "address": "/ndc/{ndc11}",
      "digest": "sha256:c4fa97fcfac0ca834c750b6700e3bcf5cba3631f2f906217d9b9360b955108fa",
      "digest_source": "engine/pins/PINS.json — pin verified against the artifact this build consumed"
    }
  },
  "resolution_stance": "barcoding.dev detects, parses, verifies, enriches and generates — the codec and the data layer. Resolution — an identifier answered with identity and its linkset of live doors — is ONE capability family-wide, served by the family's identity layer, id.org.ai; vertical estates project the same one capability (vehicles: auto.dev). This registry row is the data that resolution consumes.",
  "posts": [
    "https://barcoding.dev/blog/ndc-no-check-digit/",
    "https://barcoding.dev/blog/pharma-already-lives-in-2027/"
  ],
  "faces": {
    "html": "https://barcoding.dev/schemes/ndc/",
    "json": "https://barcoding.dev/schemes/ndc.json",
    "markdown": "https://barcoding.dev/schemes/ndc.md"
  }
}
