Skip to content

Update Autoimmune disorder of inner ear#7

Open
KrishnaTO wants to merge 30 commits into
feature/metadata-manager_v2/ARIfrom
edit/KrishnaTO/autoimmune-disorder-of-inner-ear-1782062913
Open

Update Autoimmune disorder of inner ear#7
KrishnaTO wants to merge 30 commits into
feature/metadata-manager_v2/ARIfrom
edit/KrishnaTO/autoimmune-disorder-of-inner-ear-1782062913

Conversation

@KrishnaTO

Copy link
Copy Markdown
Owner

Edit to Autoimmune disorder of inner ear submitted via the ARI Metadata Manager by @KrishnaTO.

KrishnaTO and others added 30 commits June 14, 2026 21:52
Standalone FastAPI + vanilla-JS app for browsing and curating autoimmune
disease data stored in a Protege-compatible OWL ontology.

- Hierarchical views: alphabetical (parent/child diseases), tissue target
  (multicellular anatomical structure / UBERON_0010000), and symptoms.
- Ontology detail profile: cross-reference linkouts (ICD-10/SNOMED/DOID/UMLS/
  MONDO), obsolete handling, and definition sources as nested sub-items.
- Disease "story" grouped by aspect category from the Immunological Data Model
  v3, with each concept's description shown in its deep-dive panel.
- Deep-dive panels: prevalence (chart + table), symptoms (word cloud),
  pathophysiology (D3 force-directed pathograph), genetics, antibodies,
  treatments, etiology, biomarkers, and immune components (with source columns).
- Editing: disease fields and per-category data items (add/edit/delete) with a
  per-disease changelog; admin version-release pipeline (OWL snapshots).
- Curated T1D dataset (+ LADA, fulminant subtypes) generated by build script.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
data/4-reports: Core diseases, Proposed diseases (w/ status), Proposed changes,
Additional info index, DOID mapping (Gilda), DOID matches all (+details sheet),
SNOMED matches all. notebook/ari-grounding: grounding pipeline scripts + CSVs.
Archived files and derived doid_records.json excluded via .gitignore.
Add scripts/import_reports.py, which folds the confirmed report catalogue
(data/4-reports, excluding the 2_* proposed-diseases and 3_* proposed-changes
files) into ontologies/ari_t1d.owl. The import covers 215 core diseases with
their definitions, synonyms, evidence/category, symptoms, age of onset,
prevalence, clinical subtypes, external reference links, authorship, and
DOID/SNOMED/UMLS/ICD-10/MeSH/NCI/OMOP cross-references.

The import is additive and idempotent: a disease already in the ontology is
enriched in place (matched by ARI ID or name token-set), so the curated
"Type 1 diabetes mellitus" showcase absorbs the report's "Diabetes mellitus
type 1" (ARI:0001080) and keeps its deep immune/pathway data instead of being
duplicated. Each report tissue region becomes an OWL class so the Tissue Target
view groups every disease by body region.

Wire the new fields through the app: ontology_service returns the added
identifiers and report-sourced annotations; detail.js/core.js/styles.css render
MeSH/NCI/OMOP linkouts plus Clinical subtypes, External references and byline
sections. Bump static asset cache-busting to v=5.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…211 diseases)

Merges 'Multiple sclerosis'/'Multiple Sclerosis' and 3 other casing-only Parent
duplicates (Eosinophilic Esophagitis, Inclusion Body Myositis, Rheumatic Chorea).
Rebuilds all reports (1-7) and DOID/SNOMED Gilda grounding CSVs at 211 diseases.
README updated with final counts and method notes.
- Disease individuals now use the registry IRI from the report's IRI column
  (https://diseases.autoimmuneregistry.org/disease/...) instead of the
  aurint.org ontology namespace. import_reports.py creates each disease in the
  report's namespace and the merged T1D adopts its registry IRI; only the two
  curated subtypes (LADA, Fulminant), which are not in the report, remain on
  aurint.org.

- Search: the quick dropdown now offers a "View all N results" footer (and
  Enter) that opens a full results page in the middle pane, grouping diseases
  vs. other matches. The search API returns an is_disease flag and orders
  diseases first.

- Feedback: a Feedback box under the Record step of the disease story lets users
  post comments about a term, saved to a file-backed log (feedback/feedback.json
  + feedback.log) via new /api/v2/feedback endpoints. Comments are cleared at
  the next version release (archived under feedback/archive/) unless flagged
  "keep after release", and can be edited or deleted in place. The runtime
  feedback/ directory is gitignored.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Extend the search API to match diseases on their ARI synonyms and target tissue
labels in addition to name/local id, so e.g. "EBA" finds Acquired epidermolysis
bullosa and "skin" returns all skin-targeting diseases. Each result carries a
`match` reason ("synonym: …" / "tissue: …") that the dropdown and results page
surface as the sub-label.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Editors sign in with their own GitHub account; clicking 'Publish to GitHub'
commits the edited ontology on a new branch named after the disease
(edit/<login>/<disease-slug>-<ts>) and opens a PR under their identity.
Tokens stay server-side (session cookie holds only an opaque id). Feature is
optional (off until GitHub env vars are set). Adds app/github_service.py,
OAuth + /api/v2/publish routes, static/js/github.js, .env.example.
- Default GITHUB_BASE_BRANCH to feature/metadata-manager_v2/ARI (configurable via .env);
  app populates from and PRs against this branch.
- Add deploy/ (systemd uvicorn service, nginx+TLS, auto-pull timer + update.sh) and
  DEPLOY.md so the latest of the tracked branch always populates.
- Remove the Admin button and version-release dialog (releases are handled on GitHub).
…ms fix

- Settings gear: fetch latest from source branch (discard-on-dirty confirm),
  switch source to working or any edit/* branch, choose PR target (working or edit/*).
  Backend: /api/v2/settings,/fetch,/source,/pr-base; runtime STATE.
- Excel export (/api/v2/export, export_service.py) in 1_Core_ARI_Diseases format;
  signed-in users get changed cells highlighted vs source branch + Change Status column.
- DEPLOY.md: fix Permission denied on /opt/ari/repo + Troubleshooting; add openpyxl.
- chown -R ariapp:ariapp after clone/checkout so the service user can git pull / auto-update.
- Add 2G swapfile step before pip (owlready2 builds from source; pip exit -9 = OOM on small instances); pip --no-cache-dir.
- Note: push branch to origin + use >=1 GB RAM plan.
…nx -t failure)

nginx.conf no longer hardcodes cert paths (which don't exist until certbot runs);
it's HTTP-only and certbot --nginx upgrades it to 443 + redirect. DEPLOY.md updated
to set the real domain and note the bare-IP case.
nginx server_name _ on port 80, no certbot; APP_BASE_URL/OAuth callback use http://IP.
Add 'Security: running over HTTP' section explaining session-cookie theft, OAuth code
interception, and MITM risks, with mitigations (firewall to own IP, ALLOWED_LOGINS,
SSH tunnel, move to TLS).
…ervice.py, fix publish pr_base, add settings btn + scripts to HTML
- styles.css: dark-mode override for .edit-banner (was light box w/ dark text).
- Cross-references (SNOMED/OMOP/DOID/UMLS/MONDO/ICD-10/MeSH/NCI) are now
  multi-valued: editor shows them comma-joined so you can add/remove entries,
  and update_disease splits comma input into separate annotations (multi_ann).
- Combined comma values in a single annotation (esp. OMOP '374021, 4249574')
  are split into separate entries on read.
- Render definition + definition source as (HTML-safe) markdown (mdToHtml/mdInline).
- Remove the PubMed URL editor field; def_source/definition are markdown textareas.
- Editor identity for changelog now comes from the signed-in GitHub name; an ORCID
  iD set in Settings overrides it (stored client-side, validated, resolveEditor()).
…ption colors

Settings dropdowns (source branch, PR target) had dark text on dark bg in dark
mode because .field select set background but not color.
Adds ARI_ClinicalSubtype to EDITABLE and a 'Clinical subtypes' field in the
disease-field editor, matching the cross-reference editing pattern.
@KrishnaTO

Copy link
Copy Markdown
Owner Author

Currently, x-refs, belonging to Ménière's disease [ARI:0001027], to SNOMED, DOID, etc are listed in AIED [ARI:0001027]. Based on quick search, both diseases are distinct, and have different scopes and causes.

@KrishnaTO KrishnaTO force-pushed the feature/metadata-manager_v2/ARI branch from 1994a2a to c7294c9 Compare June 23, 2026 00:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant