1import type * as healthlake from "@distilled.cloud/aws/healthlake";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { FHIRDatastore } from "./FHIRDatastore.ts";
5
6/**
7 * `DescribeFHIRImportJob` request with `DatastoreId` injected from the bound
8 * data store.
9 */
10export interface DescribeFHIRImportJobRequest extends Omit<
11 healthlake.DescribeFHIRImportJobRequest,
12 "DatastoreId"
13> {}
14
15/**
16 * Runtime binding for the `DescribeFHIRImportJob` operation (IAM action
17 * `healthlake:DescribeFHIRImportJob`), scoped to one {@link FHIRDatastore}.
18 *
19 * Reads the properties and progress report of a bulk FHIR import job started
20 * with {@link StartFHIRImportJob} — poll `ImportJobProperties.JobStatus`
21 * until `COMPLETED` (or a failure status). Provide the implementation with
22 * `Effect.provide(AWS.HealthLake.DescribeFHIRImportJobHttp)`.
23 *
24 * ### Importing FHIR Data
25 * **Example:** Poll an Import Job Until It Completes
26 * ```typescript
27 * const describeImport = yield* HealthLake.DescribeFHIRImportJob(datastore);
28 *
29 * const job = yield* describeImport({ JobId: jobId }).pipe(
30 * Effect.map((r) => r.ImportJobProperties),
31 * Effect.repeat({
32 * schedule: Schedule.spaced("10 seconds"),
33 * until: (j) => j.JobStatus !== "SUBMITTED" && j.JobStatus !== "IN_PROGRESS",
34 * times: 30,
35 * }),
36 * );
37 * ```
38 *
39 * @binding
40 */
41export interface DescribeFHIRImportJob extends Binding.Service<
42 DescribeFHIRImportJob,
43 "AWS.HealthLake.DescribeFHIRImportJob",
44 (
45 datastore: FHIRDatastore,
46 ) => Effect.Effect<
47 (
48 request: DescribeFHIRImportJobRequest,
49 ) => Effect.Effect<
50 healthlake.DescribeFHIRImportJobResponse,
51 healthlake.DescribeFHIRImportJobError
52 >
53 >
54> {}
55export const DescribeFHIRImportJob = Binding.Service<DescribeFHIRImportJob>(
56 "AWS.HealthLake.DescribeFHIRImportJob",
57);