diff --git a/types/fhir-kit-client/fhir-kit-client-tests.ts b/types/fhir-kit-client/fhir-kit-client-tests.ts new file mode 100644 index 0000000000..0ec7e316b3 --- /dev/null +++ b/types/fhir-kit-client/fhir-kit-client-tests.ts @@ -0,0 +1,250 @@ +import Client from "fhir-kit-client"; +import { Headers } from "request"; +import { OpPatch } from "json-patch"; + +const client: Client = new Client({ + baseUrl: "http://foo", + customHeaders: { + FOO: "bar" + } +}); + +client.baseUrl = "foo"; +client.bearerToken = "foo"; +client.customHeaders = { + BASH: { + BANG: "Bing" + } +}; + +export class OperationOutcomeError extends Error { + readonly outcome: fhir.OperationOutcome; + + constructor(outcome: fhir.OperationOutcome) { + super(outcome.issue && outcome.issue.length > 1 && outcome.issue[0].diagnostics || "Unknown Operation result error"); + this.outcome = outcome; + } +} + +function rejectOnOperationOutcome(promise: fhir.OperationOutcome | ResultType | Promise): Promise { + if (promise instanceof Promise) { + return promise.then(result => { + if ('issue' in result) { + throw new OperationOutcomeError(result); + } else { + return result; + } + }); + } else if ('issue' in promise) { + throw new OperationOutcomeError(promise); + } else { + return Promise.resolve(promise); + } +} + +const url: string = client.baseUrl; +url.endsWith("foo"); +const headers: Headers = client.customHeaders; +headers["foo"] = "bar"; + +client.create({ + resourceType: "Patient", + body: { + name: [{ + text: "Jim Bean" + }] + } +}).then(rejectOnOperationOutcome).then((p: fhir.Patient) => { + if (p.name && p.name.length !== 0 && p.name[0].text) { + console.log(p.name[0].text); + } +}); + +client.update({ + resourceType: "Basic", + id: "abc122312341", + body: { + code: { + text: "Offer" + }, + identifier: [ + { + system: "https://foo", + value: "1235" + } + ] + } +}).then(rejectOnOperationOutcome).then((basic: fhir.Basic) => { +}); + +client.update({ + resourceType: "QuestionnaireResponse", + id: "1235", + body: { + status: "completed" + } +}).then(rejectOnOperationOutcome) +.then((r: fhir.QuestionnaireResponse) => { +}); + +client.delete({ + resourceType: "Basic", + id: "1235" +}).then((o: fhir.OperationOutcome) => { + console.log(o.issue); +}); + +client.batch({ + body: { + type: "batch", + total: 1234 + } +}).then(rejectOnOperationOutcome).then(r => { + if (r.type === "batch-response") { + console.log("unhuh!"); + } else { + // should never happen + } +}); + +client.transaction({ + body: { + type: "transaction" + } +}).then(rejectOnOperationOutcome).then(r => { + if (r.type === "transaction-response") { + console.log("yup!"); + } +}); + +client.resolve({ + reference: "#1234", + context: { + contained: [ { + resourceType: "Patient", + id: "1235" + } + ] + } +}).then((entity) => { + switch (entity.resourceType) { + case "Patient": + const patient: fhir.Patient = entity as fhir.Patient; + if (patient.name) { + console.log(patient.name[0].text); + } + break; + } + if (entity.id !== undefined) { + const id: string = entity.id; + id.substring(1); + } +}); + +client.capabilityStatement() + .then(rejectOnOperationOutcome) + .then((cs: fhir.CapabilityStatement) => { + if (cs.software) { + const software: fhir.CapabilityStatementSoftware = cs.software; + const name: string = software.name; + name.concat(''); + } + }); + +client.smartAuthMetadata() + .then((s => { + if (s && s.authorizeUrl) { + s.authorizeUrl.substring(1); + } + })); + +const JSONPatch: OpPatch[] = [ + { + op: "add", + path: "name", + value: "12356" + } +]; +client.patch({ + resourceType: "Patient", + id: "12354", + JSONPatch +}).then(results => { + if (results && results.id) { + return results.id.substring(1); + } +}); + +client.search({ + resourceType: "Doctor", +}).then(doctor => { + const value: string = doctor.id || ""; + value.substring(1); +}); + +client.compartmentSearch({ + resourceType: "Doctor", + compartment: { + resourceType: "Patient", + id: "12345" + } +}).then(() => { +}); + +client.resourceSearch({ + resourceType: "Doctor", + searchParams: { + foo: "bar" + } +}).then(rejectOnOperationOutcome); + +client.systemSearch({ + searchParams: { + identifier: "12356" + } +}).then(rejectOnOperationOutcome); + +client.systemHistory() + .then(rejectOnOperationOutcome) + .then(history => { + if (history) { + const type: string = history.type; + type.split('['); + } + }); + +client.history() + .then(history => { + if (history.resourceType) { + history.resourceType.substring(1); + } + }); + +client.typeHistory({ + resourceType: "Hospital" +}).then(rejectOnOperationOutcome).then(history => { + if (history.total !== undefined) { + const total: number = history.total + 1; + console.log(`${total}`); + } +}); + +client.resourceHistory({ + resourceType: "Medication", + id: "123" +}).then(() => { +}); + +client.prevPage({ + bundle: { + type: "searchset" + } +}).then(() => { +}); + +client.nextPage({ + bundle: { + type: "searchset" + } +}).then(() => { +}); diff --git a/types/fhir-kit-client/index.d.ts b/types/fhir-kit-client/index.d.ts new file mode 100644 index 0000000000..bb4e5e2ec1 --- /dev/null +++ b/types/fhir-kit-client/index.d.ts @@ -0,0 +1,1356 @@ +// Type definitions for fhir-kit-client 1.1 +// Project: https://github.com/Vermonster/fhir-kit-client +// Definitions by: Matthew Morrissette +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.8 + +/// +import { Options, Headers } from "request"; +import { OpPatch } from "json-patch"; + +type KnownResourceType = 'Account' | + 'ActivityDefinition' | + 'AdverseEvent' | + 'AllergyIntolerance' | + 'Appointment' | + 'AppointmentResponse' | + 'AuditEvent' | + 'Basic' | + 'Binary' | + 'BodySite' | + 'Bundle' | + 'CapabilityStatement' | + 'CarePlan' | + 'CareTeam' | + 'ChargeItem' | + 'Claim' | + 'ClaimResponse' | + 'ClinicalImpression' | + 'CodeSystem' | + 'Communication' | + 'CommunicationRequest' | + 'CompartmentDefinition' | + 'Composition' | + 'ConceptMap' | + 'Condition' | + 'Consent' | + 'Contract' | + 'Coverage' | + 'DataElement' | + 'DetectedIssue' | + 'Device' | + 'DeviceComponent' | + 'DeviceMetric' | + 'DeviceRequest' | + 'DeviceUseStatement' | + 'DiagnosticReport' | + 'DocumentManifest' | + 'DocumentReference' | + 'EligibilityRequest' | + 'EligibilityResponse' | + 'Encounter' | + 'Endpoint' | + 'EnrollmentRequest' | + 'EnrollmentResponse' | + 'EpisodeOfCare' | + 'ExpansionProfile' | + 'ExplanationOfBenefit' | + 'FamilyMemberHistory' | + 'Flag' | + 'Goal' | + 'GraphDefinition' | + 'Group' | + 'GuidanceResponse' | + 'HealthcareService' | + 'ImagingManifest' | + 'ImagingStudy' | + 'Immunization' | + 'ImmunizationRecommendation' | + 'ImplementationGuide' | + 'Library' | + 'Linkage' | + 'List' | + 'Location' | + 'Measure' | + 'MeasureReport' | + 'Media' | + 'Medication' | + 'MedicationAdministration' | + 'MedicationDispense' | + 'MedicationRequest' | + 'MedicationStatement' | + 'MessageDefinition' | + 'MessageHeader' | + 'NamingSystem' | + 'NutritionOrder' | + 'Observation' | + 'OperationDefinition' | + 'OperationOutcome' | + 'Organization' | + 'Parameters' | + 'Patient' | + 'PaymentNotice' | + 'PaymentReconciliation' | + 'Person' | + 'PlanDefinition' | + 'Practitioner' | + 'PractitionerRole' | + 'Procedure' | + 'ProcedureRequest' | + 'ProcessRequest' | + 'ProcessResponse' | + 'Provenance' | + 'Questionnaire' | + 'QuestionnaireResponse' | + 'ReferralRequest' | + 'RelatedPerson' | + 'RequestGroup' | + 'ResearchStudy' | + 'ResearchSubject' | + 'RiskAssessment' | + 'Schedule' | + 'SearchParameter' | + 'Sequence' | + 'ServiceDefinition' | + 'Slot' | + 'Specimen' | + 'StructureDefinition' | + 'StructureMap' | + 'Subscription' | + 'Substance' | + 'SupplyDelivery' | + 'SupplyRequest' | + 'Task' | + 'TestReport' | + 'TestScript' | + 'ValueSet' | + 'VisionPrescription'; + +type ResourceType = string; + +type CustomResourceType = Exclude; + +interface SmartAuthMetadata { + authorizeUrl?: string; + tokenUrl?: string; + registerUrl?: string; + manageUrl?: string; +} + +interface CustomResource extends fhir.ResourceBase { + [key: string]: any; +} + +type FhirResource = CustomResource | fhir.Resource; + +interface SearchParams { + [key: string]: string|number|boolean; +} + +interface Compartment { + id: string; + resourceType: string; +} + +declare class Client { + baseUrl: string; + customHeaders: Headers; + bearerToken: string | undefined; + + /** + * Create a FHIR client. + * + * @param {Object} config Client configuration + * @param {String} config.baseUrl ISS for FHIR server + * @param {Object} [config.customHeaders] Optional custom headers to send with + * each request + * @throws An error will be thrown unless baseUrl is a non-empty string. + */ + constructor(config: { + baseUrl: string + customHeaders?: Headers + }); + + /** + * Resolve a reference and return FHIR resource + * + * From: http://hl7.org/fhir/STU3/references.html, a reference can be: 1) + * absolute URL, 2) relative URL or 3) an internal fragement. In the case of + * (2), there are rules on resolving references that are in a FHIR bundle. + * + * @async + * + * @example + * + * // Always does a new http request + * client.resolve({ reference: 'http://test.com/fhir/Patient/1' }).then((patient) => { + * console.log(patient); + * }); + * + * // Always does a new http request, using the client.baseUrl + * client.resolve({ reference: 'Patient/1' }).then((patient) => { + * console.log(patient); + * }); + * + * // Try to resolve a patient in the bundle, otherwise build request + * // at client.baseUrl + * client.resolve({ reference: 'Patient/1', context: bundle }).then((patient) => { + * console.log(patient); + * }); + * + * // Resolve a patient contained in someResource (see: + * // http://hl7.org/fhir/STU3/references.html#contained) + * client.resolve({ reference: '#patient-1', context: someResource }).then((patient) => { + * console.log(patient); + * }); + * + * @param {Object} params - The request parameters. + * @param {String} params.reference - FHIR reference + * @param {Object} [params.context] - Optional bundle with 'entry' array or FHIR resource with 'contained' array (if 'params.reference' starts with '#') + * @param {Object} [params.headers] - DEPRECATED Optional custom headers to + * add to the request + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * + * @return {Promise} FHIR resource + */ + resolve(params: { + reference: string + context?: fhir.Bundle | fhir.DomainResource + options?: Options + }): Promise; + + /** + * Obtain the SMART OAuth URLs from the Capability Statement + * http://docs.smarthealthit.org/authorization/conformance-statement/ + * + * @async + * + * @example + * + * // Using promises + * fhirClient.smartAuthMetadata().then((data) => { console.log(data); }); + * + * // Using async + * let response = await fhirClient.smartAuthMetadata(); + * console.log(response); + * + * @param {Object} [params] - The request parameters. + * @param {Object} [params.headers] - DEPRECATED Optional custom headers to + * add to the request + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * + * @return {Promise} contains the following SMART URIs: authorizeUrl, + * tokenUrl, registerUrl, manageUrl + */ + smartAuthMetadata(params?: { headers?: Headers, options?: Options }): Promise; + + /** + * Get the default capability statement. + * + * @async + * + * @example + * + * // Using promises + * fhirClient.capabilityStatement().then((data) => { console.log(data); }); + * + * // Using async + * let response = await fhirClient.capabilityStatement(); + * console.log(response); + * + * @param {Object} [params] - The request parameters. + * @param {Object} [params.headers] - DEPRECATED Optional custom headers to + * add to the request + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * + * @return {Promise} capability statement FHIR resource. + */ + capabilityStatement(params?: { headers?: Headers, options?: Options }): Promise; + + /** + * Get a resource by id and version. + * + * @example + * + * // Using promises + * fhirClient.vread({ + * resourceType: 'Patient', + * id: '12345', + * version: '1', + * }).then(data => console.log(data)); + * + * // Using async + * let response = await fhirClient.vread({ + * resourceType: 'Patient', + * id: '12345', + * version: '1', + * }); + * console.log(response); + * + * @param {Object} params - The request parameters. + * @param {String} params.resourceType - The resource type (e.g. "Patient", + * "Observation"). + * @param {String} params.id - The FHIR id for the resource. + * @param {String} params.version - The version id for the resource. + * @param {Object} [params.headers] - DEPRECATED Optional custom headers to + * add to the request + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * + * @return {Promise} FHIR resource + */ + vread(params: { resourceType: "Account", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "ActivityDefinition", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "AdverseEvent", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "AllergyIntolerance", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Appointment", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "AppointmentResponse", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "AuditEvent", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Basic", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Binary", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "BodySite", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Bundle", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "CapabilityStatement", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "CarePlan", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "CareTeam", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "ChargeItem", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Claim", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "ClaimResponse", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "ClinicalImpression", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "CodeSystem", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Communication", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "CommunicationRequest", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "CompartmentDefinition", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Composition", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "ConceptMap", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Condition", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Consent", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Contract", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Coverage", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "DataElement", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "DetectedIssue", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Device", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "DeviceComponent", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "DeviceMetric", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "DeviceRequest", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "DeviceUseStatement", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "DiagnosticReport", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "DocumentManifest", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "DocumentReference", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "DomainResource", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "EligibilityRequest", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "EligibilityResponse", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Encounter", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Endpoint", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "EnrollmentRequest", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "EnrollmentResponse", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "EpisodeOfCare", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "ExpansionProfile", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "ExplanationOfBenefit", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "FamilyMemberHistory", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Flag", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Goal", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "GraphDefinition", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Group", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "GuidanceResponse", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "HealthcareService", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "ImagingManifest", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "ImagingStudy", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Immunization", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "ImmunizationRecommendation", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "ImplementationGuide", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Library", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Linkage", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "List", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Location", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Measure", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "MeasureReport", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Media", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Medication", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "MedicationAdministration", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "MedicationDispense", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "MedicationRequest", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "MedicationStatement", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "MessageDefinition", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "MessageHeader", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "NamingSystem", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "NutritionOrder", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Observation", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "OperationDefinition", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "OperationOutcome", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Organization", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Parameters", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Patient", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "PaymentNotice", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "PaymentReconciliation", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Person", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "PlanDefinition", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Practitioner", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "PractitionerRole", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Procedure", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "ProcedureRequest", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "ProcessRequest", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "ProcessResponse", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Provenance", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Questionnaire", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "QuestionnaireResponse", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "ReferralRequest", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "RelatedPerson", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "RequestGroup", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "ResearchStudy", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "ResearchSubject", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "RiskAssessment", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Schedule", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "SearchParameter", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Sequence", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "ServiceDefinition", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Slot", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Specimen", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "StructureDefinition", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "StructureMap", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Subscription", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Substance", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "SupplyDelivery", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "SupplyRequest", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "Task", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "TestReport", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "TestScript", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "ValueSet", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: "VisionPrescription", id: string, version: string, headers?: Headers, options?: Options }): Promise; + vread(params: { resourceType: CustomResourceType, id: string, version: string, headers?: Headers, options?: Options }): Promise; + + /** + * Create a resource. + * + * @example + * const newPatient = { + * resourceType: 'Patient', + * active: true, + * name: [{ use: 'official', family: ['Coleman'], given: ['Lisa', 'P.'] }], + * gender: 'female', + * birthDate: '1948-04-14', + * } + * + * // Using promises + * fhirClient.create({ + * resourceType: 'Patient', + * body: newPatient, + * }).then((data) => { console.log(data); }); + * + * // Using async + * let response = await fhirClient.create({ + * resourceType: 'Patient', + * body: newPatient, + * }) + * console.log(response); + * + * @param {Object} params - The request parameters. + * @param {String} params.resourceType - The FHIR resource type. + * @param {Response} params.body - The new resource data to create. + * @param {Object} [params.headers] - DEPRECATED Optional custom headers to + * add to the request + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * + * @return {Promise} FHIR resource + */ + create(params: { resourceType: "Account", body: fhir.Account, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "ActivityDefinition", body: fhir.ActivityDefinition, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "AdverseEvent", body: fhir.AdverseEvent, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "AllergyIntolerance", body: fhir.AllergyIntolerance, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Appointment", body: fhir.Appointment, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "AppointmentResponse", body: fhir.AppointmentResponse, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "AuditEvent", body: fhir.AuditEvent, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Basic", body: fhir.Basic, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Binary", body: fhir.Binary, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "BodySite", body: fhir.BodySite, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Bundle", body: fhir.Bundle, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "CapabilityStatement", body: fhir.CapabilityStatement, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "CarePlan", body: fhir.CarePlan, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "CareTeam", body: fhir.CareTeam, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "ChargeItem", body: fhir.ChargeItem, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Claim", body: fhir.Claim, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "ClaimResponse", body: fhir.ClaimResponse, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "ClinicalImpression", body: fhir.ClinicalImpression, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "CodeSystem", body: fhir.CodeSystem, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Communication", body: fhir.Communication, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "CommunicationRequest", body: fhir.CommunicationRequest, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "CompartmentDefinition", body: fhir.CompartmentDefinition, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Composition", body: fhir.Composition, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "ConceptMap", body: fhir.ConceptMap, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Condition", body: fhir.Condition, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Consent", body: fhir.Consent, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Contract", body: fhir.Contract, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Coverage", body: fhir.Coverage, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "DataElement", body: fhir.DataElement, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "DetectedIssue", body: fhir.DetectedIssue, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Device", body: fhir.Device, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "DeviceComponent", body: fhir.DeviceComponent, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "DeviceMetric", body: fhir.DeviceMetric, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "DeviceRequest", body: fhir.DeviceRequest, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "DeviceUseStatement", body: fhir.DeviceUseStatement, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "DiagnosticReport", body: fhir.DiagnosticReport, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "DocumentManifest", body: fhir.DocumentManifest, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "DocumentReference", body: fhir.DocumentReference, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "DomainResource", body: fhir.DomainResource, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "EligibilityRequest", body: fhir.EligibilityRequest, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "EligibilityResponse", body: fhir.EligibilityResponse, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Encounter", body: fhir.Encounter, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Endpoint", body: fhir.Endpoint, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "EnrollmentRequest", body: fhir.EnrollmentRequest, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "EnrollmentResponse", body: fhir.EnrollmentResponse, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "EpisodeOfCare", body: fhir.EpisodeOfCare, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "ExpansionProfile", body: fhir.ExpansionProfile, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "ExplanationOfBenefit", body: fhir.ExplanationOfBenefit, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "FamilyMemberHistory", body: fhir.FamilyMemberHistory, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Flag", body: fhir.Flag, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Goal", body: fhir.Goal, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "GraphDefinition", body: fhir.GraphDefinition, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Group", body: fhir.Group, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "GuidanceResponse", body: fhir.GuidanceResponse, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "HealthcareService", body: fhir.HealthcareService, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "ImagingManifest", body: fhir.ImagingManifest, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "ImagingStudy", body: fhir.ImagingStudy, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Immunization", body: fhir.Immunization, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "ImmunizationRecommendation", body: fhir.ImmunizationRecommendation, headers?: Headers, options?: Options }): + Promise; + create(params: { resourceType: "ImplementationGuide", body: fhir.ImplementationGuide, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Library", body: fhir.Library, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Linkage", body: fhir.Linkage, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "List", body: fhir.List, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Location", body: fhir.Location, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Measure", body: fhir.Measure, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "MeasureReport", body: fhir.MeasureReport, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Media", body: fhir.Media, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Medication", body: fhir.Medication, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "MedicationAdministration", body: fhir.MedicationAdministration, headers?: Headers, options?: Options }): + Promise; + create(params: { resourceType: "MedicationDispense", body: fhir.MedicationDispense, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "MedicationRequest", body: fhir.MedicationRequest, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "MedicationStatement", body: fhir.MedicationStatement, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "MessageDefinition", body: fhir.MessageDefinition, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "MessageHeader", body: fhir.MessageHeader, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "NamingSystem", body: fhir.NamingSystem, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "NutritionOrder", body: fhir.NutritionOrder, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Observation", body: fhir.Observation, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "OperationDefinition", body: fhir.OperationDefinition, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "OperationOutcome", body: fhir.OperationOutcome, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Organization", body: fhir.Organization, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Parameters", body: fhir.Parameters, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Patient", body: fhir.Patient, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "PaymentNotice", body: fhir.PaymentNotice, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "PaymentReconciliation", body: fhir.PaymentReconciliation, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Person", body: fhir.Person, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "PlanDefinition", body: fhir.PlanDefinition, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Practitioner", body: fhir.Practitioner, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "PractitionerRole", body: fhir.PractitionerRole, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Procedure", body: fhir.Procedure, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "ProcedureRequest", body: fhir.ProcedureRequest, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "ProcessRequest", body: fhir.ProcessRequest, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "ProcessResponse", body: fhir.ProcessResponse, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Provenance", body: fhir.Provenance, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Questionnaire", body: fhir.Questionnaire, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "QuestionnaireResponse", body: fhir.QuestionnaireResponse, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "ReferralRequest", body: fhir.ReferralRequest, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "RelatedPerson", body: fhir.RelatedPerson, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "RequestGroup", body: fhir.RequestGroup, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "ResearchStudy", body: fhir.ResearchStudy, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "ResearchSubject", body: fhir.ResearchSubject, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "RiskAssessment", body: fhir.RiskAssessment, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Schedule", body: fhir.Schedule, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "SearchParameter", body: fhir.SearchParameter, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Sequence", body: fhir.Sequence, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "ServiceDefinition", body: fhir.ServiceDefinition, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Slot", body: fhir.Slot, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Specimen", body: fhir.Specimen, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "StructureDefinition", body: fhir.StructureDefinition, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "StructureMap", body: fhir.StructureMap, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Subscription", body: fhir.Subscription, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Substance", body: fhir.Substance, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "SupplyDelivery", body: fhir.SupplyDelivery, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "SupplyRequest", body: fhir.SupplyRequest, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "Task", body: fhir.Task, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "TestReport", body: fhir.TestReport, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "TestScript", body: fhir.TestScript, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "ValueSet", body: fhir.ValueSet, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: "VisionPrescription", body: fhir.VisionPrescription, headers?: Headers, options?: Options }): Promise; + create(params: { resourceType: CustomResourceType, body: T, headers?: Headers, options?: Options }): Promise; + + /** + * Delete a resource by FHIR id. + * + * @example + * + * // Using promises + * fhirClient.delete({ + * resourceType: 'Patient', + * id: 12345, + * }).then((data) => { console.log(data); }); + * + * // Using async + * let response = await fhirClient.delete({ resourceType: 'Patient', id: 12345 }); + * console.log(response); + * + * @param {Object} params - The request parameters. + * @param {String} params.resourceType - The resource type (e.g. "Patient", "Observation"). + * @param {String} params.id - The FHIR id for the resource. + * @param {Object} [params.headers] - DEPRECATED Optional custom headers to + * add to the request + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * + * @return {Promise} Operation Outcome FHIR resource + */ + delete(params: { resourceType: ResourceType, id: string, headers?: Headers, options?: Options }): Promise; + + /** + * Update a resource by FHIR id. + * + * @example + * + * const updatedPatient = { + * resourceType: 'Patient', + * birthDate: '1948-04-14', + * } + * + * // Using promises + * fhirClient.update({ + * resourceType: 'Patient', + * id: 12345, + * body: updatedPatient, + * }).then((data) => { console.log(data); }); + * + * // Using async + * let response = await fhirClient.update({ + * resourceType: 'Patient', + * id: 12345, + * body: updatedPatient, + * }); + * console.log(response); + * + * @param {Object} params - The request parameters. + * @param {String} params.resourceType - The resource type (e.g. "Patient", + * "Observation"). + * @param {String} params.id - The FHIR id for the resource. + * @param {String} params.body - The resource to be updated. + * @param {Object} [params.headers] - DEPRECATED Optional custom headers to + * add to the request + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * + * @return {Promise} FHIR resource + */ + update(params: { resourceType: "Account", id: string, body: fhir.Account, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "ActivityDefinition", id: string, body: fhir.ActivityDefinition, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "AdverseEvent", id: string, body: fhir.AdverseEvent, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "AllergyIntolerance", id: string, body: fhir.AllergyIntolerance, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Appointment", id: string, body: fhir.Appointment, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "AppointmentResponse", id: string, body: fhir.AppointmentResponse, headers?: Headers, options?: Options }): + Promise; + update(params: { resourceType: "AuditEvent", id: string, body: fhir.AuditEvent, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Basic", id: string, body: fhir.Basic, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Binary", id: string, body: fhir.Binary, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "BodySite", id: string, body: fhir.BodySite, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Bundle", id: string, body: fhir.Bundle, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "CapabilityStatement", id: string, body: fhir.CapabilityStatement, headers?: Headers, options?: Options }): + Promise; + update(params: { resourceType: "CarePlan", id: string, body: fhir.CarePlan, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "CareTeam", id: string, body: fhir.CareTeam, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "ChargeItem", id: string, body: fhir.ChargeItem, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Claim", id: string, body: fhir.Claim, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "ClaimResponse", id: string, body: fhir.ClaimResponse, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "ClinicalImpression", id: string, body: fhir.ClinicalImpression, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "CodeSystem", id: string, body: fhir.CodeSystem, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Communication", id: string, body: fhir.Communication, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "CommunicationRequest", id: string, body: fhir.CommunicationRequest, headers?: Headers, options?: Options }): + Promise; + update(params: { resourceType: "CompartmentDefinition", id: string, body: fhir.CompartmentDefinition, headers?: Headers, options?: Options }): + Promise; + update(params: { resourceType: "Composition", id: string, body: fhir.Composition, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "ConceptMap", id: string, body: fhir.ConceptMap, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Condition", id: string, body: fhir.Condition, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Consent", id: string, body: fhir.Consent, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Contract", id: string, body: fhir.Contract, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Coverage", id: string, body: fhir.Coverage, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "DataElement", id: string, body: fhir.DataElement, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "DetectedIssue", id: string, body: fhir.DetectedIssue, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Device", id: string, body: fhir.Device, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "DeviceComponent", id: string, body: fhir.DeviceComponent, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "DeviceMetric", id: string, body: fhir.DeviceMetric, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "DeviceRequest", id: string, body: fhir.DeviceRequest, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "DeviceUseStatement", id: string, body: fhir.DeviceUseStatement, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "DiagnosticReport", id: string, body: fhir.DiagnosticReport, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "DocumentManifest", id: string, body: fhir.DocumentManifest, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "DocumentReference", id: string, body: fhir.DocumentReference, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "DomainResource", id: string, body: fhir.DomainResource, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "EligibilityRequest", id: string, body: fhir.EligibilityRequest, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "EligibilityResponse", id: string, body: fhir.EligibilityResponse, headers?: Headers, options?: Options }): + Promise; + update(params: { resourceType: "Encounter", id: string, body: fhir.Encounter, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Endpoint", id: string, body: fhir.Endpoint, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "EnrollmentRequest", id: string, body: fhir.EnrollmentRequest, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "EnrollmentResponse", id: string, body: fhir.EnrollmentResponse, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "EpisodeOfCare", id: string, body: fhir.EpisodeOfCare, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "ExpansionProfile", id: string, body: fhir.ExpansionProfile, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "ExplanationOfBenefit", id: string, body: fhir.ExplanationOfBenefit, headers?: Headers, options?: Options }): + Promise; + update(params: { resourceType: "FamilyMemberHistory", id: string, body: fhir.FamilyMemberHistory, headers?: Headers, options?: Options }): + Promise; + update(params: { resourceType: "Flag", id: string, body: fhir.Flag, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Goal", id: string, body: fhir.Goal, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "GraphDefinition", id: string, body: fhir.GraphDefinition, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Group", id: string, body: fhir.Group, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "GuidanceResponse", id: string, body: fhir.GuidanceResponse, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "HealthcareService", id: string, body: fhir.HealthcareService, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "ImagingManifest", id: string, body: fhir.ImagingManifest, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "ImagingStudy", id: string, body: fhir.ImagingStudy, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Immunization", id: string, body: fhir.Immunization, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "ImmunizationRecommendation", id: string, body: fhir.ImmunizationRecommendation, headers?: Headers, options?: Options }): + Promise; + update(params: { resourceType: "ImplementationGuide", id: string, body: fhir.ImplementationGuide, headers?: Headers, options?: Options }): + Promise; + update(params: { resourceType: "Library", id: string, body: fhir.Library, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Linkage", id: string, body: fhir.Linkage, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "List", id: string, body: fhir.List, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Location", id: string, body: fhir.Location, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Measure", id: string, body: fhir.Measure, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "MeasureReport", id: string, body: fhir.MeasureReport, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Media", id: string, body: fhir.Media, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Medication", id: string, body: fhir.Medication, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "MedicationAdministration", id: string, body: fhir.MedicationAdministration, headers?: Headers, options?: Options }): + Promise; + update(params: { resourceType: "MedicationDispense", id: string, body: fhir.MedicationDispense, headers?: Headers, options?: Options }): + Promise; + update(params: { resourceType: "MedicationRequest", id: string, body: fhir.MedicationRequest, headers?: Headers, options?: Options }): + Promise; + update(params: { resourceType: "MedicationStatement", id: string, body: fhir.MedicationStatement, headers?: Headers, options?: Options }): + Promise; + update(params: { resourceType: "MessageDefinition", id: string, body: fhir.MessageDefinition, headers?: Headers, options?: Options }): + Promise; + update(params: { resourceType: "MessageHeader", id: string, body: fhir.MessageHeader, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "NamingSystem", id: string, body: fhir.NamingSystem, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "NutritionOrder", id: string, body: fhir.NutritionOrder, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Observation", id: string, body: fhir.Observation, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "OperationDefinition", id: string, body: fhir.OperationDefinition, headers?: Headers, options?: Options }): + Promise; + update(params: { resourceType: "OperationOutcome", id: string, body: fhir.OperationOutcome, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Organization", id: string, body: fhir.Organization, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Parameters", id: string, body: fhir.Parameters, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Patient", id: string, body: fhir.Patient, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "PaymentNotice", id: string, body: fhir.PaymentNotice, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "PaymentReconciliation", id: string, body: fhir.PaymentReconciliation, headers?: Headers, options?: Options }): + Promise; + update(params: { resourceType: "Person", id: string, body: fhir.Person, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "PlanDefinition", id: string, body: fhir.PlanDefinition, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Practitioner", id: string, body: fhir.Practitioner, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "PractitionerRole", id: string, body: fhir.PractitionerRole, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Procedure", id: string, body: fhir.Procedure, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "ProcedureRequest", id: string, body: fhir.ProcedureRequest, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "ProcessRequest", id: string, body: fhir.ProcessRequest, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "ProcessResponse", id: string, body: fhir.ProcessResponse, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Provenance", id: string, body: fhir.Provenance, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Questionnaire", id: string, body: fhir.Questionnaire, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "QuestionnaireResponse", id: string, body: fhir.QuestionnaireResponse, headers?: Headers, options?: Options }): + Promise; + update(params: { resourceType: "ReferralRequest", id: string, body: fhir.ReferralRequest, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "RelatedPerson", id: string, body: fhir.RelatedPerson, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "RequestGroup", id: string, body: fhir.RequestGroup, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "ResearchStudy", id: string, body: fhir.ResearchStudy, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "ResearchSubject", id: string, body: fhir.ResearchSubject, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "RiskAssessment", id: string, body: fhir.RiskAssessment, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Schedule", id: string, body: fhir.Schedule, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "SearchParameter", id: string, body: fhir.SearchParameter, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Sequence", id: string, body: fhir.Sequence, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "ServiceDefinition", id: string, body: fhir.ServiceDefinition, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Slot", id: string, body: fhir.Slot, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Specimen", id: string, body: fhir.Specimen, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "StructureDefinition", id: string, body: fhir.StructureDefinition, headers?: Headers, options?: Options }): + Promise; + update(params: { resourceType: "StructureMap", id: string, body: fhir.StructureMap, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Subscription", id: string, body: fhir.Subscription, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Substance", id: string, body: fhir.Substance, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "SupplyDelivery", id: string, body: fhir.SupplyDelivery, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "SupplyRequest", id: string, body: fhir.SupplyRequest, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "Task", id: string, body: fhir.Task, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "TestReport", id: string, body: fhir.TestReport, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "TestScript", id: string, body: fhir.TestScript, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "ValueSet", id: string, body: fhir.ValueSet, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: "VisionPrescription", id: string, body: fhir.VisionPrescription, headers?: Headers, options?: Options }): Promise; + update(params: { resourceType: CustomResourceType, id: string, body: T, headers?: Headers, options?: Options }): Promise; + + /** + * Patch a resource by FHIR id. + * + * From http://hl7.org/fhir/STU3/http.html#patch: + * Content-Type is 'application/json-patch+json' + * Expects a JSON Patch document format, see http://jsonpatch.com/ + * + * @example + * + * // JSON Patch document format from http://jsonpatch.com/ + * const JSONPatch = [{ op: 'replace', path: '/gender', value: 'male' }]; + * + * // Using promises + * fhirClient.patch({ + * resourceType: 'Patient', + * id: 12345, + * JSONPatch, + * }).then((data) => { console.log(data); }); + * + * // Using async + * let response = await fhirClient.patch({ + * resourceType: 'Patient', + * id: 12345, + * JSONPatch + * }); + * console.log(response); + * + * @param {Object} params - The request parameters. + * @param {String} params.resourceType - The resource type (e.g. "Patient", + * "Observation"). + * @param {String} params.id - The FHIR id for the resource. + * @param {Array} params.JSONPatch - A JSON Patch document containing an array + * of patch operations, formatted according to http://jsonpatch.com/. + * @param {Object} [params.headers] - DEPRECATED Optional custom headers to + * add to the request + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * + * @return {Promise} FHIR resource + */ + patch(params: { resourceType: "Account", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "ActivityDefinition", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "AdverseEvent", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "AllergyIntolerance", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Appointment", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "AppointmentResponse", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "AuditEvent", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Basic", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Binary", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "BodySite", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Bundle", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "CapabilityStatement", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "CarePlan", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "CareTeam", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "ChargeItem", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Claim", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "ClaimResponse", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "ClinicalImpression", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "CodeSystem", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Communication", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "CommunicationRequest", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "CompartmentDefinition", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Composition", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "ConceptMap", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Condition", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Consent", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Contract", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Coverage", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "DataElement", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "DetectedIssue", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Device", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "DeviceComponent", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "DeviceMetric", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "DeviceRequest", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "DeviceUseStatement", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "DiagnosticReport", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "DocumentManifest", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "DocumentReference", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "DomainResource", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "EligibilityRequest", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "EligibilityResponse", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Encounter", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Endpoint", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "EnrollmentRequest", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "EnrollmentResponse", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "EpisodeOfCare", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "ExpansionProfile", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "ExplanationOfBenefit", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "FamilyMemberHistory", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Flag", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Goal", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "GraphDefinition", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Group", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "GuidanceResponse", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "HealthcareService", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "ImagingManifest", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "ImagingStudy", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Immunization", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "ImmunizationRecommendation", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): + Promise; + patch(params: { resourceType: "ImplementationGuide", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Library", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Linkage", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "List", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Location", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Measure", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "MeasureReport", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Media", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Medication", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "MedicationAdministration", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "MedicationDispense", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "MedicationRequest", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "MedicationStatement", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "MessageDefinition", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "MessageHeader", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "NamingSystem", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "NutritionOrder", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Observation", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "OperationDefinition", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "OperationOutcome", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Organization", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Parameters", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Patient", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "PaymentNotice", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "PaymentReconciliation", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Person", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "PlanDefinition", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Practitioner", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "PractitionerRole", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Procedure", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "ProcedureRequest", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "ProcessRequest", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "ProcessResponse", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Provenance", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Questionnaire", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "QuestionnaireResponse", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "ReferralRequest", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "RelatedPerson", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "RequestGroup", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "ResearchStudy", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "ResearchSubject", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "RiskAssessment", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Schedule", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "SearchParameter", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Sequence", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "ServiceDefinition", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Slot", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Specimen", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "StructureDefinition", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "StructureMap", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Subscription", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Substance", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "SupplyDelivery", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "SupplyRequest", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "Task", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "TestReport", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "TestScript", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "ValueSet", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: "VisionPrescription", id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + patch(params: { resourceType: CustomResourceType, id: string, JSONPatch: OpPatch[], headers?: Headers, options?: Options }): Promise; + + /** + * Submit a set of actions to perform independently as a batch. + * + * Update, create or delete a set of resources in a single interaction. + * There should be no interdependencies between entries in the bundle. + * + * @example + * + * const request.Bundle = { + * 'resourceType': 'fhir.Bundle', + * 'type': 'batch', + * 'entry': [ + * { + * 'fullUrl': 'http://example.org/fhir/Patient/123', + * 'resource': { + * 'resourceType': 'Patient', + * 'id': '123', + * 'active': true + * }, + * 'request': { + * 'method': 'PUT', + * 'url': 'Patient/123' + * } + * }, + * { + * 'request': { + * 'method': 'DELETE', + * 'url': 'Patient/2e27c71e-30c8-4ceb-8c1c-5641e066c0a4' + * } + * }, + * { + * 'request': { + * 'method': 'GET', + * 'url': 'Patient?name=peter' + * } + * } + * ] + * } + * + * // Using promises + * fhirClient.batch({ + * body: request.Bundle + * }).then((data) => { console.log(data); }); + * + * // Using async + * let response = await fhirClient.batch({ + * body: request.Bundle + * }); + * console.log(response); + * + * @param {Object} params - The request parameters. + * @param {string} params.body - The request body with a type of 'batch'. + * @param {Object} [params.headers] - DEPRECATED Optional custom headers to + * add to the request + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * + * @return {Promise} FHIR resources in a FHIR fhir.Bundle structure. + */ + batch(params: { body: fhir.Bundle & { type: "batch" }, headers?: Headers, options?: Options }): Promise; + + /** + * Submit a set of actions to perform independently as a transaction. + * + * Update, create or delete a set of resources in a single interaction. + * The entire set of changes should succeed or fail as a single entity. + * Multiple actions on multiple resources different types may be submitted. + * The outcome should not depend on the order of the resources loaded. + * Order of processing actions: DELETE, POST, PUT, and GET. + * The transaction fails if any resource overlap in DELETE, POST and PUT. + * + * @example + * + * const request.Bundle = { + * 'resourceType': 'fhir.Bundle', + * 'type': 'transaction', + * 'entry': [ + * { + * 'fullUrl': 'http://example.org/fhir/Patient/123', + * 'resource': { + * 'resourceType': 'Patient', + * 'id': '123', + * 'active': true + * }, + * 'request': { + * 'method': 'PUT', + * 'url': 'Patient/123' + * } + * }, + * { + * 'request': { + * 'method': 'DELETE', + * 'url': 'Patient/2e27c71e-30c8-4ceb-8c1c-5641e066c0a4' + * } + * }, + * { + * 'request': { + * 'method': 'GET', + * 'url': 'Patient?name=peter' + * } + * } + * ] + * } + * + * // Using promises + * fhirClient.transaction({ + * body: request.Bundle + * }).then((data) => { console.log(data); }); + * + * // Using async + * let response = await fhirClient.transaction({ + * body: request.Bundle + * }); + * console.log(response); + * + * @param {Object} params - The request parameters. + * @param {String} params.body - The request body with a type of + * 'transaction'. + * @param {Object} [params.headers] - DEPRECATED Optional custom headers to + * add to the request + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * + * @return {Promise} FHIR resources in a FHIR fhir.Bundle structure. + */ + transaction(params: { body: fhir.Bundle & { type: "transaction" }, headers?: Headers, options?: Options }): Promise; + + /** + * Return the next page of results. + * + * @param {Object} params - The request parameters. Passing the bundle as the + * first parameter is DEPRECATED + * @param {object} params.bundle - fhir.Bundle result of a FHIR search + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * @param {Object} [headers] - DEPRECATED Optional custom headers to add to + * the request + * + * @return {Promise} FHIR resources in a FHIR fhir.Bundle structure. + */ + nextPage(params: { bundle: fhir.Bundle & {type: T}, options?: Options }, headers?: Headers): Promise; + + /** + * Return the previous page of results. + * + * @param {Object} params - The request parameters. Passing the bundle as the + * first parameter is DEPRECATED + * @param {object} params.bundle - fhir.Bundle result of a FHIR search + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * @param {Object} [headers] - DEPRECATED Optional custom headers to add to + * the request + * + * @return {Promise} FHIR resources in a FHIR fhir.Bundle structure. + */ + prevPage(params: { bundle: fhir.Bundle & {type: T}, options?: Options }, headers?: Headers): Promise; + + /** + * Search for a FHIR resource, with or without compartments, or the entire + * system + * + * @example + * + * // Using promises + * fhirClient.search({ + * resourceType: 'Observation', + * compartment: { resourceType: 'Patient', id: 123 }, + * searchParams: { code: 'abc', _include: ['Observation:encounter', 'Observation:performer'] }, + * }).then((data) => { console.log(data); }); + * + * // Using async + * let response = await fhirClient.search({ + * resourceType: 'Observation', + * compartment: { resourceType: 'Patient', id: 123 }, + * searchParams: { code: 'abc', _include: ['Observation:encounter', 'Observation:performer'] }, + * }); + * console.log(response); + * + * @param {Object} params - The request parameters. + * @param {String} [params.resourceType] - The resource type + * (e.g. "Patient", "Observation"), optional. + * @param {Object} [params.compartment] - The search compartment, optional. + * @param {Object} [params.searchParams] - The search parameters, optional. + * @param {Object} [params.headers] - DEPRECATED Optional custom headers to + * add to the request + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * + * @return {Promise} FHIR resources in a FHIR fhir.Bundle structure. + * + * @throws {Error} if neither searchParams nor resourceType are supplied + */ + search(params: { resourceType: ResourceType, compartment?: Compartment, searchParams?: SearchParams, headers?: Headers, options?: Options }): + Promise; + + /** + * Search for a FHIR resource. + * + * @example + * + * // Using promises + * fhirClient.resourceSearch({ + * resourceType: 'Patient', + * searchParams: { name: 'Smith' }, + * }).then((data) => { console.log(data); }); + * + * // Using async + * let response = await fhirClient.resourceSearch({ + * resourceType: 'Patient', + * searchParams: { name: 'Smith' }, + * }); + * console.log(response); + * + * @param {Object} params - The request parameters. + * @param {String} params.resourceType - The resource type (e.g. "Patient", + * "Observation"). + * @param {Object} params.searchParams - The search parameters. + * @param {Object} [params.headers] - DEPRECATED Optional custom headers to + * add to the request + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * + * @return {Promise} FHIR resources in a FHIR fhir.Bundle structure. + */ + resourceSearch(params: { resourceType: ResourceType, searchParams: SearchParams, headers?: Headers, options?: Options }): Promise; + + /** + * Search across all FHIR resource types in the system. + * Only the parameters defined for all resources can be used. + * + * @example + * + * // Using promises + * fhirClient.systemSearch({ + * searchParams: { name: 'smith' } + * }).then((data) => { console.log(data); }); + * + * // Using async + * let response = await fhirClient.systemSearch({ searchParams: { name: 'smith' } }); + * console.log(response); + * + * @param {Object} params - The request parameters. + * @param {Object} params.searchParams - The search parameters. + * @param {Object} [params.headers] - DEPRECATED Optional custom headers to + * add to the request + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * + * @return {Promise} FHIR resources in a FHIR fhir.Bundle structure. + */ + systemSearch(params: { searchParams: SearchParams, headers?: Headers, options?: Options }): Promise; + + /** + * Search for FHIR resources within a compartment. + * The resourceType and id must be specified. + * + * @example + * + * // Using promises + * fhirClient.compartmentSearch({ + * resourceType: 'Observation', + * compartment: { resourceType: 'Patient', id: 123 }, + * searchParams: { code: 'abc' } + * }).then((data) => { console.log(data); }); + * + * // Using async + * let response = await fhirClient.compartmentSearch({ + * resourceType: 'Observation', + * compartment: { resourceType: 'Patient', id: 123 }, + * searchParams: { code: 'abc' } + * }); + * console.log(response); + * + * @param {Object} params - The request parameters. + * @param {String} params.resourceType - The resource type (e.g. "Patient", + * "Observation"). + * @param {Object} params.compartment - The search compartment. + * @param {Object} [params.searchParams] - The search parameters, optional. + * @param {Object} [params.headers] - DEPRECATED Optional custom headers to + * add to the request + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * + * @return {Promise} FHIR resources in a FHIR fhir.Bundle structure. + */ + compartmentSearch(params: + { resourceType: ResourceType, compartment: Compartment, searchParams?: SearchParams, headers?: Headers, options?: Options }): + Promise ; + + /** + * Retrieve the change history for a FHIR resource id, a resource type or the + * entire system + * + * @example + * + * // Using promises + * fhirClient.history({ resourceType: 'Patient', id: '12345' }); + * .then((data) => { console.log(data); }); + * + * // Using async + * let response = await fhirClient.history({ resourceType: 'Patient', id: '12345' }); + * console.log(response); + * + * @param {Object} [params] - The request parameters. + * @param {string} [params.resourceType] - The resource type + * (e.g. "Patient", "Observation"), optional. + * @param {string} [params.id] - The FHIR id for the resource, optional. + * @param {Object} [params.headers] - DEPRECATED Optional custom headers to + * add to the request + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * + * @return {Promise} FHIR resources in a FHIR fhir.Bundle structure. + */ + history(params?: { resourceType?: ResourceType, id?: string, headers?: Headers, options?: Options }): Promise; + + /** + * Retrieve the change history for a particular resource FHIR id. + * + * @example + * + * // Using promises + * fhirClient.resourceHistory({ resourceType: 'Patient', id: '12345' }); + * .then((data) => { console.log(data); }); + * + * // Using async + * let response = await fhirClient.resourceHistory({ resourceType: 'Patient', id: '12345' }); + * console.log(response); + * + * @param {Object} params - The request parameters. + * @param {string} params.resourceType - The resource type (e.g. "Patient", + * "Observation"). + * @param {string} params.id - The FHIR id for the resource. + * @param {Object} [params.headers] - DEPRECATED Optional custom headers to + * add to the request + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * + * @return {Promise} FHIR resources in a FHIR fhir.Bundle structure. + */ + resourceHistory(params: { resourceType: ResourceType, id: string, headers?: Headers, options?: Options }): Promise; + + /** + * Retrieve the change history for a particular resource type. + * + * @example + * + * // Using promises + * fhirClient.typeHistory({ resourceType: 'Patient' }); + * .then((data) => { console.log(data); }); + * + * // Using async + * let response = await fhirClient.typeHistory({ resourceType: 'Patient' }); + * console.log(response); + * + * @param {Object} params - The request parameters. + * @param {string} params.resourceType - The resource type (e.g. "Patient", + * "Observation"). + * @param {Object} [params.headers] - DEPRECATED Optional custom headers to + * add to the request + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * + * @return {Promise} FHIR resources in a FHIR fhir.Bundle structure. + */ + typeHistory(params: { resourceType: ResourceType, headers?: Headers, options?: Options }): Promise; + + /** + * Retrieve the change history for all resources. + * + * @example + * + * // Using promises + * fhirClient.systemHistory(); + * .then((data) => { console.log(data); }); + * + * // Using async + * let response = await fhirClient.systemHistory(); + * console.log(response); + * + * @param {Object} [params] - The request parameters. + * @param {Object} [params.headers] - DEPRECATED Optional custom headers to + * add to the request + * @param {Object} [params.options] - Optional options object + * @param {Object} [params.options.headers] - Optional headers to add to the + * request + * + * @return {Promise} FHIR resources in a FHIR fhir.Bundle structure. + */ + systemHistory(params?: { headers?: Headers, options?: Options }): Promise; +} + +export = Client; diff --git a/types/fhir-kit-client/tsconfig.json b/types/fhir-kit-client/tsconfig.json new file mode 100644 index 0000000000..f01af11451 --- /dev/null +++ b/types/fhir-kit-client/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "lib": [ + "es6" + ], + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "fhir-kit-client-tests.ts" + ] +} diff --git a/types/fhir-kit-client/tslint.json b/types/fhir-kit-client/tslint.json new file mode 100644 index 0000000000..8746d601db --- /dev/null +++ b/types/fhir-kit-client/tslint.json @@ -0,0 +1,7 @@ +{ + "extends": "dtslint/dt.json", + "rules": { + "no-redundant-jsdoc": false, + "no-redundant-jsdoc-2": false + } +}