packages feed

amazonka-healthlake-2.0: gen/Amazonka/HealthLake/StartFHIRImportJob.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.HealthLake.StartFHIRImportJob
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Begins a FHIR Import job.
module Amazonka.HealthLake.StartFHIRImportJob
  ( -- * Creating a Request
    StartFHIRImportJob (..),
    newStartFHIRImportJob,

    -- * Request Lenses
    startFHIRImportJob_jobName,
    startFHIRImportJob_inputDataConfig,
    startFHIRImportJob_jobOutputDataConfig,
    startFHIRImportJob_datastoreId,
    startFHIRImportJob_dataAccessRoleArn,
    startFHIRImportJob_clientToken,

    -- * Destructuring the Response
    StartFHIRImportJobResponse (..),
    newStartFHIRImportJobResponse,

    -- * Response Lenses
    startFHIRImportJobResponse_datastoreId,
    startFHIRImportJobResponse_httpStatus,
    startFHIRImportJobResponse_jobId,
    startFHIRImportJobResponse_jobStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.HealthLake.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newStartFHIRImportJob' smart constructor.
data StartFHIRImportJob = StartFHIRImportJob'
  { -- | The name of the FHIR Import job in the StartFHIRImport job request.
    jobName :: Prelude.Maybe Prelude.Text,
    -- | The input properties of the FHIR Import job in the StartFHIRImport job
    -- request.
    inputDataConfig :: InputDataConfig,
    jobOutputDataConfig :: OutputDataConfig,
    -- | The AWS-generated Data Store ID.
    datastoreId :: Prelude.Text,
    -- | The Amazon Resource Name (ARN) that gives Amazon HealthLake access
    -- permission.
    dataAccessRoleArn :: Prelude.Text,
    -- | Optional user provided token used for ensuring idempotency.
    clientToken :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'StartFHIRImportJob' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'jobName', 'startFHIRImportJob_jobName' - The name of the FHIR Import job in the StartFHIRImport job request.
--
-- 'inputDataConfig', 'startFHIRImportJob_inputDataConfig' - The input properties of the FHIR Import job in the StartFHIRImport job
-- request.
--
-- 'jobOutputDataConfig', 'startFHIRImportJob_jobOutputDataConfig' - Undocumented member.
--
-- 'datastoreId', 'startFHIRImportJob_datastoreId' - The AWS-generated Data Store ID.
--
-- 'dataAccessRoleArn', 'startFHIRImportJob_dataAccessRoleArn' - The Amazon Resource Name (ARN) that gives Amazon HealthLake access
-- permission.
--
-- 'clientToken', 'startFHIRImportJob_clientToken' - Optional user provided token used for ensuring idempotency.
newStartFHIRImportJob ::
  -- | 'inputDataConfig'
  InputDataConfig ->
  -- | 'jobOutputDataConfig'
  OutputDataConfig ->
  -- | 'datastoreId'
  Prelude.Text ->
  -- | 'dataAccessRoleArn'
  Prelude.Text ->
  -- | 'clientToken'
  Prelude.Text ->
  StartFHIRImportJob
newStartFHIRImportJob
  pInputDataConfig_
  pJobOutputDataConfig_
  pDatastoreId_
  pDataAccessRoleArn_
  pClientToken_ =
    StartFHIRImportJob'
      { jobName = Prelude.Nothing,
        inputDataConfig = pInputDataConfig_,
        jobOutputDataConfig = pJobOutputDataConfig_,
        datastoreId = pDatastoreId_,
        dataAccessRoleArn = pDataAccessRoleArn_,
        clientToken = pClientToken_
      }

-- | The name of the FHIR Import job in the StartFHIRImport job request.
startFHIRImportJob_jobName :: Lens.Lens' StartFHIRImportJob (Prelude.Maybe Prelude.Text)
startFHIRImportJob_jobName = Lens.lens (\StartFHIRImportJob' {jobName} -> jobName) (\s@StartFHIRImportJob' {} a -> s {jobName = a} :: StartFHIRImportJob)

-- | The input properties of the FHIR Import job in the StartFHIRImport job
-- request.
startFHIRImportJob_inputDataConfig :: Lens.Lens' StartFHIRImportJob InputDataConfig
startFHIRImportJob_inputDataConfig = Lens.lens (\StartFHIRImportJob' {inputDataConfig} -> inputDataConfig) (\s@StartFHIRImportJob' {} a -> s {inputDataConfig = a} :: StartFHIRImportJob)

-- | Undocumented member.
startFHIRImportJob_jobOutputDataConfig :: Lens.Lens' StartFHIRImportJob OutputDataConfig
startFHIRImportJob_jobOutputDataConfig = Lens.lens (\StartFHIRImportJob' {jobOutputDataConfig} -> jobOutputDataConfig) (\s@StartFHIRImportJob' {} a -> s {jobOutputDataConfig = a} :: StartFHIRImportJob)

-- | The AWS-generated Data Store ID.
startFHIRImportJob_datastoreId :: Lens.Lens' StartFHIRImportJob Prelude.Text
startFHIRImportJob_datastoreId = Lens.lens (\StartFHIRImportJob' {datastoreId} -> datastoreId) (\s@StartFHIRImportJob' {} a -> s {datastoreId = a} :: StartFHIRImportJob)

-- | The Amazon Resource Name (ARN) that gives Amazon HealthLake access
-- permission.
startFHIRImportJob_dataAccessRoleArn :: Lens.Lens' StartFHIRImportJob Prelude.Text
startFHIRImportJob_dataAccessRoleArn = Lens.lens (\StartFHIRImportJob' {dataAccessRoleArn} -> dataAccessRoleArn) (\s@StartFHIRImportJob' {} a -> s {dataAccessRoleArn = a} :: StartFHIRImportJob)

-- | Optional user provided token used for ensuring idempotency.
startFHIRImportJob_clientToken :: Lens.Lens' StartFHIRImportJob Prelude.Text
startFHIRImportJob_clientToken = Lens.lens (\StartFHIRImportJob' {clientToken} -> clientToken) (\s@StartFHIRImportJob' {} a -> s {clientToken = a} :: StartFHIRImportJob)

instance Core.AWSRequest StartFHIRImportJob where
  type
    AWSResponse StartFHIRImportJob =
      StartFHIRImportJobResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          StartFHIRImportJobResponse'
            Prelude.<$> (x Data..?> "DatastoreId")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
            Prelude.<*> (x Data..:> "JobId")
            Prelude.<*> (x Data..:> "JobStatus")
      )

instance Prelude.Hashable StartFHIRImportJob where
  hashWithSalt _salt StartFHIRImportJob' {..} =
    _salt
      `Prelude.hashWithSalt` jobName
      `Prelude.hashWithSalt` inputDataConfig
      `Prelude.hashWithSalt` jobOutputDataConfig
      `Prelude.hashWithSalt` datastoreId
      `Prelude.hashWithSalt` dataAccessRoleArn
      `Prelude.hashWithSalt` clientToken

instance Prelude.NFData StartFHIRImportJob where
  rnf StartFHIRImportJob' {..} =
    Prelude.rnf jobName
      `Prelude.seq` Prelude.rnf inputDataConfig
      `Prelude.seq` Prelude.rnf jobOutputDataConfig
      `Prelude.seq` Prelude.rnf datastoreId
      `Prelude.seq` Prelude.rnf dataAccessRoleArn
      `Prelude.seq` Prelude.rnf clientToken

instance Data.ToHeaders StartFHIRImportJob where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "X-Amz-Target"
              Data.=# ( "HealthLake.StartFHIRImportJob" ::
                          Prelude.ByteString
                      ),
            "Content-Type"
              Data.=# ( "application/x-amz-json-1.0" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON StartFHIRImportJob where
  toJSON StartFHIRImportJob' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("JobName" Data..=) Prelude.<$> jobName,
            Prelude.Just
              ("InputDataConfig" Data..= inputDataConfig),
            Prelude.Just
              ("JobOutputDataConfig" Data..= jobOutputDataConfig),
            Prelude.Just ("DatastoreId" Data..= datastoreId),
            Prelude.Just
              ("DataAccessRoleArn" Data..= dataAccessRoleArn),
            Prelude.Just ("ClientToken" Data..= clientToken)
          ]
      )

instance Data.ToPath StartFHIRImportJob where
  toPath = Prelude.const "/"

instance Data.ToQuery StartFHIRImportJob where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newStartFHIRImportJobResponse' smart constructor.
data StartFHIRImportJobResponse = StartFHIRImportJobResponse'
  { -- | The AWS-generated Data Store ID.
    datastoreId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    httpStatus :: Prelude.Int,
    -- | The AWS-generated job ID.
    jobId :: Prelude.Text,
    -- | The status of an import job.
    jobStatus :: JobStatus
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'StartFHIRImportJobResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'datastoreId', 'startFHIRImportJobResponse_datastoreId' - The AWS-generated Data Store ID.
--
-- 'httpStatus', 'startFHIRImportJobResponse_httpStatus' - The response's http status code.
--
-- 'jobId', 'startFHIRImportJobResponse_jobId' - The AWS-generated job ID.
--
-- 'jobStatus', 'startFHIRImportJobResponse_jobStatus' - The status of an import job.
newStartFHIRImportJobResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'jobId'
  Prelude.Text ->
  -- | 'jobStatus'
  JobStatus ->
  StartFHIRImportJobResponse
newStartFHIRImportJobResponse
  pHttpStatus_
  pJobId_
  pJobStatus_ =
    StartFHIRImportJobResponse'
      { datastoreId =
          Prelude.Nothing,
        httpStatus = pHttpStatus_,
        jobId = pJobId_,
        jobStatus = pJobStatus_
      }

-- | The AWS-generated Data Store ID.
startFHIRImportJobResponse_datastoreId :: Lens.Lens' StartFHIRImportJobResponse (Prelude.Maybe Prelude.Text)
startFHIRImportJobResponse_datastoreId = Lens.lens (\StartFHIRImportJobResponse' {datastoreId} -> datastoreId) (\s@StartFHIRImportJobResponse' {} a -> s {datastoreId = a} :: StartFHIRImportJobResponse)

-- | The response's http status code.
startFHIRImportJobResponse_httpStatus :: Lens.Lens' StartFHIRImportJobResponse Prelude.Int
startFHIRImportJobResponse_httpStatus = Lens.lens (\StartFHIRImportJobResponse' {httpStatus} -> httpStatus) (\s@StartFHIRImportJobResponse' {} a -> s {httpStatus = a} :: StartFHIRImportJobResponse)

-- | The AWS-generated job ID.
startFHIRImportJobResponse_jobId :: Lens.Lens' StartFHIRImportJobResponse Prelude.Text
startFHIRImportJobResponse_jobId = Lens.lens (\StartFHIRImportJobResponse' {jobId} -> jobId) (\s@StartFHIRImportJobResponse' {} a -> s {jobId = a} :: StartFHIRImportJobResponse)

-- | The status of an import job.
startFHIRImportJobResponse_jobStatus :: Lens.Lens' StartFHIRImportJobResponse JobStatus
startFHIRImportJobResponse_jobStatus = Lens.lens (\StartFHIRImportJobResponse' {jobStatus} -> jobStatus) (\s@StartFHIRImportJobResponse' {} a -> s {jobStatus = a} :: StartFHIRImportJobResponse)

instance Prelude.NFData StartFHIRImportJobResponse where
  rnf StartFHIRImportJobResponse' {..} =
    Prelude.rnf datastoreId
      `Prelude.seq` Prelude.rnf httpStatus
      `Prelude.seq` Prelude.rnf jobId
      `Prelude.seq` Prelude.rnf jobStatus