Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
bad3812
add storage summary page
matthewpeterkort Jun 25, 2026
6a0acd1
add path fields to storage creation page
matthewpeterkort Jun 26, 2026
211a196
add lfs tag to get requests since it no longer is a default in gecko
matthewpeterkort Jun 26, 2026
0538c98
Merge branch 'feature/cbds' into feature/storage-summary
matthewpeterkort Jun 26, 2026
d4548bd
update storage page audit to be better ux for user
matthewpeterkort Jul 1, 2026
e016ac4
fix build error
matthewpeterkort Jul 1, 2026
a28985c
fix build error
matthewpeterkort Jul 1, 2026
b4b2c88
fix build error
matthewpeterkort Jul 1, 2026
e14da4e
update expired jwt to cause session timeout
matthewpeterkort Jul 2, 2026
fe0a04e
remove hardcoded audit states
matthewpeterkort Jul 3, 2026
8c9a8d1
update audit page
matthewpeterkort Jul 3, 2026
c78ae7c
update frontend to work correctly with gecko to diagnose issues and r…
matthewpeterkort Jul 3, 2026
0d2b7b3
make storage tab legible
matthewpeterkort Jul 4, 2026
fd2e258
cosmetic upgrades to storage page
matthewpeterkort Jul 4, 2026
a1b2bc3
use new gecko file api
matthewpeterkort Jul 4, 2026
82c0797
fix audit no populating download statistics
matthewpeterkort Jul 4, 2026
c6b96be
fix small cosmetic issues
matthewpeterkort Jul 5, 2026
b19eaac
cleanup audit report
matthewpeterkort Jul 7, 2026
d1ec1bc
update frontend
matthewpeterkort Jul 8, 2026
c0f1cd5
cleanup cosmetics of frontend
matthewpeterkort Jul 8, 2026
debe4ea
fix duplicate session login when logged out
matthewpeterkort Jul 10, 2026
f10bc59
add support for deleting syfon records that yield bucket probe errors…
matthewpeterkort Jul 10, 2026
fb8daf8
improve tree render times
matthewpeterkort Jul 10, 2026
504b9b3
improve session management
matthewpeterkort Jul 16, 2026
5dde90b
Merge branch 'feature/cbds' into feature/clickhouse-explorer
matthewpeterkort Jul 16, 2026
5352423
update browser redirects
matthewpeterkort Jul 16, 2026
d67c11b
remove file-count access gate
matthewpeterkort Jul 20, 2026
e61975b
add Loom explorer integration
matthewpeterkort Jul 20, 2026
c63560d
fix session logout and activity channel
matthewpeterkort Jul 20, 2026
df9626d
attach explorer to clickhouse
matthewpeterkort Jul 20, 2026
8770a5b
fix session details
matthewpeterkort Jul 20, 2026
5e6f114
update frontend to remove hardcoded dataframer shim
matthewpeterkort Jul 30, 2026
061ba7a
fix image viewer cell renderer
matthewpeterkort Jul 31, 2026
ef09160
move over data fetchers, update to ts7
matthewpeterkort Aug 4, 2026
d0612be
take inspiration from upstream changes to upgrade existing systems to…
matthewpeterkort Aug 4, 2026
e01299f
merge feature/cbds and restore CI builds
matthewpeterkort Aug 4, 2026
b0cb038
fix hardcoded value
matthewpeterkort Aug 4, 2026
5378843
fix(frontend): route SSR requests through internal revproxy
matthewpeterkort Aug 5, 2026
853374e
fix issues with differences between api access tokens and credentials…
matthewpeterkort Aug 5, 2026
9e7e234
remove unneccessary session token fetching
matthewpeterkort Aug 5, 2026
f66c26a
fix frontend ssr
matthewpeterkort Aug 5, 2026
504a6d8
fix explorer failure state semantics
matthewpeterkort Aug 5, 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
13 changes: 12 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,17 @@
FROM node:22-slim AS builder
WORKDIR /gen3

ARG NEXT_PUBLIC_GEN3_API
ARG NEXT_PUBLIC_GEN3_DOMAIN
ARG NEXT_PUBLIC_GEN3_LOOM_API
ARG NEXT_PUBLIC_GEN3_REDIRECT_URL
ARG NEXT_PUBLIC_GEN3_COMMONS_NAME=cbds
ENV NEXT_PUBLIC_GEN3_API=$NEXT_PUBLIC_GEN3_API
ENV NEXT_PUBLIC_GEN3_DOMAIN=$NEXT_PUBLIC_GEN3_DOMAIN
ENV NEXT_PUBLIC_GEN3_LOOM_API=$NEXT_PUBLIC_GEN3_LOOM_API
ENV NEXT_PUBLIC_GEN3_REDIRECT_URL=$NEXT_PUBLIC_GEN3_REDIRECT_URL
ENV NEXT_PUBLIC_GEN3_COMMONS_NAME=$NEXT_PUBLIC_GEN3_COMMONS_NAME

# Copy everything
COPY . .

Expand Down Expand Up @@ -42,4 +53,4 @@ ENV NODE_ENV=production
ENV PORT=3000

EXPOSE 3000
CMD ["/bin/bash", "./start.sh"]
CMD ["/bin/bash", "./start.sh"]
64 changes: 64 additions & 0 deletions docs/Configuration/Query.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Query configuration

Query configuration uses version 2 endpoint and mode records. The page loads
the configured service, fetches its GraphQL schema, and uses the selected mode
to provide its default query and variables.

```json
{
"version": 2,
"endpoints": {
"loomGraph": {
"url": "/loom/graphql/graph",
"service": "loom",
"surface": "graph"
},
"loomFlat": {
"url": "/loom/graphql/flat",
"service": "loom",
"surface": "flat"
}
},
"modes": [
{
"id": "loom-fhir-graph",
"label": "Loom Graph",
"endpoint": "loomGraph",
"preset": "loom-fhir-graph"
},
{
"id": "loom-fhir-dataframe",
"label": "Loom Dataframe",
"endpoint": "loomGraph",
"preset": "loom-fhir-dataframe"
},
{
"id": "loom-flat",
"label": "Loom Flat",
"endpoint": "loomFlat",
"preset": "loom-flat"
}
],
"defaultMode": "loom-flat"
}
```

Supported services and presets are:

- `loom-fhir-graph`: binds the selected `PROGRAM-PROJECT` to `input.project`.
- `loom-fhir-dataframe`: binds the selected `PROGRAM-PROJECT` to `input.project`.
- `loom-flat`: adds a `project_id EQ PROGRAM-PROJECT` filter to the flat input.
- `guppy-flat`: adds `auth_resource_path` using `/programs/PROGRAM/projects/PROJECT`.
- `generic`: executes the configured query without automatic project binding.

The Query page reads the canonical project selector from `project_id`. The
legacy `project` query parameter is accepted once and rewritten to
`project_id`. Accessible projects come from Gecko, and the Run button is
disabled when a project-bound mode has no valid accessible project selected.

Endpoint URLs may be absolute HTTP/HTTPS URLs or root-relative paths. URLs
with credentials, fragments, protocol-relative syntax, or unsafe schemes are
rejected. Loom graph and flat endpoints must use their matching GraphQL path.

Older configurations containing only `graphQLEndpoint` are normalized locally
for compatibility. New configuration should use version 2.
27 changes: 27 additions & 0 deletions docs/loom-etl-work-packages/EXPLORER_LOOM_MAPPING_INVENTORY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Explorer read-path inventory

The Explorer configuration still uses its established `guppyConfig.dataType`
values. The adapter boundary is `packages/core/src/features/loom/mapping.ts`;
all requests below use the canonical value returned by `toLoomDataType`.

| Explorer surface | Previous request | Loom request | Existing consumer shape |
| --- | --- | --- | --- |
| `pages/Explorer/data.ts` shared-field discovery | Guppy `_mapping` | `dataframeDataset` column metadata | `SharedFieldMapping` |
| `CohortPanel` facets | Guppy grouped aggregations | `dataframeAggregate` COUNT by field | `AggregationsData` |
| `CohortPanel` total | Guppy count aggregation | `dataframeAggregate` COUNT | `number` |
| `ExplorerTable` rows | Guppy offset rows/count | `dataframeRows` with opaque cursor | `JSONObject[]`, row count |
| `QueryRowDetailsPanel` | Guppy single-row query | `dataframeRows` with an ID filter | one `JSONObject` |
| download actions | Guppy download endpoint | Loom dataframe export | JSON/CSV/TSV blob or JSON rows |

The canonical mapping is:

- `file` and `document_reference` -> `DocumentReference`
- `research_subject` -> `ResearchSubject`
- `specimen` -> `Specimen`
- `medication_administration` -> `MedicationAdministration`
- `group_member` -> `GroupMember`

Loom metadata is also the availability boundary. Explorer distinguishes an
unsupported type, transport/authorization failure, missing dataset, a
non-`READY` dataset, and a `READY` dataset with zero rows. There is no Guppy
runtime fallback.
Loading
Loading