dataset · schema v1.0 · public domain

homoeopathic materia medica & repertory,
as clean JSON_

Open-domain classical homoeopathy, compiled into clean, app-ready JSON. 13 public-domain Materia Medica and Repertory classics (1840–1906), extracted from their scanned page images into structured, self-describing JSON.

Every remedy and rubric string is kept verbatim from the source — nothing invented, paraphrased or filled in. Unknown fields are null, never a guess.

License CC0 1.0 13 books ~108k rubrics JSON format books13 rubrics~108k schema1.0 licenceCC0-1.0 formatJSON

// what you get

Structured, self-describing data

Two shapes, both self-describing via a top-level "type" field — one for repertories (rubric → remedies) and one for materia medica (remedy → symptoms).

13 classics, one schema

Eleven repertories plus two materia medicas — Kent, Clarke, Hering, Bryant, Pulford and more — all normalised to the same field model.

1840–1906 · public domain

Verbatim & honest

Every text string is copied character-for-character from the source scan. Extraction quality is reported per book so you know exactly what you hold.

no invention · null over guess

~108k rubrics

Kent alone ships 59,114 rubrics across 34 chapters, with 353,000 remedy links — the whole library totals roughly 108,000 rubrics.

kent: 34 chapters + index.json

Fetch over a CDN

No build step, no install. Pull any book straight from a raw or jsDelivr URL into a browser app, a Node script or a notebook.

raw.githubusercontent · jsDelivr

Reproducible pipeline

The extraction is fully reproducible: pipeline/omm_pipeline.py classifies a source text, applies the right grammar parser and reports a verbatim-fidelity rate.

omm-json-builder skill

Compact & app-ready

Files are compact JSON (no indentation) — roughly 40% smaller than pretty-printed, and they parse identically. Ideal for shipping inside an app.

~40% smaller

// structure

Schema & repository layout

Every file is self-describing. "type" is either "repertory" or "materia_medica"; schema_version is "1.0".

▸homoeopathic-materia-medica-repertory-jsonrepository
repertory/rubric → remedies
▸kent-1897/34 chapters + index.json
"mind.json" · stomach.json · head.json …
"extremities.json" + "extremities-2.json"
"index.json" type: repertory_index
"clarke-clinical-1900.json"
"hering-repertory-1889.json"
… (9 more)
materia_medica/remedy → symptoms
"jahr-materia-medica-1847.json" (+ -2.json, part 2)
"bell-therapeutics-1906.json"
pipeline/omm_pipeline.py + remedy lists
skill/omm-json-builder/extraction skill
"SCHEMA.md" "CREDITS.md" "CONTRIBUTING.md" "LICENSE"

The book object

Shared by both shapes.

fieldtypenotes
idstringslug, e.g. kent-repertory-1897
titlestringfull title
authorstringauthor(s)
yearintegeryear of the edition used
publisherstringwhere known, else ""
source_filestringthe OCR text file it was built from
countsobject{ sections, rubrics, remedy_links } or { remedies, symptoms }

repertory fields

fieldtyperule
sections[].titlestringa chapter (e.g. Mind, Stomach), or General when the source has no chapter structure
rubrics[].textstringthe symptom string, verbatim from the source
rubrics[].parentstring|nullfor sub-rubrics, the heading this entry refines; null for a top-level rubric
remedies[].abbrevstringthe remedy exactly as printed
remedies[].gradeinteger|null1–3 only if the source prints a grade, otherwise null — never defaulted
remedies[].namestring|nullcanonical remedy name, resolved where possible, else null
remedies[].polaritystringprinted polarity marker (e.g. +)
rubrics[].notestring|nullverbatim prose attached to a rubric (Jahr Part II), else null
remedy_indexobjectevery printed remedy token → { name, resolved }

materia_medica fields

fieldtyperule
remedies[].namestringthe remedy as printed (may be OCR-damaged in some books)
remedies[].abbrevstringprinted abbreviation
remedies[].canonical_namestring|nullbest-effort resolved name, else null
symptoms[].chapterstringthe labelled group the symptom belongs to (e.g. Stools, Aggravation), or General
symptoms[].textstringthe symptom string, verbatim
symptoms[].gradeinteger|nullonly if printed, else null

Three rules of the data

1. Verbatim — every text is copied from the source, not rewritten.  2. No invention — unknown values are null; grades are never assumed.  3. Validation — each file passes schema validation with zero errors and reports a verbatim-fidelity rate in its QC report.

// sample

What a file looks like

A trimmed extract from a repertory file — the top-level type, the book metadata, and a rubric with its graded remedies.

repertory/kent-1897/index.json json
{
  "schema_version": "1.0",
  "type": "repertory",
  "book": {
    "id": "kent-repertory-1897",
    "title": "Repertory of the Homoeopathic Materia Medica",
    "author": "James Tyler Kent",
    "year": 1897,
    "publisher": "Philadelphia: Examiner Printing House",
    "language": "en",
    "public_domain": true,
    "source_file": "data/source_txt/kent-diff.txt",
    "pipeline_version": "omm_pipeline 1.0",
    "counts": { "sections": 34, "rubrics": 59114, "remedy_links": 353000 }
  },
  "sections": [
    {
      "id": "kent-repertory-1897-s1",
      "title": "Mind",
      "rubrics": [
        {
          "id": "kent-repertory-1897-r00001",
          "text": "Anger (Irascibility) …",
          "parent": null,
          "remedies": [
            { "abbrev": "Acon", "grade": null, "polarity": "+", "name": "Aconitum napellus" }
          ]
        }
      ]
    }
  ],
  "remedy_index": {
    "Acon": { "name": "Aconitum napellus", "resolved": true }
  }
}
materia_medica/bell-therapeutics-1906.json json
{
  "schema_version": "1.0",
  "type": "materia_medica",
  "book": {
    "id": "bell-therapeutics-1906",
    "title": "Homoeopathic Therapeutics",
    "author": "James B. Bell",
    "year": 1906,
    "counts": { "remedies": 103, "symptoms": 5547 }
  },
  "remedies": [
    {
      "name": "Aconitum Napellus",
      "abbrev": "Acon",
      "canonical_name": "Aconitum napellus",
      "symptoms": [
        { "chapter": "Mind", "text": "Anxiety, with fear of death", "grade": null }
      ]
    }
  ]
}

// the set

The repertory set, and what's in it

Eleven repertories and two materia medica books, extracted from public-domain scans. Every text string is verbatim from the source scan; unknown values are null, never a guess.

repertory books & rubric counts

BookYearRubrics
Kent's Repertory189759,114
Clarke's Clinical Repertory190012,537
Hering's Repertory188911,156
Bryant's Pocket Repertory19008,892
Pulford — Rheumatism & Sciatica18987,518
Sensation-as-if18902,721
Vilas — Eye & Ear18902,465
Humphreys — Sexual System18601,280
Jahr — Symptomatology1847587
Lippe's Repertory1879452
Drake — Foot-sweat189484
All repertories11 books~108,000

Plus two materia medica books, counted separately: Jahr's Manual, Part I (199 remedies / 26,734 symptoms) and Bell's Therapeutics (103 remedies / 5,547 symptoms). Authors are credited in CREDITS.md; Kent ships split by chapter — 34 chapter files + index.json.

Data only — this repository ships the JSON dataset and its extraction pipeline; there is no app or interface to preview.

// get started

Download & fetch

No build step and no install. Read any book straight from a raw URL or a jsDelivr CDN URL. Files are compact JSON and parse identically to pretty-printed.

Fetch a whole repertory (Python)

fetch.pypython
import json, urllib.request

URL = "https://raw.githubusercontent.com/drsamonline/" \
      "homoeopathic-materia-medica-repertory-json/main/" \
      "repertory/kent-1897/index.json"

rep = json.load(urllib.request.urlopen(URL))
for sec in rep["sections"]:
    for r in sec["rubrics"]:
        if any(x["abbrev"] == "Acon" for x in r["remedies"]):
            print(sec["title"], ">", r["text"])

Fetch in the browser / Node

app.jsjavascript
const base = "https://cdn.jsdelivr.net/gh/drsamonline/" +
             "homoeopathic-materia-medica-repertory-json@main/";

const rep = await fetch(base + "repertory/kent-1897/mind.json")
  .then(r => r.json());

const mind = rep.section;
console.log(mind.rubrics.length, "mind rubrics");

Copy a raw URL

The branch is main. Swap the path for any book listed below.

Or clone the repo

Every file, and where to find it

bookauthoryearsizeverbatimpath
Kent’s RepertoryJames Tyler Kent189759,114 rubrics94.1%repertory/kent-1897/index.json
Clarke’s Clinical RepertoryJohn Henry Clarke190012,537 rubrics100%repertory/clarke-clinical-1900.json
Hering’s RepertoryHom. Med. Soc. of Pennsylvania188911,156 rubrics93.7%repertory/hering-repertory-1889.json
Bryant’s Pocket RepertoryJ. Bryant19008,892 rubrics90.2%repertory/bryant-pocket-1900.json
Pulford — Rheumatism & SciaticaAlfred Pulford18987,518 rubrics92.6%repertory/pulford-rheumatism-1898.json
Sensation-as-ifA. W. Holcomb18902,721 rubrics100%repertory/sensation-as-if-1890.json
Vilas — Eye & EarO. H. Vilas18902,465 rubrics80.3%repertory/vilas-eye-ear-1890.json
Humphreys — Sexual SystemF. Humphreys18601,280 rubrics100%repertory/humphreys-sexual-1860.json
Jahr — SymptomatologyG. H. G. Jahr1847587 rubrics100%repertory/jahr-repertory-1847.json
Lippe’s RepertoryConstantine Lippe1879452 rubrics88.7%repertory/lippe-repertory-1879.json
Drake — Foot-sweatOlin M. Drake189484 rubrics100%repertory/drake-foot-sweat-1894.json
Jahr’s Manual, Part IG. H. G. Jahr1847199 remedies / 26,734 symptoms98.7%materia_medica/jahr-materia-medica-1847.json
Bell’s TherapeuticsJames B. Bell1906103 remedies / 5,547 symptoms97.2%materia_medica/bell-therapeutics-1906.json

Kent ships split by chapter in repertory/kent-1897/ (34 chapter files + index.json). A few large files exceed GitHub’s per-file upload limit and ship as parts — extremities.json + extremities-2.json, and jahr-materia-medica-1847.json + jahr-materia-medica-1847-2.json. Concatenate the parts.

Licence & credits

Data: CC0 1.0 Universal — public domain dedication. Free to use, modify and redistribute, including commercially. Source texts were all published before 1929 and are in the public domain. Please credit the authors of each book and the JSON compiler (Dr Sohil Momin) wherever this data is used — see CREDITS.md.

// faq

Questions

Q. What exactly is in this dataset? ▸
A curated collection of 13 public-domain homoeopathic Materia Medica and Repertory classics (1840–1906), extracted from their scanned page images into structured JSON ready for apps, search tools, study aids and AI projects. Eleven are repertories (rubric → remedies) and two are materia medicas (remedy → symptoms).
Q. Is the text verified? ▸
This is honest, verbatim OCR data, not hand-verified text. Every rubric/symptom string is verbatim from the source scan, and each book reports a verbatim-fidelity rate. Some books carry OCR fragments and garbled remedy abbreviations (notably Vilas, Lippe, Clarke, Pulford, Bryant); Bell’s remedy names are OCR-mangled (partly auto-resolved). Verify against the original text before clinical use.
Q. What does "grade": null mean? ▸
A grade is an integer 1–3 only if the source prints a grade, otherwise it is null. Grades are never defaulted or assumed. The same no-invention rule applies to every unknown value — it is null, never a guess.
Q. Why is Kent split into chapters? ▸
Kent is provided split by chapter in repertory/kent-1897/ — 34 chapter files plus index.json — so an app can load one chapter at a time. Its single 21 MB file exceeds GitHub’s per-file upload limit, so it ships as parts (e.g. extremities.json + extremities-2.json). Concatenate the parts to rebuild the full file.
Q. Can I use this commercially? ▸
Yes. The data is released under CC0 1.0 Universal — a public domain dedication — free to use, modify and redistribute, including commercially. Please still credit the book authors and the JSON compiler (Dr Sohil Momin) wherever the data is used.
Q. How was the data produced? ▸
The extraction is fully reproducible. pipeline/omm_pipeline.py classifies a source text, applies the right grammar parser, validates the output and reports a verbatim-fidelity rate. skill/omm-json-builder/ packages the same pipeline as an agent skill.
Q. I found a bad OCR token — can I fix it? ▸
Please do. Open an issue describing the book, the rubric and the correct reading, or open a pull request with the correction. See CONTRIBUTING.md for the rules of the data (verbatim, no invention).
Q. Is this medical advice? ▸
No. These are historical texts for study and software. They are not medical advice — always consult a qualified practitioner.