fhir-persistence 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +50 -0
- package/README.md +7 -4
- package/dist/cjs/index.cjs +786 -3
- package/dist/cjs/index.cjs.map +4 -4
- package/dist/cjs/index.d.ts +221 -12
- package/dist/esm/index.d.ts +221 -12
- package/dist/esm/index.mjs +788 -3
- package/dist/esm/index.mjs.map +4 -4
- package/dist/index.d.ts +221 -12
- package/dist/lib/index.d.ts +8 -1
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/search/where-builder.d.ts.map +1 -1
- package/dist/lib/store/fhir-persistence.d.ts +20 -2
- package/dist/lib/store/fhir-persistence.d.ts.map +1 -1
- package/dist/lib/store/fhir-store.d.ts +10 -1
- package/dist/lib/store/fhir-store.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -312,6 +312,20 @@ export declare function buildUpdateMainSQLv2(tableName: string, columns: Record<
|
|
|
312
312
|
values: unknown[];
|
|
313
313
|
};
|
|
314
314
|
|
|
315
|
+
/**
|
|
316
|
+
* Build a mapping from `urn:uuid:` fullUrls to assigned IDs + resourceTypes.
|
|
317
|
+
*
|
|
318
|
+
* Only processes POST entries with `urn:uuid:` fullUrl.
|
|
319
|
+
* Each matching entry gets a newly generated UUID as its assigned ID.
|
|
320
|
+
*
|
|
321
|
+
* The returned map has two key formats for each entry:
|
|
322
|
+
* - `"urn:uuid:<uuid>"` → `UrnTarget` (for fullUrl-based lookup)
|
|
323
|
+
*
|
|
324
|
+
* @param entries - Bundle entries to scan.
|
|
325
|
+
* @returns Map from urn:uuid string to UrnTarget.
|
|
326
|
+
*/
|
|
327
|
+
export declare function buildUrnMap(entries: BundleEntryForUrn[]): Map<string, UrnTarget>;
|
|
328
|
+
|
|
315
329
|
/**
|
|
316
330
|
* v2: Build a complete WHERE clause from parsed search params using ? placeholders.
|
|
317
331
|
*/
|
|
@@ -326,11 +340,75 @@ export declare function buildWhereClauseV2(params: ParsedSearchParam[], registry
|
|
|
326
340
|
*/
|
|
327
341
|
export declare function buildWhereFragmentV2(impl: SearchParameterImpl, param: ParsedSearchParam, dialect?: SqlDialect, resourceType?: string): WhereFragment | null;
|
|
328
342
|
|
|
343
|
+
/**
|
|
344
|
+
* A FHIR Bundle resource.
|
|
345
|
+
*/
|
|
346
|
+
export declare interface Bundle {
|
|
347
|
+
resourceType: 'Bundle';
|
|
348
|
+
type: 'transaction' | 'batch';
|
|
349
|
+
entry?: BundleEntry[];
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* A single entry in a FHIR Bundle.
|
|
354
|
+
*/
|
|
355
|
+
export declare interface BundleEntry {
|
|
356
|
+
fullUrl?: string;
|
|
357
|
+
resource?: FhirResource;
|
|
358
|
+
request?: {
|
|
359
|
+
method: 'GET' | 'POST' | 'PUT' | 'DELETE';
|
|
360
|
+
url: string;
|
|
361
|
+
/** If-None-Exist header for conditional create. */
|
|
362
|
+
ifNoneExist?: string;
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* A single entry in a FHIR Bundle (minimal shape for URN resolution).
|
|
368
|
+
*/
|
|
369
|
+
declare interface BundleEntryForUrn {
|
|
370
|
+
fullUrl?: string;
|
|
371
|
+
resource?: FhirResource;
|
|
372
|
+
request?: {
|
|
373
|
+
method: string;
|
|
374
|
+
url: string;
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
|
|
329
378
|
declare interface BundleLink {
|
|
330
379
|
relation: string;
|
|
331
380
|
url: string;
|
|
332
381
|
}
|
|
333
382
|
|
|
383
|
+
/**
|
|
384
|
+
* Result of processing a bundle.
|
|
385
|
+
*/
|
|
386
|
+
export declare interface BundleResponse {
|
|
387
|
+
resourceType: 'Bundle';
|
|
388
|
+
type: 'transaction-response' | 'batch-response';
|
|
389
|
+
entry: BundleResponseEntry[];
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
/**
|
|
393
|
+
* Result entry for a single bundle operation.
|
|
394
|
+
*/
|
|
395
|
+
export declare interface BundleResponseEntry {
|
|
396
|
+
resource?: PersistedResource;
|
|
397
|
+
response: {
|
|
398
|
+
status: string;
|
|
399
|
+
location?: string;
|
|
400
|
+
etag?: string;
|
|
401
|
+
lastModified?: string;
|
|
402
|
+
outcome?: {
|
|
403
|
+
issue: Array<{
|
|
404
|
+
severity: string;
|
|
405
|
+
code: string;
|
|
406
|
+
diagnostics: string;
|
|
407
|
+
}>;
|
|
408
|
+
};
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
|
|
334
412
|
export declare interface CachedExpansion {
|
|
335
413
|
valuesetUrl: string;
|
|
336
414
|
version: string;
|
|
@@ -461,6 +539,66 @@ export declare class ConceptHierarchyRepo {
|
|
|
461
539
|
private mapRow;
|
|
462
540
|
}
|
|
463
541
|
|
|
542
|
+
export declare interface ConditionalCreateResult<T = PersistedResource> {
|
|
543
|
+
/** Whether a new resource was created or an existing one was returned. */
|
|
544
|
+
outcome: 'created' | 'existing';
|
|
545
|
+
/** The resource (created or existing). */
|
|
546
|
+
resource: T;
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
export declare interface ConditionalDeleteResult {
|
|
550
|
+
/** Number of resources deleted. */
|
|
551
|
+
count: number;
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
export declare class ConditionalService {
|
|
555
|
+
private readonly adapter;
|
|
556
|
+
private readonly registry;
|
|
557
|
+
constructor(adapter: StorageAdapter, registry: SearchParameterRegistry);
|
|
558
|
+
/**
|
|
559
|
+
* Conditional create: search for existing matches, create only if none found.
|
|
560
|
+
*
|
|
561
|
+
* - 0 matches → create new resource
|
|
562
|
+
* - 1 match → return existing resource (no-op)
|
|
563
|
+
* - 2+ matches → PreconditionFailedError
|
|
564
|
+
*
|
|
565
|
+
* @param resourceType - FHIR resource type
|
|
566
|
+
* @param resource - The resource to create
|
|
567
|
+
* @param searchParams - Search criteria (If-None-Exist)
|
|
568
|
+
*/
|
|
569
|
+
conditionalCreate<T extends FhirResource>(resourceType: string, resource: T, searchParams: ParsedSearchParam[]): Promise<ConditionalCreateResult<T & PersistedResource>>;
|
|
570
|
+
/**
|
|
571
|
+
* Conditional update: search for matches, update if exactly one found.
|
|
572
|
+
*
|
|
573
|
+
* - 0 matches → create new resource
|
|
574
|
+
* - 1 match → update existing resource
|
|
575
|
+
* - 2+ matches → PreconditionFailedError
|
|
576
|
+
*
|
|
577
|
+
* @param resourceType - FHIR resource type
|
|
578
|
+
* @param resource - The resource to create/update
|
|
579
|
+
* @param searchParams - Search criteria
|
|
580
|
+
*/
|
|
581
|
+
conditionalUpdate<T extends FhirResource>(resourceType: string, resource: T, searchParams: ParsedSearchParam[]): Promise<ConditionalUpdateResult<T & PersistedResource>>;
|
|
582
|
+
/**
|
|
583
|
+
* Conditional delete: delete all resources matching the search criteria.
|
|
584
|
+
*
|
|
585
|
+
* @param resourceType - FHIR resource type
|
|
586
|
+
* @param searchParams - Search criteria
|
|
587
|
+
* @returns Number of resources deleted
|
|
588
|
+
*/
|
|
589
|
+
conditionalDelete(resourceType: string, searchParams: ParsedSearchParam[]): Promise<ConditionalDeleteResult>;
|
|
590
|
+
private searchMatches;
|
|
591
|
+
private createInTransaction;
|
|
592
|
+
private updateInTransaction;
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
export declare interface ConditionalUpdateResult<T = PersistedResource> {
|
|
596
|
+
/** Whether a new resource was created or an existing one was updated. */
|
|
597
|
+
outcome: 'created' | 'updated';
|
|
598
|
+
/** The resource after the operation. */
|
|
599
|
+
resource: T;
|
|
600
|
+
}
|
|
601
|
+
|
|
464
602
|
/**
|
|
465
603
|
* Definition of a PostgreSQL table constraint.
|
|
466
604
|
*/
|
|
@@ -518,13 +656,29 @@ declare interface CreateResourceOptions_2 {
|
|
|
518
656
|
assignedId?: string;
|
|
519
657
|
}
|
|
520
658
|
|
|
521
|
-
declare interface
|
|
522
|
-
/**
|
|
523
|
-
|
|
659
|
+
export declare interface CreateResourceResult<T = PersistedResource> {
|
|
660
|
+
/** The persisted resource after the operation. */
|
|
661
|
+
resource: T;
|
|
662
|
+
/** True if a new resource was created, false if an existing match was returned. */
|
|
663
|
+
created: boolean;
|
|
524
664
|
}
|
|
525
665
|
|
|
526
666
|
declare type DDLDialect = 'sqlite' | 'postgres';
|
|
527
667
|
|
|
668
|
+
/**
|
|
669
|
+
* Replace `urn:uuid:` references in a resource with actual `Type/id` references.
|
|
670
|
+
*
|
|
671
|
+
* Only replaces values in `.reference` fields (FHIR Reference type)
|
|
672
|
+
* to avoid accidental replacement in narratives or identifiers.
|
|
673
|
+
*
|
|
674
|
+
* Uses structured deep-walk (iterative stack, not recursive).
|
|
675
|
+
*
|
|
676
|
+
* @param resource - The FHIR resource to resolve (will be cloned).
|
|
677
|
+
* @param urnMap - Map from urn:uuid strings to UrnTarget.
|
|
678
|
+
* @returns A new resource with resolved references.
|
|
679
|
+
*/
|
|
680
|
+
export declare function deepResolveUrns<T extends FhirResource>(resource: T, urnMap: Map<string, UrnTarget>): T;
|
|
681
|
+
|
|
528
682
|
/**
|
|
529
683
|
* Default page size for search results.
|
|
530
684
|
*/
|
|
@@ -760,12 +914,13 @@ export declare class FhirPersistence {
|
|
|
760
914
|
getRegistry(): SearchParameterRegistry;
|
|
761
915
|
/** Get the IndexingPipeline. */
|
|
762
916
|
getPipeline(): IndexingPipeline;
|
|
763
|
-
createResource<T extends FhirResource>(resourceType: string, resource: T, options?:
|
|
917
|
+
createResource<T extends FhirResource>(resourceType: string, resource: T, options?: PersistenceCreateResourceOptions): Promise<CreateResourceResult<T & PersistedResource>>;
|
|
764
918
|
readResource(resourceType: string, id: string): Promise<PersistedResource>;
|
|
765
|
-
updateResource<T extends FhirResource>(resourceType: string, resource: T, options?:
|
|
919
|
+
updateResource<T extends FhirResource>(resourceType: string, resource: T, options?: PersistenceUpdateResourceOptions): Promise<UpdateResourceResult<T & PersistedResource>>;
|
|
766
920
|
deleteResource(resourceType: string, id: string): Promise<void>;
|
|
767
921
|
readVersion(resourceType: string, id: string, versionId: string): Promise<PersistedResource>;
|
|
768
922
|
readHistory(resourceType: string, id: string, options?: HistoryOptions_3): Promise<HistoryEntry[]>;
|
|
923
|
+
readTypeHistory(resourceType: string, options?: HistoryOptions_3): Promise<HistoryEntry[]>;
|
|
769
924
|
/**
|
|
770
925
|
* Stream search results row-by-row for large result sets.
|
|
771
926
|
*
|
|
@@ -855,10 +1010,11 @@ export declare class FhirStore {
|
|
|
855
1010
|
constructor(adapter: StorageAdapter);
|
|
856
1011
|
createResource<T extends FhirResource>(resourceType: string, resource: T, options?: CreateResourceOptions_2): Promise<T & PersistedResource>;
|
|
857
1012
|
readResource(resourceType: string, id: string): Promise<PersistedResource>;
|
|
858
|
-
updateResource<T extends FhirResource>(resourceType: string, resource: T, options?:
|
|
1013
|
+
updateResource<T extends FhirResource>(resourceType: string, resource: T, options?: StoreUpdateResourceOptions): Promise<StoreUpdateResourceResult<T & PersistedResource>>;
|
|
859
1014
|
deleteResource(resourceType: string, id: string): Promise<void>;
|
|
860
1015
|
readVersion(resourceType: string, id: string, versionId: string): Promise<PersistedResource>;
|
|
861
1016
|
readHistory(resourceType: string, id: string, options?: HistoryOptions_2): Promise<HistoryEntry[]>;
|
|
1017
|
+
readTypeHistory(resourceType: string, options?: HistoryOptions_2): Promise<HistoryEntry[]>;
|
|
862
1018
|
writeReferences(resourceType: string, resourceId: string, refs: ReferenceRowV2[]): Promise<void>;
|
|
863
1019
|
}
|
|
864
1020
|
|
|
@@ -1830,6 +1986,20 @@ export declare interface PersistedResource extends FhirResource {
|
|
|
1830
1986
|
};
|
|
1831
1987
|
}
|
|
1832
1988
|
|
|
1989
|
+
export declare interface PersistenceCreateResourceOptions {
|
|
1990
|
+
/** Pre-assigned ID (used in batch/transaction). */
|
|
1991
|
+
assignedId?: string;
|
|
1992
|
+
/** Search condition for conditional create (If-None-Exist). */
|
|
1993
|
+
ifNoneExist?: ParsedSearchParam[];
|
|
1994
|
+
}
|
|
1995
|
+
|
|
1996
|
+
export declare interface PersistenceUpdateResourceOptions {
|
|
1997
|
+
/** Expected versionId for optimistic locking (If-Match header). */
|
|
1998
|
+
ifMatch?: string;
|
|
1999
|
+
/** When true, create the resource if it does not exist (PUT-as-Create / upsert). */
|
|
2000
|
+
upsert?: boolean;
|
|
2001
|
+
}
|
|
2002
|
+
|
|
1833
2003
|
/**
|
|
1834
2004
|
* Minimal interface that pg.PoolClient satisfies.
|
|
1835
2005
|
*/
|
|
@@ -1953,6 +2123,24 @@ declare interface PreparedStatement<T = Record<string, unknown>> {
|
|
|
1953
2123
|
finalize(): void;
|
|
1954
2124
|
}
|
|
1955
2125
|
|
|
2126
|
+
/**
|
|
2127
|
+
* v2: Process a batch bundle — each entry independently.
|
|
2128
|
+
*
|
|
2129
|
+
* Each entry is processed in its own try/catch.
|
|
2130
|
+
* urn:uuid references are rejected in batch mode (return 400).
|
|
2131
|
+
*/
|
|
2132
|
+
export declare function processBatchV2(store: FhirStore, bundle: Bundle): Promise<BundleResponse>;
|
|
2133
|
+
|
|
2134
|
+
/**
|
|
2135
|
+
* v2: Process a transaction bundle — all-or-nothing.
|
|
2136
|
+
*
|
|
2137
|
+
* All entries are processed within a single StorageAdapter transaction.
|
|
2138
|
+
* If any entry fails, the entire transaction is rolled back.
|
|
2139
|
+
*
|
|
2140
|
+
* Entry processing order: strict sequential (no reorder).
|
|
2141
|
+
*/
|
|
2142
|
+
export declare function processTransactionV2(store: FhirStore, adapter: StorageAdapter, bundle: Bundle): Promise<BundleResponse>;
|
|
2143
|
+
|
|
1956
2144
|
/**
|
|
1957
2145
|
* Resource types that can be managed by project admins (not just super-admins).
|
|
1958
2146
|
*
|
|
@@ -3182,6 +3370,20 @@ declare interface StoredValueSet {
|
|
|
3182
3370
|
storedAt: string;
|
|
3183
3371
|
}
|
|
3184
3372
|
|
|
3373
|
+
export declare interface StoreUpdateResourceOptions {
|
|
3374
|
+
/** Expected versionId for optimistic locking (If-Match header). */
|
|
3375
|
+
ifMatch?: string;
|
|
3376
|
+
/** When true, create the resource if it does not exist (PUT-as-Create / upsert). */
|
|
3377
|
+
upsert?: boolean;
|
|
3378
|
+
}
|
|
3379
|
+
|
|
3380
|
+
export declare interface StoreUpdateResourceResult<T = PersistedResource> {
|
|
3381
|
+
/** The persisted resource after the operation. */
|
|
3382
|
+
resource: T;
|
|
3383
|
+
/** True if the resource was newly created (upsert), false if updated. */
|
|
3384
|
+
created: boolean;
|
|
3385
|
+
}
|
|
3386
|
+
|
|
3185
3387
|
/**
|
|
3186
3388
|
* DefinitionProvider — Bridge Interface for fhir-definition
|
|
3187
3389
|
*
|
|
@@ -3374,14 +3576,21 @@ export declare interface UpdateResourceOptions {
|
|
|
3374
3576
|
ifMatch?: string;
|
|
3375
3577
|
}
|
|
3376
3578
|
|
|
3377
|
-
declare interface
|
|
3378
|
-
/**
|
|
3379
|
-
|
|
3579
|
+
export declare interface UpdateResourceResult<T = PersistedResource> {
|
|
3580
|
+
/** The persisted resource after the operation. */
|
|
3581
|
+
resource: T;
|
|
3582
|
+
/** True if the resource was newly created (upsert), false if updated. */
|
|
3583
|
+
created: boolean;
|
|
3380
3584
|
}
|
|
3381
3585
|
|
|
3382
|
-
|
|
3383
|
-
|
|
3384
|
-
|
|
3586
|
+
/**
|
|
3587
|
+
* A resolved URN target with explicit resourceType.
|
|
3588
|
+
*/
|
|
3589
|
+
export declare interface UrnTarget {
|
|
3590
|
+
/** The assigned resource ID. */
|
|
3591
|
+
id: string;
|
|
3592
|
+
/** The FHIR resource type (e.g., "Patient"). */
|
|
3593
|
+
resourceType: string;
|
|
3385
3594
|
}
|
|
3386
3595
|
|
|
3387
3596
|
/**
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -29,8 +29,15 @@ export type { SqlDialect } from './db/dialect.js';
|
|
|
29
29
|
export { SQLiteDialect } from './db/sqlite-dialect.js';
|
|
30
30
|
export { PostgresDialect } from './db/postgres-dialect.js';
|
|
31
31
|
export { FhirStore } from './store/fhir-store.js';
|
|
32
|
+
export type { UpdateResourceResult as StoreUpdateResourceResult, UpdateResourceOptions as StoreUpdateResourceOptions, } from './store/fhir-store.js';
|
|
32
33
|
export { FhirPersistence } from './store/fhir-persistence.js';
|
|
33
|
-
export type { FhirPersistenceOptions } from './store/fhir-persistence.js';
|
|
34
|
+
export type { FhirPersistenceOptions, CreateResourceOptions as PersistenceCreateResourceOptions, CreateResourceResult, UpdateResourceOptions as PersistenceUpdateResourceOptions, UpdateResourceResult, } from './store/fhir-persistence.js';
|
|
35
|
+
export { ConditionalService } from './store/conditional-service.js';
|
|
36
|
+
export type { ConditionalCreateResult, ConditionalUpdateResult, ConditionalDeleteResult, } from './store/conditional-service.js';
|
|
37
|
+
export { processTransactionV2, processBatchV2 } from './transaction/bundle-processor.js';
|
|
38
|
+
export type { Bundle, BundleEntry, BundleResponse, BundleResponseEntry, } from './transaction/bundle-processor.js';
|
|
39
|
+
export { buildUrnMap, deepResolveUrns } from './transaction/urn-resolver.js';
|
|
40
|
+
export type { UrnTarget } from './transaction/urn-resolver.js';
|
|
34
41
|
export { IndexingPipeline } from './repo/indexing-pipeline.js';
|
|
35
42
|
export type { IndexResult, IndexingPipelineOptions } from './repo/indexing-pipeline.js';
|
|
36
43
|
export { LookupTableWriter } from './repo/lookup-table-writer.js';
|
package/dist/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EACV,aAAa,EACb,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,6BAA6B,EAC7B,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAGnC,YAAY,EACV,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,SAAS,EACT,mBAAmB,EACnB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,aAAa,EACb,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,eAAe,IAAI,aAAa,EAChC,oBAAoB,IAAI,kBAAkB,GAC3C,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3D,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"where-builder.d.ts","sourceRoot":"","sources":["../../../src/search/where-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAuB,MAAM,YAAY,CAAC;AACtG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMnD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAwB9D;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,mBAAmB,EACzB,KAAK,EAAE,iBAAiB,EACxB,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,GACpB,aAAa,GAAG,IAAI,CAkCtB;
|
|
1
|
+
{"version":3,"file":"where-builder.d.ts","sourceRoot":"","sources":["../../../src/search/where-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAuB,MAAM,YAAY,CAAC;AACtG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMnD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAwB9D;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,mBAAmB,EACzB,KAAK,EAAE,iBAAiB,EACxB,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,GACpB,aAAa,GAAG,IAAI,CAkCtB;AAuoBD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,iBAAiB,EAAE,EAC3B,QAAQ,EAAE,uBAAuB,EACjC,YAAY,EAAE,MAAM,GACnB,aAAa,GAAG,IAAI,CAmCtB;AAqID;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,mBAAmB,EACzB,KAAK,EAAE,iBAAiB,EACxB,OAAO,CAAC,EAAE,UAAU,EACpB,YAAY,CAAC,EAAE,MAAM,GACpB,aAAa,GAAG,IAAI,CA8BtB;AAwTD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,iBAAiB,EAAE,EAC3B,QAAQ,EAAE,uBAAuB,EACjC,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,UAAU,GACnB,aAAa,GAAG,IAAI,CA2BtB"}
|
|
@@ -24,13 +24,30 @@ import type { SearchParameterRegistry } from '../registry/search-parameter-regis
|
|
|
24
24
|
import type { FhirResource, PersistedResource, HistoryEntry } from '../repo/types.js';
|
|
25
25
|
import { IndexingPipeline } from '../repo/indexing-pipeline.js';
|
|
26
26
|
import type { IndexingPipelineOptions } from '../repo/indexing-pipeline.js';
|
|
27
|
+
import type { ParsedSearchParam } from '../search/types.js';
|
|
27
28
|
export interface CreateResourceOptions {
|
|
28
29
|
/** Pre-assigned ID (used in batch/transaction). */
|
|
29
30
|
assignedId?: string;
|
|
31
|
+
/** Search condition for conditional create (If-None-Exist). */
|
|
32
|
+
ifNoneExist?: ParsedSearchParam[];
|
|
33
|
+
}
|
|
34
|
+
export interface CreateResourceResult<T = PersistedResource> {
|
|
35
|
+
/** The persisted resource after the operation. */
|
|
36
|
+
resource: T;
|
|
37
|
+
/** True if a new resource was created, false if an existing match was returned. */
|
|
38
|
+
created: boolean;
|
|
30
39
|
}
|
|
31
40
|
export interface UpdateResourceOptions {
|
|
32
41
|
/** Expected versionId for optimistic locking (If-Match header). */
|
|
33
42
|
ifMatch?: string;
|
|
43
|
+
/** When true, create the resource if it does not exist (PUT-as-Create / upsert). */
|
|
44
|
+
upsert?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export interface UpdateResourceResult<T = PersistedResource> {
|
|
47
|
+
/** The persisted resource after the operation. */
|
|
48
|
+
resource: T;
|
|
49
|
+
/** True if the resource was newly created (upsert), false if updated. */
|
|
50
|
+
created: boolean;
|
|
34
51
|
}
|
|
35
52
|
export interface HistoryOptions {
|
|
36
53
|
since?: string;
|
|
@@ -52,12 +69,13 @@ export declare class FhirPersistence {
|
|
|
52
69
|
getRegistry(): SearchParameterRegistry;
|
|
53
70
|
/** Get the IndexingPipeline. */
|
|
54
71
|
getPipeline(): IndexingPipeline;
|
|
55
|
-
createResource<T extends FhirResource>(resourceType: string, resource: T, options?: CreateResourceOptions): Promise<T & PersistedResource
|
|
72
|
+
createResource<T extends FhirResource>(resourceType: string, resource: T, options?: CreateResourceOptions): Promise<CreateResourceResult<T & PersistedResource>>;
|
|
56
73
|
readResource(resourceType: string, id: string): Promise<PersistedResource>;
|
|
57
|
-
updateResource<T extends FhirResource>(resourceType: string, resource: T, options?: UpdateResourceOptions): Promise<T & PersistedResource
|
|
74
|
+
updateResource<T extends FhirResource>(resourceType: string, resource: T, options?: UpdateResourceOptions): Promise<UpdateResourceResult<T & PersistedResource>>;
|
|
58
75
|
deleteResource(resourceType: string, id: string): Promise<void>;
|
|
59
76
|
readVersion(resourceType: string, id: string, versionId: string): Promise<PersistedResource>;
|
|
60
77
|
readHistory(resourceType: string, id: string, options?: HistoryOptions): Promise<HistoryEntry[]>;
|
|
78
|
+
readTypeHistory(resourceType: string, options?: HistoryOptions): Promise<HistoryEntry[]>;
|
|
61
79
|
/**
|
|
62
80
|
* Stream search results row-by-row for large result sets.
|
|
63
81
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fhir-persistence.d.ts","sourceRoot":"","sources":["../../../src/store/fhir-persistence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,uBAAuB,EAAuB,MAAM,0CAA0C,CAAC;AAC7G,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EAGb,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"fhir-persistence.d.ts","sourceRoot":"","sources":["../../../src/store/fhir-persistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,14 @@ export interface CreateResourceOptions {
|
|
|
24
24
|
export interface UpdateResourceOptions {
|
|
25
25
|
/** Expected versionId for optimistic locking (If-Match header). */
|
|
26
26
|
ifMatch?: string;
|
|
27
|
+
/** When true, create the resource if it does not exist (PUT-as-Create / upsert). */
|
|
28
|
+
upsert?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface UpdateResourceResult<T = PersistedResource> {
|
|
31
|
+
/** The persisted resource after the operation. */
|
|
32
|
+
resource: T;
|
|
33
|
+
/** True if the resource was newly created (upsert), false if updated. */
|
|
34
|
+
created: boolean;
|
|
27
35
|
}
|
|
28
36
|
export interface HistoryOptions {
|
|
29
37
|
since?: string;
|
|
@@ -35,10 +43,11 @@ export declare class FhirStore {
|
|
|
35
43
|
constructor(adapter: StorageAdapter);
|
|
36
44
|
createResource<T extends FhirResource>(resourceType: string, resource: T, options?: CreateResourceOptions): Promise<T & PersistedResource>;
|
|
37
45
|
readResource(resourceType: string, id: string): Promise<PersistedResource>;
|
|
38
|
-
updateResource<T extends FhirResource>(resourceType: string, resource: T, options?: UpdateResourceOptions): Promise<T & PersistedResource
|
|
46
|
+
updateResource<T extends FhirResource>(resourceType: string, resource: T, options?: UpdateResourceOptions): Promise<UpdateResourceResult<T & PersistedResource>>;
|
|
39
47
|
deleteResource(resourceType: string, id: string): Promise<void>;
|
|
40
48
|
readVersion(resourceType: string, id: string, versionId: string): Promise<PersistedResource>;
|
|
41
49
|
readHistory(resourceType: string, id: string, options?: HistoryOptions): Promise<HistoryEntry[]>;
|
|
50
|
+
readTypeHistory(resourceType: string, options?: HistoryOptions): Promise<HistoryEntry[]>;
|
|
42
51
|
writeReferences(resourceType: string, resourceId: string, refs: ReferenceRowV2[]): Promise<void>;
|
|
43
52
|
}
|
|
44
53
|
//# sourceMappingURL=fhir-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fhir-store.d.ts","sourceRoot":"","sources":["../../../src/store/fhir-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EAGb,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"fhir-store.d.ts","sourceRoot":"","sources":["../../../src/store/fhir-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EAGb,MAAM,kBAAkB,CAAC;AAiB1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAMnE,MAAM,WAAW,qBAAqB;IACpC,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAG,iBAAiB;IACzD,kDAAkD;IAClD,QAAQ,EAAE,CAAC,CAAC;IACZ,yEAAyE;IACzE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,cAAc;IAM9C,cAAc,CAAC,CAAC,SAAS,YAAY,EACzC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,CAAC,EACX,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,CAAC,GAAG,iBAAiB,CAAC;IAmD3B,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAwB1E,cAAc,CAAC,CAAC,SAAS,YAAY,EACzC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,CAAC,EACX,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC;IAqHjD,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqD/D,WAAW,CACf,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,CAAC;IAkBvB,WAAW,CACf,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,YAAY,EAAE,CAAC;IA6BpB,eAAe,CACnB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,YAAY,EAAE,CAAC;IA4BpB,eAAe,CACnB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,cAAc,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC;CAYjB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fhir-persistence",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "Embedded FHIR R4 persistence layer — CRUD, search, indexing, schema migration over SQLite and PostgreSQL",
|
|
5
5
|
"homepage": "https://github.com/medxaidev/fhir-persistence#readme",
|
|
6
6
|
"license": "MIT",
|