{-# 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.
    StartFHIRImportJob -> Maybe Text
jobName :: Prelude.Maybe Prelude.Text,
    -- | The input properties of the FHIR Import job in the StartFHIRImport job
    -- request.
    StartFHIRImportJob -> InputDataConfig
inputDataConfig :: InputDataConfig,
    StartFHIRImportJob -> OutputDataConfig
jobOutputDataConfig :: OutputDataConfig,
    -- | The AWS-generated Data Store ID.
    StartFHIRImportJob -> Text
datastoreId :: Prelude.Text,
    -- | The Amazon Resource Name (ARN) that gives Amazon HealthLake access
    -- permission.
    StartFHIRImportJob -> Text
dataAccessRoleArn :: Prelude.Text,
    -- | Optional user provided token used for ensuring idempotency.
    StartFHIRImportJob -> Text
clientToken :: Prelude.Text
  }
  deriving (StartFHIRImportJob -> StartFHIRImportJob -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StartFHIRImportJob -> StartFHIRImportJob -> Bool
$c/= :: StartFHIRImportJob -> StartFHIRImportJob -> Bool
== :: StartFHIRImportJob -> StartFHIRImportJob -> Bool
$c== :: StartFHIRImportJob -> StartFHIRImportJob -> Bool
Prelude.Eq, ReadPrec [StartFHIRImportJob]
ReadPrec StartFHIRImportJob
Int -> ReadS StartFHIRImportJob
ReadS [StartFHIRImportJob]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StartFHIRImportJob]
$creadListPrec :: ReadPrec [StartFHIRImportJob]
readPrec :: ReadPrec StartFHIRImportJob
$creadPrec :: ReadPrec StartFHIRImportJob
readList :: ReadS [StartFHIRImportJob]
$creadList :: ReadS [StartFHIRImportJob]
readsPrec :: Int -> ReadS StartFHIRImportJob
$creadsPrec :: Int -> ReadS StartFHIRImportJob
Prelude.Read, Int -> StartFHIRImportJob -> ShowS
[StartFHIRImportJob] -> ShowS
StartFHIRImportJob -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StartFHIRImportJob] -> ShowS
$cshowList :: [StartFHIRImportJob] -> ShowS
show :: StartFHIRImportJob -> String
$cshow :: StartFHIRImportJob -> String
showsPrec :: Int -> StartFHIRImportJob -> ShowS
$cshowsPrec :: Int -> StartFHIRImportJob -> ShowS
Prelude.Show, forall x. Rep StartFHIRImportJob x -> StartFHIRImportJob
forall x. StartFHIRImportJob -> Rep StartFHIRImportJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep StartFHIRImportJob x -> StartFHIRImportJob
$cfrom :: forall x. StartFHIRImportJob -> Rep StartFHIRImportJob x
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 :: InputDataConfig
-> OutputDataConfig -> Text -> Text -> Text -> StartFHIRImportJob
newStartFHIRImportJob
  InputDataConfig
pInputDataConfig_
  OutputDataConfig
pJobOutputDataConfig_
  Text
pDatastoreId_
  Text
pDataAccessRoleArn_
  Text
pClientToken_ =
    StartFHIRImportJob'
      { $sel:jobName:StartFHIRImportJob' :: Maybe Text
jobName = forall a. Maybe a
Prelude.Nothing,
        $sel:inputDataConfig:StartFHIRImportJob' :: InputDataConfig
inputDataConfig = InputDataConfig
pInputDataConfig_,
        $sel:jobOutputDataConfig:StartFHIRImportJob' :: OutputDataConfig
jobOutputDataConfig = OutputDataConfig
pJobOutputDataConfig_,
        $sel:datastoreId:StartFHIRImportJob' :: Text
datastoreId = Text
pDatastoreId_,
        $sel:dataAccessRoleArn:StartFHIRImportJob' :: Text
dataAccessRoleArn = Text
pDataAccessRoleArn_,
        $sel:clientToken:StartFHIRImportJob' :: Text
clientToken = Text
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' StartFHIRImportJob (Maybe Text)
startFHIRImportJob_jobName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartFHIRImportJob' {Maybe Text
jobName :: Maybe Text
$sel:jobName:StartFHIRImportJob' :: StartFHIRImportJob -> Maybe Text
jobName} -> Maybe Text
jobName) (\s :: StartFHIRImportJob
s@StartFHIRImportJob' {} Maybe Text
a -> StartFHIRImportJob
s {$sel:jobName:StartFHIRImportJob' :: Maybe Text
jobName = Maybe Text
a} :: StartFHIRImportJob)

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

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

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

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

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

instance Core.AWSRequest StartFHIRImportJob where
  type
    AWSResponse StartFHIRImportJob =
      StartFHIRImportJobResponse
  request :: (Service -> Service)
-> StartFHIRImportJob -> Request StartFHIRImportJob
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy StartFHIRImportJob
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse StartFHIRImportJob)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text
-> Int -> Text -> JobStatus -> StartFHIRImportJobResponse
StartFHIRImportJobResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"DatastoreId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"JobId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"JobStatus")
      )

instance Prelude.Hashable StartFHIRImportJob where
  hashWithSalt :: Int -> StartFHIRImportJob -> Int
hashWithSalt Int
_salt StartFHIRImportJob' {Maybe Text
Text
InputDataConfig
OutputDataConfig
clientToken :: Text
dataAccessRoleArn :: Text
datastoreId :: Text
jobOutputDataConfig :: OutputDataConfig
inputDataConfig :: InputDataConfig
jobName :: Maybe Text
$sel:clientToken:StartFHIRImportJob' :: StartFHIRImportJob -> Text
$sel:dataAccessRoleArn:StartFHIRImportJob' :: StartFHIRImportJob -> Text
$sel:datastoreId:StartFHIRImportJob' :: StartFHIRImportJob -> Text
$sel:jobOutputDataConfig:StartFHIRImportJob' :: StartFHIRImportJob -> OutputDataConfig
$sel:inputDataConfig:StartFHIRImportJob' :: StartFHIRImportJob -> InputDataConfig
$sel:jobName:StartFHIRImportJob' :: StartFHIRImportJob -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
jobName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` InputDataConfig
inputDataConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` OutputDataConfig
jobOutputDataConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
datastoreId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
dataAccessRoleArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
clientToken

instance Prelude.NFData StartFHIRImportJob where
  rnf :: StartFHIRImportJob -> ()
rnf StartFHIRImportJob' {Maybe Text
Text
InputDataConfig
OutputDataConfig
clientToken :: Text
dataAccessRoleArn :: Text
datastoreId :: Text
jobOutputDataConfig :: OutputDataConfig
inputDataConfig :: InputDataConfig
jobName :: Maybe Text
$sel:clientToken:StartFHIRImportJob' :: StartFHIRImportJob -> Text
$sel:dataAccessRoleArn:StartFHIRImportJob' :: StartFHIRImportJob -> Text
$sel:datastoreId:StartFHIRImportJob' :: StartFHIRImportJob -> Text
$sel:jobOutputDataConfig:StartFHIRImportJob' :: StartFHIRImportJob -> OutputDataConfig
$sel:inputDataConfig:StartFHIRImportJob' :: StartFHIRImportJob -> InputDataConfig
$sel:jobName:StartFHIRImportJob' :: StartFHIRImportJob -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
jobName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf InputDataConfig
inputDataConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf OutputDataConfig
jobOutputDataConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
datastoreId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
dataAccessRoleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
clientToken

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

instance Data.ToJSON StartFHIRImportJob where
  toJSON :: StartFHIRImportJob -> Value
toJSON StartFHIRImportJob' {Maybe Text
Text
InputDataConfig
OutputDataConfig
clientToken :: Text
dataAccessRoleArn :: Text
datastoreId :: Text
jobOutputDataConfig :: OutputDataConfig
inputDataConfig :: InputDataConfig
jobName :: Maybe Text
$sel:clientToken:StartFHIRImportJob' :: StartFHIRImportJob -> Text
$sel:dataAccessRoleArn:StartFHIRImportJob' :: StartFHIRImportJob -> Text
$sel:datastoreId:StartFHIRImportJob' :: StartFHIRImportJob -> Text
$sel:jobOutputDataConfig:StartFHIRImportJob' :: StartFHIRImportJob -> OutputDataConfig
$sel:inputDataConfig:StartFHIRImportJob' :: StartFHIRImportJob -> InputDataConfig
$sel:jobName:StartFHIRImportJob' :: StartFHIRImportJob -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"JobName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
jobName,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"InputDataConfig" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= InputDataConfig
inputDataConfig),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"JobOutputDataConfig" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= OutputDataConfig
jobOutputDataConfig),
            forall a. a -> Maybe a
Prelude.Just (Key
"DatastoreId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
datastoreId),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"DataAccessRoleArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
dataAccessRoleArn),
            forall a. a -> Maybe a
Prelude.Just (Key
"ClientToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
clientToken)
          ]
      )

instance Data.ToPath StartFHIRImportJob where
  toPath :: StartFHIRImportJob -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery StartFHIRImportJob where
  toQuery :: StartFHIRImportJob -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newStartFHIRImportJobResponse' smart constructor.
data StartFHIRImportJobResponse = StartFHIRImportJobResponse'
  { -- | The AWS-generated Data Store ID.
    StartFHIRImportJobResponse -> Maybe Text
datastoreId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    StartFHIRImportJobResponse -> Int
httpStatus :: Prelude.Int,
    -- | The AWS-generated job ID.
    StartFHIRImportJobResponse -> Text
jobId :: Prelude.Text,
    -- | The status of an import job.
    StartFHIRImportJobResponse -> JobStatus
jobStatus :: JobStatus
  }
  deriving (StartFHIRImportJobResponse -> StartFHIRImportJobResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StartFHIRImportJobResponse -> StartFHIRImportJobResponse -> Bool
$c/= :: StartFHIRImportJobResponse -> StartFHIRImportJobResponse -> Bool
== :: StartFHIRImportJobResponse -> StartFHIRImportJobResponse -> Bool
$c== :: StartFHIRImportJobResponse -> StartFHIRImportJobResponse -> Bool
Prelude.Eq, ReadPrec [StartFHIRImportJobResponse]
ReadPrec StartFHIRImportJobResponse
Int -> ReadS StartFHIRImportJobResponse
ReadS [StartFHIRImportJobResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StartFHIRImportJobResponse]
$creadListPrec :: ReadPrec [StartFHIRImportJobResponse]
readPrec :: ReadPrec StartFHIRImportJobResponse
$creadPrec :: ReadPrec StartFHIRImportJobResponse
readList :: ReadS [StartFHIRImportJobResponse]
$creadList :: ReadS [StartFHIRImportJobResponse]
readsPrec :: Int -> ReadS StartFHIRImportJobResponse
$creadsPrec :: Int -> ReadS StartFHIRImportJobResponse
Prelude.Read, Int -> StartFHIRImportJobResponse -> ShowS
[StartFHIRImportJobResponse] -> ShowS
StartFHIRImportJobResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StartFHIRImportJobResponse] -> ShowS
$cshowList :: [StartFHIRImportJobResponse] -> ShowS
show :: StartFHIRImportJobResponse -> String
$cshow :: StartFHIRImportJobResponse -> String
showsPrec :: Int -> StartFHIRImportJobResponse -> ShowS
$cshowsPrec :: Int -> StartFHIRImportJobResponse -> ShowS
Prelude.Show, forall x.
Rep StartFHIRImportJobResponse x -> StartFHIRImportJobResponse
forall x.
StartFHIRImportJobResponse -> Rep StartFHIRImportJobResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep StartFHIRImportJobResponse x -> StartFHIRImportJobResponse
$cfrom :: forall x.
StartFHIRImportJobResponse -> Rep StartFHIRImportJobResponse x
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 :: Int -> Text -> JobStatus -> StartFHIRImportJobResponse
newStartFHIRImportJobResponse
  Int
pHttpStatus_
  Text
pJobId_
  JobStatus
pJobStatus_ =
    StartFHIRImportJobResponse'
      { $sel:datastoreId:StartFHIRImportJobResponse' :: Maybe Text
datastoreId =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:StartFHIRImportJobResponse' :: Int
httpStatus = Int
pHttpStatus_,
        $sel:jobId:StartFHIRImportJobResponse' :: Text
jobId = Text
pJobId_,
        $sel:jobStatus:StartFHIRImportJobResponse' :: JobStatus
jobStatus = JobStatus
pJobStatus_
      }

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

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

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

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

instance Prelude.NFData StartFHIRImportJobResponse where
  rnf :: StartFHIRImportJobResponse -> ()
rnf StartFHIRImportJobResponse' {Int
Maybe Text
Text
JobStatus
jobStatus :: JobStatus
jobId :: Text
httpStatus :: Int
datastoreId :: Maybe Text
$sel:jobStatus:StartFHIRImportJobResponse' :: StartFHIRImportJobResponse -> JobStatus
$sel:jobId:StartFHIRImportJobResponse' :: StartFHIRImportJobResponse -> Text
$sel:httpStatus:StartFHIRImportJobResponse' :: StartFHIRImportJobResponse -> Int
$sel:datastoreId:StartFHIRImportJobResponse' :: StartFHIRImportJobResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
datastoreId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
jobId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf JobStatus
jobStatus