Data Sources visit drilldown returns an empty visitDurationByType for Achilles 1.7+ results (query still reads analysis 211)

Aperta Adatta ai principianti
#2,582 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@DG47 ci sta già lavorando.

Dal 4/11/2026.

  • #2583 di @DG47 — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
77/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
java, postgresql, sql
Ambito
api, databases

Direzione di ricerca

Leggi src/main/resources/resources/cdmresults/sql/report/visit/drilldown/visitDurationByType.sql e src/main/resources/resources/cdmresults/sql/report/visit/drilldownsummary/visitDurationByType.sql; entrambi filtrano la distribuzione della durata del ricovero usando analysis 211, mentre l’issue dice che Achilles 1.7+ la memorizza sotto analysis 213. Controlla i test o i fixture correlati alle query, poi verifica che entrambi gli endpoint visit restituiscano i campi della distribuzione per uno schema dei risultati di Achilles 1.7+.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Expected behavior

GET /cdmresults/{sourceKey}/visit/{conceptId} (and the drilldown summary GET /cdmresults/{sourceKey}/visit) return the length of stay distribution for the visit concept in visitDurationByType, with minValue, p10Value, p25Value, medianValue, p75Value, p90Value and maxValue.

Actual behavior

visitDurationByType is always an empty array when the results schema was produced by Achilles 1.7.0 or later, even though achilles_results_dist contains the length of stay distribution. The Achilles cache warm-up (AchillesCacheTasklet includes visitDurationByType in the visit domain) caches the empty result.

Cause: Achilles 1.7.0 renumbered "Distribution of length of stay by visit_concept_id" from analysis 211 to analysis 213 (inst/csv/achilles/achilles_analysis_details.csv; in 1.6.3 the line is 211,1,0,,Distribution of length of stay by visit_concept_id,visit_concept_id, in 1.7.0 it is 213,1,,Distribution of length of stay by visit_concept_id,visit_concept_id and 211 became Number of visit records with end date < start date, a count written to achilles_results). Both

  • src/main/resources/resources/cdmresults/sql/report/visit/drilldown/visitDurationByType.sql
  • src/main/resources/resources/cdmresults/sql/report/visit/drilldownsummary/visitDurationByType.sql

still filter achilles_results_dist on analysis_id = 211, which no longer has any rows in that table.

Steps to reproduce behavior
  1. Run Achilles 1.7.x on a CDM that has visit_occurrence records (for example Eunomia) and point a WebAPI source's results daimon at the results schema.
  2. Check that the distribution exists: SELECT analysis_id, stratum_1, median_value FROM <results>.achilles_results_dist WHERE analysis_id IN (211, 213); returns rows for 213 only.
  3. Call GET /WebAPI/cdmresults/<sourceKey>/visit/9201 (Inpatient Visit, or any visit concept present in step 2).
  4. visitDurationByType is []; ageAtFirstOccurrence, prevalenceByMonth and prevalenceByGenderAgeYear are populated.

Environment: WebAPI master (3.0.1-SNAPSHOT) and 2.15.x; Achilles 1.7.0 through 1.7.2; reproduced with the embedded PostgreSQL test database, the query is dialect-independent.

Lingua principale
Java
Stelle
153
Fork
186
Merge medio
2g 14h
PR unite (30g)
18

Preparare l'ambiente

  • Include un Dockerfile o un file Docker Compose
  • Nessun modello di pull request
  • Nessuna guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di OHDSI/WebAPI

Tutte le issue di OHDSI/WebAPI

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.