-
Tibble output for batch FHIR resolution
FhirResource$resolve_batch()(and the standalonefhir_resolve_batch()) gained anas_tibbleparameter. Whenas_tibble = TRUE, the call returns a flattibble::tibblewith one row per input coding and columns for the source concept, standard concept, target CDM table, mapping type, and resolution status - ready to pipe intodplyr/tidyr. The batch summary (total/resolved/failed) is attached asattr(result, "summary"). Default behavior is unchanged:as_tibble = FALSEstill returns the legacy list shape. -
Standalone wrapper functions Thin, pipe-friendly wrappers around the R6
FhirResourcemethods:fhir_resolve(client, ...)fhir_resolve_batch(client, ...)fhir_resolve_codeable_concept(client, ...)
Both the R6 form (
client$fhir$resolve(...)) and the standalone form work; pick whichever reads better in your pipeline. -
FHIR client interop helper New exported function
omophub_fhir_url(version)returning the OMOPHub FHIR Terminology Service base URL for a given FHIR version ("r4","r4b","r5","r6"). Use it withhttr2,fhircrackr, or any external FHIR client that wants to talk to OMOPHub's FHIR endpoint directly.
-
FHIR-to-OMOP Concept Resolver (
client$fhir): Translate FHIR coded values into OMOP standard concepts, CDM target tables, and optional Phoebe recommendations in a single API call.-
resolve(): Resolve a single FHIRCoding(system URI + code) or text-only input via semantic search fallback. Returns the standard concept, target CDM table, domain alignment check, and optional mapping quality signal. -
resolve_batch(): Batch-resolve up to 100 FHIR codings per request with inline per-item error reporting. -
resolve_codeable_concept(): Resolve a FHIRCodeableConceptwith multiple codings. Automatically picks the best match per OHDSI vocabulary preference (SNOMED > RxNorm > LOINC > CVX > ICD-10). Falls back to thetextfield via semantic search when no coding resolves.
-
- Improved test coverage
-
Bulk lexical search (
bulk_basic()): Execute up to 50 keyword searches in a single API call. Supports shared default filters for vocabulary, domain, and other parameters. Each search is identified by a uniquesearch_idfor result matching. Maps toPOST /v1/search/bulk. -
Bulk semantic search (
bulk_semantic()): Execute up to 25 natural-language searches using neural embeddings in a single call. Supports per-search similarity thresholds and shared defaults. Query length validated at 1-500 characters. Maps toPOST /v1/search/semantic-bulk.
-
Semantic search (
semantic(),semantic_all()): Natural language concept search using neural embeddings. Search for clinical intent like "high blood sugar levels" to find diabetes-related concepts. Supports filtering by vocabulary, domain, standard concept, concept class, and minimum similarity threshold.semantic_all()provides automatic pagination with progress bar. -
Similarity search (
similar()): Find concepts similar to a reference concept ID, concept name, or natural language query. Three algorithm options:'semantic'(neural embeddings),'lexical'(string matching), and'hybrid'(combined). Configurable similarity threshold with optional detailed scores and explanations.
-
Hierarchy
get()method: New method to retrieve complete concept hierarchy (ancestors and descendants) in a single call with support for "flat" or "graph" visualization formats. -
Vocabulary
domain_stats()method: New method to get statistics for a specific domain within a vocabulary. -
Vocabulary
concept_classes()method: New method to list all available concept classes. -
Added
vocab_releaseparameter to concepts, mappings, relationships, and hierarchy methods for explicit vocabulary version pinning. -
Added
include_hierarchyparameter toconcepts$get()andconcepts$get_by_code().
-
API parameter naming: Updated to match OMOPHub API v1.3.0 specifications:
limit→page_sizefor paginationvocabulary,domain→vocabulary_ids,domain_idsfor filteringmax_results→page_sizefor result limitsrelationship_type→relationship_idsfor relationship filteringtarget_vocabularies→target_vocabulary(singular) in mappingsvocabulary_id→vocabulary_ids(plural) in hierarchy methods
-
API simplifications: Several methods now have fewer parameters to match the simplified backend API:
mappings$get(): Removeddirection,include_indirect,standard_only,include_mapping_quality,include_synonyms,include_context, paginationdomains$list(): Simplified to singleinclude_statsparametervocabularies$get(): Now takes onlyvocabulary_idvocabularies$domains(): Now takes no parameters
-
Batch limits:
concepts$batch()maximum reduced from 1000 to 100 concepts per request. -
Default changes:
concepts$batch()standard_onlydefault changed fromFALSEtoTRUErelationships$get()defaultpage_sizechanged from 50 to 100
- Fixed tests to use correct parameter names matching SDK implementation
- Added
include_synonymsandinclude_relationshipsparameters toget_by_code()for retrieving concept synonyms and relationships in a single request.
- User-Agent header updated to
OMOPHub-SDK-R/{version}.
- Client: R6-based
OMOPHubClientfor accessing OMOPHub API - Concepts: Get, batch lookup, suggest, and explore medical concepts
- Search: Basic and advanced search with filtering and pagination
- Vocabularies: List and explore OMOP vocabularies
- Domains: Browse concepts by clinical domain
- Hierarchy: Navigate concept ancestors and descendants
- Relationships: Query concept relationships
- Mappings: Map concepts between vocabularies
- Automatic rate limiting with
httr2::req_throttle() - Automatic retry with exponential backoff for transient errors
- Pagination helpers (
basic_all()) returning tibbles - Environment variable support for API key (
OMOPHUB_API_KEY) - Vocabulary version pinning via
vocab_versionparameter
- Full roxygen2 documentation for all exported functions
- Getting started vignette
- pkgdown website support