Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
c3c1724
Added BC groupings functionality
pendingintent Apr 1, 2026
72d9a26
Issue #192: Cleaned document directories
pendingintent Apr 1, 2026
5cd13f4
Merge branch 'biomedical-concept-grouping' into release-v-1.2
pendingintent Apr 1, 2026
76a2670
Issue #188: Added new sidebar navigation with expandable submenus
pendingintent Apr 1, 2026
811a8e1
Initial commit of Markdown and HTML help files
pendingintent Apr 1, 2026
17ef8f2
Consolidated images for Markdown and HTML help pages
pendingintent Apr 1, 2026
cf94418
Issue #194: Removed auto-mapping from DSS to allow user to select mul…
pendingintent Apr 2, 2026
67e310f
Biomedical concept properties and data element concepts are now displ…
pendingintent Apr 17, 2026
518da4e
Synthentic collected data to support NCT01797120
pendingintent Apr 17, 2026
2360e44
DSS are no longer used to populate BiomedicalConceptProperty values
pendingintent Apr 20, 2026
6bcd1e5
Fixed stale alias codes/codes in database and added code to prevent c…
pendingintent Apr 20, 2026
36ae840
Added bc surrogate export to UI
pendingintent Apr 20, 2026
d3017e9
Added CDISC SDTM Controlled Terminology Browser
pendingintent Apr 20, 2026
8f936c6
Added CDISC CDASH Controlled Terminology Browser
pendingintent Apr 20, 2026
bd2039c
Added define-xml controlled terminology browser
pendingintent Apr 20, 2026
26875a7
Protocol terminology now added via CDISC Library API. List of ARM ty…
pendingintent Apr 20, 2026
432ef09
DDF controlled terminology now added via CDISC Library API. List of …
pendingintent Apr 20, 2026
19854d6
Addressed multiple security issues
pendingintent Apr 21, 2026
234b3fb
Fixed dependency requirements for the test suite
pendingintent Apr 21, 2026
2439c2e
Added text to indicate DSS mapping is optional
pendingintent Apr 21, 2026
2b9b71f
Added jinja2 to pyproject.toml
pendingintent Apr 21, 2026
c760af3
Merge branch 'pendingintent-fix-dependencies' into release-v-1.2
pendingintent Apr 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 5 additions & 10 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
name: CI (Python)

on:
push:
branches: [ "main", "master" ]
branches: [ "master" ]
pull_request:
branches: [ "main", "master" ]
branches: [ "master" ]
Comment thread
pendingintent marked this conversation as resolved.

permissions:
contents: read
Expand Down Expand Up @@ -32,17 +33,12 @@ jobs:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: |
requirements.txt
pyproject.toml

- name: Install dependencies
run: |
python -m pip install --upgrade pip
# Core dev tooling
pip install pytest pytest-cov ruff flake8
# Project deps
pip install -r requirements.txt
# If your package is installable (optional)
if [ -f pyproject.toml ] || [ -f setup.cfg ] || [ -f setup.py ]; then pip install -e .; fi
pip install -e ".[dev]"

- name: Lint (ruff)
run: |
Expand All @@ -54,7 +50,6 @@ jobs:
run: |
mkdir -p reports
pytest -q tests \
--maxfail=1 \
--disable-warnings \
--junitxml=reports/junit.xml \
--cov=soa_builder \
Expand Down
85 changes: 85 additions & 0 deletions changelog/biomedical-concept-grouping_60ce0d1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Changelog: biomedical-concept-grouping

**Branch:** `biomedical-concept-grouping`
**Base commit:** `60ce0d1`

---

## New Feature: Biomedical Concept Groups

Introduces a global grouping mechanism for biomedical concepts. Groups are
not SoA-specific — once created they can be associated with activities in
any SoA.

### Database Migrations (`migrate_database.py`)

- `_migrate_add_concept_group_table()` — creates two new tables:
- `concept_group` — stores `concept_group_uid`, `name`, `label`,
`description`
- `concept_group_concept` — stores the many-to-many relationship between
a group and its assigned concept codes
- `_migrate_activity_concept_add_concept_group_uid()` — adds
`concept_group_uid` column to `activity_concept`
- `_migrate_surrogate_add_concept_group_uid()` — adds `concept_group_uid`
column to `biomedical_concept_surrogate`

### New Router (`routers/concept_groups.py`)

Full CRUD for concept groups, including:
- Create, read, update, delete concept groups (API + UI endpoints)
- Assign / unassign individual concept codes to a group
- Link a concept group to an activity (applies all group concepts at once)

### New Template (`templates/concept_groups.html`)

Management page for concept groups — create groups, assign concepts, and
view group membership.

### `app.py`

- Imports and runs the three new migration functions at startup
- Registers `concept_groups_router` (both API and UI routers)
- `_get_activity_concepts()` updated to `LEFT JOIN concept_group` and
return `concept_group_uid` and `group_name` alongside existing fields
- New `_get_concept_groups_for_cell()` helper used when rendering the
concepts cell partial

### Updated Router: `routers/activities.py`

- `ui_list_activities` query branches updated to `LEFT JOIN concept_group`
when the `concept_group_uid` column is present
- `concept_group_uid` and `group_name` included in the per-activity concept
dict
- `concept_groups` list fetched globally and passed to the template context

### Updated Router: `routers/bc_surrogates.py`

- `_render_concepts_cell` updated to detect the `concept_group_uid` column
and include `concept_group_uid` / `group_name` in `selected_list`

### Updated Templates

- `templates/activities.html` — computes `activity_group_uids` (unique
group UIDs currently assigned to the activity) for use inside the
`concepts_cell.html` include
- `templates/base.html` — adds **Biomedical Concept Groups** navigation
link; reorders BC-related nav items (Concepts → Categories → Groups →
SDTM Specializations)
- `templates/concepts_cell.html` — updated to display assigned concept
groups, render group badges, and expose group-assignment controls via
HTMX

---

## CI / Tooling

### `pyproject.toml`

- Added `pytest-cov>=4.0.0` to the `[dev]` optional dependencies so
coverage reporting works in local and CI environments.

### `.github/workflows/ci.yml`

- Added `# yaml-language-server: $schema=…` modeline to pin the GitHub
Actions schema and suppress false-positive CDISC schema diagnostics
from the VS Code YAML extension.
Loading
Loading