{-# 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.ListFHIRImportJobs
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Lists all FHIR import jobs associated with an account and their
-- statuses.
module Amazonka.HealthLake.ListFHIRImportJobs
  ( -- * Creating a Request
    ListFHIRImportJobs (..),
    newListFHIRImportJobs,

    -- * Request Lenses
    listFHIRImportJobs_jobName,
    listFHIRImportJobs_jobStatus,
    listFHIRImportJobs_maxResults,
    listFHIRImportJobs_nextToken,
    listFHIRImportJobs_submittedAfter,
    listFHIRImportJobs_submittedBefore,
    listFHIRImportJobs_datastoreId,

    -- * Destructuring the Response
    ListFHIRImportJobsResponse (..),
    newListFHIRImportJobsResponse,

    -- * Response Lenses
    listFHIRImportJobsResponse_nextToken,
    listFHIRImportJobsResponse_httpStatus,
    listFHIRImportJobsResponse_importJobPropertiesList,
  )
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:/ 'newListFHIRImportJobs' smart constructor.
data ListFHIRImportJobs = ListFHIRImportJobs'
  { -- | This parameter limits the response to the import job with the specified
    -- job name.
    ListFHIRImportJobs -> Maybe Text
jobName :: Prelude.Maybe Prelude.Text,
    -- | This parameter limits the response to the import job with the specified
    -- job status.
    ListFHIRImportJobs -> Maybe JobStatus
jobStatus :: Prelude.Maybe JobStatus,
    -- | This parameter limits the number of results returned for a
    -- ListFHIRImportJobs to a maximum quantity specified by the user.
    ListFHIRImportJobs -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | A pagination token used to identify the next page of results to return
    -- for a ListFHIRImportJobs query.
    ListFHIRImportJobs -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | This parameter limits the response to FHIR import jobs submitted after a
    -- user specified date.
    ListFHIRImportJobs -> Maybe POSIX
submittedAfter :: Prelude.Maybe Data.POSIX,
    -- | This parameter limits the response to FHIR import jobs submitted before
    -- a user specified date.
    ListFHIRImportJobs -> Maybe POSIX
submittedBefore :: Prelude.Maybe Data.POSIX,
    -- | This parameter limits the response to the import job with the specified
    -- Data Store ID.
    ListFHIRImportJobs -> Text
datastoreId :: Prelude.Text
  }
  deriving (ListFHIRImportJobs -> ListFHIRImportJobs -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListFHIRImportJobs -> ListFHIRImportJobs -> Bool
$c/= :: ListFHIRImportJobs -> ListFHIRImportJobs -> Bool
== :: ListFHIRImportJobs -> ListFHIRImportJobs -> Bool
$c== :: ListFHIRImportJobs -> ListFHIRImportJobs -> Bool
Prelude.Eq, ReadPrec [ListFHIRImportJobs]
ReadPrec ListFHIRImportJobs
Int -> ReadS ListFHIRImportJobs
ReadS [ListFHIRImportJobs]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListFHIRImportJobs]
$creadListPrec :: ReadPrec [ListFHIRImportJobs]
readPrec :: ReadPrec ListFHIRImportJobs
$creadPrec :: ReadPrec ListFHIRImportJobs
readList :: ReadS [ListFHIRImportJobs]
$creadList :: ReadS [ListFHIRImportJobs]
readsPrec :: Int -> ReadS ListFHIRImportJobs
$creadsPrec :: Int -> ReadS ListFHIRImportJobs
Prelude.Read, Int -> ListFHIRImportJobs -> ShowS
[ListFHIRImportJobs] -> ShowS
ListFHIRImportJobs -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListFHIRImportJobs] -> ShowS
$cshowList :: [ListFHIRImportJobs] -> ShowS
show :: ListFHIRImportJobs -> String
$cshow :: ListFHIRImportJobs -> String
showsPrec :: Int -> ListFHIRImportJobs -> ShowS
$cshowsPrec :: Int -> ListFHIRImportJobs -> ShowS
Prelude.Show, forall x. Rep ListFHIRImportJobs x -> ListFHIRImportJobs
forall x. ListFHIRImportJobs -> Rep ListFHIRImportJobs x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ListFHIRImportJobs x -> ListFHIRImportJobs
$cfrom :: forall x. ListFHIRImportJobs -> Rep ListFHIRImportJobs x
Prelude.Generic)

-- |
-- Create a value of 'ListFHIRImportJobs' 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', 'listFHIRImportJobs_jobName' - This parameter limits the response to the import job with the specified
-- job name.
--
-- 'jobStatus', 'listFHIRImportJobs_jobStatus' - This parameter limits the response to the import job with the specified
-- job status.
--
-- 'maxResults', 'listFHIRImportJobs_maxResults' - This parameter limits the number of results returned for a
-- ListFHIRImportJobs to a maximum quantity specified by the user.
--
-- 'nextToken', 'listFHIRImportJobs_nextToken' - A pagination token used to identify the next page of results to return
-- for a ListFHIRImportJobs query.
--
-- 'submittedAfter', 'listFHIRImportJobs_submittedAfter' - This parameter limits the response to FHIR import jobs submitted after a
-- user specified date.
--
-- 'submittedBefore', 'listFHIRImportJobs_submittedBefore' - This parameter limits the response to FHIR import jobs submitted before
-- a user specified date.
--
-- 'datastoreId', 'listFHIRImportJobs_datastoreId' - This parameter limits the response to the import job with the specified
-- Data Store ID.
newListFHIRImportJobs ::
  -- | 'datastoreId'
  Prelude.Text ->
  ListFHIRImportJobs
newListFHIRImportJobs :: Text -> ListFHIRImportJobs
newListFHIRImportJobs Text
pDatastoreId_ =
  ListFHIRImportJobs'
    { $sel:jobName:ListFHIRImportJobs' :: Maybe Text
jobName = forall a. Maybe a
Prelude.Nothing,
      $sel:jobStatus:ListFHIRImportJobs' :: Maybe JobStatus
jobStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:ListFHIRImportJobs' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:ListFHIRImportJobs' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:submittedAfter:ListFHIRImportJobs' :: Maybe POSIX
submittedAfter = forall a. Maybe a
Prelude.Nothing,
      $sel:submittedBefore:ListFHIRImportJobs' :: Maybe POSIX
submittedBefore = forall a. Maybe a
Prelude.Nothing,
      $sel:datastoreId:ListFHIRImportJobs' :: Text
datastoreId = Text
pDatastoreId_
    }

-- | This parameter limits the response to the import job with the specified
-- job name.
listFHIRImportJobs_jobName :: Lens.Lens' ListFHIRImportJobs (Prelude.Maybe Prelude.Text)
listFHIRImportJobs_jobName :: Lens' ListFHIRImportJobs (Maybe Text)
listFHIRImportJobs_jobName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListFHIRImportJobs' {Maybe Text
jobName :: Maybe Text
$sel:jobName:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe Text
jobName} -> Maybe Text
jobName) (\s :: ListFHIRImportJobs
s@ListFHIRImportJobs' {} Maybe Text
a -> ListFHIRImportJobs
s {$sel:jobName:ListFHIRImportJobs' :: Maybe Text
jobName = Maybe Text
a} :: ListFHIRImportJobs)

-- | This parameter limits the response to the import job with the specified
-- job status.
listFHIRImportJobs_jobStatus :: Lens.Lens' ListFHIRImportJobs (Prelude.Maybe JobStatus)
listFHIRImportJobs_jobStatus :: Lens' ListFHIRImportJobs (Maybe JobStatus)
listFHIRImportJobs_jobStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListFHIRImportJobs' {Maybe JobStatus
jobStatus :: Maybe JobStatus
$sel:jobStatus:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe JobStatus
jobStatus} -> Maybe JobStatus
jobStatus) (\s :: ListFHIRImportJobs
s@ListFHIRImportJobs' {} Maybe JobStatus
a -> ListFHIRImportJobs
s {$sel:jobStatus:ListFHIRImportJobs' :: Maybe JobStatus
jobStatus = Maybe JobStatus
a} :: ListFHIRImportJobs)

-- | This parameter limits the number of results returned for a
-- ListFHIRImportJobs to a maximum quantity specified by the user.
listFHIRImportJobs_maxResults :: Lens.Lens' ListFHIRImportJobs (Prelude.Maybe Prelude.Natural)
listFHIRImportJobs_maxResults :: Lens' ListFHIRImportJobs (Maybe Natural)
listFHIRImportJobs_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListFHIRImportJobs' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: ListFHIRImportJobs
s@ListFHIRImportJobs' {} Maybe Natural
a -> ListFHIRImportJobs
s {$sel:maxResults:ListFHIRImportJobs' :: Maybe Natural
maxResults = Maybe Natural
a} :: ListFHIRImportJobs)

-- | A pagination token used to identify the next page of results to return
-- for a ListFHIRImportJobs query.
listFHIRImportJobs_nextToken :: Lens.Lens' ListFHIRImportJobs (Prelude.Maybe Prelude.Text)
listFHIRImportJobs_nextToken :: Lens' ListFHIRImportJobs (Maybe Text)
listFHIRImportJobs_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListFHIRImportJobs' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListFHIRImportJobs
s@ListFHIRImportJobs' {} Maybe Text
a -> ListFHIRImportJobs
s {$sel:nextToken:ListFHIRImportJobs' :: Maybe Text
nextToken = Maybe Text
a} :: ListFHIRImportJobs)

-- | This parameter limits the response to FHIR import jobs submitted after a
-- user specified date.
listFHIRImportJobs_submittedAfter :: Lens.Lens' ListFHIRImportJobs (Prelude.Maybe Prelude.UTCTime)
listFHIRImportJobs_submittedAfter :: Lens' ListFHIRImportJobs (Maybe UTCTime)
listFHIRImportJobs_submittedAfter = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListFHIRImportJobs' {Maybe POSIX
submittedAfter :: Maybe POSIX
$sel:submittedAfter:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe POSIX
submittedAfter} -> Maybe POSIX
submittedAfter) (\s :: ListFHIRImportJobs
s@ListFHIRImportJobs' {} Maybe POSIX
a -> ListFHIRImportJobs
s {$sel:submittedAfter:ListFHIRImportJobs' :: Maybe POSIX
submittedAfter = Maybe POSIX
a} :: ListFHIRImportJobs) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | This parameter limits the response to FHIR import jobs submitted before
-- a user specified date.
listFHIRImportJobs_submittedBefore :: Lens.Lens' ListFHIRImportJobs (Prelude.Maybe Prelude.UTCTime)
listFHIRImportJobs_submittedBefore :: Lens' ListFHIRImportJobs (Maybe UTCTime)
listFHIRImportJobs_submittedBefore = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListFHIRImportJobs' {Maybe POSIX
submittedBefore :: Maybe POSIX
$sel:submittedBefore:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe POSIX
submittedBefore} -> Maybe POSIX
submittedBefore) (\s :: ListFHIRImportJobs
s@ListFHIRImportJobs' {} Maybe POSIX
a -> ListFHIRImportJobs
s {$sel:submittedBefore:ListFHIRImportJobs' :: Maybe POSIX
submittedBefore = Maybe POSIX
a} :: ListFHIRImportJobs) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | This parameter limits the response to the import job with the specified
-- Data Store ID.
listFHIRImportJobs_datastoreId :: Lens.Lens' ListFHIRImportJobs Prelude.Text
listFHIRImportJobs_datastoreId :: Lens' ListFHIRImportJobs Text
listFHIRImportJobs_datastoreId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListFHIRImportJobs' {Text
datastoreId :: Text
$sel:datastoreId:ListFHIRImportJobs' :: ListFHIRImportJobs -> Text
datastoreId} -> Text
datastoreId) (\s :: ListFHIRImportJobs
s@ListFHIRImportJobs' {} Text
a -> ListFHIRImportJobs
s {$sel:datastoreId:ListFHIRImportJobs' :: Text
datastoreId = Text
a} :: ListFHIRImportJobs)

instance Core.AWSRequest ListFHIRImportJobs where
  type
    AWSResponse ListFHIRImportJobs =
      ListFHIRImportJobsResponse
  request :: (Service -> Service)
-> ListFHIRImportJobs -> Request ListFHIRImportJobs
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 ListFHIRImportJobs
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ListFHIRImportJobs)))
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 -> [ImportJobProperties] -> ListFHIRImportJobsResponse
ListFHIRImportJobsResponse'
            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
"NextToken")
            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 (Maybe a)
Data..?> Key
"ImportJobPropertiesList"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
      )

instance Prelude.Hashable ListFHIRImportJobs where
  hashWithSalt :: Int -> ListFHIRImportJobs -> Int
hashWithSalt Int
_salt ListFHIRImportJobs' {Maybe Natural
Maybe Text
Maybe POSIX
Maybe JobStatus
Text
datastoreId :: Text
submittedBefore :: Maybe POSIX
submittedAfter :: Maybe POSIX
nextToken :: Maybe Text
maxResults :: Maybe Natural
jobStatus :: Maybe JobStatus
jobName :: Maybe Text
$sel:datastoreId:ListFHIRImportJobs' :: ListFHIRImportJobs -> Text
$sel:submittedBefore:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe POSIX
$sel:submittedAfter:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe POSIX
$sel:nextToken:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe Text
$sel:maxResults:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe Natural
$sel:jobStatus:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe JobStatus
$sel:jobName:ListFHIRImportJobs' :: ListFHIRImportJobs -> 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` Maybe JobStatus
jobStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
submittedAfter
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
submittedBefore
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
datastoreId

instance Prelude.NFData ListFHIRImportJobs where
  rnf :: ListFHIRImportJobs -> ()
rnf ListFHIRImportJobs' {Maybe Natural
Maybe Text
Maybe POSIX
Maybe JobStatus
Text
datastoreId :: Text
submittedBefore :: Maybe POSIX
submittedAfter :: Maybe POSIX
nextToken :: Maybe Text
maxResults :: Maybe Natural
jobStatus :: Maybe JobStatus
jobName :: Maybe Text
$sel:datastoreId:ListFHIRImportJobs' :: ListFHIRImportJobs -> Text
$sel:submittedBefore:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe POSIX
$sel:submittedAfter:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe POSIX
$sel:nextToken:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe Text
$sel:maxResults:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe Natural
$sel:jobStatus:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe JobStatus
$sel:jobName:ListFHIRImportJobs' :: ListFHIRImportJobs -> 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 Maybe JobStatus
jobStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
submittedAfter
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
submittedBefore
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
datastoreId

instance Data.ToHeaders ListFHIRImportJobs where
  toHeaders :: ListFHIRImportJobs -> 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.ListFHIRImportJobs" ::
                          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 ListFHIRImportJobs where
  toJSON :: ListFHIRImportJobs -> Value
toJSON ListFHIRImportJobs' {Maybe Natural
Maybe Text
Maybe POSIX
Maybe JobStatus
Text
datastoreId :: Text
submittedBefore :: Maybe POSIX
submittedAfter :: Maybe POSIX
nextToken :: Maybe Text
maxResults :: Maybe Natural
jobStatus :: Maybe JobStatus
jobName :: Maybe Text
$sel:datastoreId:ListFHIRImportJobs' :: ListFHIRImportJobs -> Text
$sel:submittedBefore:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe POSIX
$sel:submittedAfter:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe POSIX
$sel:nextToken:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe Text
$sel:maxResults:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe Natural
$sel:jobStatus:ListFHIRImportJobs' :: ListFHIRImportJobs -> Maybe JobStatus
$sel:jobName:ListFHIRImportJobs' :: ListFHIRImportJobs -> 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,
            (Key
"JobStatus" 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 JobStatus
jobStatus,
            (Key
"MaxResults" 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 Natural
maxResults,
            (Key
"NextToken" 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
nextToken,
            (Key
"SubmittedAfter" 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 POSIX
submittedAfter,
            (Key
"SubmittedBefore" 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 POSIX
submittedBefore,
            forall a. a -> Maybe a
Prelude.Just (Key
"DatastoreId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
datastoreId)
          ]
      )

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

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

-- | /See:/ 'newListFHIRImportJobsResponse' smart constructor.
data ListFHIRImportJobsResponse = ListFHIRImportJobsResponse'
  { -- | A pagination token used to identify the next page of results to return
    -- for a ListFHIRImportJobs query.
    ListFHIRImportJobsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    ListFHIRImportJobsResponse -> Int
httpStatus :: Prelude.Int,
    -- | The properties of a listed FHIR import jobs, including the ID, ARN,
    -- name, and the status of the job.
    ListFHIRImportJobsResponse -> [ImportJobProperties]
importJobPropertiesList :: [ImportJobProperties]
  }
  deriving (ListFHIRImportJobsResponse -> ListFHIRImportJobsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListFHIRImportJobsResponse -> ListFHIRImportJobsResponse -> Bool
$c/= :: ListFHIRImportJobsResponse -> ListFHIRImportJobsResponse -> Bool
== :: ListFHIRImportJobsResponse -> ListFHIRImportJobsResponse -> Bool
$c== :: ListFHIRImportJobsResponse -> ListFHIRImportJobsResponse -> Bool
Prelude.Eq, ReadPrec [ListFHIRImportJobsResponse]
ReadPrec ListFHIRImportJobsResponse
Int -> ReadS ListFHIRImportJobsResponse
ReadS [ListFHIRImportJobsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListFHIRImportJobsResponse]
$creadListPrec :: ReadPrec [ListFHIRImportJobsResponse]
readPrec :: ReadPrec ListFHIRImportJobsResponse
$creadPrec :: ReadPrec ListFHIRImportJobsResponse
readList :: ReadS [ListFHIRImportJobsResponse]
$creadList :: ReadS [ListFHIRImportJobsResponse]
readsPrec :: Int -> ReadS ListFHIRImportJobsResponse
$creadsPrec :: Int -> ReadS ListFHIRImportJobsResponse
Prelude.Read, Int -> ListFHIRImportJobsResponse -> ShowS
[ListFHIRImportJobsResponse] -> ShowS
ListFHIRImportJobsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListFHIRImportJobsResponse] -> ShowS
$cshowList :: [ListFHIRImportJobsResponse] -> ShowS
show :: ListFHIRImportJobsResponse -> String
$cshow :: ListFHIRImportJobsResponse -> String
showsPrec :: Int -> ListFHIRImportJobsResponse -> ShowS
$cshowsPrec :: Int -> ListFHIRImportJobsResponse -> ShowS
Prelude.Show, forall x.
Rep ListFHIRImportJobsResponse x -> ListFHIRImportJobsResponse
forall x.
ListFHIRImportJobsResponse -> Rep ListFHIRImportJobsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListFHIRImportJobsResponse x -> ListFHIRImportJobsResponse
$cfrom :: forall x.
ListFHIRImportJobsResponse -> Rep ListFHIRImportJobsResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListFHIRImportJobsResponse' 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:
--
-- 'nextToken', 'listFHIRImportJobsResponse_nextToken' - A pagination token used to identify the next page of results to return
-- for a ListFHIRImportJobs query.
--
-- 'httpStatus', 'listFHIRImportJobsResponse_httpStatus' - The response's http status code.
--
-- 'importJobPropertiesList', 'listFHIRImportJobsResponse_importJobPropertiesList' - The properties of a listed FHIR import jobs, including the ID, ARN,
-- name, and the status of the job.
newListFHIRImportJobsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListFHIRImportJobsResponse
newListFHIRImportJobsResponse :: Int -> ListFHIRImportJobsResponse
newListFHIRImportJobsResponse Int
pHttpStatus_ =
  ListFHIRImportJobsResponse'
    { $sel:nextToken:ListFHIRImportJobsResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ListFHIRImportJobsResponse' :: Int
httpStatus = Int
pHttpStatus_,
      $sel:importJobPropertiesList:ListFHIRImportJobsResponse' :: [ImportJobProperties]
importJobPropertiesList = forall a. Monoid a => a
Prelude.mempty
    }

-- | A pagination token used to identify the next page of results to return
-- for a ListFHIRImportJobs query.
listFHIRImportJobsResponse_nextToken :: Lens.Lens' ListFHIRImportJobsResponse (Prelude.Maybe Prelude.Text)
listFHIRImportJobsResponse_nextToken :: Lens' ListFHIRImportJobsResponse (Maybe Text)
listFHIRImportJobsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListFHIRImportJobsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListFHIRImportJobsResponse' :: ListFHIRImportJobsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListFHIRImportJobsResponse
s@ListFHIRImportJobsResponse' {} Maybe Text
a -> ListFHIRImportJobsResponse
s {$sel:nextToken:ListFHIRImportJobsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: ListFHIRImportJobsResponse)

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

-- | The properties of a listed FHIR import jobs, including the ID, ARN,
-- name, and the status of the job.
listFHIRImportJobsResponse_importJobPropertiesList :: Lens.Lens' ListFHIRImportJobsResponse [ImportJobProperties]
listFHIRImportJobsResponse_importJobPropertiesList :: Lens' ListFHIRImportJobsResponse [ImportJobProperties]
listFHIRImportJobsResponse_importJobPropertiesList = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListFHIRImportJobsResponse' {[ImportJobProperties]
importJobPropertiesList :: [ImportJobProperties]
$sel:importJobPropertiesList:ListFHIRImportJobsResponse' :: ListFHIRImportJobsResponse -> [ImportJobProperties]
importJobPropertiesList} -> [ImportJobProperties]
importJobPropertiesList) (\s :: ListFHIRImportJobsResponse
s@ListFHIRImportJobsResponse' {} [ImportJobProperties]
a -> ListFHIRImportJobsResponse
s {$sel:importJobPropertiesList:ListFHIRImportJobsResponse' :: [ImportJobProperties]
importJobPropertiesList = [ImportJobProperties]
a} :: ListFHIRImportJobsResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Prelude.NFData ListFHIRImportJobsResponse where
  rnf :: ListFHIRImportJobsResponse -> ()
rnf ListFHIRImportJobsResponse' {Int
[ImportJobProperties]
Maybe Text
importJobPropertiesList :: [ImportJobProperties]
httpStatus :: Int
nextToken :: Maybe Text
$sel:importJobPropertiesList:ListFHIRImportJobsResponse' :: ListFHIRImportJobsResponse -> [ImportJobProperties]
$sel:httpStatus:ListFHIRImportJobsResponse' :: ListFHIRImportJobsResponse -> Int
$sel:nextToken:ListFHIRImportJobsResponse' :: ListFHIRImportJobsResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      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 [ImportJobProperties]
importJobPropertiesList