{-# 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.StartFHIRExportJob
-- 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 export job.
module Amazonka.HealthLake.StartFHIRExportJob
  ( -- * Creating a Request
    StartFHIRExportJob (..),
    newStartFHIRExportJob,

    -- * Request Lenses
    startFHIRExportJob_jobName,
    startFHIRExportJob_outputDataConfig,
    startFHIRExportJob_datastoreId,
    startFHIRExportJob_dataAccessRoleArn,
    startFHIRExportJob_clientToken,

    -- * Destructuring the Response
    StartFHIRExportJobResponse (..),
    newStartFHIRExportJobResponse,

    -- * Response Lenses
    startFHIRExportJobResponse_datastoreId,
    startFHIRExportJobResponse_httpStatus,
    startFHIRExportJobResponse_jobId,
    startFHIRExportJobResponse_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:/ 'newStartFHIRExportJob' smart constructor.
data StartFHIRExportJob = StartFHIRExportJob'
  { -- | The user generated name for an export job.
    StartFHIRExportJob -> Maybe Text
jobName :: Prelude.Maybe Prelude.Text,
    -- | The output data configuration that was supplied when the export job was
    -- created.
    StartFHIRExportJob -> OutputDataConfig
outputDataConfig :: OutputDataConfig,
    -- | The AWS generated ID for the Data Store from which files are being
    -- exported for an export job.
    StartFHIRExportJob -> Text
datastoreId :: Prelude.Text,
    -- | The Amazon Resource Name used during the initiation of the job.
    StartFHIRExportJob -> Text
dataAccessRoleArn :: Prelude.Text,
    -- | An optional user provided token used for ensuring idempotency.
    StartFHIRExportJob -> Text
clientToken :: Prelude.Text
  }
  deriving (StartFHIRExportJob -> StartFHIRExportJob -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StartFHIRExportJob -> StartFHIRExportJob -> Bool
$c/= :: StartFHIRExportJob -> StartFHIRExportJob -> Bool
== :: StartFHIRExportJob -> StartFHIRExportJob -> Bool
$c== :: StartFHIRExportJob -> StartFHIRExportJob -> Bool
Prelude.Eq, ReadPrec [StartFHIRExportJob]
ReadPrec StartFHIRExportJob
Int -> ReadS StartFHIRExportJob
ReadS [StartFHIRExportJob]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StartFHIRExportJob]
$creadListPrec :: ReadPrec [StartFHIRExportJob]
readPrec :: ReadPrec StartFHIRExportJob
$creadPrec :: ReadPrec StartFHIRExportJob
readList :: ReadS [StartFHIRExportJob]
$creadList :: ReadS [StartFHIRExportJob]
readsPrec :: Int -> ReadS StartFHIRExportJob
$creadsPrec :: Int -> ReadS StartFHIRExportJob
Prelude.Read, Int -> StartFHIRExportJob -> ShowS
[StartFHIRExportJob] -> ShowS
StartFHIRExportJob -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StartFHIRExportJob] -> ShowS
$cshowList :: [StartFHIRExportJob] -> ShowS
show :: StartFHIRExportJob -> String
$cshow :: StartFHIRExportJob -> String
showsPrec :: Int -> StartFHIRExportJob -> ShowS
$cshowsPrec :: Int -> StartFHIRExportJob -> ShowS
Prelude.Show, forall x. Rep StartFHIRExportJob x -> StartFHIRExportJob
forall x. StartFHIRExportJob -> Rep StartFHIRExportJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep StartFHIRExportJob x -> StartFHIRExportJob
$cfrom :: forall x. StartFHIRExportJob -> Rep StartFHIRExportJob x
Prelude.Generic)

-- |
-- Create a value of 'StartFHIRExportJob' 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', 'startFHIRExportJob_jobName' - The user generated name for an export job.
--
-- 'outputDataConfig', 'startFHIRExportJob_outputDataConfig' - The output data configuration that was supplied when the export job was
-- created.
--
-- 'datastoreId', 'startFHIRExportJob_datastoreId' - The AWS generated ID for the Data Store from which files are being
-- exported for an export job.
--
-- 'dataAccessRoleArn', 'startFHIRExportJob_dataAccessRoleArn' - The Amazon Resource Name used during the initiation of the job.
--
-- 'clientToken', 'startFHIRExportJob_clientToken' - An optional user provided token used for ensuring idempotency.
newStartFHIRExportJob ::
  -- | 'outputDataConfig'
  OutputDataConfig ->
  -- | 'datastoreId'
  Prelude.Text ->
  -- | 'dataAccessRoleArn'
  Prelude.Text ->
  -- | 'clientToken'
  Prelude.Text ->
  StartFHIRExportJob
newStartFHIRExportJob :: OutputDataConfig -> Text -> Text -> Text -> StartFHIRExportJob
newStartFHIRExportJob
  OutputDataConfig
pOutputDataConfig_
  Text
pDatastoreId_
  Text
pDataAccessRoleArn_
  Text
pClientToken_ =
    StartFHIRExportJob'
      { $sel:jobName:StartFHIRExportJob' :: Maybe Text
jobName = forall a. Maybe a
Prelude.Nothing,
        $sel:outputDataConfig:StartFHIRExportJob' :: OutputDataConfig
outputDataConfig = OutputDataConfig
pOutputDataConfig_,
        $sel:datastoreId:StartFHIRExportJob' :: Text
datastoreId = Text
pDatastoreId_,
        $sel:dataAccessRoleArn:StartFHIRExportJob' :: Text
dataAccessRoleArn = Text
pDataAccessRoleArn_,
        $sel:clientToken:StartFHIRExportJob' :: Text
clientToken = Text
pClientToken_
      }

-- | The user generated name for an export job.
startFHIRExportJob_jobName :: Lens.Lens' StartFHIRExportJob (Prelude.Maybe Prelude.Text)
startFHIRExportJob_jobName :: Lens' StartFHIRExportJob (Maybe Text)
startFHIRExportJob_jobName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartFHIRExportJob' {Maybe Text
jobName :: Maybe Text
$sel:jobName:StartFHIRExportJob' :: StartFHIRExportJob -> Maybe Text
jobName} -> Maybe Text
jobName) (\s :: StartFHIRExportJob
s@StartFHIRExportJob' {} Maybe Text
a -> StartFHIRExportJob
s {$sel:jobName:StartFHIRExportJob' :: Maybe Text
jobName = Maybe Text
a} :: StartFHIRExportJob)

-- | The output data configuration that was supplied when the export job was
-- created.
startFHIRExportJob_outputDataConfig :: Lens.Lens' StartFHIRExportJob OutputDataConfig
startFHIRExportJob_outputDataConfig :: Lens' StartFHIRExportJob OutputDataConfig
startFHIRExportJob_outputDataConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartFHIRExportJob' {OutputDataConfig
outputDataConfig :: OutputDataConfig
$sel:outputDataConfig:StartFHIRExportJob' :: StartFHIRExportJob -> OutputDataConfig
outputDataConfig} -> OutputDataConfig
outputDataConfig) (\s :: StartFHIRExportJob
s@StartFHIRExportJob' {} OutputDataConfig
a -> StartFHIRExportJob
s {$sel:outputDataConfig:StartFHIRExportJob' :: OutputDataConfig
outputDataConfig = OutputDataConfig
a} :: StartFHIRExportJob)

-- | The AWS generated ID for the Data Store from which files are being
-- exported for an export job.
startFHIRExportJob_datastoreId :: Lens.Lens' StartFHIRExportJob Prelude.Text
startFHIRExportJob_datastoreId :: Lens' StartFHIRExportJob Text
startFHIRExportJob_datastoreId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartFHIRExportJob' {Text
datastoreId :: Text
$sel:datastoreId:StartFHIRExportJob' :: StartFHIRExportJob -> Text
datastoreId} -> Text
datastoreId) (\s :: StartFHIRExportJob
s@StartFHIRExportJob' {} Text
a -> StartFHIRExportJob
s {$sel:datastoreId:StartFHIRExportJob' :: Text
datastoreId = Text
a} :: StartFHIRExportJob)

-- | The Amazon Resource Name used during the initiation of the job.
startFHIRExportJob_dataAccessRoleArn :: Lens.Lens' StartFHIRExportJob Prelude.Text
startFHIRExportJob_dataAccessRoleArn :: Lens' StartFHIRExportJob Text
startFHIRExportJob_dataAccessRoleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartFHIRExportJob' {Text
dataAccessRoleArn :: Text
$sel:dataAccessRoleArn:StartFHIRExportJob' :: StartFHIRExportJob -> Text
dataAccessRoleArn} -> Text
dataAccessRoleArn) (\s :: StartFHIRExportJob
s@StartFHIRExportJob' {} Text
a -> StartFHIRExportJob
s {$sel:dataAccessRoleArn:StartFHIRExportJob' :: Text
dataAccessRoleArn = Text
a} :: StartFHIRExportJob)

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

instance Core.AWSRequest StartFHIRExportJob where
  type
    AWSResponse StartFHIRExportJob =
      StartFHIRExportJobResponse
  request :: (Service -> Service)
-> StartFHIRExportJob -> Request StartFHIRExportJob
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 StartFHIRExportJob
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse StartFHIRExportJob)))
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 -> StartFHIRExportJobResponse
StartFHIRExportJobResponse'
            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 StartFHIRExportJob where
  hashWithSalt :: Int -> StartFHIRExportJob -> Int
hashWithSalt Int
_salt StartFHIRExportJob' {Maybe Text
Text
OutputDataConfig
clientToken :: Text
dataAccessRoleArn :: Text
datastoreId :: Text
outputDataConfig :: OutputDataConfig
jobName :: Maybe Text
$sel:clientToken:StartFHIRExportJob' :: StartFHIRExportJob -> Text
$sel:dataAccessRoleArn:StartFHIRExportJob' :: StartFHIRExportJob -> Text
$sel:datastoreId:StartFHIRExportJob' :: StartFHIRExportJob -> Text
$sel:outputDataConfig:StartFHIRExportJob' :: StartFHIRExportJob -> OutputDataConfig
$sel:jobName:StartFHIRExportJob' :: StartFHIRExportJob -> 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` OutputDataConfig
outputDataConfig
      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 StartFHIRExportJob where
  rnf :: StartFHIRExportJob -> ()
rnf StartFHIRExportJob' {Maybe Text
Text
OutputDataConfig
clientToken :: Text
dataAccessRoleArn :: Text
datastoreId :: Text
outputDataConfig :: OutputDataConfig
jobName :: Maybe Text
$sel:clientToken:StartFHIRExportJob' :: StartFHIRExportJob -> Text
$sel:dataAccessRoleArn:StartFHIRExportJob' :: StartFHIRExportJob -> Text
$sel:datastoreId:StartFHIRExportJob' :: StartFHIRExportJob -> Text
$sel:outputDataConfig:StartFHIRExportJob' :: StartFHIRExportJob -> OutputDataConfig
$sel:jobName:StartFHIRExportJob' :: StartFHIRExportJob -> 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 OutputDataConfig
outputDataConfig
      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 StartFHIRExportJob where
  toHeaders :: StartFHIRExportJob -> 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.StartFHIRExportJob" ::
                          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 StartFHIRExportJob where
  toJSON :: StartFHIRExportJob -> Value
toJSON StartFHIRExportJob' {Maybe Text
Text
OutputDataConfig
clientToken :: Text
dataAccessRoleArn :: Text
datastoreId :: Text
outputDataConfig :: OutputDataConfig
jobName :: Maybe Text
$sel:clientToken:StartFHIRExportJob' :: StartFHIRExportJob -> Text
$sel:dataAccessRoleArn:StartFHIRExportJob' :: StartFHIRExportJob -> Text
$sel:datastoreId:StartFHIRExportJob' :: StartFHIRExportJob -> Text
$sel:outputDataConfig:StartFHIRExportJob' :: StartFHIRExportJob -> OutputDataConfig
$sel:jobName:StartFHIRExportJob' :: StartFHIRExportJob -> 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
"OutputDataConfig" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= OutputDataConfig
outputDataConfig),
            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 StartFHIRExportJob where
  toPath :: StartFHIRExportJob -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

-- | /See:/ 'newStartFHIRExportJobResponse' smart constructor.
data StartFHIRExportJobResponse = StartFHIRExportJobResponse'
  { -- | The AWS generated ID for the Data Store from which files are being
    -- exported for an export job.
    StartFHIRExportJobResponse -> Maybe Text
datastoreId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    StartFHIRExportJobResponse -> Int
httpStatus :: Prelude.Int,
    -- | The AWS generated ID for an export job.
    StartFHIRExportJobResponse -> Text
jobId :: Prelude.Text,
    -- | The status of a FHIR export job. Possible statuses are SUBMITTED,
    -- IN_PROGRESS, COMPLETED, or FAILED.
    StartFHIRExportJobResponse -> JobStatus
jobStatus :: JobStatus
  }
  deriving (StartFHIRExportJobResponse -> StartFHIRExportJobResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StartFHIRExportJobResponse -> StartFHIRExportJobResponse -> Bool
$c/= :: StartFHIRExportJobResponse -> StartFHIRExportJobResponse -> Bool
== :: StartFHIRExportJobResponse -> StartFHIRExportJobResponse -> Bool
$c== :: StartFHIRExportJobResponse -> StartFHIRExportJobResponse -> Bool
Prelude.Eq, ReadPrec [StartFHIRExportJobResponse]
ReadPrec StartFHIRExportJobResponse
Int -> ReadS StartFHIRExportJobResponse
ReadS [StartFHIRExportJobResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StartFHIRExportJobResponse]
$creadListPrec :: ReadPrec [StartFHIRExportJobResponse]
readPrec :: ReadPrec StartFHIRExportJobResponse
$creadPrec :: ReadPrec StartFHIRExportJobResponse
readList :: ReadS [StartFHIRExportJobResponse]
$creadList :: ReadS [StartFHIRExportJobResponse]
readsPrec :: Int -> ReadS StartFHIRExportJobResponse
$creadsPrec :: Int -> ReadS StartFHIRExportJobResponse
Prelude.Read, Int -> StartFHIRExportJobResponse -> ShowS
[StartFHIRExportJobResponse] -> ShowS
StartFHIRExportJobResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StartFHIRExportJobResponse] -> ShowS
$cshowList :: [StartFHIRExportJobResponse] -> ShowS
show :: StartFHIRExportJobResponse -> String
$cshow :: StartFHIRExportJobResponse -> String
showsPrec :: Int -> StartFHIRExportJobResponse -> ShowS
$cshowsPrec :: Int -> StartFHIRExportJobResponse -> ShowS
Prelude.Show, forall x.
Rep StartFHIRExportJobResponse x -> StartFHIRExportJobResponse
forall x.
StartFHIRExportJobResponse -> Rep StartFHIRExportJobResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep StartFHIRExportJobResponse x -> StartFHIRExportJobResponse
$cfrom :: forall x.
StartFHIRExportJobResponse -> Rep StartFHIRExportJobResponse x
Prelude.Generic)

-- |
-- Create a value of 'StartFHIRExportJobResponse' 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', 'startFHIRExportJobResponse_datastoreId' - The AWS generated ID for the Data Store from which files are being
-- exported for an export job.
--
-- 'httpStatus', 'startFHIRExportJobResponse_httpStatus' - The response's http status code.
--
-- 'jobId', 'startFHIRExportJobResponse_jobId' - The AWS generated ID for an export job.
--
-- 'jobStatus', 'startFHIRExportJobResponse_jobStatus' - The status of a FHIR export job. Possible statuses are SUBMITTED,
-- IN_PROGRESS, COMPLETED, or FAILED.
newStartFHIRExportJobResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'jobId'
  Prelude.Text ->
  -- | 'jobStatus'
  JobStatus ->
  StartFHIRExportJobResponse
newStartFHIRExportJobResponse :: Int -> Text -> JobStatus -> StartFHIRExportJobResponse
newStartFHIRExportJobResponse
  Int
pHttpStatus_
  Text
pJobId_
  JobStatus
pJobStatus_ =
    StartFHIRExportJobResponse'
      { $sel:datastoreId:StartFHIRExportJobResponse' :: Maybe Text
datastoreId =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:StartFHIRExportJobResponse' :: Int
httpStatus = Int
pHttpStatus_,
        $sel:jobId:StartFHIRExportJobResponse' :: Text
jobId = Text
pJobId_,
        $sel:jobStatus:StartFHIRExportJobResponse' :: JobStatus
jobStatus = JobStatus
pJobStatus_
      }

-- | The AWS generated ID for the Data Store from which files are being
-- exported for an export job.
startFHIRExportJobResponse_datastoreId :: Lens.Lens' StartFHIRExportJobResponse (Prelude.Maybe Prelude.Text)
startFHIRExportJobResponse_datastoreId :: Lens' StartFHIRExportJobResponse (Maybe Text)
startFHIRExportJobResponse_datastoreId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartFHIRExportJobResponse' {Maybe Text
datastoreId :: Maybe Text
$sel:datastoreId:StartFHIRExportJobResponse' :: StartFHIRExportJobResponse -> Maybe Text
datastoreId} -> Maybe Text
datastoreId) (\s :: StartFHIRExportJobResponse
s@StartFHIRExportJobResponse' {} Maybe Text
a -> StartFHIRExportJobResponse
s {$sel:datastoreId:StartFHIRExportJobResponse' :: Maybe Text
datastoreId = Maybe Text
a} :: StartFHIRExportJobResponse)

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

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

-- | The status of a FHIR export job. Possible statuses are SUBMITTED,
-- IN_PROGRESS, COMPLETED, or FAILED.
startFHIRExportJobResponse_jobStatus :: Lens.Lens' StartFHIRExportJobResponse JobStatus
startFHIRExportJobResponse_jobStatus :: Lens' StartFHIRExportJobResponse JobStatus
startFHIRExportJobResponse_jobStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartFHIRExportJobResponse' {JobStatus
jobStatus :: JobStatus
$sel:jobStatus:StartFHIRExportJobResponse' :: StartFHIRExportJobResponse -> JobStatus
jobStatus} -> JobStatus
jobStatus) (\s :: StartFHIRExportJobResponse
s@StartFHIRExportJobResponse' {} JobStatus
a -> StartFHIRExportJobResponse
s {$sel:jobStatus:StartFHIRExportJobResponse' :: JobStatus
jobStatus = JobStatus
a} :: StartFHIRExportJobResponse)

instance Prelude.NFData StartFHIRExportJobResponse where
  rnf :: StartFHIRExportJobResponse -> ()
rnf StartFHIRExportJobResponse' {Int
Maybe Text
Text
JobStatus
jobStatus :: JobStatus
jobId :: Text
httpStatus :: Int
datastoreId :: Maybe Text
$sel:jobStatus:StartFHIRExportJobResponse' :: StartFHIRExportJobResponse -> JobStatus
$sel:jobId:StartFHIRExportJobResponse' :: StartFHIRExportJobResponse -> Text
$sel:httpStatus:StartFHIRExportJobResponse' :: StartFHIRExportJobResponse -> Int
$sel:datastoreId:StartFHIRExportJobResponse' :: StartFHIRExportJobResponse -> 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