Socket
Socket
Sign inDemoInstall

@medplum/fhir-router

Package Overview
Dependencies
Maintainers
3
Versions
106
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@medplum/fhir-router - npm Package Compare versions

Comparing version 3.2.10 to 3.2.11

169

dist/cjs/index.d.ts
import { Bundle } from '@medplum/fhirtypes';
import { CapabilityStatementRestInteraction } from '@medplum/fhirtypes';
import { CapabilityStatementRestResourceInteraction } from '@medplum/fhirtypes';
import { Event as Event_2 } from '@medplum/core';

@@ -12,37 +14,2 @@ import { EventTarget as EventTarget_2 } from '@medplum/core';

export declare abstract class BaseRepository {
/**
* Searches for FHIR resources.
*
* See: https://www.hl7.org/fhir/http.html#search
* @param searchRequest - The FHIR search request.
* @returns The search results.
*/
abstract search<T extends Resource>(searchRequest: SearchRequest<T>): Promise<Bundle<T>>;
/**
* Searches for a single FHIR resource.
*
* This is a convenience method for `search()` that returns the first resource rather than a `Bundle`.
*
* The return value is the resource, if available; otherwise, undefined.
*
* See FHIR search for full details: https://www.hl7.org/fhir/search.html
* @param searchRequest - The FHIR search request.
* @returns Promise to the first search result or undefined.
*/
searchOne<T extends Resource>(searchRequest: SearchRequest<T>): Promise<T | undefined>;
/**
* Sends a FHIR search request for an array of resources.
*
* This is a convenience method for `search()` that returns the resources as an array rather than a `Bundle`.
*
* The return value is an array of resources.
*
* See FHIR search for full details: https://www.hl7.org/fhir/search.html
* @param searchRequest - The FHIR search request.
* @returns Promise to the array of search results.
*/
searchResources<T extends Resource>(searchRequest: SearchRequest<T>): Promise<T[]>;
}
export declare interface BatchEvent extends Event_2 {

@@ -55,2 +22,8 @@ bundleType: Bundle['type'];

export declare function createResourceImpl<T extends Resource>(resourceType: T['resourceType'], resource: T, repo: FhirRepository, options?: CreateResourceOptions): Promise<FhirResponse>;
export declare type CreateResourceOptions = {
assignedId?: boolean;
};
export declare interface FhirOptions {

@@ -61,3 +34,3 @@ introspectionEnabled?: boolean;

/**
* The FhirRepository interface defines the methods that are required to implement a FHIR repository.
* The FhirRepository abstract class defines the methods that are required to implement a FHIR repository.
* A FHIR repository is responsible for storing and retrieving FHIR resources.

@@ -68,4 +41,6 @@ * It is used by the FHIR router to implement the FHIR REST API.

* 2. Server Repository - A repository that stores resources in a relational database.
* Additionally, several convenience method implementations are provided to offer advanced functionality on top of the
* abstract basic operations.
*/
export declare interface FhirRepository<TClient = unknown> {
export declare abstract class FhirRepository<TClient = unknown> {
/**

@@ -79,3 +54,3 @@ * Sets the repository mode.

*/
setMode(mode: RepositoryMode): void;
abstract setMode(mode: RepositoryMode): void;
/**

@@ -88,4 +63,11 @@ * Creates a FHIR resource.

*/
createResource<T extends Resource>(resource: T): Promise<T>;
abstract createResource<T extends Resource>(resource: T, options?: CreateResourceOptions): Promise<T>;
/**
* Generates a new unique ID for a resource.
*
* See: https://www.hl7.org/fhir/R4/resource.html#id
* @returns The ID string.
*/
abstract generateId(): string;
/**
* Reads a FHIR resource by ID.

@@ -98,3 +80,3 @@ *

*/
readResource<T extends Resource>(resourceType: string, id: string): Promise<T>;
abstract readResource<T extends Resource>(resourceType: string, id: string): Promise<T>;
/**

@@ -107,3 +89,3 @@ * Reads a FHIR resource by reference.

*/
readReference<T extends Resource>(reference: Reference<T>): Promise<T>;
abstract readReference<T extends Resource>(reference: Reference<T>): Promise<T>;
/**

@@ -116,3 +98,3 @@ * Reads a collection of FHIR resources by reference.

*/
readReferences(references: readonly Reference[]): Promise<(Resource | Error)[]>;
abstract readReferences(references: readonly Reference[]): Promise<(Resource | Error)[]>;
/**

@@ -128,3 +110,3 @@ * Returns resource history.

*/
readHistory<T extends Resource>(resourceType: string, id: string): Promise<Bundle<T>>;
abstract readHistory<T extends Resource>(resourceType: string, id: string): Promise<Bundle<T>>;
/**

@@ -138,3 +120,3 @@ * Reads a FHIR resource version.

*/
readVersion<T extends Resource>(resourceType: string, id: string, vid: string): Promise<T>;
abstract readVersion<T extends Resource>(resourceType: string, id: string, vid: string): Promise<T>;
/**

@@ -147,16 +129,4 @@ * Updates a FHIR resource.

*/
updateResource<T extends Resource>(resource: T, versionId?: string): Promise<T>;
abstract updateResource<T extends Resource>(resource: T, options?: UpdateResourceOptions): Promise<T>;
/**
* Creates or updates a resource based on a search criteria.
*
* See: https://www.hl7.org/fhir/http.html#cond-update
* @param resource - The FHIR resource to create or update.
* @param search - The search criteria to find an existing resource to update.
* @returns The updated resource.
*/
conditionalUpdate<T extends Resource>(resource: T, search: SearchRequest): Promise<{
resource: T;
outcome: OperationOutcome;
}>;
/**
* Deletes a FHIR resource.

@@ -168,3 +138,3 @@ *

*/
deleteResource(resourceType: string, id: string): Promise<void>;
abstract deleteResource(resourceType: string, id: string): Promise<void>;
/**

@@ -179,3 +149,3 @@ * Patches a FHIR resource.

*/
patchResource(resourceType: string, id: string, patch: Operation[]): Promise<Resource>;
abstract patchResource(resourceType: string, id: string, patch: Operation[]): Promise<Resource>;
/**

@@ -188,5 +158,13 @@ * Searches for FHIR resources.

*/
search<T extends Resource>(searchRequest: SearchRequest<T>): Promise<Bundle<T>>;
searchByReference<T extends Resource>(searchRequest: SearchRequest<T>, referenceField: string, references: string[]): Promise<Record<string, T[]>>;
abstract search<T extends Resource>(searchRequest: SearchRequest<T>): Promise<Bundle<T>>;
abstract searchByReference<T extends Resource>(searchRequest: SearchRequest<T>, referenceField: string, references: string[]): Promise<Record<string, T[]>>;
/**
* Runs a callback function within a transaction.
*
* @param callback - The callback function to be run within a transaction.
*/
abstract withTransaction<TResult>(callback: (client: TClient) => Promise<TResult>, options?: {
serializable?: boolean;
}): Promise<TResult>;
/**
* Searches for a single FHIR resource.

@@ -215,8 +193,11 @@ *

searchResources<T extends Resource>(searchRequest: SearchRequest<T>): Promise<T[]>;
/**
* Runs a callback function within a transaction.
*
* @param callback - The callback function to be run within a transaction.
*/
withTransaction<TResult>(callback: (client: TClient) => Promise<TResult>): Promise<TResult>;
conditionalCreate<T extends Resource>(resource: T, search: SearchRequest<T>, options?: CreateResourceOptions): Promise<{
resource: T;
outcome: OperationOutcome;
}>;
conditionalUpdate<T extends Resource>(resource: T, search: SearchRequest, options?: CreateResourceOptions & UpdateResourceOptions): Promise<{
resource: T;
outcome: OperationOutcome;
}>;
conditionalDelete(search: SearchRequest): Promise<void>;
}

@@ -239,2 +220,3 @@

graphqlMaxSearches?: number;
transactions?: boolean;
};

@@ -244,9 +226,18 @@

export declare type FhirRouteHandler = (req: FhirRequest, repo: FhirRepository, router: FhirRouter) => Promise<FhirResponse>;
export declare type FhirRouteHandler = (req: FhirRequest, repo: FhirRepository, router: FhirRouter, options?: FhirRouteOptions) => Promise<FhirResponse>;
export declare type FhirRouteMetadata = {
interaction: RestInteraction;
};
export declare type FhirRouteOptions = {
batch?: boolean;
};
export declare class FhirRouter extends EventTarget_2 {
readonly router: Router<FhirRouteHandler>;
readonly router: Router<FhirRouteHandler, FhirRouteMetadata>;
readonly options: FhirOptions;
constructor(options?: {});
add(method: HttpMethod, path: string, handler: FhirRouteHandler): void;
add(method: HttpMethod, path: string, handler: FhirRouteHandler, interaction?: RestInteraction): void;
find(method: HttpMethod, path: string): RouteResult<FhirRouteHandler, FhirRouteMetadata> | undefined;
handleRequest(req: FhirRequest, repo: FhirRepository): Promise<FhirResponse>;

@@ -263,3 +254,3 @@ log(level: string, message: string, data?: Record<string, any>): void;

export declare class MemoryRepository extends BaseRepository implements FhirRepository {
export declare class MemoryRepository extends FhirRepository<undefined> {
private readonly resources;

@@ -271,7 +262,4 @@ private readonly history;

createResource<T extends Resource>(resource: T): Promise<T>;
updateResource<T extends Resource>(resource: T, versionId?: string): Promise<T>;
conditionalUpdate<T extends Resource>(resource: T, search: SearchRequest): Promise<{
resource: T;
outcome: OperationOutcome;
}>;
generateId(): string;
updateResource<T extends Resource>(resource: T, options?: UpdateResourceOptions): Promise<T>;
patchResource(resourceType: string, id: string, patch: Operation[]): Promise<Resource>;

@@ -286,3 +274,3 @@ readResource<T extends Resource>(resourceType: string, id: string): Promise<T>;

deleteResource(resourceType: string, id: string): Promise<void>;
withTransaction<TResult>(callback: (client: unknown) => Promise<TResult>): Promise<TResult>;
withTransaction<TResult>(callback: (client: undefined) => Promise<TResult>): Promise<TResult>;
}

@@ -300,19 +288,30 @@

export declare type Route<T> = {
/** @see http://hl7.org/fhir/R4/codesystem-restful-interaction.html */
export declare type RestInteraction = CapabilityStatementRestInteraction['code'] | CapabilityStatementRestResourceInteraction['code'] | 'operation';
export declare type Route<Handler, Metadata> = {
method: HttpMethod;
path: PathSegment[];
handler: T;
handler: Handler;
data?: Metadata;
};
export declare class Router<T> {
readonly routes: Route<T>[];
add(method: HttpMethod, pathStr: string, handler: T): void;
find(method: HttpMethod, pathStr: string): RouteResult<T> | undefined;
export declare class Router<Handler, Metadata> {
readonly routes: Route<Handler, Metadata>[];
add(method: HttpMethod, pathStr: string, handler: Handler, data?: Metadata): void;
find(method: HttpMethod, pathStr: string): RouteResult<Handler, Metadata> | undefined;
}
export declare type RouteResult<T> = {
handler: T;
export declare type RouteResult<Handler, Metadata> = {
handler: Handler;
params: Record<string, string>;
data?: Metadata;
};
export declare function updateResourceImpl<T extends Resource>(resourceType: T['resourceType'], id: string, resource: T, repo: FhirRepository, options?: UpdateResourceOptions): Promise<FhirResponse>;
export declare type UpdateResourceOptions = {
ifMatch?: string;
};
export { }
import { Bundle } from '@medplum/fhirtypes';
import { CapabilityStatementRestInteraction } from '@medplum/fhirtypes';
import { CapabilityStatementRestResourceInteraction } from '@medplum/fhirtypes';
import { Event as Event_2 } from '@medplum/core';

@@ -12,37 +14,2 @@ import { EventTarget as EventTarget_2 } from '@medplum/core';

export declare abstract class BaseRepository {
/**
* Searches for FHIR resources.
*
* See: https://www.hl7.org/fhir/http.html#search
* @param searchRequest - The FHIR search request.
* @returns The search results.
*/
abstract search<T extends Resource>(searchRequest: SearchRequest<T>): Promise<Bundle<T>>;
/**
* Searches for a single FHIR resource.
*
* This is a convenience method for `search()` that returns the first resource rather than a `Bundle`.
*
* The return value is the resource, if available; otherwise, undefined.
*
* See FHIR search for full details: https://www.hl7.org/fhir/search.html
* @param searchRequest - The FHIR search request.
* @returns Promise to the first search result or undefined.
*/
searchOne<T extends Resource>(searchRequest: SearchRequest<T>): Promise<T | undefined>;
/**
* Sends a FHIR search request for an array of resources.
*
* This is a convenience method for `search()` that returns the resources as an array rather than a `Bundle`.
*
* The return value is an array of resources.
*
* See FHIR search for full details: https://www.hl7.org/fhir/search.html
* @param searchRequest - The FHIR search request.
* @returns Promise to the array of search results.
*/
searchResources<T extends Resource>(searchRequest: SearchRequest<T>): Promise<T[]>;
}
export declare interface BatchEvent extends Event_2 {

@@ -55,2 +22,8 @@ bundleType: Bundle['type'];

export declare function createResourceImpl<T extends Resource>(resourceType: T['resourceType'], resource: T, repo: FhirRepository, options?: CreateResourceOptions): Promise<FhirResponse>;
export declare type CreateResourceOptions = {
assignedId?: boolean;
};
export declare interface FhirOptions {

@@ -61,3 +34,3 @@ introspectionEnabled?: boolean;

/**
* The FhirRepository interface defines the methods that are required to implement a FHIR repository.
* The FhirRepository abstract class defines the methods that are required to implement a FHIR repository.
* A FHIR repository is responsible for storing and retrieving FHIR resources.

@@ -68,4 +41,6 @@ * It is used by the FHIR router to implement the FHIR REST API.

* 2. Server Repository - A repository that stores resources in a relational database.
* Additionally, several convenience method implementations are provided to offer advanced functionality on top of the
* abstract basic operations.
*/
export declare interface FhirRepository<TClient = unknown> {
export declare abstract class FhirRepository<TClient = unknown> {
/**

@@ -79,3 +54,3 @@ * Sets the repository mode.

*/
setMode(mode: RepositoryMode): void;
abstract setMode(mode: RepositoryMode): void;
/**

@@ -88,4 +63,11 @@ * Creates a FHIR resource.

*/
createResource<T extends Resource>(resource: T): Promise<T>;
abstract createResource<T extends Resource>(resource: T, options?: CreateResourceOptions): Promise<T>;
/**
* Generates a new unique ID for a resource.
*
* See: https://www.hl7.org/fhir/R4/resource.html#id
* @returns The ID string.
*/
abstract generateId(): string;
/**
* Reads a FHIR resource by ID.

@@ -98,3 +80,3 @@ *

*/
readResource<T extends Resource>(resourceType: string, id: string): Promise<T>;
abstract readResource<T extends Resource>(resourceType: string, id: string): Promise<T>;
/**

@@ -107,3 +89,3 @@ * Reads a FHIR resource by reference.

*/
readReference<T extends Resource>(reference: Reference<T>): Promise<T>;
abstract readReference<T extends Resource>(reference: Reference<T>): Promise<T>;
/**

@@ -116,3 +98,3 @@ * Reads a collection of FHIR resources by reference.

*/
readReferences(references: readonly Reference[]): Promise<(Resource | Error)[]>;
abstract readReferences(references: readonly Reference[]): Promise<(Resource | Error)[]>;
/**

@@ -128,3 +110,3 @@ * Returns resource history.

*/
readHistory<T extends Resource>(resourceType: string, id: string): Promise<Bundle<T>>;
abstract readHistory<T extends Resource>(resourceType: string, id: string): Promise<Bundle<T>>;
/**

@@ -138,3 +120,3 @@ * Reads a FHIR resource version.

*/
readVersion<T extends Resource>(resourceType: string, id: string, vid: string): Promise<T>;
abstract readVersion<T extends Resource>(resourceType: string, id: string, vid: string): Promise<T>;
/**

@@ -147,16 +129,4 @@ * Updates a FHIR resource.

*/
updateResource<T extends Resource>(resource: T, versionId?: string): Promise<T>;
abstract updateResource<T extends Resource>(resource: T, options?: UpdateResourceOptions): Promise<T>;
/**
* Creates or updates a resource based on a search criteria.
*
* See: https://www.hl7.org/fhir/http.html#cond-update
* @param resource - The FHIR resource to create or update.
* @param search - The search criteria to find an existing resource to update.
* @returns The updated resource.
*/
conditionalUpdate<T extends Resource>(resource: T, search: SearchRequest): Promise<{
resource: T;
outcome: OperationOutcome;
}>;
/**
* Deletes a FHIR resource.

@@ -168,3 +138,3 @@ *

*/
deleteResource(resourceType: string, id: string): Promise<void>;
abstract deleteResource(resourceType: string, id: string): Promise<void>;
/**

@@ -179,3 +149,3 @@ * Patches a FHIR resource.

*/
patchResource(resourceType: string, id: string, patch: Operation[]): Promise<Resource>;
abstract patchResource(resourceType: string, id: string, patch: Operation[]): Promise<Resource>;
/**

@@ -188,5 +158,13 @@ * Searches for FHIR resources.

*/
search<T extends Resource>(searchRequest: SearchRequest<T>): Promise<Bundle<T>>;
searchByReference<T extends Resource>(searchRequest: SearchRequest<T>, referenceField: string, references: string[]): Promise<Record<string, T[]>>;
abstract search<T extends Resource>(searchRequest: SearchRequest<T>): Promise<Bundle<T>>;
abstract searchByReference<T extends Resource>(searchRequest: SearchRequest<T>, referenceField: string, references: string[]): Promise<Record<string, T[]>>;
/**
* Runs a callback function within a transaction.
*
* @param callback - The callback function to be run within a transaction.
*/
abstract withTransaction<TResult>(callback: (client: TClient) => Promise<TResult>, options?: {
serializable?: boolean;
}): Promise<TResult>;
/**
* Searches for a single FHIR resource.

@@ -215,8 +193,11 @@ *

searchResources<T extends Resource>(searchRequest: SearchRequest<T>): Promise<T[]>;
/**
* Runs a callback function within a transaction.
*
* @param callback - The callback function to be run within a transaction.
*/
withTransaction<TResult>(callback: (client: TClient) => Promise<TResult>): Promise<TResult>;
conditionalCreate<T extends Resource>(resource: T, search: SearchRequest<T>, options?: CreateResourceOptions): Promise<{
resource: T;
outcome: OperationOutcome;
}>;
conditionalUpdate<T extends Resource>(resource: T, search: SearchRequest, options?: CreateResourceOptions & UpdateResourceOptions): Promise<{
resource: T;
outcome: OperationOutcome;
}>;
conditionalDelete(search: SearchRequest): Promise<void>;
}

@@ -239,2 +220,3 @@

graphqlMaxSearches?: number;
transactions?: boolean;
};

@@ -244,9 +226,18 @@

export declare type FhirRouteHandler = (req: FhirRequest, repo: FhirRepository, router: FhirRouter) => Promise<FhirResponse>;
export declare type FhirRouteHandler = (req: FhirRequest, repo: FhirRepository, router: FhirRouter, options?: FhirRouteOptions) => Promise<FhirResponse>;
export declare type FhirRouteMetadata = {
interaction: RestInteraction;
};
export declare type FhirRouteOptions = {
batch?: boolean;
};
export declare class FhirRouter extends EventTarget_2 {
readonly router: Router<FhirRouteHandler>;
readonly router: Router<FhirRouteHandler, FhirRouteMetadata>;
readonly options: FhirOptions;
constructor(options?: {});
add(method: HttpMethod, path: string, handler: FhirRouteHandler): void;
add(method: HttpMethod, path: string, handler: FhirRouteHandler, interaction?: RestInteraction): void;
find(method: HttpMethod, path: string): RouteResult<FhirRouteHandler, FhirRouteMetadata> | undefined;
handleRequest(req: FhirRequest, repo: FhirRepository): Promise<FhirResponse>;

@@ -263,3 +254,3 @@ log(level: string, message: string, data?: Record<string, any>): void;

export declare class MemoryRepository extends BaseRepository implements FhirRepository {
export declare class MemoryRepository extends FhirRepository<undefined> {
private readonly resources;

@@ -271,7 +262,4 @@ private readonly history;

createResource<T extends Resource>(resource: T): Promise<T>;
updateResource<T extends Resource>(resource: T, versionId?: string): Promise<T>;
conditionalUpdate<T extends Resource>(resource: T, search: SearchRequest): Promise<{
resource: T;
outcome: OperationOutcome;
}>;
generateId(): string;
updateResource<T extends Resource>(resource: T, options?: UpdateResourceOptions): Promise<T>;
patchResource(resourceType: string, id: string, patch: Operation[]): Promise<Resource>;

@@ -286,3 +274,3 @@ readResource<T extends Resource>(resourceType: string, id: string): Promise<T>;

deleteResource(resourceType: string, id: string): Promise<void>;
withTransaction<TResult>(callback: (client: unknown) => Promise<TResult>): Promise<TResult>;
withTransaction<TResult>(callback: (client: undefined) => Promise<TResult>): Promise<TResult>;
}

@@ -300,19 +288,30 @@

export declare type Route<T> = {
/** @see http://hl7.org/fhir/R4/codesystem-restful-interaction.html */
export declare type RestInteraction = CapabilityStatementRestInteraction['code'] | CapabilityStatementRestResourceInteraction['code'] | 'operation';
export declare type Route<Handler, Metadata> = {
method: HttpMethod;
path: PathSegment[];
handler: T;
handler: Handler;
data?: Metadata;
};
export declare class Router<T> {
readonly routes: Route<T>[];
add(method: HttpMethod, pathStr: string, handler: T): void;
find(method: HttpMethod, pathStr: string): RouteResult<T> | undefined;
export declare class Router<Handler, Metadata> {
readonly routes: Route<Handler, Metadata>[];
add(method: HttpMethod, pathStr: string, handler: Handler, data?: Metadata): void;
find(method: HttpMethod, pathStr: string): RouteResult<Handler, Metadata> | undefined;
}
export declare type RouteResult<T> = {
handler: T;
export declare type RouteResult<Handler, Metadata> = {
handler: Handler;
params: Record<string, string>;
data?: Metadata;
};
export declare function updateResourceImpl<T extends Resource>(resourceType: T['resourceType'], id: string, resource: T, repo: FhirRepository, options?: UpdateResourceOptions): Promise<FhirResponse>;
export declare type UpdateResourceOptions = {
ifMatch?: string;
};
export { }
{
"name": "@medplum/fhir-router",
"version": "3.2.10",
"version": "3.2.11",
"description": "Medplum FHIR Router",

@@ -57,5 +57,5 @@ "keywords": [

"dependencies": {
"@medplum/core": "3.2.10",
"@medplum/definitions": "3.2.10",
"@medplum/fhirtypes": "3.2.10",
"@medplum/core": "3.2.11",
"@medplum/definitions": "3.2.11",
"@medplum/fhirtypes": "3.2.11",
"dataloader": "2.2.2",

@@ -62,0 +62,0 @@ "graphql": "16.9.0",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc