Class: MedplumClient
The MedplumClient class provides a client for the Medplum FHIR server.
The client can be used in the browser, in a Node.js application, or in a Medplum Bot.
The client provides helpful methods for common operations such as: 1) Authenticating 2) Creating resources 2) Reading resources 3) Updating resources 5) Deleting resources 6) Searching 7) Making GraphQL queries
Here is a quick example of how to use the client:
import { MedplumClient } from '@medplum/core';
const medplum = new MedplumClient();
Create a Patient
:
const patient = await medplum.createResource({
resourceType: 'Patient',
name: [{
given: ['Alice'],
family: 'Smith'
}]
});
Read a Patient
by ID:
const patient = await medplum.readResource('Patient', '123');
console.log(patient.name[0].given[0]);
Search for a Patient
by name:
const bundle = await medplum.search('Patient', 'name=Alice');
console.log(bundle.total);
Hierarchy
↳
MedplumClient
Read
readResource
▸ readResource<K
>(resourceType
, id
, options?
): ReadablePromise
<ExtractResource
<K
>>
Reads a resource by resource type and ID.
Example:
const patient = await medplum.readResource('Patient', '123');
console.log(patient);
See the FHIR "read" operation for full details: https://www.hl7.org/fhir/http.html#read
Type parameters
Name | Type |
---|---|
K | extends "Observation" | "Patient" | "Practitioner" | "RelatedPerson" | "AccessPolicy" | "Account" | "ActivityDefinition" | "AdverseEvent" | "Agent" | "AllergyIntolerance" | "Appointment" | "AppointmentResponse" | "AsyncJob" | "AuditEvent" | "Basic" | "Binary" | "BiologicallyDerivedProduct" | "BodyStructure" | "Bot" | "BulkDataExport" | "Bundle" | "CapabilityStatement" | "CarePlan" | "CareTeam" | "CatalogEntry" | "ChargeItem" | "ChargeItemDefinition" | "Claim" | "ClaimResponse" | "ClientApplication" | "ClinicalImpression" | "CodeSystem" | "Communication" | "CommunicationRequest" | "CompartmentDefinition" | "Composition" | "ConceptMap" | "Condition" | "Consent" | "Contract" | "Coverage" | "CoverageEligibilityRequest" | "CoverageEligibilityResponse" | "DetectedIssue" | "Device" | "DeviceDefinition" | "DeviceMetric" | "DeviceRequest" | "DeviceUseStatement" | "DiagnosticReport" | "DocumentManifest" | "DocumentReference" | "DomainConfiguration" | "EffectEvidenceSynthesis" | "Encounter" | "Endpoint" | "EnrollmentRequest" | "EnrollmentResponse" | "EpisodeOfCare" | "EventDefinition" | "Evidence" | "EvidenceVariable" | "ExampleScenario" | "ExplanationOfBenefit" | "FamilyMemberHistory" | "Flag" | "Goal" | "GraphDefinition" | "Group" | "GuidanceResponse" | "HealthcareService" | "ImagingStudy" | "Immunization" | "ImmunizationEvaluation" | "ImmunizationRecommendation" | "ImplementationGuide" | "InsurancePlan" | "Invoice" | "JsonWebKey" | "Library" | "Linkage" | "List" | "Location" | "Login" | "Measure" | "MeasureReport" | "Media" | "Medication" | "MedicationAdministration" | "MedicationDispense" | "MedicationKnowledge" | "MedicationRequest" | "MedicationStatement" | "MedicinalProduct" | "MedicinalProductAuthorization" | "MedicinalProductContraindication" | "MedicinalProductIndication" | "MedicinalProductIngredient" | "MedicinalProductInteraction" | "MedicinalProductManufactured" | "MedicinalProductPackaged" | "MedicinalProductPharmaceutical" | "MedicinalProductUndesirableEffect" | "MessageDefinition" | "MessageHeader" | "MolecularSequence" | "NamingSystem" | "NutritionOrder" | "ObservationDefinition" | "OperationDefinition" | "OperationOutcome" | "Organization" | "OrganizationAffiliation" | "Parameters" | "PasswordChangeRequest" | "PaymentNotice" | "PaymentReconciliation" | "Person" | "PlanDefinition" | "PractitionerRole" | "Procedure" | "Project" | "ProjectMembership" | "Provenance" | "Questionnaire" | "QuestionnaireResponse" | "RequestGroup" | "ResearchDefinition" | "ResearchElementDefinition" | "ResearchStudy" | "ResearchSubject" | "RiskAssessment" | "RiskEvidenceSynthesis" | "Schedule" | "SearchParameter" | "ServiceRequest" | "Slot" | "SmartAppLaunch" | "Specimen" | "SpecimenDefinition" | "StructureDefinition" | "StructureMap" | "Subscription" | "Substance" | "SubstanceNucleicAcid" | "SubstancePolymer" | "SubstanceProtein" | "SubstanceReferenceInformation" | "SubstanceSourceMaterial" | "SubstanceSpecification" | "SupplyDelivery" | "SupplyRequest" | "Task" | "TerminologyCapabilities" | "TestReport" | "TestScript" | "User" | "UserConfiguration" | "ValueSet" | "VerificationResult" | "VisionPrescription" |
Parameters
Name | Type | Description |
---|---|---|
resourceType | K | The FHIR resource type. |
id | string | The resource ID. |
options? | RequestInit | Optional fetch options. |
Returns
ReadablePromise
<ExtractResource
<K
>>
The resource if available; undefined otherwise.
Defined in
packages/core/src/client.ts:1349
readReference
▸ readReference<T
>(reference
, options?
): ReadablePromise
<T
>
Reads a resource by Reference
.
This is a convenience method for readResource()
that accepts a Reference
object.
Example:
const serviceRequest = await medplum.readResource('ServiceRequest', '123');
const patient = await medplum.readReference(serviceRequest.subject);
console.log(patient);
See the FHIR "read" operation for full details: https://www.hl7.org/fhir/http.html#read
Type parameters
Name | Type |
---|---|
T | extends Resource |
Parameters
Name | Type | Description |
---|---|---|
reference | Reference <T > | The FHIR reference object. |
options? | RequestInit | Optional fetch options. |
Returns
The resource if available; undefined otherwise.
Defined in
packages/core/src/client.ts:1376
readHistory
▸ readHistory<K
>(resourceType
, id
, options?
): ReadablePromise
<Bundle
<ExtractResource
<K
>>>
Reads resource history by resource type and ID.
The return value is a bundle of all versions of the resource.
Example:
const history = await medplum.readHistory('Patient', '123');
console.log(history);
See the FHIR "history" operation for full details: https://www.hl7.org/fhir/http.html#history
Type parameters
Name | Type |
---|---|
K | extends "Observation" | "Patient" | "Practitioner" | "RelatedPerson" | "AccessPolicy" | "Account" | "ActivityDefinition" | "AdverseEvent" | "Agent" | "AllergyIntolerance" | "Appointment" | "AppointmentResponse" | "AsyncJob" | "AuditEvent" | "Basic" | "Binary" | "BiologicallyDerivedProduct" | "BodyStructure" | "Bot" | "BulkDataExport" | "Bundle" | "CapabilityStatement" | "CarePlan" | "CareTeam" | "CatalogEntry" | "ChargeItem" | "ChargeItemDefinition" | "Claim" | "ClaimResponse" | "ClientApplication" | "ClinicalImpression" | "CodeSystem" | "Communication" | "CommunicationRequest" | "CompartmentDefinition" | "Composition" | "ConceptMap" | "Condition" | "Consent" | "Contract" | "Coverage" | "CoverageEligibilityRequest" | "CoverageEligibilityResponse" | "DetectedIssue" | "Device" | "DeviceDefinition" | "DeviceMetric" | "DeviceRequest" | "DeviceUseStatement" | "DiagnosticReport" | "DocumentManifest" | "DocumentReference" | "DomainConfiguration" | "EffectEvidenceSynthesis" | "Encounter" | "Endpoint" | "EnrollmentRequest" | "EnrollmentResponse" | "EpisodeOfCare" | "EventDefinition" | "Evidence" | "EvidenceVariable" | "ExampleScenario" | "ExplanationOfBenefit" | "FamilyMemberHistory" | "Flag" | "Goal" | "GraphDefinition" | "Group" | "GuidanceResponse" | "HealthcareService" | "ImagingStudy" | "Immunization" | "ImmunizationEvaluation" | "ImmunizationRecommendation" | "ImplementationGuide" | "InsurancePlan" | "Invoice" | "JsonWebKey" | "Library" | "Linkage" | "List" | "Location" | "Login" | "Measure" | "MeasureReport" | "Media" | "Medication" | "MedicationAdministration" | "MedicationDispense" | "MedicationKnowledge" | "MedicationRequest" | "MedicationStatement" | "MedicinalProduct" | "MedicinalProductAuthorization" | "MedicinalProductContraindication" | "MedicinalProductIndication" | "MedicinalProductIngredient" | "MedicinalProductInteraction" | "MedicinalProductManufactured" | "MedicinalProductPackaged" | "MedicinalProductPharmaceutical" | "MedicinalProductUndesirableEffect" | "MessageDefinition" | "MessageHeader" | "MolecularSequence" | "NamingSystem" | "NutritionOrder" | "ObservationDefinition" | "OperationDefinition" | "OperationOutcome" | "Organization" | "OrganizationAffiliation" | "Parameters" | "PasswordChangeRequest" | "PaymentNotice" | "PaymentReconciliation" | "Person" | "PlanDefinition" | "PractitionerRole" | "Procedure" | "Project" | "ProjectMembership" | "Provenance" | "Questionnaire" | "QuestionnaireResponse" | "RequestGroup" | "ResearchDefinition" | "ResearchElementDefinition" | "ResearchStudy" | "ResearchSubject" | "RiskAssessment" | "RiskEvidenceSynthesis" | "Schedule" | "SearchParameter" | "ServiceRequest" | "Slot" | "SmartAppLaunch" | "Specimen" | "SpecimenDefinition" | "StructureDefinition" | "StructureMap" | "Subscription" | "Substance" | "SubstanceNucleicAcid" | "SubstancePolymer" | "SubstanceProtein" | "SubstanceReferenceInformation" | "SubstanceSourceMaterial" | "SubstanceSpecification" | "SupplyDelivery" | "SupplyRequest" | "Task" | "TerminologyCapabilities" | "TestReport" | "TestScript" | "User" | "UserConfiguration" | "ValueSet" | "VerificationResult" | "VisionPrescription" |
Parameters
Name | Type | Description |
---|---|---|
resourceType | K | The FHIR resource type. |
id | string | The resource ID. |
options? | RequestInit | Optional fetch options. |
Returns
ReadablePromise
<Bundle
<ExtractResource
<K
>>>
Promise to the resource history.
Defined in
packages/core/src/client.ts:1489
readVersion
▸ readVersion<K
>(resourceType
, id
, vid
, options?
): ReadablePromise
<ExtractResource
<K
>>
Reads a specific version of a resource by resource type, ID, and version ID.
Example:
const version = await medplum.readVersion('Patient', '123', '456');
console.log(version);
See the FHIR "vread" operation for full details: https://www.hl7.org/fhir/http.html#vread
Type parameters
Name | Type |
---|---|
K | extends "Observation" | "Patient" | "Practitioner" | "RelatedPerson" | "AccessPolicy" | "Account" | "ActivityDefinition" | "AdverseEvent" | "Agent" | "AllergyIntolerance" | "Appointment" | "AppointmentResponse" | "AsyncJob" | "AuditEvent" | "Basic" | "Binary" | "BiologicallyDerivedProduct" | "BodyStructure" | "Bot" | "BulkDataExport" | "Bundle" | "CapabilityStatement" | "CarePlan" | "CareTeam" | "CatalogEntry" | "ChargeItem" | "ChargeItemDefinition" | "Claim" | "ClaimResponse" | "ClientApplication" | "ClinicalImpression" | "CodeSystem" | "Communication" | "CommunicationRequest" | "CompartmentDefinition" | "Composition" | "ConceptMap" | "Condition" | "Consent" | "Contract" | "Coverage" | "CoverageEligibilityRequest" | "CoverageEligibilityResponse" | "DetectedIssue" | "Device" | "DeviceDefinition" | "DeviceMetric" | "DeviceRequest" | "DeviceUseStatement" | "DiagnosticReport" | "DocumentManifest" | "DocumentReference" | "DomainConfiguration" | "EffectEvidenceSynthesis" | "Encounter" | "Endpoint" | "EnrollmentRequest" | "EnrollmentResponse" | "EpisodeOfCare" | "EventDefinition" | "Evidence" | "EvidenceVariable" | "ExampleScenario" | "ExplanationOfBenefit" | "FamilyMemberHistory" | "Flag" | "Goal" | "GraphDefinition" | "Group" | "GuidanceResponse" | "HealthcareService" | "ImagingStudy" | "Immunization" | "ImmunizationEvaluation" | "ImmunizationRecommendation" | "ImplementationGuide" | "InsurancePlan" | "Invoice" | "JsonWebKey" | "Library" | "Linkage" | "List" | "Location" | "Login" | "Measure" | "MeasureReport" | "Media" | "Medication" | "MedicationAdministration" | "MedicationDispense" | "MedicationKnowledge" | "MedicationRequest" | "MedicationStatement" | "MedicinalProduct" | "MedicinalProductAuthorization" | "MedicinalProductContraindication" | "MedicinalProductIndication" | "MedicinalProductIngredient" | "MedicinalProductInteraction" | "MedicinalProductManufactured" | "MedicinalProductPackaged" | "MedicinalProductPharmaceutical" | "MedicinalProductUndesirableEffect" | "MessageDefinition" | "MessageHeader" | "MolecularSequence" | "NamingSystem" | "NutritionOrder" | "ObservationDefinition" | "OperationDefinition" | "OperationOutcome" | "Organization" | "OrganizationAffiliation" | "Parameters" | "PasswordChangeRequest" | "PaymentNotice" | "PaymentReconciliation" | "Person" | "PlanDefinition" | "PractitionerRole" | "Procedure" | "Project" | "ProjectMembership" | "Provenance" | "Questionnaire" | "QuestionnaireResponse" | "RequestGroup" | "ResearchDefinition" | "ResearchElementDefinition" | "ResearchStudy" | "ResearchSubject" | "RiskAssessment" | "RiskEvidenceSynthesis" | "Schedule" | "SearchParameter" | "ServiceRequest" | "Slot" | "SmartAppLaunch" | "Specimen" | "SpecimenDefinition" | "StructureDefinition" | "StructureMap" | "Subscription" | "Substance" | "SubstanceNucleicAcid" | "SubstancePolymer" | "SubstanceProtein" | "SubstanceReferenceInformation" | "SubstanceSourceMaterial" | "SubstanceSpecification" | "SupplyDelivery" | "SupplyRequest" | "Task" | "TerminologyCapabilities" | "TestReport" | "TestScript" | "User" | "UserConfiguration" | "ValueSet" | "VerificationResult" | "VisionPrescription" |
Parameters
Name | Type | Description |
---|---|---|
resourceType | K | The FHIR resource type. |
id | string | The resource ID. |
vid | string | The version ID. |
options? | RequestInit | Optional fetch options. |
Returns
ReadablePromise
<ExtractResource
<K
>>
The resource if available; undefined otherwise.
Defined in
packages/core/src/client.ts:1515
readPatientEverything
▸ readPatientEverything(id
, options?
): ReadablePromise
<Bundle
<Resource
>>
Executes the Patient "everything" operation for a patient.
Example:
const bundle = await medplum.readPatientEverything('123');
console.log(bundle);
See the FHIR "patient-everything" operation for full details: https://hl7.org/fhir/operation-patient-everything.html
Parameters
Name | Type | Description |
---|---|---|
id | string | The Patient Id |
options? | RequestInit | Optional fetch options. |
Returns
ReadablePromise
<Bundle
<Resource
>>
A Bundle of all Resources related to the Patient
Defined in
packages/core/src/client.ts:1540
graphql
▸ graphql(query
, operationName?
, variables?
, options?
): Promise
<any
>
Executes a GraphQL query.
Example:
const result = await medplum.graphql(`{
Patient(id: "123") {
resourceType
id
name {
given
family
}
}
}`);
Advanced queries such as named operations and variable substitution are supported:
const result = await medplum.graphql(
`query GetPatientById($patientId: ID!) {
Patient(id: $patientId) {
resourceType
id
name {
given
family
}
}
}`,
'GetPatientById',
{ patientId: '123' }
);
See the GraphQL documentation for more details: https://graphql.org/learn/
See the FHIR GraphQL documentation for FHIR specific details: https://www.hl7.org/fhir/graphql.html
Parameters
Name | Type | Description |
---|---|---|
query | string | The GraphQL query. |
operationName? | null | string | Optional GraphQL operation name. |
variables? | any | Optional GraphQL variables. |
options? | RequestInit | Optional fetch options. |
Returns
Promise
<any
>
The GraphQL result.
Defined in
packages/core/src/client.ts:2103
readResourceGraph
▸ readResourceGraph<K
>(resourceType
, id
, graphName
, options?
): ReadablePromise
<Bundle
<Resource
>>
Executes the $graph operation on this resource to fetch a Bundle of resources linked to the target resource according to a graph definition
Type parameters
Name | Type |
---|---|
K | extends "Observation" | "Patient" | "Practitioner" | "RelatedPerson" | "AccessPolicy" | "Account" | "ActivityDefinition" | "AdverseEvent" | "Agent" | "AllergyIntolerance" | "Appointment" | "AppointmentResponse" | "AsyncJob" | "AuditEvent" | "Basic" | "Binary" | "BiologicallyDerivedProduct" | "BodyStructure" | "Bot" | "BulkDataExport" | "Bundle" | "CapabilityStatement" | "CarePlan" | "CareTeam" | "CatalogEntry" | "ChargeItem" | "ChargeItemDefinition" | "Claim" | "ClaimResponse" | "ClientApplication" | "ClinicalImpression" | "CodeSystem" | "Communication" | "CommunicationRequest" | "CompartmentDefinition" | "Composition" | "ConceptMap" | "Condition" | "Consent" | "Contract" | "Coverage" | "CoverageEligibilityRequest" | "CoverageEligibilityResponse" | "DetectedIssue" | "Device" | "DeviceDefinition" | "DeviceMetric" | "DeviceRequest" | "DeviceUseStatement" | "DiagnosticReport" | "DocumentManifest" | "DocumentReference" | "DomainConfiguration" | "EffectEvidenceSynthesis" | "Encounter" | "Endpoint" | "EnrollmentRequest" | "EnrollmentResponse" | "EpisodeOfCare" | "EventDefinition" | "Evidence" | "EvidenceVariable" | "ExampleScenario" | "ExplanationOfBenefit" | "FamilyMemberHistory" | "Flag" | "Goal" | "GraphDefinition" | "Group" | "GuidanceResponse" | "HealthcareService" | "ImagingStudy" | "Immunization" | "ImmunizationEvaluation" | "ImmunizationRecommendation" | "ImplementationGuide" | "InsurancePlan" | "Invoice" | "JsonWebKey" | "Library" | "Linkage" | "List" | "Location" | "Login" | "Measure" | "MeasureReport" | "Media" | "Medication" | "MedicationAdministration" | "MedicationDispense" | "MedicationKnowledge" | "MedicationRequest" | "MedicationStatement" | "MedicinalProduct" | "MedicinalProductAuthorization" | "MedicinalProductContraindication" | "MedicinalProductIndication" | "MedicinalProductIngredient" | "MedicinalProductInteraction" | "MedicinalProductManufactured" | "MedicinalProductPackaged" | "MedicinalProductPharmaceutical" | "MedicinalProductUndesirableEffect" | "MessageDefinition" | "MessageHeader" | "MolecularSequence" | "NamingSystem" | "NutritionOrder" | "ObservationDefinition" | "OperationDefinition" | "OperationOutcome" | "Organization" | "OrganizationAffiliation" | "Parameters" | "PasswordChangeRequest" | "PaymentNotice" | "PaymentReconciliation" | "Person" | "PlanDefinition" | "PractitionerRole" | "Procedure" | "Project" | "ProjectMembership" | "Provenance" | "Questionnaire" | "QuestionnaireResponse" | "RequestGroup" | "ResearchDefinition" | "ResearchElementDefinition" | "ResearchStudy" | "ResearchSubject" | "RiskAssessment" | "RiskEvidenceSynthesis" | "Schedule" | "SearchParameter" | "ServiceRequest" | "Slot" | "SmartAppLaunch" | "Specimen" | "SpecimenDefinition" | "StructureDefinition" | "StructureMap" | "Subscription" | "Substance" | "SubstanceNucleicAcid" | "SubstancePolymer" | "SubstanceProtein" | "SubstanceReferenceInformation" | "SubstanceSourceMaterial" | "SubstanceSpecification" | "SupplyDelivery" | "SupplyRequest" | "Task" | "TerminologyCapabilities" | "TestReport" | "TestScript" | "User" | "UserConfiguration" | "ValueSet" | "VerificationResult" | "VisionPrescription" |
Parameters
Name | Type | Description |
---|---|---|
resourceType | K | The FHIR resource type. |
id | string | The resource ID. |
graphName | string | name parameter of the GraphDefinition |
options? | RequestInit | Optional fetch options. |
Returns
ReadablePromise
<Bundle
<Resource
>>
A Bundle
Defined in
packages/core/src/client.ts:2118
download
▸ download(url
, options?
): Promise
<Blob
>
Downloads the URL as a blob. Can accept binary URLs in the form of Binary/{id}
as well.
Parameters
Name | Type | Description |
---|---|---|
url | string | URL | The URL to request. Can be a standard URL or one in the form of Binary/{id} . |
options | RequestInit | Optional fetch request init options. |
Returns
Promise
<Blob
>
Promise to the response body as a blob.
Defined in
packages/core/src/client.ts:2311
Write
updateResource
▸ updateResource<T
>(resource
, options?
): Promise
<T
>
Updates a FHIR resource.
The return value is the updated resource, including the ID and meta.
Example:
const result = await medplum.updateResource({
resourceType: 'Patient',
id: '123',
name: [{
family: 'Smith',
given: ['John']
}]
});
console.log(result.meta.versionId);
See the FHIR "update" operation for full details: https://www.hl7.org/fhir/http.html#update
Type parameters
Name | Type |
---|---|
T | extends Resource |
Parameters
Name | Type | Description |
---|---|---|
resource | T | The FHIR resource to update. |
options? | RequestInit | Optional fetch options. |
Returns
Promise
<T
>
The result of the update operation.
Defined in
packages/core/src/client.ts:1841
patchResource
▸ patchResource<K
>(resourceType
, id
, operations
, options?
): Promise
<ExtractResource
<K
>>
Updates a FHIR resource using JSONPatch operations.
The return value is the updated resource, including the ID and meta.
Example:
const result = await medplum.patchResource('Patient', '123', [
{op: 'replace', path: '/name/0/family', value: 'Smith'},
]);
console.log(result.meta.versionId);
See the FHIR "update" operation for full details: https://www.hl7.org/fhir/http.html#patch
See the JSONPatch specification for full details: https://tools.ietf.org/html/rfc6902
Type parameters
Name | Type |
---|---|
K | extends "Observation" | "Patient" | "Practitioner" | "RelatedPerson" | "AccessPolicy" | "Account" | "ActivityDefinition" | "AdverseEvent" | "Agent" | "AllergyIntolerance" | "Appointment" | "AppointmentResponse" | "AsyncJob" | "AuditEvent" | "Basic" | "Binary" | "BiologicallyDerivedProduct" | "BodyStructure" | "Bot" | "BulkDataExport" | "Bundle" | "CapabilityStatement" | "CarePlan" | "CareTeam" | "CatalogEntry" | "ChargeItem" | "ChargeItemDefinition" | "Claim" | "ClaimResponse" | "ClientApplication" | "ClinicalImpression" | "CodeSystem" | "Communication" | "CommunicationRequest" | "CompartmentDefinition" | "Composition" | "ConceptMap" | "Condition" | "Consent" | "Contract" | "Coverage" | "CoverageEligibilityRequest" | "CoverageEligibilityResponse" | "DetectedIssue" | "Device" | "DeviceDefinition" | "DeviceMetric" | "DeviceRequest" | "DeviceUseStatement" | "DiagnosticReport" | "DocumentManifest" | "DocumentReference" | "DomainConfiguration" | "EffectEvidenceSynthesis" | "Encounter" | "Endpoint" | "EnrollmentRequest" | "EnrollmentResponse" | "EpisodeOfCare" | "EventDefinition" | "Evidence" | "EvidenceVariable" | "ExampleScenario" | "ExplanationOfBenefit" | "FamilyMemberHistory" | "Flag" | "Goal" | "GraphDefinition" | "Group" | "GuidanceResponse" | "HealthcareService" | "ImagingStudy" | "Immunization" | "ImmunizationEvaluation" | "ImmunizationRecommendation" | "ImplementationGuide" | "InsurancePlan" | "Invoice" | "JsonWebKey" | "Library" | "Linkage" | "List" | "Location" | "Login" | "Measure" | "MeasureReport" | "Media" | "Medication" | "MedicationAdministration" | "MedicationDispense" | "MedicationKnowledge" | "MedicationRequest" | "MedicationStatement" | "MedicinalProduct" | "MedicinalProductAuthorization" | "MedicinalProductContraindication" | "MedicinalProductIndication" | "MedicinalProductIngredient" | "MedicinalProductInteraction" | "MedicinalProductManufactured" | "MedicinalProductPackaged" | "MedicinalProductPharmaceutical" | "MedicinalProductUndesirableEffect" | "MessageDefinition" | "MessageHeader" | "MolecularSequence" | "NamingSystem" | "NutritionOrder" | "ObservationDefinition" | "OperationDefinition" | "OperationOutcome" | "Organization" | "OrganizationAffiliation" | "Parameters" | "PasswordChangeRequest" | "PaymentNotice" | "PaymentReconciliation" | "Person" | "PlanDefinition" | "PractitionerRole" | "Procedure" | "Project" | "ProjectMembership" | "Provenance" | "Questionnaire" | "QuestionnaireResponse" | "RequestGroup" | "ResearchDefinition" | "ResearchElementDefinition" | "ResearchStudy" | "ResearchSubject" | "RiskAssessment" | "RiskEvidenceSynthesis" | "Schedule" | "SearchParameter" | "ServiceRequest" | "Slot" | "SmartAppLaunch" | "Specimen" | "SpecimenDefinition" | "StructureDefinition" | "StructureMap" | "Subscription" | "Substance" | "SubstanceNucleicAcid" | "SubstancePolymer" | "SubstanceProtein" | "SubstanceReferenceInformation" | "SubstanceSourceMaterial" | "SubstanceSpecification" | "SupplyDelivery" | "SupplyRequest" | "Task" | "TerminologyCapabilities" | "TestReport" | "TestScript" | "User" | "UserConfiguration" | "ValueSet" | "VerificationResult" | "VisionPrescription" |
Parameters
Name | Type | Description |
---|---|---|
resourceType | K | The FHIR resource type. |
id | string | The resource ID. |
operations | PatchOperation [] | The JSONPatch operations. |
options? | RequestInit | Optional fetch options. |
Returns
Promise
<ExtractResource
<K
>>
The result of the patch operations.
Defined in
packages/core/src/client.ts:1884
Create
createResource
▸ createResource<T
>(resource
, options?
): Promise
<T
>
Creates a new FHIR resource.
The return value is the newly created resource, including the ID and meta.
Example:
const result = await medplum.createResource({
resourceType: 'Patient',
name: [{
family: 'Smith',
given: ['John']
}]
});
console.log(result.id);
See the FHIR "create" operation for full details: https://www.hl7.org/fhir/http.html#create
Type parameters
Name | Type |
---|---|
T | extends Resource |
Parameters
Name | Type | Description |
---|---|---|
resource | T | The FHIR resource to create. |
options? | RequestInit | Optional fetch options. |
Returns
Promise
<T
>
The result of the create operation.
Defined in
packages/core/src/client.ts:1568
createResourceIfNoneExist
▸ createResourceIfNoneExist<T
>(resource
, query
, options?
): Promise
<T
>
Conditionally create a new FHIR resource only if some equivalent resource does not already exist on the server.
The return value is the existing resource or the newly created resource, including the ID and meta.
Example:
const result = await medplum.createResourceIfNoneExist(
{
resourceType: 'Patient',
identifier: [{
system: 'http://example.com/mrn',
value: '123'
}]
name: [{
family: 'Smith',
given: ['John']
}]
},
'identifier=123'
);
console.log(result.id);
This method is syntactic sugar for:
return searchOne(resourceType, query) ?? createResource(resource);
The query parameter only contains the search parameters (what would be in the URL following the "?").
See the FHIR "conditional create" operation for full details: https://www.hl7.org/fhir/http.html#ccreate
Type parameters
Name | Type |
---|---|
T | extends Resource |
Parameters
Name | Type | Description |
---|---|---|
resource | T | The FHIR resource to create. |
query | string | The search query for an equivalent resource (should not include resource type or "?"). |
options? | RequestInit | Optional fetch options. |
Returns
Promise
<T
>
The result of the create operation.
Defined in
packages/core/src/client.ts:1616
createAttachment
▸ createAttachment(data
, filename
, contentType
, onProgress?
): Promise
<Attachment
>
Creates a FHIR Attachment
with the provided data content.
This is a convenience method for creating a Binary
resource and then creating an Attachment
element.
The data
parameter can be a string or a File
object.
A File
object often comes from a <input type="file">
element.
Example:
const result = await medplum.createAttachment(myFile, 'test.jpg', 'image/jpeg');
console.log(result);
See the FHIR "create" operation for full details: https://www.hl7.org/fhir/http.html#create
Parameters
Name | Type | Description |
---|---|---|
data | BinarySource | The binary data to upload. |
filename | undefined | string | Optional filename for the binary. |
contentType | string | Content type for the binary. |
onProgress? | (e : ProgressEvent <EventTarget >) => void | Optional callback for progress events. |
Returns
Promise
<Attachment
>
The result of the create operation.
Defined in
packages/core/src/client.ts:1645
createBinary
▸ createBinary(data
, filename
, contentType
, onProgress?
): Promise
<Binary
>
Creates a FHIR Binary
resource with the provided data content.
The return value is the newly created resource, including the ID and meta.
The data
parameter can be a string or a File
object.
A File
object often comes from a <input type="file">
element.
Example:
const result = await medplum.createBinary(myFile, 'test.jpg', 'image/jpeg');
console.log(result.id);
See the FHIR "create" operation for full details: https://www.hl7.org/fhir/http.html#create
Parameters
Name | Type | Description |
---|---|---|
data | BinarySource | The binary data to upload. |
filename | undefined | string | Optional filename for the binary. |
contentType | string | Content type for the binary. |
onProgress? | (e : ProgressEvent <EventTarget >) => void | Optional callback for progress events. |
Returns
Promise
<Binary
>
The result of the create operation.
Defined in
packages/core/src/client.ts:1683
createComment
▸ createComment(resource
, text
, options?
): Promise
<Communication
>
Creates a FHIR Communication
resource with the provided data content.
This is a convenience method to handle commmon cases where a Communication
resource is created with a payload
.
Parameters
Name | Type | Description |
---|---|---|
resource | Resource | The FHIR resource to comment on. |
text | string | The text of the comment. |
options? | RequestInit | Optional fetch options. |
Returns
Promise
<Communication
>
The result of the create operation.
Defined in
packages/core/src/client.ts:1783
Delete
deleteResource
▸ deleteResource(resourceType
, id
, options?
): Promise
<any
>
Deletes a FHIR resource by resource type and ID.
Example:
await medplum.deleteResource('Patient', '123');
See the FHIR "delete" operation for full details: https://www.hl7.org/fhir/http.html#delete
Parameters
Name | Type | Description |
---|---|---|
resourceType | "Observation" | "Patient" | "Practitioner" | "RelatedPerson" | "AccessPolicy" | "Account" | "ActivityDefinition" | "AdverseEvent" | "Agent" | "AllergyIntolerance" | "Appointment" | "AppointmentResponse" | "AsyncJob" | "AuditEvent" | "Basic" | "Binary" | "BiologicallyDerivedProduct" | "BodyStructure" | "Bot" | "BulkDataExport" | "Bundle" | "CapabilityStatement" | "CarePlan" | "CareTeam" | "CatalogEntry" | "ChargeItem" | "ChargeItemDefinition" | "Claim" | "ClaimResponse" | "ClientApplication" | "ClinicalImpression" | "CodeSystem" | "Communication" | "CommunicationRequest" | "CompartmentDefinition" | "Composition" | "ConceptMap" | "Condition" | "Consent" | "Contract" | "Coverage" | "CoverageEligibilityRequest" | "CoverageEligibilityResponse" | "DetectedIssue" | "Device" | "DeviceDefinition" | "DeviceMetric" | "DeviceRequest" | "DeviceUseStatement" | "DiagnosticReport" | "DocumentManifest" | "DocumentReference" | "DomainConfiguration" | "EffectEvidenceSynthesis" | "Encounter" | "Endpoint" | "EnrollmentRequest" | "EnrollmentResponse" | "EpisodeOfCare" | "EventDefinition" | "Evidence" | "EvidenceVariable" | "ExampleScenario" | "ExplanationOfBenefit" | "FamilyMemberHistory" | "Flag" | "Goal" | "GraphDefinition" | "Group" | "GuidanceResponse" | "HealthcareService" | "ImagingStudy" | "Immunization" | "ImmunizationEvaluation" | "ImmunizationRecommendation" | "ImplementationGuide" | "InsurancePlan" | "Invoice" | "JsonWebKey" | "Library" | "Linkage" | "List" | "Location" | "Login" | "Measure" | "MeasureReport" | "Media" | "Medication" | "MedicationAdministration" | "MedicationDispense" | "MedicationKnowledge" | "MedicationRequest" | "MedicationStatement" | "MedicinalProduct" | "MedicinalProductAuthorization" | "MedicinalProductContraindication" | "MedicinalProductIndication" | "MedicinalProductIngredient" | "MedicinalProductInteraction" | "MedicinalProductManufactured" | "MedicinalProductPackaged" | "MedicinalProductPharmaceutical" | "MedicinalProductUndesirableEffect" | "MessageDefinition" | "MessageHeader" | "MolecularSequence" | "NamingSystem" | "NutritionOrder" | "ObservationDefinition" | "OperationDefinition" | "OperationOutcome" | "Organization" | "OrganizationAffiliation" | "Parameters" | "PasswordChangeRequest" | "PaymentNotice" | "PaymentReconciliation" | "Person" | "PlanDefinition" | "PractitionerRole" | "Procedure" | "Project" | "ProjectMembership" | "Provenance" | "Questionnaire" | "QuestionnaireResponse" | "RequestGroup" | "ResearchDefinition" | "ResearchElementDefinition" | "ResearchStudy" | "ResearchSubject" | "RiskAssessment" | "RiskEvidenceSynthesis" | "Schedule" | "SearchParameter" | "ServiceRequest" | "Slot" | "SmartAppLaunch" | "Specimen" | "SpecimenDefinition" | "StructureDefinition" | "StructureMap" | "Subscription" | "Substance" | "SubstanceNucleicAcid" | "SubstancePolymer" | "SubstanceProtein" | "SubstanceReferenceInformation" | "SubstanceSourceMaterial" | "SubstanceSpecification" | "SupplyDelivery" | "SupplyRequest" | "Task" | "TerminologyCapabilities" | "TestReport" | "TestScript" | "User" | "UserConfiguration" | "ValueSet" | "VerificationResult" | "VisionPrescription" | The FHIR resource type. |
id | string | The resource ID. |
options? | RequestInit | Optional fetch options. |
Returns
Promise
<any
>
The result of the delete operation.
Defined in
packages/core/src/client.ts:1910
Media
createPdf
▸ createPdf(docDefinition
, filename?
, tableLayouts?
, fonts?
): Promise
<Binary
>
Creates a PDF as a FHIR Binary
resource based on pdfmake document definition.
The return value is the newly created resource, including the ID and meta.
The docDefinition
parameter is a pdfmake document definition.
Example:
const result = await medplum.createPdf({
content: ['Hello world']
});
console.log(result.id);
See the pdfmake document definition for full details: https://pdfmake.github.io/docs/0.1/document-definition-object/
Parameters
Name | Type | Description |
---|---|---|
docDefinition | TDocumentDefinitions | The PDF document definition. |
filename? | string | Optional filename for the PDF binary resource. |
tableLayouts? | Record <string , CustomTableLayout > | Optional pdfmake custom table layout. |
fonts? | TFontDictionary | Optional pdfmake custom font dictionary. |
Returns
Promise
<Binary
>
The result of the create operation.
Defined in
packages/core/src/client.ts:1760
sendEmail
▸ sendEmail(email
, options?
): Promise
<OperationOutcome
>
Sends an email using the Medplum Email API.
Builds the email using nodemailer MailComposer.
Examples:
Send a simple text email:
await medplum.sendEmail({
to: 'alice@example.com',
cc: 'bob@example.com',
subject: 'Hello',
text: 'Hello Alice',
});
Send an email with a Binary
attachment:
await medplum.sendEmail({
to: 'alice@example.com',
subject: 'Email with attachment',
text: 'See the attached report',
attachments: [{
filename: 'report.pdf',
path: "Binary/" + binary.id
}]
});
See options here: https://nodemailer.com/extras/mailcomposer/
Parameters
Name | Type | Description |
---|---|---|
email | MailOptions | The MailComposer options. |
options? | RequestInit | Optional fetch options. |
Returns
Promise
<OperationOutcome
>
Promise to the operation outcome.
Defined in
packages/core/src/client.ts:2052
Authentication
clear
▸ clear(): void
Clears all auth state including local storage and session storage.
Returns
void
Defined in
packages/core/src/client.ts:661
clearActiveLogin
▸ clearActiveLogin(): void
Clears the active login from local storage. Does not clear all local storage (such as other logins).
Returns
void
Defined in
packages/core/src/client.ts:671
startNewUser
▸ startNewUser(newUserRequest
, options?
): Promise
<LoginAuthenticationResponse
>
Initiates a new user flow.
This method is part of the two different user registration flows: 1) New Practitioner and new Project 2) New Patient registration
Parameters
Name | Type | Description |
---|---|---|
newUserRequest | NewUserRequest | Register request including email and password. |
options? | RequestInit | Optional fetch options. |
Returns
Promise
<LoginAuthenticationResponse
>
Promise to the authentication response.
Defined in
packages/core/src/client.ts:856
startLogin
▸ startLogin(loginRequest
, options?
): Promise
<LoginAuthenticationResponse
>
Initiates a user login flow.
Parameters
Name | Type | Description |
---|---|---|
loginRequest | EmailPasswordLoginRequest | Login request including email and password. |
options? | RequestInit | Optional fetch options. |
Returns
Promise
<LoginAuthenticationResponse
>
Promise to the authentication response.
Defined in
packages/core/src/client.ts:908
startGoogleLogin
▸ startGoogleLogin(loginRequest
, options?
): Promise
<LoginAuthenticationResponse
>
Tries to sign in with Google authentication. The response parameter is the result of a Google authentication. See: https://developers.google.com/identity/gsi/web/guides/handle-credential-responses-js-functions
Parameters
Name | Type | Description |
---|---|---|
loginRequest | GoogleLoginRequest | Login request including Google credential response. |
options? | RequestInit | Optional fetch options. |
Returns
Promise
<LoginAuthenticationResponse
>
Promise to the authentication response.
Defined in
packages/core/src/client.ts:933
ensureCodeChallenge
▸ ensureCodeChallenge<T
>(loginRequest
): Promise
<T
>
Returns the PKCE code challenge and method. If the login request already includes a code challenge, it is returned. Otherwise, a new PKCE code challenge is generated.
Type parameters
Name | Type |
---|---|
T | extends BaseLoginRequest |
Parameters
Name | Type | Description |
---|---|---|
loginRequest | T | The original login request. |
Returns
Promise
<T
>
The PKCE code challenge and method.
Defined in
packages/core/src/client.ts:957
signOut
▸ signOut(): Promise
<void
>
Signs out locally. Does not invalidate tokens with the server.
Returns
Promise
<void
>
Defined in
packages/core/src/client.ts:969
signInWithRedirect
▸ signInWithRedirect(loginParams?
): Promise
<undefined
| ProfileResource
>
Tries to sign in the user. Returns true if the user is signed in. This may result in navigating away to the sign in page.
Parameters
Name | Type | Description |
---|---|---|
loginParams? | Partial <BaseLoginRequest > | Optional login parameters. |
Returns
Promise
<undefined
| ProfileResource
>
The user profile resource if available.
Defined in
packages/core/src/client.ts:982
signOutWithRedirect
▸ signOutWithRedirect(): void
Tries to sign out the user. See: https://docs.aws.amazon.com/cognito/latest/developerguide/logout-endpoint.html
Returns
void
Defined in
packages/core/src/client.ts:998
signInWithExternalAuth
▸ signInWithExternalAuth(authorizeUrl
, clientId
, redirectUri
, baseLogin
): Promise
<void
>
Initiates sign in with an external identity provider.
Parameters
Name | Type | Description |
---|---|---|
authorizeUrl | string | The external authorization URL. |
clientId | string | The external client ID. |
redirectUri | string | The external identity provider redirect URI. |
baseLogin | BaseLoginRequest | The Medplum login request. |
Returns
Promise
<void
>
Defined in
packages/core/src/client.ts:1010
exchangeExternalAccessToken
▸ exchangeExternalAccessToken(token
, clientId?
): Promise
<ProfileResource
>
Exchange an external access token for a Medplum access token.
Parameters
Name | Type | Description |
---|---|---|
token | string | The access token that was generated by the external identity provider. |
clientId? | string | The ID of the ClientApplication in your Medplum project that will be making the exchange request. |
Returns
Promise
<ProfileResource
>
The user profile resource.
Defined in
packages/core/src/client.ts:1027
getExternalAuthRedirectUri
▸ getExternalAuthRedirectUri(authorizeUrl
, clientId
, redirectUri
, loginRequest
): string
Builds the external identity provider redirect URI.
Parameters
Name | Type | Description |
---|---|---|
authorizeUrl | string | The external authorization URL. |
clientId | string | The external client ID. |
redirectUri | string | The external identity provider redirect URI. |
loginRequest | BaseLoginRequest | The Medplum login request. |
Returns
string
The external identity provider redirect URI.
Defined in
packages/core/src/client.ts:1050
getActiveLogin
▸ getActiveLogin(): undefined
| LoginState
Returns
undefined
| LoginState
The Login State
Defined in
packages/core/src/client.ts:2131
setActiveLogin
▸ setActiveLogin(login
): Promise
<void
>
Sets the active login.
Parameters
Name | Type | Description |
---|---|---|
login | LoginState | The new active login state. |
Returns
Promise
<void
>
Defined in
packages/core/src/client.ts:2140
getAccessToken
▸ getAccessToken(): undefined
| string
Returns the current access token.
Returns
undefined
| string
The current access token.
Defined in
packages/core/src/client.ts:2154
setAccessToken
▸ setAccessToken(accessToken
, refreshToken?
): void
Sets the current access token.
Parameters
Name | Type | Description |
---|---|---|
accessToken | string | The new access token. |
refreshToken? | string | Optional refresh token. |
Returns
void
Defined in
packages/core/src/client.ts:2164
getLogins
▸ getLogins(): LoginState
[]
Returns the list of available logins.
Returns
The list of available logins.
Defined in
packages/core/src/client.ts:2176
isLoading
▸ isLoading(): boolean
Returns true if the client is waiting for authentication.
Returns
boolean
True if the client is waiting for authentication.
Defined in
packages/core/src/client.ts:2209
isSuperAdmin
▸ isSuperAdmin(): boolean
Returns true if the current user is authenticated as a super admin.
Returns
boolean
True if the current user is authenticated as a super admin.
Defined in
packages/core/src/client.ts:2218
isProjectAdmin
▸ isProjectAdmin(): boolean
Returns true if the current user is authenticated as a project admin.
Returns
boolean
True if the current user is authenticated as a project admin.
Defined in
packages/core/src/client.ts:2227
startPkce
▸ startPkce(): Promise
<{ codeChallengeMethod
: string
; codeChallenge
: string
}>
Starts a new PKCE flow. These PKCE values are stateful, and must survive redirects and page refreshes.
Returns
Promise
<{ codeChallengeMethod
: string
; codeChallenge
: string
}>
The PKCE code challenge details.
Defined in
packages/core/src/client.ts:2713
processCode
▸ processCode(code
, loginParams?
): Promise
<ProfileResource
>
Processes an OAuth authorization code. See: https://openid.net/specs/openid-connect-core-1_0.html#TokenRequest
Parameters
Name | Type | Description |
---|---|---|
code | string | The authorization code received by URL parameter. |
loginParams? | Partial <BaseLoginRequest > | Optional login parameters. |
Returns
Promise
<ProfileResource
>
The user profile resource.
Defined in
packages/core/src/client.ts:2754
startClientLogin
▸ startClientLogin(clientId
, clientSecret
): Promise
<ProfileResource
>
Starts a new OAuth2 client credentials flow.
await medplum.startClientLogin(process.env.MEDPLUM_CLIENT_ID, process.env.MEDPLUM_CLIENT_SECRET)
// Example Search
await medplum.searchResources('Patient')
See: https://datatracker.ietf.org/doc/html/rfc6749#section-4.4
Parameters
Name | Type | Description |
---|---|---|
clientId | string | The client ID. |
clientSecret | string | The client secret. |
Returns
Promise
<ProfileResource
>
Promise that resolves to the client profile.
Defined in
packages/core/src/client.ts:2813
setBasicAuth
▸ setBasicAuth(clientId
, clientSecret
): void
Sets the client ID and secret for basic auth.
medplum.setBasicAuth(process.env.MEDPLUM_CLIENT_ID, process.env.MEDPLUM_CLIENT_SECRET)
// Example Search
await medplum.searchResources('Patient')
Parameters
Name | Type | Description |
---|---|---|
clientId | string | The client ID. |
clientSecret | string | The client secret. |
Returns
void
Defined in
packages/core/src/client.ts:2862
Search
fhirSearchUrl
▸ fhirSearchUrl(resourceType
, query
): URL
Builds a FHIR search URL from a search query or structured query object.
Parameters
Name | Type | Description |
---|---|---|
resourceType | "Observation" | "Patient" | "Practitioner" | "RelatedPerson" | "AccessPolicy" | "Account" | "ActivityDefinition" | "AdverseEvent" | "Agent" | "AllergyIntolerance" | "Appointment" | "AppointmentResponse" | "AsyncJob" | "AuditEvent" | "Basic" | "Binary" | "BiologicallyDerivedProduct" | "BodyStructure" | "Bot" | "BulkDataExport" | "Bundle" | "CapabilityStatement" | "CarePlan" | "CareTeam" | "CatalogEntry" | "ChargeItem" | "ChargeItemDefinition" | "Claim" | "ClaimResponse" | "ClientApplication" | "ClinicalImpression" | "CodeSystem" | "Communication" | "CommunicationRequest" | "CompartmentDefinition" | "Composition" | "ConceptMap" | "Condition" | "Consent" | "Contract" | "Coverage" | "CoverageEligibilityRequest" | "CoverageEligibilityResponse" | "DetectedIssue" | "Device" | "DeviceDefinition" | "DeviceMetric" | "DeviceRequest" | "DeviceUseStatement" | "DiagnosticReport" | "DocumentManifest" | "DocumentReference" | "DomainConfiguration" | "EffectEvidenceSynthesis" | "Encounter" | "Endpoint" | "EnrollmentRequest" | "EnrollmentResponse" | "EpisodeOfCare" | "EventDefinition" | "Evidence" | "EvidenceVariable" | "ExampleScenario" | "ExplanationOfBenefit" | "FamilyMemberHistory" | "Flag" | "Goal" | "GraphDefinition" | "Group" | "GuidanceResponse" | "HealthcareService" | "ImagingStudy" | "Immunization" | "ImmunizationEvaluation" | "ImmunizationRecommendation" | "ImplementationGuide" | "InsurancePlan" | "Invoice" | "JsonWebKey" | "Library" | "Linkage" | "List" | "Location" | "Login" | "Measure" | "MeasureReport" | "Media" | "Medication" | "MedicationAdministration" | "MedicationDispense" | "MedicationKnowledge" | "MedicationRequest" | "MedicationStatement" | "MedicinalProduct" | "MedicinalProductAuthorization" | "MedicinalProductContraindication" | "MedicinalProductIndication" | "MedicinalProductIngredient" | "MedicinalProductInteraction" | "MedicinalProductManufactured" | "MedicinalProductPackaged" | "MedicinalProductPharmaceutical" | "MedicinalProductUndesirableEffect" | "MessageDefinition" | "MessageHeader" | "MolecularSequence" | "NamingSystem" | "NutritionOrder" | "ObservationDefinition" | "OperationDefinition" | "OperationOutcome" | "Organization" | "OrganizationAffiliation" | "Parameters" | "PasswordChangeRequest" | "PaymentNotice" | "PaymentReconciliation" | "Person" | "PlanDefinition" | "PractitionerRole" | "Procedure" | "Project" | "ProjectMembership" | "Provenance" | "Questionnaire" | "QuestionnaireResponse" | "RequestGroup" | "ResearchDefinition" | "ResearchElementDefinition" | "ResearchStudy" | "ResearchSubject" | "RiskAssessment" | "RiskEvidenceSynthesis" | "Schedule" | "SearchParameter" | "ServiceRequest" | "Slot" | "SmartAppLaunch" | "Specimen" | "SpecimenDefinition" | "StructureDefinition" | "StructureMap" | "Subscription" | "Substance" | "SubstanceNucleicAcid" | "SubstancePolymer" | "SubstanceProtein" | "SubstanceReferenceInformation" | "SubstanceSourceMaterial" | "SubstanceSpecification" | "SupplyDelivery" | "SupplyRequest" | "Task" | "TerminologyCapabilities" | "TestReport" | "TestScript" | "User" | "UserConfiguration" | "ValueSet" | "VerificationResult" | "VisionPrescription" | The FHIR resource type. |
query | QueryTypes | The FHIR search query or structured query object. Can be any valid input to the URLSearchParams() constructor. |
Returns
URL
The well-formed FHIR URL.
Defined in
packages/core/src/client.ts:1084
search
▸ search<K
>(resourceType
, query?
, options?
): ReadablePromise
<Bundle
<ExtractResource
<K
>>>
Sends a FHIR search request.
Example using a FHIR search string:
const bundle = await client.search('Patient', 'name=Alice');
console.log(bundle);
The return value is a FHIR bundle:
{
"resourceType": "Bundle",
"type": "searchset",
"entry": [
{
"resource": {
"resourceType": "Patient",
"name": [
{
"given": [
"George"
],
"family": "Washington"
}
],
}
}
]
}
To query the count of a search, use the summary feature like so:
const patients = medplum.search('Patient', '_summary=count');
See FHIR search for full details: https://www.hl7.org/fhir/search.html
Type parameters
Name | Type |
---|---|
K | extends "Observation" | "Patient" | "Practitioner" | "RelatedPerson" | "AccessPolicy" | "Account" | "ActivityDefinition" | "AdverseEvent" | "Agent" | "AllergyIntolerance" | "Appointment" | "AppointmentResponse" | "AsyncJob" | "AuditEvent" | "Basic" | "Binary" | "BiologicallyDerivedProduct" | "BodyStructure" | "Bot" | "BulkDataExport" | "Bundle" | "CapabilityStatement" | "CarePlan" | "CareTeam" | "CatalogEntry" | "ChargeItem" | "ChargeItemDefinition" | "Claim" | "ClaimResponse" | "ClientApplication" | "ClinicalImpression" | "CodeSystem" | "Communication" | "CommunicationRequest" | "CompartmentDefinition" | "Composition" | "ConceptMap" | "Condition" | "Consent" | "Contract" | "Coverage" | "CoverageEligibilityRequest" | "CoverageEligibilityResponse" | "DetectedIssue" | "Device" | "DeviceDefinition" | "DeviceMetric" | "DeviceRequest" | "DeviceUseStatement" | "DiagnosticReport" | "DocumentManifest" | "DocumentReference" | "DomainConfiguration" | "EffectEvidenceSynthesis" | "Encounter" | "Endpoint" | "EnrollmentRequest" | "EnrollmentResponse" | "EpisodeOfCare" | "EventDefinition" | "Evidence" | "EvidenceVariable" | "ExampleScenario" | "ExplanationOfBenefit" | "FamilyMemberHistory" | "Flag" | "Goal" | "GraphDefinition" | "Group" | "GuidanceResponse" | "HealthcareService" | "ImagingStudy" | "Immunization" | "ImmunizationEvaluation" | "ImmunizationRecommendation" | "ImplementationGuide" | "InsurancePlan" | "Invoice" | "JsonWebKey" | "Library" | "Linkage" | "List" | "Location" | "Login" | "Measure" | "MeasureReport" | "Media" | "Medication" | "MedicationAdministration" | "MedicationDispense" | "MedicationKnowledge" | "MedicationRequest" | "MedicationStatement" | "MedicinalProduct" | "MedicinalProductAuthorization" | "MedicinalProductContraindication" | "MedicinalProductIndication" | "MedicinalProductIngredient" | "MedicinalProductInteraction" | "MedicinalProductManufactured" | "MedicinalProductPackaged" | "MedicinalProductPharmaceutical" | "MedicinalProductUndesirableEffect" | "MessageDefinition" | "MessageHeader" | "MolecularSequence" | "NamingSystem" | "NutritionOrder" | "ObservationDefinition" | "OperationDefinition" | "OperationOutcome" | "Organization" | "OrganizationAffiliation" | "Parameters" | "PasswordChangeRequest" | "PaymentNotice" | "PaymentReconciliation" | "Person" | "PlanDefinition" | "PractitionerRole" | "Procedure" | "Project" | "ProjectMembership" | "Provenance" | "Questionnaire" | "QuestionnaireResponse" | "RequestGroup" | "ResearchDefinition" | "ResearchElementDefinition" | "ResearchStudy" | "ResearchSubject" | "RiskAssessment" | "RiskEvidenceSynthesis" | "Schedule" | "SearchParameter" | "ServiceRequest" | "Slot" | "SmartAppLaunch" | "Specimen" | "SpecimenDefinition" | "StructureDefinition" | "StructureMap" | "Subscription" | "Substance" | "SubstanceNucleicAcid" | "SubstancePolymer" | "SubstanceProtein" | "SubstanceReferenceInformation" | "SubstanceSourceMaterial" | "SubstanceSpecification" | "SupplyDelivery" | "SupplyRequest" | "Task" | "TerminologyCapabilities" | "TestReport" | "TestScript" | "User" | "UserConfiguration" | "ValueSet" | "VerificationResult" | "VisionPrescription" |
Parameters
Name | Type | Description |
---|---|---|
resourceType | K | The FHIR resource type. |
query? | QueryTypes | Optional FHIR search query or structured query object. Can be any valid input to the URLSearchParams() constructor. |
options? | RequestInit | Optional fetch options. |
Returns
ReadablePromise
<Bundle
<ExtractResource
<K
>>>
Promise to the search result bundle.
Defined in
packages/core/src/client.ts:1139
searchOne
▸ searchOne<K
>(resourceType
, query?
, options?
): ReadablePromise
<undefined
| ExtractResource
<K
>>
Sends a FHIR search request for a single resource.
This is a convenience method for search()
that returns the first resource rather than a Bundle
.
Example using a FHIR search string:
const patient = await client.searchOne('Patient', 'identifier=123');
console.log(patient);
The return value is the resource, if available; otherwise, undefined.
See FHIR search for full details: https://www.hl7.org/fhir/search.html
Type parameters
Name | Type |
---|---|
K | extends "Observation" | "Patient" | "Practitioner" | "RelatedPerson" | "AccessPolicy" | "Account" | "ActivityDefinition" | "AdverseEvent" | "Agent" | "AllergyIntolerance" | "Appointment" | "AppointmentResponse" | "AsyncJob" | "AuditEvent" | "Basic" | "Binary" | "BiologicallyDerivedProduct" | "BodyStructure" | "Bot" | "BulkDataExport" | "Bundle" | "CapabilityStatement" | "CarePlan" | "CareTeam" | "CatalogEntry" | "ChargeItem" | "ChargeItemDefinition" | "Claim" | "ClaimResponse" | "ClientApplication" | "ClinicalImpression" | "CodeSystem" | "Communication" | "CommunicationRequest" | "CompartmentDefinition" | "Composition" | "ConceptMap" | "Condition" | "Consent" | "Contract" | "Coverage" | "CoverageEligibilityRequest" | "CoverageEligibilityResponse" | "DetectedIssue" | "Device" | "DeviceDefinition" | "DeviceMetric" | "DeviceRequest" | "DeviceUseStatement" | "DiagnosticReport" | "DocumentManifest" | "DocumentReference" | "DomainConfiguration" | "EffectEvidenceSynthesis" | "Encounter" | "Endpoint" | "EnrollmentRequest" | "EnrollmentResponse" | "EpisodeOfCare" | "EventDefinition" | "Evidence" | "EvidenceVariable" | "ExampleScenario" | "ExplanationOfBenefit" | "FamilyMemberHistory" | "Flag" | "Goal" | "GraphDefinition" | "Group" | "GuidanceResponse" | "HealthcareService" | "ImagingStudy" | "Immunization" | "ImmunizationEvaluation" | "ImmunizationRecommendation" | "ImplementationGuide" | "InsurancePlan" | "Invoice" | "JsonWebKey" | "Library" | "Linkage" | "List" | "Location" | "Login" | "Measure" | "MeasureReport" | "Media" | "Medication" | "MedicationAdministration" | "MedicationDispense" | "MedicationKnowledge" | "MedicationRequest" | "MedicationStatement" | "MedicinalProduct" | "MedicinalProductAuthorization" | "MedicinalProductContraindication" | "MedicinalProductIndication" | "MedicinalProductIngredient" | "MedicinalProductInteraction" | "MedicinalProductManufactured" | "MedicinalProductPackaged" | "MedicinalProductPharmaceutical" | "MedicinalProductUndesirableEffect" | "MessageDefinition" | "MessageHeader" | "MolecularSequence" | "NamingSystem" | "NutritionOrder" | "ObservationDefinition" | "OperationDefinition" | "OperationOutcome" | "Organization" | "OrganizationAffiliation" | "Parameters" | "PasswordChangeRequest" | "PaymentNotice" | "PaymentReconciliation" | "Person" | "PlanDefinition" | "PractitionerRole" | "Procedure" | "Project" | "ProjectMembership" | "Provenance" | "Questionnaire" | "QuestionnaireResponse" | "RequestGroup" | "ResearchDefinition" | "ResearchElementDefinition" | "ResearchStudy" | "ResearchSubject" | "RiskAssessment" | "RiskEvidenceSynthesis" | "Schedule" | "SearchParameter" | "ServiceRequest" | "Slot" | "SmartAppLaunch" | "Specimen" | "SpecimenDefinition" | "StructureDefinition" | "StructureMap" | "Subscription" | "Substance" | "SubstanceNucleicAcid" | "SubstancePolymer" | "SubstanceProtein" | "SubstanceReferenceInformation" | "SubstanceSourceMaterial" | "SubstanceSpecification" | "SupplyDelivery" | "SupplyRequest" | "Task" | "TerminologyCapabilities" | "TestReport" | "TestScript" | "User" | "UserConfiguration" | "ValueSet" | "VerificationResult" | "VisionPrescription" |
Parameters
Name | Type | Description |
---|---|---|
resourceType | K | The FHIR resource type. |
query? | QueryTypes | Optional FHIR search query or structured query object. Can be any valid input to the URLSearchParams() constructor. |
options? | RequestInit | Optional fetch options. |
Returns
ReadablePromise
<undefined
| ExtractResource
<K
>>
Promise to the first search result.
Defined in
packages/core/src/client.ts:1186
searchResources
▸ searchResources<K
>(resourceType
, query?
, options?
): ReadablePromise
<ResourceArray
<ExtractResource
<K
>>>
Sends a FHIR search request for an array of resources.
This is a convenience method for search()
that returns the resources as an array rather than a Bundle
.
Example using a FHIR search string:
const patients = await client.searchResources('Patient', 'name=Alice');
console.log(patients);
The return value is an array of resources.
See FHIR search for full details: https://www.hl7.org/fhir/search.html
Type parameters
Name | Type |
---|---|
K | extends "Observation" | "Patient" | "Practitioner" | "RelatedPerson" | "AccessPolicy" | "Account" | "ActivityDefinition" | "AdverseEvent" | "Agent" | "AllergyIntolerance" | "Appointment" | "AppointmentResponse" | "AsyncJob" | "AuditEvent" | "Basic" | "Binary" | "BiologicallyDerivedProduct" | "BodyStructure" | "Bot" | "BulkDataExport" | "Bundle" | "CapabilityStatement" | "CarePlan" | "CareTeam" | "CatalogEntry" | "ChargeItem" | "ChargeItemDefinition" | "Claim" | "ClaimResponse" | "ClientApplication" | "ClinicalImpression" | "CodeSystem" | "Communication" | "CommunicationRequest" | "CompartmentDefinition" | "Composition" | "ConceptMap" | "Condition" | "Consent" | "Contract" | "Coverage" | "CoverageEligibilityRequest" | "CoverageEligibilityResponse" | "DetectedIssue" | "Device" | "DeviceDefinition" | "DeviceMetric" | "DeviceRequest" | "DeviceUseStatement" | "DiagnosticReport" | "DocumentManifest" | "DocumentReference" | "DomainConfiguration" | "EffectEvidenceSynthesis" | "Encounter" | "Endpoint" | "EnrollmentRequest" | "EnrollmentResponse" | "EpisodeOfCare" | "EventDefinition" | "Evidence" | "EvidenceVariable" | "ExampleScenario" | "ExplanationOfBenefit" | "FamilyMemberHistory" | "Flag" | "Goal" | "GraphDefinition" | "Group" | "GuidanceResponse" | "HealthcareService" | "ImagingStudy" | "Immunization" | "ImmunizationEvaluation" | "ImmunizationRecommendation" | "ImplementationGuide" | "InsurancePlan" | "Invoice" | "JsonWebKey" | "Library" | "Linkage" | "List" | "Location" | "Login" | "Measure" | "MeasureReport" | "Media" | "Medication" | "MedicationAdministration" | "MedicationDispense" | "MedicationKnowledge" | "MedicationRequest" | "MedicationStatement" | "MedicinalProduct" | "MedicinalProductAuthorization" | "MedicinalProductContraindication" | "MedicinalProductIndication" | "MedicinalProductIngredient" | "MedicinalProductInteraction" | "MedicinalProductManufactured" | "MedicinalProductPackaged" | "MedicinalProductPharmaceutical" | "MedicinalProductUndesirableEffect" | "MessageDefinition" | "MessageHeader" | "MolecularSequence" | "NamingSystem" | "NutritionOrder" | "ObservationDefinition" | "OperationDefinition" | "OperationOutcome" | "Organization" | "OrganizationAffiliation" | "Parameters" | "PasswordChangeRequest" | "PaymentNotice" | "PaymentReconciliation" | "Person" | "PlanDefinition" | "PractitionerRole" | "Procedure" | "Project" | "ProjectMembership" | "Provenance" | "Questionnaire" | "QuestionnaireResponse" | "RequestGroup" | "ResearchDefinition" | "ResearchElementDefinition" | "ResearchStudy" | "ResearchSubject" | "RiskAssessment" | "RiskEvidenceSynthesis" | "Schedule" | "SearchParameter" | "ServiceRequest" | "Slot" | "SmartAppLaunch" | "Specimen" | "SpecimenDefinition" | "StructureDefinition" | "StructureMap" | "Subscription" | "Substance" | "SubstanceNucleicAcid" | "SubstancePolymer" | "SubstanceProtein" | "SubstanceReferenceInformation" | "SubstanceSourceMaterial" | "SubstanceSpecification" | "SupplyDelivery" | "SupplyRequest" | "Task" | "TerminologyCapabilities" | "TestReport" | "TestScript" | "User" | "UserConfiguration" | "ValueSet" | "VerificationResult" | "VisionPrescription" |
Parameters
Name | Type | Description |
---|---|---|
resourceType | K | The FHIR resource type. |
query? | QueryTypes | Optional FHIR search query or structured query object. Can be any valid input to the URLSearchParams() constructor. |
options? | RequestInit | Optional fetch options. |
Returns
ReadablePromise
<ResourceArray
<ExtractResource
<K
>>>
Promise to the array of search results.
Defined in
packages/core/src/client.ts:1227
searchResourcePages
▸ searchResourcePages<K
>(resourceType
, query?
, options?
): AsyncGenerator
<ResourceArray
<ExtractResource
<K
>>, any
, unknown
>
Creates an async generator over a series of FHIR search requests for paginated search results. Each iteration of the generator yields the array of resources on each page.
for await (const page of medplum.searchResourcePages('Patient', { _count: 10 })) {
for (const patient of page) {
console.log(`Processing Patient resource with ID: ${patient.id}`);
}
}
Type parameters
Name | Type |
---|---|
K | extends "Observation" | "Patient" | "Practitioner" | "RelatedPerson" | "AccessPolicy" | "Account" | "ActivityDefinition" | "AdverseEvent" | "Agent" | "AllergyIntolerance" | "Appointment" | "AppointmentResponse" | "AsyncJob" | "AuditEvent" | "Basic" | "Binary" | "BiologicallyDerivedProduct" | "BodyStructure" | "Bot" | "BulkDataExport" | "Bundle" | "CapabilityStatement" | "CarePlan" | "CareTeam" | "CatalogEntry" | "ChargeItem" | "ChargeItemDefinition" | "Claim" | "ClaimResponse" | "ClientApplication" | "ClinicalImpression" | "CodeSystem" | "Communication" | "CommunicationRequest" | "CompartmentDefinition" | "Composition" | "ConceptMap" | "Condition" | "Consent" | "Contract" | "Coverage" | "CoverageEligibilityRequest" | "CoverageEligibilityResponse" | "DetectedIssue" | "Device" | "DeviceDefinition" | "DeviceMetric" | "DeviceRequest" | "DeviceUseStatement" | "DiagnosticReport" | "DocumentManifest" | "DocumentReference" | "DomainConfiguration" | "EffectEvidenceSynthesis" | "Encounter" | "Endpoint" | "EnrollmentRequest" | "EnrollmentResponse" | "EpisodeOfCare" | "EventDefinition" | "Evidence" | "EvidenceVariable" | "ExampleScenario" | "ExplanationOfBenefit" | "FamilyMemberHistory" | "Flag" | "Goal" | "GraphDefinition" | "Group" | "GuidanceResponse" | "HealthcareService" | "ImagingStudy" | "Immunization" | "ImmunizationEvaluation" | "ImmunizationRecommendation" | "ImplementationGuide" | "InsurancePlan" | "Invoice" | "JsonWebKey" | "Library" | "Linkage" | "List" | "Location" | "Login" | "Measure" | "MeasureReport" | "Media" | "Medication" | "MedicationAdministration" | "MedicationDispense" | "MedicationKnowledge" | "MedicationRequest" | "MedicationStatement" | "MedicinalProduct" | "MedicinalProductAuthorization" | "MedicinalProductContraindication" | "MedicinalProductIndication" | "MedicinalProductIngredient" | "MedicinalProductInteraction" | "MedicinalProductManufactured" | "MedicinalProductPackaged" | "MedicinalProductPharmaceutical" | "MedicinalProductUndesirableEffect" | "MessageDefinition" | "MessageHeader" | "MolecularSequence" | "NamingSystem" | "NutritionOrder" | "ObservationDefinition" | "OperationDefinition" | "OperationOutcome" | "Organization" | "OrganizationAffiliation" | "Parameters" | "PasswordChangeRequest" | "PaymentNotice" | "PaymentReconciliation" | "Person" | "PlanDefinition" | "PractitionerRole" | "Procedure" | "Project" | "ProjectMembership" | "Provenance" | "Questionnaire" | "QuestionnaireResponse" | "RequestGroup" | "ResearchDefinition" | "ResearchElementDefinition" | "ResearchStudy" | "ResearchSubject" | "RiskAssessment" | "RiskEvidenceSynthesis" | "Schedule" | "SearchParameter" | "ServiceRequest" | "Slot" | "SmartAppLaunch" | "Specimen" | "SpecimenDefinition" | "StructureDefinition" | "StructureMap" | "Subscription" | "Substance" | "SubstanceNucleicAcid" | "SubstancePolymer" | "SubstanceProtein" | "SubstanceReferenceInformation" | "SubstanceSourceMaterial" | "SubstanceSpecification" | "SupplyDelivery" | "SupplyRequest" | "Task" | "TerminologyCapabilities" | "TestReport" | "TestScript" | "User" | "UserConfiguration" | "ValueSet" | "VerificationResult" | "VisionPrescription" |
Parameters
Name | Type | Description |
---|---|---|
resourceType | K | The FHIR resource type. |
query? | QueryTypes | Optional FHIR search query or structured query object. Can be any valid input to the URLSearchParams() constructor. |
options? | RequestInit | Optional fetch options. |
Returns
AsyncGenerator
<ResourceArray
<ExtractResource
<K
>>, any
, unknown
>
Yields
An async generator, where each result is an array of resources for each page.
Defined in
packages/core/src/client.ts:1263
searchValueSet
▸ searchValueSet(system
, filter
, options?
): ReadablePromise
<ValueSet
>
Searches a ValueSet resource using the "expand" operation. See: https://www.hl7.org/fhir/operation-valueset-expand.html
Parameters
Name | Type | Description |
---|---|---|
system | string | The ValueSet system url. |
filter | string | The search string. |
options? | RequestInit | Optional fetch options. |
Returns
ReadablePromise
<ValueSet
>
Promise to expanded ValueSet.
Defined in
packages/core/src/client.ts:1292
Caching
invalidateUrl
▸ invalidateUrl(url
): void
Invalidates any cached values or cached requests for the given URL.
Parameters
Name | Type | Description |
---|---|---|
url | string | URL | The URL to invalidate. |
Returns
void
Defined in
packages/core/src/client.ts:686
invalidateAll
▸ invalidateAll(): void
Invalidates all cached values and flushes the cache.
Returns
void
Defined in
packages/core/src/client.ts:695
invalidateSearches
▸ invalidateSearches<K
>(resourceType
): void
Invalidates all cached search results or cached requests for the given resourceType.
Type parameters
Name | Type |
---|---|
K | extends "Observation" | "Patient" | "Practitioner" | "RelatedPerson" | "AccessPolicy" | "Account" | "ActivityDefinition" | "AdverseEvent" | "Agent" | "AllergyIntolerance" | "Appointment" | "AppointmentResponse" | "AsyncJob" | "AuditEvent" | "Basic" | "Binary" | "BiologicallyDerivedProduct" | "BodyStructure" | "Bot" | "BulkDataExport" | "Bundle" | "CapabilityStatement" | "CarePlan" | "CareTeam" | "CatalogEntry" | "ChargeItem" | "ChargeItemDefinition" | "Claim" | "ClaimResponse" | "ClientApplication" | "ClinicalImpression" | "CodeSystem" | "Communication" | "CommunicationRequest" | "CompartmentDefinition" | "Composition" | "ConceptMap" | "Condition" | "Consent" | "Contract" | "Coverage" | "CoverageEligibilityRequest" | "CoverageEligibilityResponse" | "DetectedIssue" | "Device" | "DeviceDefinition" | "DeviceMetric" | "DeviceRequest" | "DeviceUseStatement" | "DiagnosticReport" | "DocumentManifest" | "DocumentReference" | "DomainConfiguration" | "EffectEvidenceSynthesis" | "Encounter" | "Endpoint" | "EnrollmentRequest" | "EnrollmentResponse" | "EpisodeOfCare" | "EventDefinition" | "Evidence" | "EvidenceVariable" | "ExampleScenario" | "ExplanationOfBenefit" | "FamilyMemberHistory" | "Flag" | "Goal" | "GraphDefinition" | "Group" | "GuidanceResponse" | "HealthcareService" | "ImagingStudy" | "Immunization" | "ImmunizationEvaluation" | "ImmunizationRecommendation" | "ImplementationGuide" | "InsurancePlan" | "Invoice" | "JsonWebKey" | "Library" | "Linkage" | "List" | "Location" | "Login" | "Measure" | "MeasureReport" | "Media" | "Medication" | "MedicationAdministration" | "MedicationDispense" | "MedicationKnowledge" | "MedicationRequest" | "MedicationStatement" | "MedicinalProduct" | "MedicinalProductAuthorization" | "MedicinalProductContraindication" | "MedicinalProductIndication" | "MedicinalProductIngredient" | "MedicinalProductInteraction" | "MedicinalProductManufactured" | "MedicinalProductPackaged" | "MedicinalProductPharmaceutical" | "MedicinalProductUndesirableEffect" | "MessageDefinition" | "MessageHeader" | "MolecularSequence" | "NamingSystem" | "NutritionOrder" | "ObservationDefinition" | "OperationDefinition" | "OperationOutcome" | "Organization" | "OrganizationAffiliation" | "Parameters" | "PasswordChangeRequest" | "PaymentNotice" | "PaymentReconciliation" | "Person" | "PlanDefinition" | "PractitionerRole" | "Procedure" | "Project" | "ProjectMembership" | "Provenance" | "Questionnaire" | "QuestionnaireResponse" | "RequestGroup" | "ResearchDefinition" | "ResearchElementDefinition" | "ResearchStudy" | "ResearchSubject" | "RiskAssessment" | "RiskEvidenceSynthesis" | "Schedule" | "SearchParameter" | "ServiceRequest" | "Slot" | "SmartAppLaunch" | "Specimen" | "SpecimenDefinition" | "StructureDefinition" | "StructureMap" | "Subscription" | "Substance" | "SubstanceNucleicAcid" | "SubstancePolymer" | "SubstanceProtein" | "SubstanceReferenceInformation" | "SubstanceSourceMaterial" | "SubstanceSpecification" | "SupplyDelivery" | "SupplyRequest" | "Task" | "TerminologyCapabilities" | "TestReport" | "TestScript" | "User" | "UserConfiguration" | "ValueSet" | "VerificationResult" | "VisionPrescription" |
Parameters
Name | Type | Description |
---|---|---|
resourceType | K | The resource type to invalidate. |
Returns
void
Defined in
packages/core/src/client.ts:704
getCached
▸ getCached<K
>(resourceType
, id
): undefined
| ExtractResource
<K
>
Returns a cached resource if it is available.
Type parameters
Name | Type |
---|---|
K | extends "Observation" | "Patient" | "Practitioner" | "RelatedPerson" | "AccessPolicy" | "Account" | "ActivityDefinition" | "AdverseEvent" | "Agent" | "AllergyIntolerance" | "Appointment" | "AppointmentResponse" | "AsyncJob" | "AuditEvent" | "Basic" | "Binary" | "BiologicallyDerivedProduct" | "BodyStructure" | "Bot" | "BulkDataExport" | "Bundle" | "CapabilityStatement" | "CarePlan" | "CareTeam" | "CatalogEntry" | "ChargeItem" | "ChargeItemDefinition" | "Claim" | "ClaimResponse" | "ClientApplication" | "ClinicalImpression" | "CodeSystem" | "Communication" | "CommunicationRequest" | "CompartmentDefinition" | "Composition" | "ConceptMap" | "Condition" | "Consent" | "Contract" | "Coverage" | "CoverageEligibilityRequest" | "CoverageEligibilityResponse" | "DetectedIssue" | "Device" | "DeviceDefinition" | "DeviceMetric" | "DeviceRequest" | "DeviceUseStatement" | "DiagnosticReport" | "DocumentManifest" | "DocumentReference" | "DomainConfiguration" | "EffectEvidenceSynthesis" | "Encounter" | "Endpoint" | "EnrollmentRequest" | "EnrollmentResponse" | "EpisodeOfCare" | "EventDefinition" | "Evidence" | "EvidenceVariable" | "ExampleScenario" | "ExplanationOfBenefit" | "FamilyMemberHistory" | "Flag" | "Goal" | "GraphDefinition" | "Group" | "GuidanceResponse" | "HealthcareService" | "ImagingStudy" | "Immunization" | "ImmunizationEvaluation" | "ImmunizationRecommendation" | "ImplementationGuide" | "InsurancePlan" | "Invoice" | "JsonWebKey" | "Library" | "Linkage" | "List" | "Location" | "Login" | "Measure" | "MeasureReport" | "Media" | "Medication" | "MedicationAdministration" | "MedicationDispense" | "MedicationKnowledge" | "MedicationRequest" | "MedicationStatement" | "MedicinalProduct" | "MedicinalProductAuthorization" | "MedicinalProductContraindication" | "MedicinalProductIndication" | "MedicinalProductIngredient" | "MedicinalProductInteraction" | "MedicinalProductManufactured" | "MedicinalProductPackaged" | "MedicinalProductPharmaceutical" | "MedicinalProductUndesirableEffect" | "MessageDefinition" | "MessageHeader" | "MolecularSequence" | "NamingSystem" | "NutritionOrder" | "ObservationDefinition" | "OperationDefinition" | "OperationOutcome" | "Organization" | "OrganizationAffiliation" | "Parameters" | "PasswordChangeRequest" | "PaymentNotice" | "PaymentReconciliation" | "Person" | "PlanDefinition" | "PractitionerRole" | "Procedure" | "Project" | "ProjectMembership" | "Provenance" | "Questionnaire" | "QuestionnaireResponse" | "RequestGroup" | "ResearchDefinition" | "ResearchElementDefinition" | "ResearchStudy" | "ResearchSubject" | "RiskAssessment" | "RiskEvidenceSynthesis" | "Schedule" | "SearchParameter" | "ServiceRequest" | "Slot" | "SmartAppLaunch" | "Specimen" | "SpecimenDefinition" | "StructureDefinition" | "StructureMap" | "Subscription" | "Substance" | "SubstanceNucleicAcid" | "SubstancePolymer" | "SubstanceProtein" | "SubstanceReferenceInformation" | "SubstanceSourceMaterial" | "SubstanceSpecification" | "SupplyDelivery" | "SupplyRequest" | "Task" | "TerminologyCapabilities" | "TestReport" | "TestScript" | "User" | "UserConfiguration" | "ValueSet" | "VerificationResult" | "VisionPrescription" |
Parameters
Name | Type | Description |
---|---|---|
resourceType | K | The FHIR resource type. |
id | string | The FHIR resource ID. |
Returns
undefined
| ExtractResource
<K
>
The resource if it is available in the cache; undefined otherwise.
Defined in
packages/core/src/client.ts:1306
getCachedReference
▸ getCachedReference<T
>(reference
): undefined
| T
Returns a cached resource if it is available.
Type parameters
Name | Type |
---|---|
T | extends Resource |
Parameters
Name | Type | Description |
---|---|---|
reference | Reference <T > | The FHIR reference. |
Returns
undefined
| T
The resource if it is available in the cache; undefined otherwise.
Defined in
packages/core/src/client.ts:1317
Batch
executeBatch
▸ executeBatch(bundle
, options?
): Promise
<Bundle
<Resource
>>
Executes a batch or transaction of FHIR operations.
Example:
await medplum.executeBatch({
"resourceType": "Bundle",
"type": "transaction",
"entry": [
{
"fullUrl": "urn:uuid:61ebe359-bfdc-4613-8bf2-c5e300945f0a",
"resource": {
"resourceType": "Patient",
"name": [{ "use": "official", "given": ["Alice"], "family": "Smith" }],
"gender": "female",
"birthDate": "1974-12-25"
},
"request": {
"method": "POST",
"url": "Patient"
}
},
{
"fullUrl": "urn:uuid:88f151c0-a954-468a-88bd-5ae15c08e059",
"resource": {
"resourceType": "Patient",
"identifier": [{ "system": "http:/example.org/fhir/ids", "value": "234234" }],
"name": [{ "use": "official", "given": ["Bob"], "family": "Jones" }],
"gender": "male",
"birthDate": "1974-12-25"
},
"request": {
"method": "POST",
"url": "Patient",
"ifNoneExist": "identifier=http:/example.org/fhir/ids|234234"
}
}
]
});
See The FHIR "batch/transaction" section for full details: https://hl7.org/fhir/http.html#transaction
Parameters
Name | Type | Description |
---|---|---|
bundle | Bundle <Resource > | The FHIR batch/transaction bundle. |
options? | RequestInit | Optional fetch options. |
Returns
Promise
<Bundle
<Resource
>>
The FHIR batch/transaction response bundle.
Defined in
packages/core/src/client.ts:2010
HTTP
getBaseUrl
▸ getBaseUrl(): string
Returns the current base URL for all API requests.
By default, this is set to https://api.medplum.com/
.
This can be overridden by setting the baseUrl
option when creating the client.
Returns
string
The current base URL for all API requests.
Defined in
packages/core/src/client.ts:642
getAuthorizeUrl
▸ getAuthorizeUrl(): string
Returns the current authorize URL.
By default, this is set to https://api.medplum.com/oauth2/authorize
.
This can be overridden by setting the authorizeUrl
option when creating the client.
Returns
string
The current authorize URL.
Defined in
packages/core/src/client.ts:653
get
▸ get<T
>(url
, options?
): ReadablePromise
<T
>
Makes an HTTP GET request to the specified URL.
This is a lower level method for custom requests.
For common operations, we recommend using higher level methods
such as readResource()
, search()
, etc.
Type parameters
Name | Type |
---|---|
T | any |
Parameters
Name | Type | Description |
---|---|---|
url | string | URL | The target URL. |
options | RequestInit | Optional fetch options. |
Returns
Promise to the response content.
Defined in
packages/core/src/client.ts:726
post
▸ post(url
, body
, contentType?
, options?
): Promise
<any
>
Makes an HTTP POST request to the specified URL.
This is a lower level method for custom requests.
For common operations, we recommend using higher level methods
such as createResource()
.
Parameters
Name | Type | Description |
---|---|---|
url | string | URL | The target URL. |
body | any | The content body. Strings and File objects are passed directly. Other objects are converted to JSON. |
contentType? | string | The content type to be included in the "Content-Type" header. |
options | RequestInit | Optional fetch options. |
Returns
Promise
<any
>
Promise to the response content.
Defined in
packages/core/src/client.ts:770
put
▸ put(url
, body
, contentType?
, options?
): Promise
<any
>
Makes an HTTP PUT request to the specified URL.
This is a lower level method for custom requests.
For common operations, we recommend using higher level methods
such as updateResource()
.
Parameters
Name | Type | Description |
---|---|---|
url | string | URL | The target URL. |
body | any | The content body. Strings and File objects are passed directly. Other objects are converted to JSON. |
contentType? | string | The content type to be included in the "Content-Type" header. |
options | RequestInit | Optional fetch options. |
Returns
Promise
<any
>
Promise to the response content.
Defined in
packages/core/src/client.ts:795
patch
▸ patch(url
, operations
, options?
): Promise
<any
>
Makes an HTTP PATCH request to the specified URL.
This is a lower level method for custom requests.
For common operations, we recommend using higher level methods
such as patchResource()
.
Parameters
Name | Type | Description |
---|---|---|
url | string | URL | The target URL. |
operations | PatchOperation [] | Array of JSONPatch operations. |
options | RequestInit | Optional fetch options. |
Returns
Promise
<any
>
Promise to the response content.
Defined in
packages/core/src/client.ts:819
delete
▸ delete(url
, options?
): Promise
<any
>
Makes an HTTP DELETE request to the specified URL.
This is a lower level method for custom requests.
For common operations, we recommend using higher level methods
such as deleteResource()
.
Parameters
Name | Type | Description |
---|---|---|
url | string | URL | The target URL. |
options? | RequestInit | Optional fetch options. |
Returns
Promise
<any
>
Promise to the response content.
Defined in
packages/core/src/client.ts:839
fhirUrl
▸ fhirUrl(...path
): URL
Builds a FHIR URL from a collection of URL path components.
For example, buildUrl('/Patient', '123')
returns fhir/R4/Patient/123
.
Parameters
Name | Type | Description |
---|---|---|
...path | string [] | The path component of the URL. |
Returns
URL
The well-formed FHIR URL.
Defined in
packages/core/src/client.ts:1072
fhirSearchUrl
▸ fhirSearchUrl(resourceType
, query
): URL
Builds a FHIR search URL from a search query or structured query object.
Parameters
Name | Type | Description |
---|---|---|
resourceType | "Observation" | "Patient" | "Practitioner" | "RelatedPerson" | "AccessPolicy" | "Account" | "ActivityDefinition" | "AdverseEvent" | "Agent" | "AllergyIntolerance" | "Appointment" | "AppointmentResponse" | "AsyncJob" | "AuditEvent" | "Basic" | "Binary" | "BiologicallyDerivedProduct" | "BodyStructure" | "Bot" | "BulkDataExport" | "Bundle" | "CapabilityStatement" | "CarePlan" | "CareTeam" | "CatalogEntry" | "ChargeItem" | "ChargeItemDefinition" | "Claim" | "ClaimResponse" | "ClientApplication" | "ClinicalImpression" | "CodeSystem" | "Communication" | "CommunicationRequest" | "CompartmentDefinition" | "Composition" | "ConceptMap" | "Condition" | "Consent" | "Contract" | "Coverage" | "CoverageEligibilityRequest" | "CoverageEligibilityResponse" | "DetectedIssue" | "Device" | "DeviceDefinition" | "DeviceMetric" | "DeviceRequest" | "DeviceUseStatement" | "DiagnosticReport" | "DocumentManifest" | "DocumentReference" | "DomainConfiguration" | "EffectEvidenceSynthesis" | "Encounter" | "Endpoint" | "EnrollmentRequest" | "EnrollmentResponse" | "EpisodeOfCare" | "EventDefinition" | "Evidence" | "EvidenceVariable" | "ExampleScenario" | "ExplanationOfBenefit" | "FamilyMemberHistory" | "Flag" | "Goal" | "GraphDefinition" | "Group" | "GuidanceResponse" | "HealthcareService" | "ImagingStudy" | "Immunization" | "ImmunizationEvaluation" | "ImmunizationRecommendation" | "ImplementationGuide" | "InsurancePlan" | "Invoice" | "JsonWebKey" | "Library" | "Linkage" | "List" | "Location" | "Login" | "Measure" | "MeasureReport" | "Media" | "Medication" | "MedicationAdministration" | "MedicationDispense" | "MedicationKnowledge" | "MedicationRequest" | "MedicationStatement" | "MedicinalProduct" | "MedicinalProductAuthorization" | "MedicinalProductContraindication" | "MedicinalProductIndication" | "MedicinalProductIngredient" | "MedicinalProductInteraction" | "MedicinalProductManufactured" | "MedicinalProductPackaged" | "MedicinalProductPharmaceutical" | "MedicinalProductUndesirableEffect" | "MessageDefinition" | "MessageHeader" | "MolecularSequence" | "NamingSystem" | "NutritionOrder" | "ObservationDefinition" | "OperationDefinition" | "OperationOutcome" | "Organization" | "OrganizationAffiliation" | "Parameters" | "PasswordChangeRequest" | "PaymentNotice" | "PaymentReconciliation" | "Person" | "PlanDefinition" | "PractitionerRole" | "Procedure" | "Project" | "ProjectMembership" | "Provenance" | "Questionnaire" | "QuestionnaireResponse" | "RequestGroup" | "ResearchDefinition" | "ResearchElementDefinition" | "ResearchStudy" | "ResearchSubject" | "RiskAssessment" | "RiskEvidenceSynthesis" | "Schedule" | "SearchParameter" | "ServiceRequest" | "Slot" | "SmartAppLaunch" | "Specimen" | "SpecimenDefinition" | "StructureDefinition" | "StructureMap" | "Subscription" | "Substance" | "SubstanceNucleicAcid" | "SubstancePolymer" | "SubstanceProtein" | "SubstanceReferenceInformation" | "SubstanceSourceMaterial" | "SubstanceSpecification" | "SupplyDelivery" | "SupplyRequest" | "Task" | "TerminologyCapabilities" | "TestReport" | "TestScript" | "User" | "UserConfiguration" | "ValueSet" | "VerificationResult" | "VisionPrescription" | The FHIR resource type. |
query | QueryTypes | The FHIR search query or structured query object. Can be any valid input to the URLSearchParams() constructor. |
Returns
URL
The well-formed FHIR URL.
Defined in
packages/core/src/client.ts:1084
Schema
getSchema
▸ getSchema(): IndexedStructureDefinition
Returns a cached schema for a resource type. If the schema is not cached, returns undefined. It is assumed that a client will call requestSchema before using this method.
Returns
The schema if immediately available, undefined otherwise.
Deprecated
Use globalSchema instead.
Defined in
packages/core/src/client.ts:1399
requestSchema
▸ requestSchema(resourceType
): Promise
<IndexedStructureDefinition
>
Requests the schema for a resource type. If the schema is already cached, the promise is resolved immediately.
Parameters
Name | Type | Description |
---|---|---|
resourceType | string | The FHIR resource type. |
Returns
Promise
<IndexedStructureDefinition
>
Promise to a schema with the requested resource type.
Defined in
packages/core/src/client.ts:1410
User Profile
getProject
▸ getProject(): undefined
| Project
Returns the current project if available.
Returns
undefined
| Project
The current project if available.
Defined in
packages/core/src/client.ts:2236
getProjectMembership
▸ getProjectMembership(): undefined
| ProjectMembership
Returns the current project membership if available.
Returns
undefined
| ProjectMembership
The current project membership if available.
Defined in
packages/core/src/client.ts:2245
getProfile
▸ getProfile(): undefined
| ProfileResource
Returns the current user profile resource if available. This method does not wait for loading promises.
Returns
undefined
| ProfileResource
The current user profile resource if available.
Defined in
packages/core/src/client.ts:2255
getProfileAsync
▸ getProfileAsync(): Promise
<undefined
| ProfileResource
>
Returns the current user profile resource if available. This method waits for loading promises.
Returns
Promise
<undefined
| ProfileResource
>
The current user profile resource if available.
Defined in
packages/core/src/client.ts:2265
getUserConfiguration
▸ getUserConfiguration(): undefined
| UserConfiguration
Returns the current user configuration if available.
Returns
undefined
| UserConfiguration
The current user configuration if available.
Defined in
packages/core/src/client.ts:2277
getAccessPolicy
▸ getAccessPolicy(): undefined
| AccessPolicy
Returns the current user access policy if available.
Returns
undefined
| AccessPolicy
The current user access policy if available.
Defined in
packages/core/src/client.ts:2286
Other
constructor
• new MedplumClient(options?
)
Parameters
Name | Type |
---|---|
options? | MedplumClientOptions |
Overrides
Defined in
packages/core/src/client.ts:590
startNewProject
▸ startNewProject(newProjectRequest
, options?
): Promise
<LoginAuthenticationResponse
>
Initiates a new project flow.
This requires a partial login from startNewUser
or startNewGoogleUser
.
Parameters
Name | Type | Description |
---|---|---|
newProjectRequest | NewProjectRequest | Register request including email and password. |
options? | RequestInit | Optional fetch options. |
Returns
Promise
<LoginAuthenticationResponse
>
Promise to the authentication response.
Defined in
packages/core/src/client.ts:879
startNewPatient
▸ startNewPatient(newPatientRequest
, options?
): Promise
<LoginAuthenticationResponse
>
Initiates a new patient flow.
This requires a partial login from startNewUser
or startNewGoogleUser
.
Parameters
Name | Type | Description |
---|---|---|
newPatientRequest | NewPatientRequest | Register request including email and password. |
options? | RequestInit | Optional fetch options. |
Returns
Promise
<LoginAuthenticationResponse
>
Promise to the authentication response.
Defined in
packages/core/src/client.ts:894
uploadwithProgress
▸ uploadwithProgress(url
, data
, contentType
, onProgress
): Promise
<any
>
Parameters
Name | Type |
---|---|
url | URL |
data | BinarySource |
contentType | string |
onProgress | (e : ProgressEvent <EventTarget >) => void |
Returns
Promise
<any
>
Defined in
packages/core/src/client.ts:1701
validateResource
▸ validateResource<T
>(resource
, options?
): Promise
<OperationOutcome
>
Executes the validate operation with the provided resource.
Example:
const result = await medplum.validateResource({
resourceType: 'Patient',
name: [{ given: ['Alice'], family: 'Smith' }],
});
See the FHIR "$validate" operation for full details: https://www.hl7.org/fhir/resource-operation-validate.html
Type parameters
Name | Type |
---|---|
T | extends Resource |
Parameters
Name | Type | Description |
---|---|---|
resource | T | The FHIR resource. |
options? | RequestInit | Optional fetch options. |
Returns
Promise
<OperationOutcome
>
The validate operation outcome.
Defined in
packages/core/src/client.ts:1933
executeBot
▸ executeBot(idOrIdentifier
, body
, contentType?
, options?
): Promise
<any
>
Executes a bot by ID or Identifier.
Parameters
Name | Type | Description |
---|---|---|
idOrIdentifier | string | Identifier | The Bot ID or Identifier. |
body | any | The content body. Strings and File objects are passed directly. Other objects are converted to JSON. |
contentType? | string | The content type to be included in the "Content-Type" header. |
options? | RequestInit | Optional fetch options. |
Returns
Promise
<any
>
The Bot return value.
Defined in
packages/core/src/client.ts:1945
normalizeFetchUrl
▸ normalizeFetchUrl(url
): string
Translates/normalizes a URL so that it can be directly used with MedplumClient.fetch
.
Especially useful for translating Binary/{id}
URLs to FHIR paths.
Parameters
Name | Type | Description |
---|---|---|
url | string | URL | A valid URL within the MedplumClient context. |
Returns
string
URL as a string that can be used with MedplumClient.fetch
Defined in
packages/core/src/client.ts:2296
uploadMedia
▸ uploadMedia(contents
, contentType
, filename
, additionalFields?
, options?
): Promise
<Media
>
Upload media to the server and create a Media instance for the uploaded content.
Parameters
Name | Type | Description |
---|---|---|
contents | string | Uint8Array | File | Blob | The contents of the media file, as a string, Uint8Array, File, or Blob. |
contentType | string | The media type of the content. |
filename | undefined | string | The name of the file to be uploaded, or undefined if not applicable. |
additionalFields? | Partial <Media > | Additional fields for Media. |
options? | RequestInit | Optional fetch options. |
Returns
Promise
<Media
>
Promise that resolves to the created Media
Defined in
packages/core/src/client.ts:2329
bulkExport
▸ bulkExport(exportLevel?
, resourceTypes?
, since?
, options?
): Promise
<Partial
<BulkDataExport
>>
Performs Bulk Data Export operation request flow. See The FHIR "Bulk Data Export" for full details: https://build.fhir.org/ig/HL7/bulk-data/export.html#bulk-data-export
Parameters
Name | Type | Default value | Description |
---|---|---|---|
exportLevel | string | '' | Optional export level. Defaults to system level export. 'Group/:id' - Group of Patients, 'Patient' - All Patients. |
resourceTypes? | string | undefined | A string of comma-delimited FHIR resource types. |
since? | string | undefined | Resources will be included in the response if their state has changed after the supplied time (e.g. if Resource.meta.lastUpdated is later than the supplied _since time). |
options? | RequestInit | undefined | Optional fetch options. |
Returns
Promise
<Partial
<BulkDataExport
>>
Bulk Data Response containing links to Bulk Data files. See "Response - Complete Status" for full details: https://build.fhir.org/ig/HL7/bulk-data/export.html#response---complete-status
Defined in
packages/core/src/client.ts:2359
startAsyncRequest
▸ startAsyncRequest<T
>(url
, options?
): Promise
<T
>
Starts an async request following the FHIR "Asynchronous Request Pattern". See: https://hl7.org/fhir/r4/async.html
Type parameters
Name |
---|
T |
Parameters
Name | Type | Description |
---|---|---|
url | string | The URL to request. |
options | RequestInit | Optional fetch options. |
Returns
Promise
<T
>
The response body.
Defined in
packages/core/src/client.ts:2386
startJwtBearerLogin
▸ startJwtBearerLogin(clientId
, assertion
, scope
): Promise
<ProfileResource
>
Starts a new OAuth2 JWT bearer flow.
await medplum.startJwtBearerLogin(process.env.MEDPLUM_CLIENT_ID, process.env.MEDPLUM_JWT_BEARER_ASSERTION, 'openid profile');
// Example Search
await medplum.searchResources('Patient')
See: https://datatracker.ietf.org/doc/html/rfc7523#section-2.1
Parameters
Name | Type | Description |
---|---|---|
clientId | string | The client ID. |
assertion | string | The JWT assertion. |
scope | string | The OAuth scope. |
Returns
Promise
<ProfileResource
>
Promise that resolves to the client profile.
Defined in
packages/core/src/client.ts:2839
invite
▸ invite(projectId
, body
): Promise
<OperationOutcome
| ProjectMembership
>
Invite a user to a project.
Parameters
Name | Type | Description |
---|---|---|
projectId | string | The project ID. |
body | InviteRequest | The InviteRequest. |
Returns
Promise
<OperationOutcome
| ProjectMembership
>
Promise that returns a project membership or an operation outcome.
Defined in
packages/core/src/client.ts:2874
addEventListener
▸ addEventListener(type
, callback
): void
Parameters
Name | Type |
---|---|
type | string |
callback | EventListener |
Returns
void
Inherited from
Defined in
packages/core/src/eventtarget.ts:19
removeEventListener
▸ removeEventListener(type
, callback
): void
Parameters
Name | Type |
---|---|
type | string |
callback | EventListener |
Returns
void
Inherited from
EventTarget.removeEventListener
Defined in
packages/core/src/eventtarget.ts:26
dispatchEvent
▸ dispatchEvent(event
): boolean
Parameters
Name | Type |
---|---|
event | Event |
Returns
boolean
Inherited from
Defined in
packages/core/src/eventtarget.ts:39