This release focuses on making Capr easier to integrate into real cohort-development workflows.

  • New: Atlas JSON to Capr code (jsonToCapr) Convert Atlas/Circe cohort JSON into executable Capr R code using jsonToCapr() and jsonToCaprFile(). This makes it easier to move existing Atlas definitions into version-controlled Capr pipelines.

  • Expanded attribute support and Circe alignment Added broader attribute coverage (including key-value and type-exclude style attributes), plus improved serialization behavior to better match Circe expectations and support reliable round-trip workflows.

  • Improved round-trip fidelity Added includeConceptSets support in toCohortJson() and multiple decompilation fixes to better preserve concept set handling and generated JSON fidelity.

  • Cleaner JSON serialization API Added toCohortJson() and toConceptSetJson() as the primary user-facing serialization functions. compile() is soft-deprecated in favor of these explicit replacements.

  • Human-readable console printing and summaries Added compact show() methods for every user-facing class and a new summary() S4 method that expands the cohort structure, including nested correlated criteria. summary(x, listConceptSets = TRUE) appends a concept-set section showing each set’s id and descendants/excluded/mapped logic, with concept names and domains once the cohort is hydrated via getConceptSetDetails().

  • Robust concept-set collection in nested criteria Fixed listConceptSets() so multi-layer nested criteria where an outer nested group has a single element no longer return an empty list (OHDSI/Capr#123). The recursion now follows a flat-list invariant with unconditional flattening instead of shape-based guessing, and regression tests guard the previously failing scenarios.

  • Concept set identity is now always content-derived Removed the id parameter from cs(). Concept set IDs are always an md5 hash of the concept set contents, decoupling them from any specific cohort definition or Atlas context.

  • Vocabulary concept search functions Added searchConcepts(), rankedSearchConcepts(), getConceptDescendants(), mapSourceToStandard(), and getConceptInfo() for interactive vocabulary exploration from any OMOP CDM connection. rankedSearchConcepts() automatically uses dialect-specific similarity ranking (pg_trgm on PostgreSQL, Jarowinkler on Snowflake, Levenshtein on Spark) with a universal fallback. SQL lives in inst/sql/sql_server/ following the HADES convention.

  • Expanded Circe attribute coverage Added many previously missing attributes including ageAtStart(), ageAtEnd(), visitLength(), periodLength(), raceConcepts(), ethnicityConcepts(), quantityValue(), stopReason(), uniqueDeviceId(), specimenSourceId(), and the full set of *TypeCS() concept-set-selection variants for every domain. Added payerPlanPeriod() query domain.

  • LLM skills bundle included and improved Expanded the bundled LLM guidance under inst/llm to support validated local generation of Capr cohort definitions, including workflow instructions, API reference content, and validation helpers.

  • Quality and reliability improvements Added substantial test coverage for jsonToCapr, round-trip conversion, and edge cases to improve stability of the new workflow features.

  • add functions to include source concepts as attributes to a query
  • add demographic criteria for Inclusion rules
  • add value as concept attribute
  • add observation period query
  • improve ability to use a circe query without a concept set. Death and OP typically dont have concept sets #92
  • change fn name of unit to measurementUnit to avoid mask with dplyr
  • Add Condition Status attribute #114
  • convert duplicate concept ids to a warning instead of error #107
  • add as.json function for cohorts #97
  • fix vignette for nested cohort example #106
  • add type to startDate and endDate attributes to make Era dates #103
  • remove magrittr pipe dependency #100
  • export as.data.frame #104
  • add conceptTypes to determine data provenance #93
  • allow numeric as offsetDays #90
  • add deviceExposure #86
  • other minor edits
  • add CirceR in REMOTES section
  • correct date attribute names (OccurrenceStartDate, OccurrenceEndDate)
  • add makeCohortSet() function to pipe into CohortGenerator (from Issue #79)
  • add dateAdjustment() function to deploy new circe attribute to a query (from Issue #77)
  • prepare for CRAN release
  • change query functions to match known syntax (i.e. drug => drugExposure, condition => conditionOccurrence)
  • require a name for cs()
  • improve documentation (add vignette for query, count and group)
  • hot fix add procedure occurrence into query
  • add opAttribute super class
  • add version dependency for purrr v1.0.1 for list_flatten
  • fix issue with first exposure
  • additions and corrections to vignettes and documentation
  • compile cohort function added
  • fix concept set print
  • prep for CRAN submission

New user interface for cohort construction - cs() function to build and combine concept ids into sets - improved readability code to build cohort definition - coercion of Capr object to json to save as file for study - maintained support for Capr templates

  1. Bug Fixes
  • allow for numeric attributes stop automatic integer coersion
  • allow for death query without CSE in Censoring and Primary Criteria
  1. Fix bug in guid generation…did not create unique guid each time
  2. Add function to create cohort data frame for CohortGenerator and CohortDiagnostics
  3. Fix pdf documentation in readme
  1. Fix Hades and github logo on package down site
  2. Fix links to access vignettes from README
  3. Other minor changes to prep for PhenotypePheburary
  1. Minor edits to documentation
  2. Removed oracleTempSchema from functions that access vocabulary schema of OMOP database

Initial version of Capr package to functionalize the creation of cohort definitions of OMOP CDM mapped data. Features include:

  1. Lookup functions to browse and identify concepts from OMOP Vocabularies

  2. Creation functions of cohort definitions sub-components (concept set expressions, queries, counts, groups) and main-components (primary criteria, additional criteria, inclusion rules, censoring criteria and cohort eras).

  3. Save and load component parts of cohort definition

  4. Import circe json and convert into Capr objects

  5. Print Capr R script that produces equivalent cohort definitions in Capr

  6. Show functions for Capr objects