diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,367 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+    means each individual or legal entity that creates, contributes to
+    the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+    means the combination of the Contributions of others (if any) used
+    by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+    means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+    means Source Code Form to which the initial Contributor has attached
+    the notice in Exhibit A, the Executable Form of such Source Code
+    Form, and Modifications of such Source Code Form, in each case
+    including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+    means
+
+    (a) that the initial Contributor has attached the notice described
+        in Exhibit B to the Covered Software; or
+
+    (b) that the Covered Software was made available under the terms of
+        version 1.1 or earlier of the License, but not also under the
+        terms of a Secondary License.
+
+1.6. "Executable Form"
+    means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+    means a work that combines Covered Software with other material, in
+    a separate file or files, that is not Covered Software.
+
+1.8. "License"
+    means this document.
+
+1.9. "Licensable"
+    means having the right to grant, to the maximum extent possible,
+    whether at the time of the initial grant or subsequently, any and
+    all of the rights conveyed by this License.
+
+1.10. "Modifications"
+    means any of the following:
+
+    (a) any file in Source Code Form that results from an addition to,
+        deletion from, or modification of the contents of Covered
+        Software; or
+
+    (b) any new file in Source Code Form that contains any Covered
+        Software.
+
+1.11. "Patent Claims" of a Contributor
+    means any patent claim(s), including without limitation, method,
+    process, and apparatus claims, in any patent Licensable by such
+    Contributor that would be infringed, but for the grant of the
+    License, by the making, using, selling, offering for sale, having
+    made, import, or transfer of either its Contributions or its
+    Contributor Version.
+
+1.12. "Secondary License"
+    means either the GNU General Public License, Version 2.0, the GNU
+    Lesser General Public License, Version 2.1, the GNU Affero General
+    Public License, Version 3.0, or any later versions of those
+    licenses.
+
+1.13. "Source Code Form"
+    means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+    means an individual or a legal entity exercising rights under this
+    License. For legal entities, "You" includes any entity that
+    controls, is controlled by, or is under common control with You. For
+    purposes of this definition, "control" means (a) the power, direct
+    or indirect, to cause the direction or management of such entity,
+    whether by contract or otherwise, or (b) ownership of more than
+    fifty percent (50%) of the outstanding shares or beneficial
+    ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+    Licensable by such Contributor to use, reproduce, make available,
+    modify, display, perform, distribute, and otherwise exploit its
+    Contributions, either on an unmodified basis, with Modifications, or
+    as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+    for sale, have made, import, and otherwise transfer either its
+    Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+    or
+
+(b) for infringements caused by: (i) Your and any other third party's
+    modifications of Covered Software, or (ii) the combination of its
+    Contributions with other software (except as part of its Contributor
+    Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+    its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+    Form, as described in Section 3.1, and You must inform recipients of
+    the Executable Form how they can obtain a copy of such Source Code
+    Form by reasonable means in a timely manner, at a charge no more
+    than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+    License, or sublicense it under different terms, provided that the
+    license for the Executable Form does not attempt to limit or alter
+    the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+*                                                                      *
+*  6. Disclaimer of Warranty                                           *
+*  -------------------------                                           *
+*                                                                      *
+*  Covered Software is provided under this License on an "as is"       *
+*  basis, without warranty of any kind, either expressed, implied, or  *
+*  statutory, including, without limitation, warranties that the       *
+*  Covered Software is free of defects, merchantable, fit for a        *
+*  particular purpose or non-infringing. The entire risk as to the     *
+*  quality and performance of the Covered Software is with You.        *
+*  Should any Covered Software prove defective in any respect, You     *
+*  (not any Contributor) assume the cost of any necessary servicing,   *
+*  repair, or correction. This disclaimer of warranty constitutes an   *
+*  essential part of this License. No use of any Covered Software is   *
+*  authorized under this License except under this disclaimer.         *
+*                                                                      *
+************************************************************************
+
+************************************************************************
+*                                                                      *
+*  7. Limitation of Liability                                          *
+*  --------------------------                                          *
+*                                                                      *
+*  Under no circumstances and under no legal theory, whether tort      *
+*  (including negligence), contract, or otherwise, shall any           *
+*  Contributor, or anyone who distributes Covered Software as          *
+*  permitted above, be liable to You for any direct, indirect,         *
+*  special, incidental, or consequential damages of any character      *
+*  including, without limitation, damages for lost profits, loss of    *
+*  goodwill, work stoppage, computer failure or malfunction, or any    *
+*  and all other commercial damages or losses, even if such party      *
+*  shall have been informed of the possibility of such damages. This   *
+*  limitation of liability shall not apply to liability for death or   *
+*  personal injury resulting from such party's negligence to the       *
+*  extent applicable law prohibits such limitation. Some               *
+*  jurisdictions do not allow the exclusion or limitation of           *
+*  incidental or consequential damages, so this exclusion and          *
+*  limitation may not apply to You.                                    *
+*                                                                      *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+  This Source Code Form is subject to the terms of the Mozilla Public
+  License, v. 2.0. If a copy of the MPL was not distributed with this
+  file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,44 @@
+# Amazon HealthLake SDK
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+ 
+`2.0` - Derived from API version @2017-07-01@ of the AWS service descriptions, licensed under Apache 2.0.
+
+## Description
+
+Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-healthlake)
+and the [AWS API Reference](https://aws.amazon.com/documentation/).
+
+The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),
+which provides mechanisms for specifying AuthN/AuthZ information, sending requests,
+and receiving responses.
+
+Lenses are used for constructing and manipulating types,
+due to the depth of nesting of AWS types and transparency regarding
+de/serialisation into more palatable Haskell values.
+The provided lenses should be compatible with any of the major lens libraries
+[lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).
+
+See [Amazonka.HealthLake](http://hackage.haskell.org/package/amazonka-healthlake/docs/Amazonka-HealthLake.html)
+or [the AWS documentation](https://aws.amazon.com/documentation/) to get started.
+
+
+## Contribute
+
+For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).
+
+> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.
+
+
+## Licence
+
+`amazonka-healthlake` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).
+
+Parts of the code are derived from AWS service descriptions, licensed under Apache 2.0.
+Source files subject to this contain an additional licensing clause in their header.
diff --git a/amazonka-healthlake.cabal b/amazonka-healthlake.cabal
new file mode 100644
--- /dev/null
+++ b/amazonka-healthlake.cabal
@@ -0,0 +1,112 @@
+cabal-version:      2.2
+name:               amazonka-healthlake
+version:            2.0
+synopsis:           Amazon HealthLake SDK.
+homepage:           https://github.com/brendanhay/amazonka
+bug-reports:        https://github.com/brendanhay/amazonka/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>
+
+copyright:          Copyright (c) 2013-2023 Brendan Hay
+category:           AWS
+build-type:         Simple
+extra-source-files:
+  fixture/*.proto
+  fixture/*.yaml
+  README.md
+  src/.gitkeep
+
+description:
+  Derived from API version @2017-07-01@ of the AWS service descriptions, licensed under Apache 2.0.
+  .
+  The types from this library are intended to be used with <http://hackage.haskell.org/package/amazonka amazonka>,
+  which provides mechanisms for specifying AuthN/AuthZ information, sending requests, and receiving responses.
+  .
+  It is recommended to use generic lenses or optics from packages such as <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify optional fields and deconstruct responses.
+  .
+  Generated lenses can be found in "Amazonka.HealthLake.Lens" and are
+  suitable for use with a lens package such as <http://hackage.haskell.org/package/lens lens> or <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
+  .
+  See "Amazonka.HealthLake" and the <https://aws.amazon.com/documentation/ AWS documentation> to get started.
+
+source-repository head
+  type:     git
+  location: git://github.com/brendanhay/amazonka.git
+  subdir:   amazonka-healthlake
+
+library
+  default-language: Haskell2010
+  hs-source-dirs:   src gen
+  ghc-options:
+    -Wall -fwarn-incomplete-uni-patterns
+    -fwarn-incomplete-record-updates -funbox-strict-fields
+
+  exposed-modules:
+    Amazonka.HealthLake
+    Amazonka.HealthLake.CreateFHIRDatastore
+    Amazonka.HealthLake.DeleteFHIRDatastore
+    Amazonka.HealthLake.DescribeFHIRDatastore
+    Amazonka.HealthLake.DescribeFHIRExportJob
+    Amazonka.HealthLake.DescribeFHIRImportJob
+    Amazonka.HealthLake.Lens
+    Amazonka.HealthLake.ListFHIRDatastores
+    Amazonka.HealthLake.ListFHIRExportJobs
+    Amazonka.HealthLake.ListFHIRImportJobs
+    Amazonka.HealthLake.ListTagsForResource
+    Amazonka.HealthLake.StartFHIRExportJob
+    Amazonka.HealthLake.StartFHIRImportJob
+    Amazonka.HealthLake.TagResource
+    Amazonka.HealthLake.Types
+    Amazonka.HealthLake.Types.CmkType
+    Amazonka.HealthLake.Types.DatastoreFilter
+    Amazonka.HealthLake.Types.DatastoreProperties
+    Amazonka.HealthLake.Types.DatastoreStatus
+    Amazonka.HealthLake.Types.ExportJobProperties
+    Amazonka.HealthLake.Types.FHIRVersion
+    Amazonka.HealthLake.Types.ImportJobProperties
+    Amazonka.HealthLake.Types.InputDataConfig
+    Amazonka.HealthLake.Types.JobStatus
+    Amazonka.HealthLake.Types.KmsEncryptionConfig
+    Amazonka.HealthLake.Types.OutputDataConfig
+    Amazonka.HealthLake.Types.PreloadDataConfig
+    Amazonka.HealthLake.Types.PreloadDataType
+    Amazonka.HealthLake.Types.S3Configuration
+    Amazonka.HealthLake.Types.SseConfiguration
+    Amazonka.HealthLake.Types.Tag
+    Amazonka.HealthLake.UntagResource
+    Amazonka.HealthLake.Waiters
+
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
+
+test-suite amazonka-healthlake-test
+  type:             exitcode-stdio-1.0
+  default-language: Haskell2010
+  hs-source-dirs:   test
+  main-is:          Main.hs
+  ghc-options:      -Wall -threaded
+
+  -- This section is encoded by the template and any modules added by
+  -- hand outside these namespaces will not correctly be added to the
+  -- distribution package.
+  other-modules:
+    Test.Amazonka.Gen.HealthLake
+    Test.Amazonka.HealthLake
+    Test.Amazonka.HealthLake.Internal
+
+  build-depends:
+    , amazonka-core         >=2.0 && <2.1
+    , amazonka-healthlake
+    , amazonka-test         >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/CreateFHIRDatastore.yaml b/fixture/CreateFHIRDatastore.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateFHIRDatastore.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/healthlake/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  healthlake.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateFHIRDatastoreResponse.proto b/fixture/CreateFHIRDatastoreResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateFHIRDatastoreResponse.proto
diff --git a/fixture/DeleteFHIRDatastore.yaml b/fixture/DeleteFHIRDatastore.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteFHIRDatastore.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/healthlake/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  healthlake.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteFHIRDatastoreResponse.proto b/fixture/DeleteFHIRDatastoreResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteFHIRDatastoreResponse.proto
diff --git a/fixture/DescribeFHIRDatastore.yaml b/fixture/DescribeFHIRDatastore.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFHIRDatastore.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/healthlake/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  healthlake.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeFHIRDatastoreResponse.proto b/fixture/DescribeFHIRDatastoreResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFHIRDatastoreResponse.proto
diff --git a/fixture/DescribeFHIRExportJob.yaml b/fixture/DescribeFHIRExportJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFHIRExportJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/healthlake/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  healthlake.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeFHIRExportJobResponse.proto b/fixture/DescribeFHIRExportJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFHIRExportJobResponse.proto
diff --git a/fixture/DescribeFHIRImportJob.yaml b/fixture/DescribeFHIRImportJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFHIRImportJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/healthlake/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  healthlake.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeFHIRImportJobResponse.proto b/fixture/DescribeFHIRImportJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeFHIRImportJobResponse.proto
diff --git a/fixture/ListFHIRDatastores.yaml b/fixture/ListFHIRDatastores.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListFHIRDatastores.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/healthlake/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  healthlake.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListFHIRDatastoresResponse.proto b/fixture/ListFHIRDatastoresResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListFHIRDatastoresResponse.proto
diff --git a/fixture/ListFHIRExportJobs.yaml b/fixture/ListFHIRExportJobs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListFHIRExportJobs.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/healthlake/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  healthlake.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListFHIRExportJobsResponse.proto b/fixture/ListFHIRExportJobsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListFHIRExportJobsResponse.proto
diff --git a/fixture/ListFHIRImportJobs.yaml b/fixture/ListFHIRImportJobs.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListFHIRImportJobs.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/healthlake/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  healthlake.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListFHIRImportJobsResponse.proto b/fixture/ListFHIRImportJobsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListFHIRImportJobsResponse.proto
diff --git a/fixture/ListTagsForResource.yaml b/fixture/ListTagsForResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/healthlake/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  healthlake.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListTagsForResourceResponse.proto b/fixture/ListTagsForResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsForResourceResponse.proto
diff --git a/fixture/StartFHIRExportJob.yaml b/fixture/StartFHIRExportJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartFHIRExportJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/healthlake/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  healthlake.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StartFHIRExportJobResponse.proto b/fixture/StartFHIRExportJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartFHIRExportJobResponse.proto
diff --git a/fixture/StartFHIRImportJob.yaml b/fixture/StartFHIRImportJob.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/StartFHIRImportJob.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/healthlake/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  healthlake.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/StartFHIRImportJobResponse.proto b/fixture/StartFHIRImportJobResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/StartFHIRImportJobResponse.proto
diff --git a/fixture/TagResource.yaml b/fixture/TagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/TagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/healthlake/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  healthlake.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/TagResourceResponse.proto b/fixture/TagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagResourceResponse.proto
diff --git a/fixture/UntagResource.yaml b/fixture/UntagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/healthlake/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  healthlake.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UntagResourceResponse.proto b/fixture/UntagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResourceResponse.proto
diff --git a/gen/Amazonka/HealthLake.hs b/gen/Amazonka/HealthLake.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake.hs
@@ -0,0 +1,231 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.HealthLake
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from API version @2017-07-01@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Amazon HealthLake is a HIPAA eligibile service that allows customers to
+-- store, transform, query, and analyze their FHIR-formatted data in a
+-- consistent fashion in the cloud.
+module Amazonka.HealthLake
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccessDeniedException
+    _AccessDeniedException,
+
+    -- ** ConflictException
+    _ConflictException,
+
+    -- ** InternalServerException
+    _InternalServerException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** ThrottlingException
+    _ThrottlingException,
+
+    -- ** ValidationException
+    _ValidationException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** CreateFHIRDatastore
+    CreateFHIRDatastore (CreateFHIRDatastore'),
+    newCreateFHIRDatastore,
+    CreateFHIRDatastoreResponse (CreateFHIRDatastoreResponse'),
+    newCreateFHIRDatastoreResponse,
+
+    -- ** DeleteFHIRDatastore
+    DeleteFHIRDatastore (DeleteFHIRDatastore'),
+    newDeleteFHIRDatastore,
+    DeleteFHIRDatastoreResponse (DeleteFHIRDatastoreResponse'),
+    newDeleteFHIRDatastoreResponse,
+
+    -- ** DescribeFHIRDatastore
+    DescribeFHIRDatastore (DescribeFHIRDatastore'),
+    newDescribeFHIRDatastore,
+    DescribeFHIRDatastoreResponse (DescribeFHIRDatastoreResponse'),
+    newDescribeFHIRDatastoreResponse,
+
+    -- ** DescribeFHIRExportJob
+    DescribeFHIRExportJob (DescribeFHIRExportJob'),
+    newDescribeFHIRExportJob,
+    DescribeFHIRExportJobResponse (DescribeFHIRExportJobResponse'),
+    newDescribeFHIRExportJobResponse,
+
+    -- ** DescribeFHIRImportJob
+    DescribeFHIRImportJob (DescribeFHIRImportJob'),
+    newDescribeFHIRImportJob,
+    DescribeFHIRImportJobResponse (DescribeFHIRImportJobResponse'),
+    newDescribeFHIRImportJobResponse,
+
+    -- ** ListFHIRDatastores
+    ListFHIRDatastores (ListFHIRDatastores'),
+    newListFHIRDatastores,
+    ListFHIRDatastoresResponse (ListFHIRDatastoresResponse'),
+    newListFHIRDatastoresResponse,
+
+    -- ** ListFHIRExportJobs
+    ListFHIRExportJobs (ListFHIRExportJobs'),
+    newListFHIRExportJobs,
+    ListFHIRExportJobsResponse (ListFHIRExportJobsResponse'),
+    newListFHIRExportJobsResponse,
+
+    -- ** ListFHIRImportJobs
+    ListFHIRImportJobs (ListFHIRImportJobs'),
+    newListFHIRImportJobs,
+    ListFHIRImportJobsResponse (ListFHIRImportJobsResponse'),
+    newListFHIRImportJobsResponse,
+
+    -- ** ListTagsForResource
+    ListTagsForResource (ListTagsForResource'),
+    newListTagsForResource,
+    ListTagsForResourceResponse (ListTagsForResourceResponse'),
+    newListTagsForResourceResponse,
+
+    -- ** StartFHIRExportJob
+    StartFHIRExportJob (StartFHIRExportJob'),
+    newStartFHIRExportJob,
+    StartFHIRExportJobResponse (StartFHIRExportJobResponse'),
+    newStartFHIRExportJobResponse,
+
+    -- ** StartFHIRImportJob
+    StartFHIRImportJob (StartFHIRImportJob'),
+    newStartFHIRImportJob,
+    StartFHIRImportJobResponse (StartFHIRImportJobResponse'),
+    newStartFHIRImportJobResponse,
+
+    -- ** TagResource
+    TagResource (TagResource'),
+    newTagResource,
+    TagResourceResponse (TagResourceResponse'),
+    newTagResourceResponse,
+
+    -- ** UntagResource
+    UntagResource (UntagResource'),
+    newUntagResource,
+    UntagResourceResponse (UntagResourceResponse'),
+    newUntagResourceResponse,
+
+    -- * Types
+
+    -- ** CmkType
+    CmkType (..),
+
+    -- ** DatastoreStatus
+    DatastoreStatus (..),
+
+    -- ** FHIRVersion
+    FHIRVersion (..),
+
+    -- ** JobStatus
+    JobStatus (..),
+
+    -- ** PreloadDataType
+    PreloadDataType (..),
+
+    -- ** DatastoreFilter
+    DatastoreFilter (DatastoreFilter'),
+    newDatastoreFilter,
+
+    -- ** DatastoreProperties
+    DatastoreProperties (DatastoreProperties'),
+    newDatastoreProperties,
+
+    -- ** ExportJobProperties
+    ExportJobProperties (ExportJobProperties'),
+    newExportJobProperties,
+
+    -- ** ImportJobProperties
+    ImportJobProperties (ImportJobProperties'),
+    newImportJobProperties,
+
+    -- ** InputDataConfig
+    InputDataConfig (InputDataConfig'),
+    newInputDataConfig,
+
+    -- ** KmsEncryptionConfig
+    KmsEncryptionConfig (KmsEncryptionConfig'),
+    newKmsEncryptionConfig,
+
+    -- ** OutputDataConfig
+    OutputDataConfig (OutputDataConfig'),
+    newOutputDataConfig,
+
+    -- ** PreloadDataConfig
+    PreloadDataConfig (PreloadDataConfig'),
+    newPreloadDataConfig,
+
+    -- ** S3Configuration
+    S3Configuration (S3Configuration'),
+    newS3Configuration,
+
+    -- ** SseConfiguration
+    SseConfiguration (SseConfiguration'),
+    newSseConfiguration,
+
+    -- ** Tag
+    Tag (Tag'),
+    newTag,
+  )
+where
+
+import Amazonka.HealthLake.CreateFHIRDatastore
+import Amazonka.HealthLake.DeleteFHIRDatastore
+import Amazonka.HealthLake.DescribeFHIRDatastore
+import Amazonka.HealthLake.DescribeFHIRExportJob
+import Amazonka.HealthLake.DescribeFHIRImportJob
+import Amazonka.HealthLake.Lens
+import Amazonka.HealthLake.ListFHIRDatastores
+import Amazonka.HealthLake.ListFHIRExportJobs
+import Amazonka.HealthLake.ListFHIRImportJobs
+import Amazonka.HealthLake.ListTagsForResource
+import Amazonka.HealthLake.StartFHIRExportJob
+import Amazonka.HealthLake.StartFHIRImportJob
+import Amazonka.HealthLake.TagResource
+import Amazonka.HealthLake.Types
+import Amazonka.HealthLake.UntagResource
+import Amazonka.HealthLake.Waiters
+
+-- $errors
+-- Error matchers are designed for use with the functions provided by
+-- <http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.
+-- This allows catching (and rethrowing) service specific errors returned
+-- by 'HealthLake'.
+
+-- $operations
+-- Some AWS operations return results that are incomplete and require subsequent
+-- requests in order to obtain the entire result set. The process of sending
+-- subsequent requests to continue where a previous request left off is called
+-- pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to
+-- 1000 objects at a time, and you must send subsequent requests with the
+-- appropriate Marker in order to retrieve the next page of results.
+--
+-- Operations that have an 'AWSPager' instance can transparently perform subsequent
+-- requests, correctly setting Markers and other request facets to iterate through
+-- the entire result set of a truncated API operation. Operations which support
+-- this have an additional note in the documentation.
+--
+-- Many operations have the ability to filter results on the server side. See the
+-- individual operation parameters for details.
+
+-- $waiters
+-- Waiters poll by repeatedly sending a request until some remote success condition
+-- configured by the 'Wait' specification is fulfilled. The 'Wait' specification
+-- determines how many attempts should be made, in addition to delay and retry strategies.
diff --git a/gen/Amazonka/HealthLake/CreateFHIRDatastore.hs b/gen/Amazonka/HealthLake/CreateFHIRDatastore.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/CreateFHIRDatastore.hs
@@ -0,0 +1,313 @@
+{-# 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.CreateFHIRDatastore
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a Data Store that can ingest and export FHIR formatted data.
+module Amazonka.HealthLake.CreateFHIRDatastore
+  ( -- * Creating a Request
+    CreateFHIRDatastore (..),
+    newCreateFHIRDatastore,
+
+    -- * Request Lenses
+    createFHIRDatastore_clientToken,
+    createFHIRDatastore_datastoreName,
+    createFHIRDatastore_preloadDataConfig,
+    createFHIRDatastore_sseConfiguration,
+    createFHIRDatastore_tags,
+    createFHIRDatastore_datastoreTypeVersion,
+
+    -- * Destructuring the Response
+    CreateFHIRDatastoreResponse (..),
+    newCreateFHIRDatastoreResponse,
+
+    -- * Response Lenses
+    createFHIRDatastoreResponse_httpStatus,
+    createFHIRDatastoreResponse_datastoreId,
+    createFHIRDatastoreResponse_datastoreArn,
+    createFHIRDatastoreResponse_datastoreStatus,
+    createFHIRDatastoreResponse_datastoreEndpoint,
+  )
+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:/ 'newCreateFHIRDatastore' smart constructor.
+data CreateFHIRDatastore = CreateFHIRDatastore'
+  { -- | Optional user provided token used for ensuring idempotency.
+    clientToken :: Prelude.Maybe Prelude.Text,
+    -- | The user generated name for the Data Store.
+    datastoreName :: Prelude.Maybe Prelude.Text,
+    -- | Optional parameter to preload data upon creation of the Data Store.
+    -- Currently, the only supported preloaded data is synthetic data generated
+    -- from Synthea.
+    preloadDataConfig :: Prelude.Maybe PreloadDataConfig,
+    -- | The server-side encryption key configuration for a customer provided
+    -- encryption key specified for creating a Data Store.
+    sseConfiguration :: Prelude.Maybe SseConfiguration,
+    -- | Resource tags that are applied to a Data Store when it is created.
+    tags :: Prelude.Maybe [Tag],
+    -- | The FHIR version of the Data Store. The only supported version is R4.
+    datastoreTypeVersion :: FHIRVersion
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFHIRDatastore' 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:
+--
+-- 'clientToken', 'createFHIRDatastore_clientToken' - Optional user provided token used for ensuring idempotency.
+--
+-- 'datastoreName', 'createFHIRDatastore_datastoreName' - The user generated name for the Data Store.
+--
+-- 'preloadDataConfig', 'createFHIRDatastore_preloadDataConfig' - Optional parameter to preload data upon creation of the Data Store.
+-- Currently, the only supported preloaded data is synthetic data generated
+-- from Synthea.
+--
+-- 'sseConfiguration', 'createFHIRDatastore_sseConfiguration' - The server-side encryption key configuration for a customer provided
+-- encryption key specified for creating a Data Store.
+--
+-- 'tags', 'createFHIRDatastore_tags' - Resource tags that are applied to a Data Store when it is created.
+--
+-- 'datastoreTypeVersion', 'createFHIRDatastore_datastoreTypeVersion' - The FHIR version of the Data Store. The only supported version is R4.
+newCreateFHIRDatastore ::
+  -- | 'datastoreTypeVersion'
+  FHIRVersion ->
+  CreateFHIRDatastore
+newCreateFHIRDatastore pDatastoreTypeVersion_ =
+  CreateFHIRDatastore'
+    { clientToken = Prelude.Nothing,
+      datastoreName = Prelude.Nothing,
+      preloadDataConfig = Prelude.Nothing,
+      sseConfiguration = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      datastoreTypeVersion = pDatastoreTypeVersion_
+    }
+
+-- | Optional user provided token used for ensuring idempotency.
+createFHIRDatastore_clientToken :: Lens.Lens' CreateFHIRDatastore (Prelude.Maybe Prelude.Text)
+createFHIRDatastore_clientToken = Lens.lens (\CreateFHIRDatastore' {clientToken} -> clientToken) (\s@CreateFHIRDatastore' {} a -> s {clientToken = a} :: CreateFHIRDatastore)
+
+-- | The user generated name for the Data Store.
+createFHIRDatastore_datastoreName :: Lens.Lens' CreateFHIRDatastore (Prelude.Maybe Prelude.Text)
+createFHIRDatastore_datastoreName = Lens.lens (\CreateFHIRDatastore' {datastoreName} -> datastoreName) (\s@CreateFHIRDatastore' {} a -> s {datastoreName = a} :: CreateFHIRDatastore)
+
+-- | Optional parameter to preload data upon creation of the Data Store.
+-- Currently, the only supported preloaded data is synthetic data generated
+-- from Synthea.
+createFHIRDatastore_preloadDataConfig :: Lens.Lens' CreateFHIRDatastore (Prelude.Maybe PreloadDataConfig)
+createFHIRDatastore_preloadDataConfig = Lens.lens (\CreateFHIRDatastore' {preloadDataConfig} -> preloadDataConfig) (\s@CreateFHIRDatastore' {} a -> s {preloadDataConfig = a} :: CreateFHIRDatastore)
+
+-- | The server-side encryption key configuration for a customer provided
+-- encryption key specified for creating a Data Store.
+createFHIRDatastore_sseConfiguration :: Lens.Lens' CreateFHIRDatastore (Prelude.Maybe SseConfiguration)
+createFHIRDatastore_sseConfiguration = Lens.lens (\CreateFHIRDatastore' {sseConfiguration} -> sseConfiguration) (\s@CreateFHIRDatastore' {} a -> s {sseConfiguration = a} :: CreateFHIRDatastore)
+
+-- | Resource tags that are applied to a Data Store when it is created.
+createFHIRDatastore_tags :: Lens.Lens' CreateFHIRDatastore (Prelude.Maybe [Tag])
+createFHIRDatastore_tags = Lens.lens (\CreateFHIRDatastore' {tags} -> tags) (\s@CreateFHIRDatastore' {} a -> s {tags = a} :: CreateFHIRDatastore) Prelude.. Lens.mapping Lens.coerced
+
+-- | The FHIR version of the Data Store. The only supported version is R4.
+createFHIRDatastore_datastoreTypeVersion :: Lens.Lens' CreateFHIRDatastore FHIRVersion
+createFHIRDatastore_datastoreTypeVersion = Lens.lens (\CreateFHIRDatastore' {datastoreTypeVersion} -> datastoreTypeVersion) (\s@CreateFHIRDatastore' {} a -> s {datastoreTypeVersion = a} :: CreateFHIRDatastore)
+
+instance Core.AWSRequest CreateFHIRDatastore where
+  type
+    AWSResponse CreateFHIRDatastore =
+      CreateFHIRDatastoreResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateFHIRDatastoreResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "DatastoreId")
+            Prelude.<*> (x Data..:> "DatastoreArn")
+            Prelude.<*> (x Data..:> "DatastoreStatus")
+            Prelude.<*> (x Data..:> "DatastoreEndpoint")
+      )
+
+instance Prelude.Hashable CreateFHIRDatastore where
+  hashWithSalt _salt CreateFHIRDatastore' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientToken
+      `Prelude.hashWithSalt` datastoreName
+      `Prelude.hashWithSalt` preloadDataConfig
+      `Prelude.hashWithSalt` sseConfiguration
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` datastoreTypeVersion
+
+instance Prelude.NFData CreateFHIRDatastore where
+  rnf CreateFHIRDatastore' {..} =
+    Prelude.rnf clientToken
+      `Prelude.seq` Prelude.rnf datastoreName
+      `Prelude.seq` Prelude.rnf preloadDataConfig
+      `Prelude.seq` Prelude.rnf sseConfiguration
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf datastoreTypeVersion
+
+instance Data.ToHeaders CreateFHIRDatastore where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "HealthLake.CreateFHIRDatastore" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateFHIRDatastore where
+  toJSON CreateFHIRDatastore' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ClientToken" Data..=) Prelude.<$> clientToken,
+            ("DatastoreName" Data..=) Prelude.<$> datastoreName,
+            ("PreloadDataConfig" Data..=)
+              Prelude.<$> preloadDataConfig,
+            ("SseConfiguration" Data..=)
+              Prelude.<$> sseConfiguration,
+            ("Tags" Data..=) Prelude.<$> tags,
+            Prelude.Just
+              ( "DatastoreTypeVersion"
+                  Data..= datastoreTypeVersion
+              )
+          ]
+      )
+
+instance Data.ToPath CreateFHIRDatastore where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateFHIRDatastore where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateFHIRDatastoreResponse' smart constructor.
+data CreateFHIRDatastoreResponse = CreateFHIRDatastoreResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The AWS-generated Data Store id. This id is in the output from the
+    -- initial Data Store creation call.
+    datastoreId :: Prelude.Text,
+    -- | The datastore ARN is generated during the creation of the Data Store and
+    -- can be found in the output from the initial Data Store creation call.
+    datastoreArn :: Prelude.Text,
+    -- | The status of the FHIR Data Store. Possible statuses are ‘CREATING’,
+    -- ‘ACTIVE’, ‘DELETING’, ‘DELETED’.
+    datastoreStatus :: DatastoreStatus,
+    -- | The AWS endpoint for the created Data Store. For preview, only US-east-1
+    -- endpoints are supported.
+    datastoreEndpoint :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFHIRDatastoreResponse' 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:
+--
+-- 'httpStatus', 'createFHIRDatastoreResponse_httpStatus' - The response's http status code.
+--
+-- 'datastoreId', 'createFHIRDatastoreResponse_datastoreId' - The AWS-generated Data Store id. This id is in the output from the
+-- initial Data Store creation call.
+--
+-- 'datastoreArn', 'createFHIRDatastoreResponse_datastoreArn' - The datastore ARN is generated during the creation of the Data Store and
+-- can be found in the output from the initial Data Store creation call.
+--
+-- 'datastoreStatus', 'createFHIRDatastoreResponse_datastoreStatus' - The status of the FHIR Data Store. Possible statuses are ‘CREATING’,
+-- ‘ACTIVE’, ‘DELETING’, ‘DELETED’.
+--
+-- 'datastoreEndpoint', 'createFHIRDatastoreResponse_datastoreEndpoint' - The AWS endpoint for the created Data Store. For preview, only US-east-1
+-- endpoints are supported.
+newCreateFHIRDatastoreResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'datastoreId'
+  Prelude.Text ->
+  -- | 'datastoreArn'
+  Prelude.Text ->
+  -- | 'datastoreStatus'
+  DatastoreStatus ->
+  -- | 'datastoreEndpoint'
+  Prelude.Text ->
+  CreateFHIRDatastoreResponse
+newCreateFHIRDatastoreResponse
+  pHttpStatus_
+  pDatastoreId_
+  pDatastoreArn_
+  pDatastoreStatus_
+  pDatastoreEndpoint_ =
+    CreateFHIRDatastoreResponse'
+      { httpStatus =
+          pHttpStatus_,
+        datastoreId = pDatastoreId_,
+        datastoreArn = pDatastoreArn_,
+        datastoreStatus = pDatastoreStatus_,
+        datastoreEndpoint = pDatastoreEndpoint_
+      }
+
+-- | The response's http status code.
+createFHIRDatastoreResponse_httpStatus :: Lens.Lens' CreateFHIRDatastoreResponse Prelude.Int
+createFHIRDatastoreResponse_httpStatus = Lens.lens (\CreateFHIRDatastoreResponse' {httpStatus} -> httpStatus) (\s@CreateFHIRDatastoreResponse' {} a -> s {httpStatus = a} :: CreateFHIRDatastoreResponse)
+
+-- | The AWS-generated Data Store id. This id is in the output from the
+-- initial Data Store creation call.
+createFHIRDatastoreResponse_datastoreId :: Lens.Lens' CreateFHIRDatastoreResponse Prelude.Text
+createFHIRDatastoreResponse_datastoreId = Lens.lens (\CreateFHIRDatastoreResponse' {datastoreId} -> datastoreId) (\s@CreateFHIRDatastoreResponse' {} a -> s {datastoreId = a} :: CreateFHIRDatastoreResponse)
+
+-- | The datastore ARN is generated during the creation of the Data Store and
+-- can be found in the output from the initial Data Store creation call.
+createFHIRDatastoreResponse_datastoreArn :: Lens.Lens' CreateFHIRDatastoreResponse Prelude.Text
+createFHIRDatastoreResponse_datastoreArn = Lens.lens (\CreateFHIRDatastoreResponse' {datastoreArn} -> datastoreArn) (\s@CreateFHIRDatastoreResponse' {} a -> s {datastoreArn = a} :: CreateFHIRDatastoreResponse)
+
+-- | The status of the FHIR Data Store. Possible statuses are ‘CREATING’,
+-- ‘ACTIVE’, ‘DELETING’, ‘DELETED’.
+createFHIRDatastoreResponse_datastoreStatus :: Lens.Lens' CreateFHIRDatastoreResponse DatastoreStatus
+createFHIRDatastoreResponse_datastoreStatus = Lens.lens (\CreateFHIRDatastoreResponse' {datastoreStatus} -> datastoreStatus) (\s@CreateFHIRDatastoreResponse' {} a -> s {datastoreStatus = a} :: CreateFHIRDatastoreResponse)
+
+-- | The AWS endpoint for the created Data Store. For preview, only US-east-1
+-- endpoints are supported.
+createFHIRDatastoreResponse_datastoreEndpoint :: Lens.Lens' CreateFHIRDatastoreResponse Prelude.Text
+createFHIRDatastoreResponse_datastoreEndpoint = Lens.lens (\CreateFHIRDatastoreResponse' {datastoreEndpoint} -> datastoreEndpoint) (\s@CreateFHIRDatastoreResponse' {} a -> s {datastoreEndpoint = a} :: CreateFHIRDatastoreResponse)
+
+instance Prelude.NFData CreateFHIRDatastoreResponse where
+  rnf CreateFHIRDatastoreResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf datastoreId
+      `Prelude.seq` Prelude.rnf datastoreArn
+      `Prelude.seq` Prelude.rnf datastoreStatus
+      `Prelude.seq` Prelude.rnf datastoreEndpoint
diff --git a/gen/Amazonka/HealthLake/DeleteFHIRDatastore.hs b/gen/Amazonka/HealthLake/DeleteFHIRDatastore.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/DeleteFHIRDatastore.hs
@@ -0,0 +1,222 @@
+{-# 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.DeleteFHIRDatastore
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a Data Store.
+module Amazonka.HealthLake.DeleteFHIRDatastore
+  ( -- * Creating a Request
+    DeleteFHIRDatastore (..),
+    newDeleteFHIRDatastore,
+
+    -- * Request Lenses
+    deleteFHIRDatastore_datastoreId,
+
+    -- * Destructuring the Response
+    DeleteFHIRDatastoreResponse (..),
+    newDeleteFHIRDatastoreResponse,
+
+    -- * Response Lenses
+    deleteFHIRDatastoreResponse_httpStatus,
+    deleteFHIRDatastoreResponse_datastoreId,
+    deleteFHIRDatastoreResponse_datastoreArn,
+    deleteFHIRDatastoreResponse_datastoreStatus,
+    deleteFHIRDatastoreResponse_datastoreEndpoint,
+  )
+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:/ 'newDeleteFHIRDatastore' smart constructor.
+data DeleteFHIRDatastore = DeleteFHIRDatastore'
+  { -- | The AWS-generated ID for the Data Store to be deleted.
+    datastoreId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFHIRDatastore' 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', 'deleteFHIRDatastore_datastoreId' - The AWS-generated ID for the Data Store to be deleted.
+newDeleteFHIRDatastore ::
+  DeleteFHIRDatastore
+newDeleteFHIRDatastore =
+  DeleteFHIRDatastore' {datastoreId = Prelude.Nothing}
+
+-- | The AWS-generated ID for the Data Store to be deleted.
+deleteFHIRDatastore_datastoreId :: Lens.Lens' DeleteFHIRDatastore (Prelude.Maybe Prelude.Text)
+deleteFHIRDatastore_datastoreId = Lens.lens (\DeleteFHIRDatastore' {datastoreId} -> datastoreId) (\s@DeleteFHIRDatastore' {} a -> s {datastoreId = a} :: DeleteFHIRDatastore)
+
+instance Core.AWSRequest DeleteFHIRDatastore where
+  type
+    AWSResponse DeleteFHIRDatastore =
+      DeleteFHIRDatastoreResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteFHIRDatastoreResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "DatastoreId")
+            Prelude.<*> (x Data..:> "DatastoreArn")
+            Prelude.<*> (x Data..:> "DatastoreStatus")
+            Prelude.<*> (x Data..:> "DatastoreEndpoint")
+      )
+
+instance Prelude.Hashable DeleteFHIRDatastore where
+  hashWithSalt _salt DeleteFHIRDatastore' {..} =
+    _salt `Prelude.hashWithSalt` datastoreId
+
+instance Prelude.NFData DeleteFHIRDatastore where
+  rnf DeleteFHIRDatastore' {..} =
+    Prelude.rnf datastoreId
+
+instance Data.ToHeaders DeleteFHIRDatastore where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "HealthLake.DeleteFHIRDatastore" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DeleteFHIRDatastore where
+  toJSON DeleteFHIRDatastore' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("DatastoreId" Data..=) Prelude.<$> datastoreId]
+      )
+
+instance Data.ToPath DeleteFHIRDatastore where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteFHIRDatastore where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteFHIRDatastoreResponse' smart constructor.
+data DeleteFHIRDatastoreResponse = DeleteFHIRDatastoreResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The AWS-generated ID for the Data Store to be deleted.
+    datastoreId :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) that gives Amazon HealthLake access
+    -- permission.
+    datastoreArn :: Prelude.Text,
+    -- | The status of the Data Store that the user has requested to be deleted.
+    datastoreStatus :: DatastoreStatus,
+    -- | The AWS endpoint for the Data Store the user has requested to be
+    -- deleted.
+    datastoreEndpoint :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFHIRDatastoreResponse' 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:
+--
+-- 'httpStatus', 'deleteFHIRDatastoreResponse_httpStatus' - The response's http status code.
+--
+-- 'datastoreId', 'deleteFHIRDatastoreResponse_datastoreId' - The AWS-generated ID for the Data Store to be deleted.
+--
+-- 'datastoreArn', 'deleteFHIRDatastoreResponse_datastoreArn' - The Amazon Resource Name (ARN) that gives Amazon HealthLake access
+-- permission.
+--
+-- 'datastoreStatus', 'deleteFHIRDatastoreResponse_datastoreStatus' - The status of the Data Store that the user has requested to be deleted.
+--
+-- 'datastoreEndpoint', 'deleteFHIRDatastoreResponse_datastoreEndpoint' - The AWS endpoint for the Data Store the user has requested to be
+-- deleted.
+newDeleteFHIRDatastoreResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'datastoreId'
+  Prelude.Text ->
+  -- | 'datastoreArn'
+  Prelude.Text ->
+  -- | 'datastoreStatus'
+  DatastoreStatus ->
+  -- | 'datastoreEndpoint'
+  Prelude.Text ->
+  DeleteFHIRDatastoreResponse
+newDeleteFHIRDatastoreResponse
+  pHttpStatus_
+  pDatastoreId_
+  pDatastoreArn_
+  pDatastoreStatus_
+  pDatastoreEndpoint_ =
+    DeleteFHIRDatastoreResponse'
+      { httpStatus =
+          pHttpStatus_,
+        datastoreId = pDatastoreId_,
+        datastoreArn = pDatastoreArn_,
+        datastoreStatus = pDatastoreStatus_,
+        datastoreEndpoint = pDatastoreEndpoint_
+      }
+
+-- | The response's http status code.
+deleteFHIRDatastoreResponse_httpStatus :: Lens.Lens' DeleteFHIRDatastoreResponse Prelude.Int
+deleteFHIRDatastoreResponse_httpStatus = Lens.lens (\DeleteFHIRDatastoreResponse' {httpStatus} -> httpStatus) (\s@DeleteFHIRDatastoreResponse' {} a -> s {httpStatus = a} :: DeleteFHIRDatastoreResponse)
+
+-- | The AWS-generated ID for the Data Store to be deleted.
+deleteFHIRDatastoreResponse_datastoreId :: Lens.Lens' DeleteFHIRDatastoreResponse Prelude.Text
+deleteFHIRDatastoreResponse_datastoreId = Lens.lens (\DeleteFHIRDatastoreResponse' {datastoreId} -> datastoreId) (\s@DeleteFHIRDatastoreResponse' {} a -> s {datastoreId = a} :: DeleteFHIRDatastoreResponse)
+
+-- | The Amazon Resource Name (ARN) that gives Amazon HealthLake access
+-- permission.
+deleteFHIRDatastoreResponse_datastoreArn :: Lens.Lens' DeleteFHIRDatastoreResponse Prelude.Text
+deleteFHIRDatastoreResponse_datastoreArn = Lens.lens (\DeleteFHIRDatastoreResponse' {datastoreArn} -> datastoreArn) (\s@DeleteFHIRDatastoreResponse' {} a -> s {datastoreArn = a} :: DeleteFHIRDatastoreResponse)
+
+-- | The status of the Data Store that the user has requested to be deleted.
+deleteFHIRDatastoreResponse_datastoreStatus :: Lens.Lens' DeleteFHIRDatastoreResponse DatastoreStatus
+deleteFHIRDatastoreResponse_datastoreStatus = Lens.lens (\DeleteFHIRDatastoreResponse' {datastoreStatus} -> datastoreStatus) (\s@DeleteFHIRDatastoreResponse' {} a -> s {datastoreStatus = a} :: DeleteFHIRDatastoreResponse)
+
+-- | The AWS endpoint for the Data Store the user has requested to be
+-- deleted.
+deleteFHIRDatastoreResponse_datastoreEndpoint :: Lens.Lens' DeleteFHIRDatastoreResponse Prelude.Text
+deleteFHIRDatastoreResponse_datastoreEndpoint = Lens.lens (\DeleteFHIRDatastoreResponse' {datastoreEndpoint} -> datastoreEndpoint) (\s@DeleteFHIRDatastoreResponse' {} a -> s {datastoreEndpoint = a} :: DeleteFHIRDatastoreResponse)
+
+instance Prelude.NFData DeleteFHIRDatastoreResponse where
+  rnf DeleteFHIRDatastoreResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf datastoreId
+      `Prelude.seq` Prelude.rnf datastoreArn
+      `Prelude.seq` Prelude.rnf datastoreStatus
+      `Prelude.seq` Prelude.rnf datastoreEndpoint
diff --git a/gen/Amazonka/HealthLake/DescribeFHIRDatastore.hs b/gen/Amazonka/HealthLake/DescribeFHIRDatastore.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/DescribeFHIRDatastore.hs
@@ -0,0 +1,185 @@
+{-# 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.DescribeFHIRDatastore
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the properties associated with the FHIR Data Store, including the
+-- Data Store ID, Data Store ARN, Data Store name, Data Store status,
+-- created at, Data Store type version, and Data Store endpoint.
+module Amazonka.HealthLake.DescribeFHIRDatastore
+  ( -- * Creating a Request
+    DescribeFHIRDatastore (..),
+    newDescribeFHIRDatastore,
+
+    -- * Request Lenses
+    describeFHIRDatastore_datastoreId,
+
+    -- * Destructuring the Response
+    DescribeFHIRDatastoreResponse (..),
+    newDescribeFHIRDatastoreResponse,
+
+    -- * Response Lenses
+    describeFHIRDatastoreResponse_httpStatus,
+    describeFHIRDatastoreResponse_datastoreProperties,
+  )
+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:/ 'newDescribeFHIRDatastore' smart constructor.
+data DescribeFHIRDatastore = DescribeFHIRDatastore'
+  { -- | The AWS-generated Data Store id. This is part of the
+    -- ‘CreateFHIRDatastore’ output.
+    datastoreId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFHIRDatastore' 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', 'describeFHIRDatastore_datastoreId' - The AWS-generated Data Store id. This is part of the
+-- ‘CreateFHIRDatastore’ output.
+newDescribeFHIRDatastore ::
+  DescribeFHIRDatastore
+newDescribeFHIRDatastore =
+  DescribeFHIRDatastore'
+    { datastoreId =
+        Prelude.Nothing
+    }
+
+-- | The AWS-generated Data Store id. This is part of the
+-- ‘CreateFHIRDatastore’ output.
+describeFHIRDatastore_datastoreId :: Lens.Lens' DescribeFHIRDatastore (Prelude.Maybe Prelude.Text)
+describeFHIRDatastore_datastoreId = Lens.lens (\DescribeFHIRDatastore' {datastoreId} -> datastoreId) (\s@DescribeFHIRDatastore' {} a -> s {datastoreId = a} :: DescribeFHIRDatastore)
+
+instance Core.AWSRequest DescribeFHIRDatastore where
+  type
+    AWSResponse DescribeFHIRDatastore =
+      DescribeFHIRDatastoreResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeFHIRDatastoreResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "DatastoreProperties")
+      )
+
+instance Prelude.Hashable DescribeFHIRDatastore where
+  hashWithSalt _salt DescribeFHIRDatastore' {..} =
+    _salt `Prelude.hashWithSalt` datastoreId
+
+instance Prelude.NFData DescribeFHIRDatastore where
+  rnf DescribeFHIRDatastore' {..} =
+    Prelude.rnf datastoreId
+
+instance Data.ToHeaders DescribeFHIRDatastore where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "HealthLake.DescribeFHIRDatastore" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeFHIRDatastore where
+  toJSON DescribeFHIRDatastore' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("DatastoreId" Data..=) Prelude.<$> datastoreId]
+      )
+
+instance Data.ToPath DescribeFHIRDatastore where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeFHIRDatastore where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeFHIRDatastoreResponse' smart constructor.
+data DescribeFHIRDatastoreResponse = DescribeFHIRDatastoreResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | All properties associated with a Data Store, including the Data Store
+    -- ID, Data Store ARN, Data Store name, Data Store status, created at, Data
+    -- Store type version, and Data Store endpoint.
+    datastoreProperties :: DatastoreProperties
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFHIRDatastoreResponse' 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:
+--
+-- 'httpStatus', 'describeFHIRDatastoreResponse_httpStatus' - The response's http status code.
+--
+-- 'datastoreProperties', 'describeFHIRDatastoreResponse_datastoreProperties' - All properties associated with a Data Store, including the Data Store
+-- ID, Data Store ARN, Data Store name, Data Store status, created at, Data
+-- Store type version, and Data Store endpoint.
+newDescribeFHIRDatastoreResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'datastoreProperties'
+  DatastoreProperties ->
+  DescribeFHIRDatastoreResponse
+newDescribeFHIRDatastoreResponse
+  pHttpStatus_
+  pDatastoreProperties_ =
+    DescribeFHIRDatastoreResponse'
+      { httpStatus =
+          pHttpStatus_,
+        datastoreProperties = pDatastoreProperties_
+      }
+
+-- | The response's http status code.
+describeFHIRDatastoreResponse_httpStatus :: Lens.Lens' DescribeFHIRDatastoreResponse Prelude.Int
+describeFHIRDatastoreResponse_httpStatus = Lens.lens (\DescribeFHIRDatastoreResponse' {httpStatus} -> httpStatus) (\s@DescribeFHIRDatastoreResponse' {} a -> s {httpStatus = a} :: DescribeFHIRDatastoreResponse)
+
+-- | All properties associated with a Data Store, including the Data Store
+-- ID, Data Store ARN, Data Store name, Data Store status, created at, Data
+-- Store type version, and Data Store endpoint.
+describeFHIRDatastoreResponse_datastoreProperties :: Lens.Lens' DescribeFHIRDatastoreResponse DatastoreProperties
+describeFHIRDatastoreResponse_datastoreProperties = Lens.lens (\DescribeFHIRDatastoreResponse' {datastoreProperties} -> datastoreProperties) (\s@DescribeFHIRDatastoreResponse' {} a -> s {datastoreProperties = a} :: DescribeFHIRDatastoreResponse)
+
+instance Prelude.NFData DescribeFHIRDatastoreResponse where
+  rnf DescribeFHIRDatastoreResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf datastoreProperties
diff --git a/gen/Amazonka/HealthLake/DescribeFHIRExportJob.hs b/gen/Amazonka/HealthLake/DescribeFHIRExportJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/DescribeFHIRExportJob.hs
@@ -0,0 +1,199 @@
+{-# 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.DescribeFHIRExportJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Displays the properties of a FHIR export job, including the ID, ARN,
+-- name, and the status of the job.
+module Amazonka.HealthLake.DescribeFHIRExportJob
+  ( -- * Creating a Request
+    DescribeFHIRExportJob (..),
+    newDescribeFHIRExportJob,
+
+    -- * Request Lenses
+    describeFHIRExportJob_datastoreId,
+    describeFHIRExportJob_jobId,
+
+    -- * Destructuring the Response
+    DescribeFHIRExportJobResponse (..),
+    newDescribeFHIRExportJobResponse,
+
+    -- * Response Lenses
+    describeFHIRExportJobResponse_httpStatus,
+    describeFHIRExportJobResponse_exportJobProperties,
+  )
+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:/ 'newDescribeFHIRExportJob' smart constructor.
+data DescribeFHIRExportJob = DescribeFHIRExportJob'
+  { -- | The AWS generated ID for the Data Store from which files are being
+    -- exported from for an export job.
+    datastoreId :: Prelude.Text,
+    -- | The AWS generated ID for an export job.
+    jobId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFHIRExportJob' 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', 'describeFHIRExportJob_datastoreId' - The AWS generated ID for the Data Store from which files are being
+-- exported from for an export job.
+--
+-- 'jobId', 'describeFHIRExportJob_jobId' - The AWS generated ID for an export job.
+newDescribeFHIRExportJob ::
+  -- | 'datastoreId'
+  Prelude.Text ->
+  -- | 'jobId'
+  Prelude.Text ->
+  DescribeFHIRExportJob
+newDescribeFHIRExportJob pDatastoreId_ pJobId_ =
+  DescribeFHIRExportJob'
+    { datastoreId = pDatastoreId_,
+      jobId = pJobId_
+    }
+
+-- | The AWS generated ID for the Data Store from which files are being
+-- exported from for an export job.
+describeFHIRExportJob_datastoreId :: Lens.Lens' DescribeFHIRExportJob Prelude.Text
+describeFHIRExportJob_datastoreId = Lens.lens (\DescribeFHIRExportJob' {datastoreId} -> datastoreId) (\s@DescribeFHIRExportJob' {} a -> s {datastoreId = a} :: DescribeFHIRExportJob)
+
+-- | The AWS generated ID for an export job.
+describeFHIRExportJob_jobId :: Lens.Lens' DescribeFHIRExportJob Prelude.Text
+describeFHIRExportJob_jobId = Lens.lens (\DescribeFHIRExportJob' {jobId} -> jobId) (\s@DescribeFHIRExportJob' {} a -> s {jobId = a} :: DescribeFHIRExportJob)
+
+instance Core.AWSRequest DescribeFHIRExportJob where
+  type
+    AWSResponse DescribeFHIRExportJob =
+      DescribeFHIRExportJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeFHIRExportJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ExportJobProperties")
+      )
+
+instance Prelude.Hashable DescribeFHIRExportJob where
+  hashWithSalt _salt DescribeFHIRExportJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` datastoreId
+      `Prelude.hashWithSalt` jobId
+
+instance Prelude.NFData DescribeFHIRExportJob where
+  rnf DescribeFHIRExportJob' {..} =
+    Prelude.rnf datastoreId
+      `Prelude.seq` Prelude.rnf jobId
+
+instance Data.ToHeaders DescribeFHIRExportJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "HealthLake.DescribeFHIRExportJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeFHIRExportJob where
+  toJSON DescribeFHIRExportJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("DatastoreId" Data..= datastoreId),
+            Prelude.Just ("JobId" Data..= jobId)
+          ]
+      )
+
+instance Data.ToPath DescribeFHIRExportJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeFHIRExportJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeFHIRExportJobResponse' smart constructor.
+data DescribeFHIRExportJobResponse = DescribeFHIRExportJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | Displays the properties of the export job, including the ID, Arn, Name,
+    -- and the status of the job.
+    exportJobProperties :: ExportJobProperties
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFHIRExportJobResponse' 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:
+--
+-- 'httpStatus', 'describeFHIRExportJobResponse_httpStatus' - The response's http status code.
+--
+-- 'exportJobProperties', 'describeFHIRExportJobResponse_exportJobProperties' - Displays the properties of the export job, including the ID, Arn, Name,
+-- and the status of the job.
+newDescribeFHIRExportJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'exportJobProperties'
+  ExportJobProperties ->
+  DescribeFHIRExportJobResponse
+newDescribeFHIRExportJobResponse
+  pHttpStatus_
+  pExportJobProperties_ =
+    DescribeFHIRExportJobResponse'
+      { httpStatus =
+          pHttpStatus_,
+        exportJobProperties = pExportJobProperties_
+      }
+
+-- | The response's http status code.
+describeFHIRExportJobResponse_httpStatus :: Lens.Lens' DescribeFHIRExportJobResponse Prelude.Int
+describeFHIRExportJobResponse_httpStatus = Lens.lens (\DescribeFHIRExportJobResponse' {httpStatus} -> httpStatus) (\s@DescribeFHIRExportJobResponse' {} a -> s {httpStatus = a} :: DescribeFHIRExportJobResponse)
+
+-- | Displays the properties of the export job, including the ID, Arn, Name,
+-- and the status of the job.
+describeFHIRExportJobResponse_exportJobProperties :: Lens.Lens' DescribeFHIRExportJobResponse ExportJobProperties
+describeFHIRExportJobResponse_exportJobProperties = Lens.lens (\DescribeFHIRExportJobResponse' {exportJobProperties} -> exportJobProperties) (\s@DescribeFHIRExportJobResponse' {} a -> s {exportJobProperties = a} :: DescribeFHIRExportJobResponse)
+
+instance Prelude.NFData DescribeFHIRExportJobResponse where
+  rnf DescribeFHIRExportJobResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf exportJobProperties
diff --git a/gen/Amazonka/HealthLake/DescribeFHIRImportJob.hs b/gen/Amazonka/HealthLake/DescribeFHIRImportJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/DescribeFHIRImportJob.hs
@@ -0,0 +1,196 @@
+{-# 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.DescribeFHIRImportJob
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Displays the properties of a FHIR import job, including the ID, ARN,
+-- name, and the status of the job.
+module Amazonka.HealthLake.DescribeFHIRImportJob
+  ( -- * Creating a Request
+    DescribeFHIRImportJob (..),
+    newDescribeFHIRImportJob,
+
+    -- * Request Lenses
+    describeFHIRImportJob_datastoreId,
+    describeFHIRImportJob_jobId,
+
+    -- * Destructuring the Response
+    DescribeFHIRImportJobResponse (..),
+    newDescribeFHIRImportJobResponse,
+
+    -- * Response Lenses
+    describeFHIRImportJobResponse_httpStatus,
+    describeFHIRImportJobResponse_importJobProperties,
+  )
+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:/ 'newDescribeFHIRImportJob' smart constructor.
+data DescribeFHIRImportJob = DescribeFHIRImportJob'
+  { -- | The AWS-generated ID of the Data Store.
+    datastoreId :: Prelude.Text,
+    -- | The AWS-generated job ID.
+    jobId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFHIRImportJob' 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', 'describeFHIRImportJob_datastoreId' - The AWS-generated ID of the Data Store.
+--
+-- 'jobId', 'describeFHIRImportJob_jobId' - The AWS-generated job ID.
+newDescribeFHIRImportJob ::
+  -- | 'datastoreId'
+  Prelude.Text ->
+  -- | 'jobId'
+  Prelude.Text ->
+  DescribeFHIRImportJob
+newDescribeFHIRImportJob pDatastoreId_ pJobId_ =
+  DescribeFHIRImportJob'
+    { datastoreId = pDatastoreId_,
+      jobId = pJobId_
+    }
+
+-- | The AWS-generated ID of the Data Store.
+describeFHIRImportJob_datastoreId :: Lens.Lens' DescribeFHIRImportJob Prelude.Text
+describeFHIRImportJob_datastoreId = Lens.lens (\DescribeFHIRImportJob' {datastoreId} -> datastoreId) (\s@DescribeFHIRImportJob' {} a -> s {datastoreId = a} :: DescribeFHIRImportJob)
+
+-- | The AWS-generated job ID.
+describeFHIRImportJob_jobId :: Lens.Lens' DescribeFHIRImportJob Prelude.Text
+describeFHIRImportJob_jobId = Lens.lens (\DescribeFHIRImportJob' {jobId} -> jobId) (\s@DescribeFHIRImportJob' {} a -> s {jobId = a} :: DescribeFHIRImportJob)
+
+instance Core.AWSRequest DescribeFHIRImportJob where
+  type
+    AWSResponse DescribeFHIRImportJob =
+      DescribeFHIRImportJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeFHIRImportJobResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "ImportJobProperties")
+      )
+
+instance Prelude.Hashable DescribeFHIRImportJob where
+  hashWithSalt _salt DescribeFHIRImportJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` datastoreId
+      `Prelude.hashWithSalt` jobId
+
+instance Prelude.NFData DescribeFHIRImportJob where
+  rnf DescribeFHIRImportJob' {..} =
+    Prelude.rnf datastoreId
+      `Prelude.seq` Prelude.rnf jobId
+
+instance Data.ToHeaders DescribeFHIRImportJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "HealthLake.DescribeFHIRImportJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON DescribeFHIRImportJob where
+  toJSON DescribeFHIRImportJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("DatastoreId" Data..= datastoreId),
+            Prelude.Just ("JobId" Data..= jobId)
+          ]
+      )
+
+instance Data.ToPath DescribeFHIRImportJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeFHIRImportJob where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDescribeFHIRImportJobResponse' smart constructor.
+data DescribeFHIRImportJobResponse = DescribeFHIRImportJobResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The properties of the Import job request, including the ID, ARN, name,
+    -- and the status of the job.
+    importJobProperties :: ImportJobProperties
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFHIRImportJobResponse' 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:
+--
+-- 'httpStatus', 'describeFHIRImportJobResponse_httpStatus' - The response's http status code.
+--
+-- 'importJobProperties', 'describeFHIRImportJobResponse_importJobProperties' - The properties of the Import job request, including the ID, ARN, name,
+-- and the status of the job.
+newDescribeFHIRImportJobResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'importJobProperties'
+  ImportJobProperties ->
+  DescribeFHIRImportJobResponse
+newDescribeFHIRImportJobResponse
+  pHttpStatus_
+  pImportJobProperties_ =
+    DescribeFHIRImportJobResponse'
+      { httpStatus =
+          pHttpStatus_,
+        importJobProperties = pImportJobProperties_
+      }
+
+-- | The response's http status code.
+describeFHIRImportJobResponse_httpStatus :: Lens.Lens' DescribeFHIRImportJobResponse Prelude.Int
+describeFHIRImportJobResponse_httpStatus = Lens.lens (\DescribeFHIRImportJobResponse' {httpStatus} -> httpStatus) (\s@DescribeFHIRImportJobResponse' {} a -> s {httpStatus = a} :: DescribeFHIRImportJobResponse)
+
+-- | The properties of the Import job request, including the ID, ARN, name,
+-- and the status of the job.
+describeFHIRImportJobResponse_importJobProperties :: Lens.Lens' DescribeFHIRImportJobResponse ImportJobProperties
+describeFHIRImportJobResponse_importJobProperties = Lens.lens (\DescribeFHIRImportJobResponse' {importJobProperties} -> importJobProperties) (\s@DescribeFHIRImportJobResponse' {} a -> s {importJobProperties = a} :: DescribeFHIRImportJobResponse)
+
+instance Prelude.NFData DescribeFHIRImportJobResponse where
+  rnf DescribeFHIRImportJobResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf importJobProperties
diff --git a/gen/Amazonka/HealthLake/Lens.hs b/gen/Amazonka/HealthLake/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/Lens.hs
@@ -0,0 +1,216 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.HealthLake.Lens
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.HealthLake.Lens
+  ( -- * Operations
+
+    -- ** CreateFHIRDatastore
+    createFHIRDatastore_clientToken,
+    createFHIRDatastore_datastoreName,
+    createFHIRDatastore_preloadDataConfig,
+    createFHIRDatastore_sseConfiguration,
+    createFHIRDatastore_tags,
+    createFHIRDatastore_datastoreTypeVersion,
+    createFHIRDatastoreResponse_httpStatus,
+    createFHIRDatastoreResponse_datastoreId,
+    createFHIRDatastoreResponse_datastoreArn,
+    createFHIRDatastoreResponse_datastoreStatus,
+    createFHIRDatastoreResponse_datastoreEndpoint,
+
+    -- ** DeleteFHIRDatastore
+    deleteFHIRDatastore_datastoreId,
+    deleteFHIRDatastoreResponse_httpStatus,
+    deleteFHIRDatastoreResponse_datastoreId,
+    deleteFHIRDatastoreResponse_datastoreArn,
+    deleteFHIRDatastoreResponse_datastoreStatus,
+    deleteFHIRDatastoreResponse_datastoreEndpoint,
+
+    -- ** DescribeFHIRDatastore
+    describeFHIRDatastore_datastoreId,
+    describeFHIRDatastoreResponse_httpStatus,
+    describeFHIRDatastoreResponse_datastoreProperties,
+
+    -- ** DescribeFHIRExportJob
+    describeFHIRExportJob_datastoreId,
+    describeFHIRExportJob_jobId,
+    describeFHIRExportJobResponse_httpStatus,
+    describeFHIRExportJobResponse_exportJobProperties,
+
+    -- ** DescribeFHIRImportJob
+    describeFHIRImportJob_datastoreId,
+    describeFHIRImportJob_jobId,
+    describeFHIRImportJobResponse_httpStatus,
+    describeFHIRImportJobResponse_importJobProperties,
+
+    -- ** ListFHIRDatastores
+    listFHIRDatastores_filter,
+    listFHIRDatastores_maxResults,
+    listFHIRDatastores_nextToken,
+    listFHIRDatastoresResponse_nextToken,
+    listFHIRDatastoresResponse_httpStatus,
+    listFHIRDatastoresResponse_datastorePropertiesList,
+
+    -- ** ListFHIRExportJobs
+    listFHIRExportJobs_jobName,
+    listFHIRExportJobs_jobStatus,
+    listFHIRExportJobs_maxResults,
+    listFHIRExportJobs_nextToken,
+    listFHIRExportJobs_submittedAfter,
+    listFHIRExportJobs_submittedBefore,
+    listFHIRExportJobs_datastoreId,
+    listFHIRExportJobsResponse_nextToken,
+    listFHIRExportJobsResponse_httpStatus,
+    listFHIRExportJobsResponse_exportJobPropertiesList,
+
+    -- ** ListFHIRImportJobs
+    listFHIRImportJobs_jobName,
+    listFHIRImportJobs_jobStatus,
+    listFHIRImportJobs_maxResults,
+    listFHIRImportJobs_nextToken,
+    listFHIRImportJobs_submittedAfter,
+    listFHIRImportJobs_submittedBefore,
+    listFHIRImportJobs_datastoreId,
+    listFHIRImportJobsResponse_nextToken,
+    listFHIRImportJobsResponse_httpStatus,
+    listFHIRImportJobsResponse_importJobPropertiesList,
+
+    -- ** ListTagsForResource
+    listTagsForResource_resourceARN,
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+
+    -- ** StartFHIRExportJob
+    startFHIRExportJob_jobName,
+    startFHIRExportJob_outputDataConfig,
+    startFHIRExportJob_datastoreId,
+    startFHIRExportJob_dataAccessRoleArn,
+    startFHIRExportJob_clientToken,
+    startFHIRExportJobResponse_datastoreId,
+    startFHIRExportJobResponse_httpStatus,
+    startFHIRExportJobResponse_jobId,
+    startFHIRExportJobResponse_jobStatus,
+
+    -- ** StartFHIRImportJob
+    startFHIRImportJob_jobName,
+    startFHIRImportJob_inputDataConfig,
+    startFHIRImportJob_jobOutputDataConfig,
+    startFHIRImportJob_datastoreId,
+    startFHIRImportJob_dataAccessRoleArn,
+    startFHIRImportJob_clientToken,
+    startFHIRImportJobResponse_datastoreId,
+    startFHIRImportJobResponse_httpStatus,
+    startFHIRImportJobResponse_jobId,
+    startFHIRImportJobResponse_jobStatus,
+
+    -- ** TagResource
+    tagResource_resourceARN,
+    tagResource_tags,
+    tagResourceResponse_httpStatus,
+
+    -- ** UntagResource
+    untagResource_resourceARN,
+    untagResource_tagKeys,
+    untagResourceResponse_httpStatus,
+
+    -- * Types
+
+    -- ** DatastoreFilter
+    datastoreFilter_createdAfter,
+    datastoreFilter_createdBefore,
+    datastoreFilter_datastoreName,
+    datastoreFilter_datastoreStatus,
+
+    -- ** DatastoreProperties
+    datastoreProperties_createdAt,
+    datastoreProperties_datastoreName,
+    datastoreProperties_preloadDataConfig,
+    datastoreProperties_sseConfiguration,
+    datastoreProperties_datastoreId,
+    datastoreProperties_datastoreArn,
+    datastoreProperties_datastoreStatus,
+    datastoreProperties_datastoreTypeVersion,
+    datastoreProperties_datastoreEndpoint,
+
+    -- ** ExportJobProperties
+    exportJobProperties_dataAccessRoleArn,
+    exportJobProperties_endTime,
+    exportJobProperties_jobName,
+    exportJobProperties_message,
+    exportJobProperties_jobId,
+    exportJobProperties_jobStatus,
+    exportJobProperties_submitTime,
+    exportJobProperties_datastoreId,
+    exportJobProperties_outputDataConfig,
+
+    -- ** ImportJobProperties
+    importJobProperties_dataAccessRoleArn,
+    importJobProperties_endTime,
+    importJobProperties_jobName,
+    importJobProperties_jobOutputDataConfig,
+    importJobProperties_message,
+    importJobProperties_jobId,
+    importJobProperties_jobStatus,
+    importJobProperties_submitTime,
+    importJobProperties_datastoreId,
+    importJobProperties_inputDataConfig,
+
+    -- ** InputDataConfig
+    inputDataConfig_s3Uri,
+
+    -- ** KmsEncryptionConfig
+    kmsEncryptionConfig_kmsKeyId,
+    kmsEncryptionConfig_cmkType,
+
+    -- ** OutputDataConfig
+    outputDataConfig_s3Configuration,
+
+    -- ** PreloadDataConfig
+    preloadDataConfig_preloadDataType,
+
+    -- ** S3Configuration
+    s3Configuration_s3Uri,
+    s3Configuration_kmsKeyId,
+
+    -- ** SseConfiguration
+    sseConfiguration_kmsEncryptionConfig,
+
+    -- ** Tag
+    tag_key,
+    tag_value,
+  )
+where
+
+import Amazonka.HealthLake.CreateFHIRDatastore
+import Amazonka.HealthLake.DeleteFHIRDatastore
+import Amazonka.HealthLake.DescribeFHIRDatastore
+import Amazonka.HealthLake.DescribeFHIRExportJob
+import Amazonka.HealthLake.DescribeFHIRImportJob
+import Amazonka.HealthLake.ListFHIRDatastores
+import Amazonka.HealthLake.ListFHIRExportJobs
+import Amazonka.HealthLake.ListFHIRImportJobs
+import Amazonka.HealthLake.ListTagsForResource
+import Amazonka.HealthLake.StartFHIRExportJob
+import Amazonka.HealthLake.StartFHIRImportJob
+import Amazonka.HealthLake.TagResource
+import Amazonka.HealthLake.Types.DatastoreFilter
+import Amazonka.HealthLake.Types.DatastoreProperties
+import Amazonka.HealthLake.Types.ExportJobProperties
+import Amazonka.HealthLake.Types.ImportJobProperties
+import Amazonka.HealthLake.Types.InputDataConfig
+import Amazonka.HealthLake.Types.KmsEncryptionConfig
+import Amazonka.HealthLake.Types.OutputDataConfig
+import Amazonka.HealthLake.Types.PreloadDataConfig
+import Amazonka.HealthLake.Types.S3Configuration
+import Amazonka.HealthLake.Types.SseConfiguration
+import Amazonka.HealthLake.Types.Tag
+import Amazonka.HealthLake.UntagResource
diff --git a/gen/Amazonka/HealthLake/ListFHIRDatastores.hs b/gen/Amazonka/HealthLake/ListFHIRDatastores.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/ListFHIRDatastores.hs
@@ -0,0 +1,216 @@
+{-# 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.ListFHIRDatastores
+-- 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 Data Stores that are in the user’s account, regardless of
+-- Data Store status.
+module Amazonka.HealthLake.ListFHIRDatastores
+  ( -- * Creating a Request
+    ListFHIRDatastores (..),
+    newListFHIRDatastores,
+
+    -- * Request Lenses
+    listFHIRDatastores_filter,
+    listFHIRDatastores_maxResults,
+    listFHIRDatastores_nextToken,
+
+    -- * Destructuring the Response
+    ListFHIRDatastoresResponse (..),
+    newListFHIRDatastoresResponse,
+
+    -- * Response Lenses
+    listFHIRDatastoresResponse_nextToken,
+    listFHIRDatastoresResponse_httpStatus,
+    listFHIRDatastoresResponse_datastorePropertiesList,
+  )
+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:/ 'newListFHIRDatastores' smart constructor.
+data ListFHIRDatastores = ListFHIRDatastores'
+  { -- | Lists all filters associated with a FHIR Data Store request.
+    filter' :: Prelude.Maybe DatastoreFilter,
+    -- | The maximum number of Data Stores returned in a single page of a
+    -- ListFHIRDatastoresRequest call.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | Fetches the next page of Data Stores when results are paginated.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListFHIRDatastores' 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:
+--
+-- 'filter'', 'listFHIRDatastores_filter' - Lists all filters associated with a FHIR Data Store request.
+--
+-- 'maxResults', 'listFHIRDatastores_maxResults' - The maximum number of Data Stores returned in a single page of a
+-- ListFHIRDatastoresRequest call.
+--
+-- 'nextToken', 'listFHIRDatastores_nextToken' - Fetches the next page of Data Stores when results are paginated.
+newListFHIRDatastores ::
+  ListFHIRDatastores
+newListFHIRDatastores =
+  ListFHIRDatastores'
+    { filter' = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | Lists all filters associated with a FHIR Data Store request.
+listFHIRDatastores_filter :: Lens.Lens' ListFHIRDatastores (Prelude.Maybe DatastoreFilter)
+listFHIRDatastores_filter = Lens.lens (\ListFHIRDatastores' {filter'} -> filter') (\s@ListFHIRDatastores' {} a -> s {filter' = a} :: ListFHIRDatastores)
+
+-- | The maximum number of Data Stores returned in a single page of a
+-- ListFHIRDatastoresRequest call.
+listFHIRDatastores_maxResults :: Lens.Lens' ListFHIRDatastores (Prelude.Maybe Prelude.Natural)
+listFHIRDatastores_maxResults = Lens.lens (\ListFHIRDatastores' {maxResults} -> maxResults) (\s@ListFHIRDatastores' {} a -> s {maxResults = a} :: ListFHIRDatastores)
+
+-- | Fetches the next page of Data Stores when results are paginated.
+listFHIRDatastores_nextToken :: Lens.Lens' ListFHIRDatastores (Prelude.Maybe Prelude.Text)
+listFHIRDatastores_nextToken = Lens.lens (\ListFHIRDatastores' {nextToken} -> nextToken) (\s@ListFHIRDatastores' {} a -> s {nextToken = a} :: ListFHIRDatastores)
+
+instance Core.AWSRequest ListFHIRDatastores where
+  type
+    AWSResponse ListFHIRDatastores =
+      ListFHIRDatastoresResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListFHIRDatastoresResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "DatastorePropertiesList"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListFHIRDatastores where
+  hashWithSalt _salt ListFHIRDatastores' {..} =
+    _salt
+      `Prelude.hashWithSalt` filter'
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListFHIRDatastores where
+  rnf ListFHIRDatastores' {..} =
+    Prelude.rnf filter'
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListFHIRDatastores where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "HealthLake.ListFHIRDatastores" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListFHIRDatastores where
+  toJSON ListFHIRDatastores' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Filter" Data..=) Prelude.<$> filter',
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken
+          ]
+      )
+
+instance Data.ToPath ListFHIRDatastores where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListFHIRDatastores where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListFHIRDatastoresResponse' smart constructor.
+data ListFHIRDatastoresResponse = ListFHIRDatastoresResponse'
+  { -- | Pagination token that can be used to retrieve the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | All properties associated with the listed Data Stores.
+    datastorePropertiesList :: [DatastoreProperties]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListFHIRDatastoresResponse' 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', 'listFHIRDatastoresResponse_nextToken' - Pagination token that can be used to retrieve the next page of results.
+--
+-- 'httpStatus', 'listFHIRDatastoresResponse_httpStatus' - The response's http status code.
+--
+-- 'datastorePropertiesList', 'listFHIRDatastoresResponse_datastorePropertiesList' - All properties associated with the listed Data Stores.
+newListFHIRDatastoresResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListFHIRDatastoresResponse
+newListFHIRDatastoresResponse pHttpStatus_ =
+  ListFHIRDatastoresResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      datastorePropertiesList = Prelude.mempty
+    }
+
+-- | Pagination token that can be used to retrieve the next page of results.
+listFHIRDatastoresResponse_nextToken :: Lens.Lens' ListFHIRDatastoresResponse (Prelude.Maybe Prelude.Text)
+listFHIRDatastoresResponse_nextToken = Lens.lens (\ListFHIRDatastoresResponse' {nextToken} -> nextToken) (\s@ListFHIRDatastoresResponse' {} a -> s {nextToken = a} :: ListFHIRDatastoresResponse)
+
+-- | The response's http status code.
+listFHIRDatastoresResponse_httpStatus :: Lens.Lens' ListFHIRDatastoresResponse Prelude.Int
+listFHIRDatastoresResponse_httpStatus = Lens.lens (\ListFHIRDatastoresResponse' {httpStatus} -> httpStatus) (\s@ListFHIRDatastoresResponse' {} a -> s {httpStatus = a} :: ListFHIRDatastoresResponse)
+
+-- | All properties associated with the listed Data Stores.
+listFHIRDatastoresResponse_datastorePropertiesList :: Lens.Lens' ListFHIRDatastoresResponse [DatastoreProperties]
+listFHIRDatastoresResponse_datastorePropertiesList = Lens.lens (\ListFHIRDatastoresResponse' {datastorePropertiesList} -> datastorePropertiesList) (\s@ListFHIRDatastoresResponse' {} a -> s {datastorePropertiesList = a} :: ListFHIRDatastoresResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListFHIRDatastoresResponse where
+  rnf ListFHIRDatastoresResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf datastorePropertiesList
diff --git a/gen/Amazonka/HealthLake/ListFHIRExportJobs.hs b/gen/Amazonka/HealthLake/ListFHIRExportJobs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/ListFHIRExportJobs.hs
@@ -0,0 +1,296 @@
+{-# 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.ListFHIRExportJobs
+-- 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 export jobs associated with an account and their
+-- statuses.
+module Amazonka.HealthLake.ListFHIRExportJobs
+  ( -- * Creating a Request
+    ListFHIRExportJobs (..),
+    newListFHIRExportJobs,
+
+    -- * Request Lenses
+    listFHIRExportJobs_jobName,
+    listFHIRExportJobs_jobStatus,
+    listFHIRExportJobs_maxResults,
+    listFHIRExportJobs_nextToken,
+    listFHIRExportJobs_submittedAfter,
+    listFHIRExportJobs_submittedBefore,
+    listFHIRExportJobs_datastoreId,
+
+    -- * Destructuring the Response
+    ListFHIRExportJobsResponse (..),
+    newListFHIRExportJobsResponse,
+
+    -- * Response Lenses
+    listFHIRExportJobsResponse_nextToken,
+    listFHIRExportJobsResponse_httpStatus,
+    listFHIRExportJobsResponse_exportJobPropertiesList,
+  )
+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:/ 'newListFHIRExportJobs' smart constructor.
+data ListFHIRExportJobs = ListFHIRExportJobs'
+  { -- | This parameter limits the response to the export job with the specified
+    -- job name.
+    jobName :: Prelude.Maybe Prelude.Text,
+    -- | This parameter limits the response to the export jobs with the specified
+    -- job status.
+    jobStatus :: Prelude.Maybe JobStatus,
+    -- | This parameter limits the number of results returned for a
+    -- ListFHIRExportJobs to a maximum quantity specified by the user.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A pagination token used to identify the next page of results to return
+    -- for a ListFHIRExportJobs query.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | This parameter limits the response to FHIR export jobs submitted after a
+    -- user specified date.
+    submittedAfter :: Prelude.Maybe Data.POSIX,
+    -- | This parameter limits the response to FHIR export jobs submitted before
+    -- a user specified date.
+    submittedBefore :: Prelude.Maybe Data.POSIX,
+    -- | This parameter limits the response to the export job with the specified
+    -- Data Store ID.
+    datastoreId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListFHIRExportJobs' 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', 'listFHIRExportJobs_jobName' - This parameter limits the response to the export job with the specified
+-- job name.
+--
+-- 'jobStatus', 'listFHIRExportJobs_jobStatus' - This parameter limits the response to the export jobs with the specified
+-- job status.
+--
+-- 'maxResults', 'listFHIRExportJobs_maxResults' - This parameter limits the number of results returned for a
+-- ListFHIRExportJobs to a maximum quantity specified by the user.
+--
+-- 'nextToken', 'listFHIRExportJobs_nextToken' - A pagination token used to identify the next page of results to return
+-- for a ListFHIRExportJobs query.
+--
+-- 'submittedAfter', 'listFHIRExportJobs_submittedAfter' - This parameter limits the response to FHIR export jobs submitted after a
+-- user specified date.
+--
+-- 'submittedBefore', 'listFHIRExportJobs_submittedBefore' - This parameter limits the response to FHIR export jobs submitted before
+-- a user specified date.
+--
+-- 'datastoreId', 'listFHIRExportJobs_datastoreId' - This parameter limits the response to the export job with the specified
+-- Data Store ID.
+newListFHIRExportJobs ::
+  -- | 'datastoreId'
+  Prelude.Text ->
+  ListFHIRExportJobs
+newListFHIRExportJobs pDatastoreId_ =
+  ListFHIRExportJobs'
+    { jobName = Prelude.Nothing,
+      jobStatus = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      submittedAfter = Prelude.Nothing,
+      submittedBefore = Prelude.Nothing,
+      datastoreId = pDatastoreId_
+    }
+
+-- | This parameter limits the response to the export job with the specified
+-- job name.
+listFHIRExportJobs_jobName :: Lens.Lens' ListFHIRExportJobs (Prelude.Maybe Prelude.Text)
+listFHIRExportJobs_jobName = Lens.lens (\ListFHIRExportJobs' {jobName} -> jobName) (\s@ListFHIRExportJobs' {} a -> s {jobName = a} :: ListFHIRExportJobs)
+
+-- | This parameter limits the response to the export jobs with the specified
+-- job status.
+listFHIRExportJobs_jobStatus :: Lens.Lens' ListFHIRExportJobs (Prelude.Maybe JobStatus)
+listFHIRExportJobs_jobStatus = Lens.lens (\ListFHIRExportJobs' {jobStatus} -> jobStatus) (\s@ListFHIRExportJobs' {} a -> s {jobStatus = a} :: ListFHIRExportJobs)
+
+-- | This parameter limits the number of results returned for a
+-- ListFHIRExportJobs to a maximum quantity specified by the user.
+listFHIRExportJobs_maxResults :: Lens.Lens' ListFHIRExportJobs (Prelude.Maybe Prelude.Natural)
+listFHIRExportJobs_maxResults = Lens.lens (\ListFHIRExportJobs' {maxResults} -> maxResults) (\s@ListFHIRExportJobs' {} a -> s {maxResults = a} :: ListFHIRExportJobs)
+
+-- | A pagination token used to identify the next page of results to return
+-- for a ListFHIRExportJobs query.
+listFHIRExportJobs_nextToken :: Lens.Lens' ListFHIRExportJobs (Prelude.Maybe Prelude.Text)
+listFHIRExportJobs_nextToken = Lens.lens (\ListFHIRExportJobs' {nextToken} -> nextToken) (\s@ListFHIRExportJobs' {} a -> s {nextToken = a} :: ListFHIRExportJobs)
+
+-- | This parameter limits the response to FHIR export jobs submitted after a
+-- user specified date.
+listFHIRExportJobs_submittedAfter :: Lens.Lens' ListFHIRExportJobs (Prelude.Maybe Prelude.UTCTime)
+listFHIRExportJobs_submittedAfter = Lens.lens (\ListFHIRExportJobs' {submittedAfter} -> submittedAfter) (\s@ListFHIRExportJobs' {} a -> s {submittedAfter = a} :: ListFHIRExportJobs) Prelude.. Lens.mapping Data._Time
+
+-- | This parameter limits the response to FHIR export jobs submitted before
+-- a user specified date.
+listFHIRExportJobs_submittedBefore :: Lens.Lens' ListFHIRExportJobs (Prelude.Maybe Prelude.UTCTime)
+listFHIRExportJobs_submittedBefore = Lens.lens (\ListFHIRExportJobs' {submittedBefore} -> submittedBefore) (\s@ListFHIRExportJobs' {} a -> s {submittedBefore = a} :: ListFHIRExportJobs) Prelude.. Lens.mapping Data._Time
+
+-- | This parameter limits the response to the export job with the specified
+-- Data Store ID.
+listFHIRExportJobs_datastoreId :: Lens.Lens' ListFHIRExportJobs Prelude.Text
+listFHIRExportJobs_datastoreId = Lens.lens (\ListFHIRExportJobs' {datastoreId} -> datastoreId) (\s@ListFHIRExportJobs' {} a -> s {datastoreId = a} :: ListFHIRExportJobs)
+
+instance Core.AWSRequest ListFHIRExportJobs where
+  type
+    AWSResponse ListFHIRExportJobs =
+      ListFHIRExportJobsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListFHIRExportJobsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "ExportJobPropertiesList"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListFHIRExportJobs where
+  hashWithSalt _salt ListFHIRExportJobs' {..} =
+    _salt
+      `Prelude.hashWithSalt` jobName
+      `Prelude.hashWithSalt` jobStatus
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` submittedAfter
+      `Prelude.hashWithSalt` submittedBefore
+      `Prelude.hashWithSalt` datastoreId
+
+instance Prelude.NFData ListFHIRExportJobs where
+  rnf ListFHIRExportJobs' {..} =
+    Prelude.rnf jobName
+      `Prelude.seq` Prelude.rnf jobStatus
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf submittedAfter
+      `Prelude.seq` Prelude.rnf submittedBefore
+      `Prelude.seq` Prelude.rnf datastoreId
+
+instance Data.ToHeaders ListFHIRExportJobs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "HealthLake.ListFHIRExportJobs" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListFHIRExportJobs where
+  toJSON ListFHIRExportJobs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("JobName" Data..=) Prelude.<$> jobName,
+            ("JobStatus" Data..=) Prelude.<$> jobStatus,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SubmittedAfter" Data..=)
+              Prelude.<$> submittedAfter,
+            ("SubmittedBefore" Data..=)
+              Prelude.<$> submittedBefore,
+            Prelude.Just ("DatastoreId" Data..= datastoreId)
+          ]
+      )
+
+instance Data.ToPath ListFHIRExportJobs where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListFHIRExportJobs where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListFHIRExportJobsResponse' smart constructor.
+data ListFHIRExportJobsResponse = ListFHIRExportJobsResponse'
+  { -- | A pagination token used to identify the next page of results to return
+    -- for a ListFHIRExportJobs query.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The properties of listed FHIR export jobs, including the ID, ARN, name,
+    -- and the status of the job.
+    exportJobPropertiesList :: [ExportJobProperties]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListFHIRExportJobsResponse' 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', 'listFHIRExportJobsResponse_nextToken' - A pagination token used to identify the next page of results to return
+-- for a ListFHIRExportJobs query.
+--
+-- 'httpStatus', 'listFHIRExportJobsResponse_httpStatus' - The response's http status code.
+--
+-- 'exportJobPropertiesList', 'listFHIRExportJobsResponse_exportJobPropertiesList' - The properties of listed FHIR export jobs, including the ID, ARN, name,
+-- and the status of the job.
+newListFHIRExportJobsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListFHIRExportJobsResponse
+newListFHIRExportJobsResponse pHttpStatus_ =
+  ListFHIRExportJobsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      exportJobPropertiesList = Prelude.mempty
+    }
+
+-- | A pagination token used to identify the next page of results to return
+-- for a ListFHIRExportJobs query.
+listFHIRExportJobsResponse_nextToken :: Lens.Lens' ListFHIRExportJobsResponse (Prelude.Maybe Prelude.Text)
+listFHIRExportJobsResponse_nextToken = Lens.lens (\ListFHIRExportJobsResponse' {nextToken} -> nextToken) (\s@ListFHIRExportJobsResponse' {} a -> s {nextToken = a} :: ListFHIRExportJobsResponse)
+
+-- | The response's http status code.
+listFHIRExportJobsResponse_httpStatus :: Lens.Lens' ListFHIRExportJobsResponse Prelude.Int
+listFHIRExportJobsResponse_httpStatus = Lens.lens (\ListFHIRExportJobsResponse' {httpStatus} -> httpStatus) (\s@ListFHIRExportJobsResponse' {} a -> s {httpStatus = a} :: ListFHIRExportJobsResponse)
+
+-- | The properties of listed FHIR export jobs, including the ID, ARN, name,
+-- and the status of the job.
+listFHIRExportJobsResponse_exportJobPropertiesList :: Lens.Lens' ListFHIRExportJobsResponse [ExportJobProperties]
+listFHIRExportJobsResponse_exportJobPropertiesList = Lens.lens (\ListFHIRExportJobsResponse' {exportJobPropertiesList} -> exportJobPropertiesList) (\s@ListFHIRExportJobsResponse' {} a -> s {exportJobPropertiesList = a} :: ListFHIRExportJobsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListFHIRExportJobsResponse where
+  rnf ListFHIRExportJobsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf exportJobPropertiesList
diff --git a/gen/Amazonka/HealthLake/ListFHIRImportJobs.hs b/gen/Amazonka/HealthLake/ListFHIRImportJobs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/ListFHIRImportJobs.hs
@@ -0,0 +1,296 @@
+{-# 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.
+    jobName :: Prelude.Maybe Prelude.Text,
+    -- | This parameter limits the response to the import job with the specified
+    -- job status.
+    jobStatus :: Prelude.Maybe JobStatus,
+    -- | This parameter limits the number of results returned for a
+    -- ListFHIRImportJobs to a maximum quantity specified by the user.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | A pagination token used to identify the next page of results to return
+    -- for a ListFHIRImportJobs query.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | This parameter limits the response to FHIR import jobs submitted after a
+    -- user specified date.
+    submittedAfter :: Prelude.Maybe Data.POSIX,
+    -- | This parameter limits the response to FHIR import jobs submitted before
+    -- a user specified date.
+    submittedBefore :: Prelude.Maybe Data.POSIX,
+    -- | This parameter limits the response to the import job with the specified
+    -- Data Store ID.
+    datastoreId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, 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 pDatastoreId_ =
+  ListFHIRImportJobs'
+    { jobName = Prelude.Nothing,
+      jobStatus = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      submittedAfter = Prelude.Nothing,
+      submittedBefore = Prelude.Nothing,
+      datastoreId = 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.lens (\ListFHIRImportJobs' {jobName} -> jobName) (\s@ListFHIRImportJobs' {} a -> s {jobName = 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.lens (\ListFHIRImportJobs' {jobStatus} -> jobStatus) (\s@ListFHIRImportJobs' {} a -> s {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.lens (\ListFHIRImportJobs' {maxResults} -> maxResults) (\s@ListFHIRImportJobs' {} a -> s {maxResults = 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.lens (\ListFHIRImportJobs' {nextToken} -> nextToken) (\s@ListFHIRImportJobs' {} a -> s {nextToken = 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.lens (\ListFHIRImportJobs' {submittedAfter} -> submittedAfter) (\s@ListFHIRImportJobs' {} a -> s {submittedAfter = a} :: ListFHIRImportJobs) Prelude.. Lens.mapping 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.lens (\ListFHIRImportJobs' {submittedBefore} -> submittedBefore) (\s@ListFHIRImportJobs' {} a -> s {submittedBefore = a} :: ListFHIRImportJobs) Prelude.. Lens.mapping 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.lens (\ListFHIRImportJobs' {datastoreId} -> datastoreId) (\s@ListFHIRImportJobs' {} a -> s {datastoreId = a} :: ListFHIRImportJobs)
+
+instance Core.AWSRequest ListFHIRImportJobs where
+  type
+    AWSResponse ListFHIRImportJobs =
+      ListFHIRImportJobsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListFHIRImportJobsResponse'
+            Prelude.<$> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..?> "ImportJobPropertiesList"
+                            Core..!@ Prelude.mempty
+                        )
+      )
+
+instance Prelude.Hashable ListFHIRImportJobs where
+  hashWithSalt _salt ListFHIRImportJobs' {..} =
+    _salt
+      `Prelude.hashWithSalt` jobName
+      `Prelude.hashWithSalt` jobStatus
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` submittedAfter
+      `Prelude.hashWithSalt` submittedBefore
+      `Prelude.hashWithSalt` datastoreId
+
+instance Prelude.NFData ListFHIRImportJobs where
+  rnf ListFHIRImportJobs' {..} =
+    Prelude.rnf jobName
+      `Prelude.seq` Prelude.rnf jobStatus
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf submittedAfter
+      `Prelude.seq` Prelude.rnf submittedBefore
+      `Prelude.seq` Prelude.rnf datastoreId
+
+instance Data.ToHeaders ListFHIRImportJobs where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "HealthLake.ListFHIRImportJobs" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListFHIRImportJobs where
+  toJSON ListFHIRImportJobs' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("JobName" Data..=) Prelude.<$> jobName,
+            ("JobStatus" Data..=) Prelude.<$> jobStatus,
+            ("MaxResults" Data..=) Prelude.<$> maxResults,
+            ("NextToken" Data..=) Prelude.<$> nextToken,
+            ("SubmittedAfter" Data..=)
+              Prelude.<$> submittedAfter,
+            ("SubmittedBefore" Data..=)
+              Prelude.<$> submittedBefore,
+            Prelude.Just ("DatastoreId" Data..= datastoreId)
+          ]
+      )
+
+instance Data.ToPath ListFHIRImportJobs where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListFHIRImportJobs where
+  toQuery = Prelude.const 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.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The properties of a listed FHIR import jobs, including the ID, ARN,
+    -- name, and the status of the job.
+    importJobPropertiesList :: [ImportJobProperties]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, 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 pHttpStatus_ =
+  ListFHIRImportJobsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      importJobPropertiesList = 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.lens (\ListFHIRImportJobsResponse' {nextToken} -> nextToken) (\s@ListFHIRImportJobsResponse' {} a -> s {nextToken = a} :: ListFHIRImportJobsResponse)
+
+-- | The response's http status code.
+listFHIRImportJobsResponse_httpStatus :: Lens.Lens' ListFHIRImportJobsResponse Prelude.Int
+listFHIRImportJobsResponse_httpStatus = Lens.lens (\ListFHIRImportJobsResponse' {httpStatus} -> httpStatus) (\s@ListFHIRImportJobsResponse' {} a -> s {httpStatus = 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.lens (\ListFHIRImportJobsResponse' {importJobPropertiesList} -> importJobPropertiesList) (\s@ListFHIRImportJobsResponse' {} a -> s {importJobPropertiesList = a} :: ListFHIRImportJobsResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListFHIRImportJobsResponse where
+  rnf ListFHIRImportJobsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf importJobPropertiesList
diff --git a/gen/Amazonka/HealthLake/ListTagsForResource.hs b/gen/Amazonka/HealthLake/ListTagsForResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/ListTagsForResource.hs
@@ -0,0 +1,172 @@
+{-# 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.ListTagsForResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of all existing tags associated with a Data Store.
+module Amazonka.HealthLake.ListTagsForResource
+  ( -- * Creating a Request
+    ListTagsForResource (..),
+    newListTagsForResource,
+
+    -- * Request Lenses
+    listTagsForResource_resourceARN,
+
+    -- * Destructuring the Response
+    ListTagsForResourceResponse (..),
+    newListTagsForResourceResponse,
+
+    -- * Response Lenses
+    listTagsForResourceResponse_tags,
+    listTagsForResourceResponse_httpStatus,
+  )
+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:/ 'newListTagsForResource' smart constructor.
+data ListTagsForResource = ListTagsForResource'
+  { -- | The Amazon Resource Name(ARN) of the Data Store for which tags are being
+    -- added.
+    resourceARN :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResource' 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:
+--
+-- 'resourceARN', 'listTagsForResource_resourceARN' - The Amazon Resource Name(ARN) of the Data Store for which tags are being
+-- added.
+newListTagsForResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  ListTagsForResource
+newListTagsForResource pResourceARN_ =
+  ListTagsForResource' {resourceARN = pResourceARN_}
+
+-- | The Amazon Resource Name(ARN) of the Data Store for which tags are being
+-- added.
+listTagsForResource_resourceARN :: Lens.Lens' ListTagsForResource Prelude.Text
+listTagsForResource_resourceARN = Lens.lens (\ListTagsForResource' {resourceARN} -> resourceARN) (\s@ListTagsForResource' {} a -> s {resourceARN = a} :: ListTagsForResource)
+
+instance Core.AWSRequest ListTagsForResource where
+  type
+    AWSResponse ListTagsForResource =
+      ListTagsForResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListTagsForResourceResponse'
+            Prelude.<$> (x Data..?> "Tags" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTagsForResource where
+  hashWithSalt _salt ListTagsForResource' {..} =
+    _salt `Prelude.hashWithSalt` resourceARN
+
+instance Prelude.NFData ListTagsForResource where
+  rnf ListTagsForResource' {..} =
+    Prelude.rnf resourceARN
+
+instance Data.ToHeaders ListTagsForResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "HealthLake.ListTagsForResource" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON ListTagsForResource where
+  toJSON ListTagsForResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("ResourceARN" Data..= resourceARN)]
+      )
+
+instance Data.ToPath ListTagsForResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListTagsForResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newListTagsForResourceResponse' smart constructor.
+data ListTagsForResourceResponse = ListTagsForResourceResponse'
+  { -- | Returns a list of tags associated with a Data Store.
+    tags :: Prelude.Maybe [Tag],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTagsForResourceResponse' 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:
+--
+-- 'tags', 'listTagsForResourceResponse_tags' - Returns a list of tags associated with a Data Store.
+--
+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.
+newListTagsForResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTagsForResourceResponse
+newListTagsForResourceResponse pHttpStatus_ =
+  ListTagsForResourceResponse'
+    { tags =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Returns a list of tags associated with a Data Store.
+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe [Tag])
+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int
+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)
+
+instance Prelude.NFData ListTagsForResourceResponse where
+  rnf ListTagsForResourceResponse' {..} =
+    Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/HealthLake/StartFHIRExportJob.hs b/gen/Amazonka/HealthLake/StartFHIRExportJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/StartFHIRExportJob.hs
@@ -0,0 +1,280 @@
+{-# 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.
+    jobName :: Prelude.Maybe Prelude.Text,
+    -- | The output data configuration that was supplied when the export job was
+    -- created.
+    outputDataConfig :: OutputDataConfig,
+    -- | The AWS generated ID for the Data Store from which files are being
+    -- exported for an export job.
+    datastoreId :: Prelude.Text,
+    -- | The Amazon Resource Name used during the initiation of the job.
+    dataAccessRoleArn :: Prelude.Text,
+    -- | An optional user provided token used for ensuring idempotency.
+    clientToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, 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
+  pOutputDataConfig_
+  pDatastoreId_
+  pDataAccessRoleArn_
+  pClientToken_ =
+    StartFHIRExportJob'
+      { jobName = Prelude.Nothing,
+        outputDataConfig = pOutputDataConfig_,
+        datastoreId = pDatastoreId_,
+        dataAccessRoleArn = pDataAccessRoleArn_,
+        clientToken = pClientToken_
+      }
+
+-- | The user generated name for an export job.
+startFHIRExportJob_jobName :: Lens.Lens' StartFHIRExportJob (Prelude.Maybe Prelude.Text)
+startFHIRExportJob_jobName = Lens.lens (\StartFHIRExportJob' {jobName} -> jobName) (\s@StartFHIRExportJob' {} a -> s {jobName = a} :: StartFHIRExportJob)
+
+-- | The output data configuration that was supplied when the export job was
+-- created.
+startFHIRExportJob_outputDataConfig :: Lens.Lens' StartFHIRExportJob OutputDataConfig
+startFHIRExportJob_outputDataConfig = Lens.lens (\StartFHIRExportJob' {outputDataConfig} -> outputDataConfig) (\s@StartFHIRExportJob' {} a -> s {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.lens (\StartFHIRExportJob' {datastoreId} -> datastoreId) (\s@StartFHIRExportJob' {} a -> s {datastoreId = a} :: StartFHIRExportJob)
+
+-- | The Amazon Resource Name used during the initiation of the job.
+startFHIRExportJob_dataAccessRoleArn :: Lens.Lens' StartFHIRExportJob Prelude.Text
+startFHIRExportJob_dataAccessRoleArn = Lens.lens (\StartFHIRExportJob' {dataAccessRoleArn} -> dataAccessRoleArn) (\s@StartFHIRExportJob' {} a -> s {dataAccessRoleArn = a} :: StartFHIRExportJob)
+
+-- | An optional user provided token used for ensuring idempotency.
+startFHIRExportJob_clientToken :: Lens.Lens' StartFHIRExportJob Prelude.Text
+startFHIRExportJob_clientToken = Lens.lens (\StartFHIRExportJob' {clientToken} -> clientToken) (\s@StartFHIRExportJob' {} a -> s {clientToken = a} :: StartFHIRExportJob)
+
+instance Core.AWSRequest StartFHIRExportJob where
+  type
+    AWSResponse StartFHIRExportJob =
+      StartFHIRExportJobResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          StartFHIRExportJobResponse'
+            Prelude.<$> (x Data..?> "DatastoreId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..:> "JobId")
+            Prelude.<*> (x Data..:> "JobStatus")
+      )
+
+instance Prelude.Hashable StartFHIRExportJob where
+  hashWithSalt _salt StartFHIRExportJob' {..} =
+    _salt
+      `Prelude.hashWithSalt` jobName
+      `Prelude.hashWithSalt` outputDataConfig
+      `Prelude.hashWithSalt` datastoreId
+      `Prelude.hashWithSalt` dataAccessRoleArn
+      `Prelude.hashWithSalt` clientToken
+
+instance Prelude.NFData StartFHIRExportJob where
+  rnf StartFHIRExportJob' {..} =
+    Prelude.rnf jobName
+      `Prelude.seq` Prelude.rnf outputDataConfig
+      `Prelude.seq` Prelude.rnf datastoreId
+      `Prelude.seq` Prelude.rnf dataAccessRoleArn
+      `Prelude.seq` Prelude.rnf clientToken
+
+instance Data.ToHeaders StartFHIRExportJob where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ( "HealthLake.StartFHIRExportJob" ::
+                          Prelude.ByteString
+                      ),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON StartFHIRExportJob where
+  toJSON StartFHIRExportJob' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("JobName" Data..=) Prelude.<$> jobName,
+            Prelude.Just
+              ("OutputDataConfig" Data..= outputDataConfig),
+            Prelude.Just ("DatastoreId" Data..= datastoreId),
+            Prelude.Just
+              ("DataAccessRoleArn" Data..= dataAccessRoleArn),
+            Prelude.Just ("ClientToken" Data..= clientToken)
+          ]
+      )
+
+instance Data.ToPath StartFHIRExportJob where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery StartFHIRExportJob where
+  toQuery = Prelude.const 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.
+    datastoreId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The AWS generated ID for an export job.
+    jobId :: Prelude.Text,
+    -- | The status of a FHIR export job. Possible statuses are SUBMITTED,
+    -- IN_PROGRESS, COMPLETED, or FAILED.
+    jobStatus :: JobStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, 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
+  pHttpStatus_
+  pJobId_
+  pJobStatus_ =
+    StartFHIRExportJobResponse'
+      { datastoreId =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_,
+        jobId = pJobId_,
+        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.lens (\StartFHIRExportJobResponse' {datastoreId} -> datastoreId) (\s@StartFHIRExportJobResponse' {} a -> s {datastoreId = a} :: StartFHIRExportJobResponse)
+
+-- | The response's http status code.
+startFHIRExportJobResponse_httpStatus :: Lens.Lens' StartFHIRExportJobResponse Prelude.Int
+startFHIRExportJobResponse_httpStatus = Lens.lens (\StartFHIRExportJobResponse' {httpStatus} -> httpStatus) (\s@StartFHIRExportJobResponse' {} a -> s {httpStatus = a} :: StartFHIRExportJobResponse)
+
+-- | The AWS generated ID for an export job.
+startFHIRExportJobResponse_jobId :: Lens.Lens' StartFHIRExportJobResponse Prelude.Text
+startFHIRExportJobResponse_jobId = Lens.lens (\StartFHIRExportJobResponse' {jobId} -> jobId) (\s@StartFHIRExportJobResponse' {} a -> s {jobId = 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.lens (\StartFHIRExportJobResponse' {jobStatus} -> jobStatus) (\s@StartFHIRExportJobResponse' {} a -> s {jobStatus = a} :: StartFHIRExportJobResponse)
+
+instance Prelude.NFData StartFHIRExportJobResponse where
+  rnf StartFHIRExportJobResponse' {..} =
+    Prelude.rnf datastoreId
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf jobStatus
diff --git a/gen/Amazonka/HealthLake/StartFHIRImportJob.hs b/gen/Amazonka/HealthLake/StartFHIRImportJob.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/StartFHIRImportJob.hs
@@ -0,0 +1,290 @@
+{-# 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
diff --git a/gen/Amazonka/HealthLake/TagResource.hs b/gen/Amazonka/HealthLake/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/TagResource.hs
@@ -0,0 +1,169 @@
+{-# 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.TagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a user specifed key and value tag to a Data Store.
+module Amazonka.HealthLake.TagResource
+  ( -- * Creating a Request
+    TagResource (..),
+    newTagResource,
+
+    -- * Request Lenses
+    tagResource_resourceARN,
+    tagResource_tags,
+
+    -- * Destructuring the Response
+    TagResourceResponse (..),
+    newTagResourceResponse,
+
+    -- * Response Lenses
+    tagResourceResponse_httpStatus,
+  )
+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:/ 'newTagResource' smart constructor.
+data TagResource = TagResource'
+  { -- | The Amazon Resource Name(ARN)that gives Amazon HealthLake access to the
+    -- Data Store which tags are being added to.
+    resourceARN :: Prelude.Text,
+    -- | The user specified key and value pair tags being added to a Data Store.
+    tags :: [Tag]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResource' 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:
+--
+-- 'resourceARN', 'tagResource_resourceARN' - The Amazon Resource Name(ARN)that gives Amazon HealthLake access to the
+-- Data Store which tags are being added to.
+--
+-- 'tags', 'tagResource_tags' - The user specified key and value pair tags being added to a Data Store.
+newTagResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  TagResource
+newTagResource pResourceARN_ =
+  TagResource'
+    { resourceARN = pResourceARN_,
+      tags = Prelude.mempty
+    }
+
+-- | The Amazon Resource Name(ARN)that gives Amazon HealthLake access to the
+-- Data Store which tags are being added to.
+tagResource_resourceARN :: Lens.Lens' TagResource Prelude.Text
+tagResource_resourceARN = Lens.lens (\TagResource' {resourceARN} -> resourceARN) (\s@TagResource' {} a -> s {resourceARN = a} :: TagResource)
+
+-- | The user specified key and value pair tags being added to a Data Store.
+tagResource_tags :: Lens.Lens' TagResource [Tag]
+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest TagResource where
+  type AWSResponse TagResource = TagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          TagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable TagResource where
+  hashWithSalt _salt TagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` tags
+
+instance Prelude.NFData TagResource where
+  rnf TagResource' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf tags
+
+instance Data.ToHeaders TagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("HealthLake.TagResource" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON TagResource where
+  toJSON TagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("Tags" Data..= tags)
+          ]
+      )
+
+instance Data.ToPath TagResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery TagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newTagResourceResponse' smart constructor.
+data TagResourceResponse = TagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TagResourceResponse' 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:
+--
+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.
+newTagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  TagResourceResponse
+newTagResourceResponse pHttpStatus_ =
+  TagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int
+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)
+
+instance Prelude.NFData TagResourceResponse where
+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
diff --git a/gen/Amazonka/HealthLake/Types.hs b/gen/Amazonka/HealthLake/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/Types.hs
@@ -0,0 +1,265 @@
+{-# LANGUAGE DisambiguateRecordFields #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.HealthLake.Types
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.HealthLake.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccessDeniedException,
+    _ConflictException,
+    _InternalServerException,
+    _ResourceNotFoundException,
+    _ThrottlingException,
+    _ValidationException,
+
+    -- * CmkType
+    CmkType (..),
+
+    -- * DatastoreStatus
+    DatastoreStatus (..),
+
+    -- * FHIRVersion
+    FHIRVersion (..),
+
+    -- * JobStatus
+    JobStatus (..),
+
+    -- * PreloadDataType
+    PreloadDataType (..),
+
+    -- * DatastoreFilter
+    DatastoreFilter (..),
+    newDatastoreFilter,
+    datastoreFilter_createdAfter,
+    datastoreFilter_createdBefore,
+    datastoreFilter_datastoreName,
+    datastoreFilter_datastoreStatus,
+
+    -- * DatastoreProperties
+    DatastoreProperties (..),
+    newDatastoreProperties,
+    datastoreProperties_createdAt,
+    datastoreProperties_datastoreName,
+    datastoreProperties_preloadDataConfig,
+    datastoreProperties_sseConfiguration,
+    datastoreProperties_datastoreId,
+    datastoreProperties_datastoreArn,
+    datastoreProperties_datastoreStatus,
+    datastoreProperties_datastoreTypeVersion,
+    datastoreProperties_datastoreEndpoint,
+
+    -- * ExportJobProperties
+    ExportJobProperties (..),
+    newExportJobProperties,
+    exportJobProperties_dataAccessRoleArn,
+    exportJobProperties_endTime,
+    exportJobProperties_jobName,
+    exportJobProperties_message,
+    exportJobProperties_jobId,
+    exportJobProperties_jobStatus,
+    exportJobProperties_submitTime,
+    exportJobProperties_datastoreId,
+    exportJobProperties_outputDataConfig,
+
+    -- * ImportJobProperties
+    ImportJobProperties (..),
+    newImportJobProperties,
+    importJobProperties_dataAccessRoleArn,
+    importJobProperties_endTime,
+    importJobProperties_jobName,
+    importJobProperties_jobOutputDataConfig,
+    importJobProperties_message,
+    importJobProperties_jobId,
+    importJobProperties_jobStatus,
+    importJobProperties_submitTime,
+    importJobProperties_datastoreId,
+    importJobProperties_inputDataConfig,
+
+    -- * InputDataConfig
+    InputDataConfig (..),
+    newInputDataConfig,
+    inputDataConfig_s3Uri,
+
+    -- * KmsEncryptionConfig
+    KmsEncryptionConfig (..),
+    newKmsEncryptionConfig,
+    kmsEncryptionConfig_kmsKeyId,
+    kmsEncryptionConfig_cmkType,
+
+    -- * OutputDataConfig
+    OutputDataConfig (..),
+    newOutputDataConfig,
+    outputDataConfig_s3Configuration,
+
+    -- * PreloadDataConfig
+    PreloadDataConfig (..),
+    newPreloadDataConfig,
+    preloadDataConfig_preloadDataType,
+
+    -- * S3Configuration
+    S3Configuration (..),
+    newS3Configuration,
+    s3Configuration_s3Uri,
+    s3Configuration_kmsKeyId,
+
+    -- * SseConfiguration
+    SseConfiguration (..),
+    newSseConfiguration,
+    sseConfiguration_kmsEncryptionConfig,
+
+    -- * Tag
+    Tag (..),
+    newTag,
+    tag_key,
+    tag_value,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import Amazonka.HealthLake.Types.CmkType
+import Amazonka.HealthLake.Types.DatastoreFilter
+import Amazonka.HealthLake.Types.DatastoreProperties
+import Amazonka.HealthLake.Types.DatastoreStatus
+import Amazonka.HealthLake.Types.ExportJobProperties
+import Amazonka.HealthLake.Types.FHIRVersion
+import Amazonka.HealthLake.Types.ImportJobProperties
+import Amazonka.HealthLake.Types.InputDataConfig
+import Amazonka.HealthLake.Types.JobStatus
+import Amazonka.HealthLake.Types.KmsEncryptionConfig
+import Amazonka.HealthLake.Types.OutputDataConfig
+import Amazonka.HealthLake.Types.PreloadDataConfig
+import Amazonka.HealthLake.Types.PreloadDataType
+import Amazonka.HealthLake.Types.S3Configuration
+import Amazonka.HealthLake.Types.SseConfiguration
+import Amazonka.HealthLake.Types.Tag
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2017-07-01@ of the Amazon HealthLake SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "HealthLake",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "healthlake",
+      Core.signingName = "healthlake",
+      Core.version = "2017-07-01",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "HealthLake",
+      Core.retry = retry
+    }
+  where
+    retry =
+      Core.Exponential
+        { Core.base = 5.0e-2,
+          Core.growth = 2,
+          Core.attempts = 5,
+          Core.check = check
+        }
+    check e
+      | Lens.has (Core.hasStatus 502) e =
+          Prelude.Just "bad_gateway"
+      | Lens.has (Core.hasStatus 504) e =
+          Prelude.Just "gateway_timeout"
+      | Lens.has (Core.hasStatus 500) e =
+          Prelude.Just "general_server_error"
+      | Lens.has (Core.hasStatus 509) e =
+          Prelude.Just "limit_exceeded"
+      | Lens.has
+          ( Core.hasCode "RequestThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "request_throttled_exception"
+      | Lens.has (Core.hasStatus 503) e =
+          Prelude.Just "service_unavailable"
+      | Lens.has
+          ( Core.hasCode "ThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttled_exception"
+      | Lens.has
+          ( Core.hasCode "Throttling"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling"
+      | Lens.has
+          ( Core.hasCode "ThrottlingException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling_exception"
+      | Lens.has
+          ( Core.hasCode
+              "ProvisionedThroughputExceededException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throughput_exceeded"
+      | Lens.has (Core.hasStatus 429) e =
+          Prelude.Just "too_many_requests"
+      | Prelude.otherwise = Prelude.Nothing
+
+-- | Access is denied. Your account is not authorized to perform this
+-- operation.
+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccessDeniedException =
+  Core._MatchServiceError
+    defaultService
+    "AccessDeniedException"
+
+-- | The Data Store is in a transition state and the user requested action
+-- can not be performed.
+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictException"
+
+-- | Unknown error occurs in the service.
+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalServerException =
+  Core._MatchServiceError
+    defaultService
+    "InternalServerException"
+
+-- | The requested Data Store was not found.
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+
+-- | The user has exceeded their maximum number of allowed calls to the given
+-- API.
+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ThrottlingException =
+  Core._MatchServiceError
+    defaultService
+    "ThrottlingException"
+
+-- | The user input parameter was invalid.
+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ValidationException =
+  Core._MatchServiceError
+    defaultService
+    "ValidationException"
diff --git a/gen/Amazonka/HealthLake/Types/CmkType.hs b/gen/Amazonka/HealthLake/Types/CmkType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/Types/CmkType.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.HealthLake.Types.CmkType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.HealthLake.Types.CmkType
+  ( CmkType
+      ( ..,
+        CmkType_AWS_OWNED_KMS_KEY,
+        CmkType_CUSTOMER_MANAGED_KMS_KEY
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CmkType = CmkType' {fromCmkType :: Data.Text}
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CmkType_AWS_OWNED_KMS_KEY :: CmkType
+pattern CmkType_AWS_OWNED_KMS_KEY = CmkType' "AWS_OWNED_KMS_KEY"
+
+pattern CmkType_CUSTOMER_MANAGED_KMS_KEY :: CmkType
+pattern CmkType_CUSTOMER_MANAGED_KMS_KEY = CmkType' "CUSTOMER_MANAGED_KMS_KEY"
+
+{-# COMPLETE
+  CmkType_AWS_OWNED_KMS_KEY,
+  CmkType_CUSTOMER_MANAGED_KMS_KEY,
+  CmkType'
+  #-}
diff --git a/gen/Amazonka/HealthLake/Types/DatastoreFilter.hs b/gen/Amazonka/HealthLake/Types/DatastoreFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/Types/DatastoreFilter.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DatastoreFilter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.HealthLake.Types.DatastoreFilter 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.DatastoreStatus
+import qualified Amazonka.Prelude as Prelude
+
+-- | The filters applied to Data Store query.
+--
+-- /See:/ 'newDatastoreFilter' smart constructor.
+data DatastoreFilter = DatastoreFilter'
+  { -- | A filter that allows the user to set cutoff dates for records. All Data
+    -- Stores created after the specified date will be included in the results.
+    createdAfter :: Prelude.Maybe Data.POSIX,
+    -- | A filter that allows the user to set cutoff dates for records. All Data
+    -- Stores created before the specified date will be included in the
+    -- results.
+    createdBefore :: Prelude.Maybe Data.POSIX,
+    -- | Allows the user to filter Data Store results by name.
+    datastoreName :: Prelude.Maybe Prelude.Text,
+    -- | Allows the user to filter Data Store results by status.
+    datastoreStatus :: Prelude.Maybe DatastoreStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DatastoreFilter' 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:
+--
+-- 'createdAfter', 'datastoreFilter_createdAfter' - A filter that allows the user to set cutoff dates for records. All Data
+-- Stores created after the specified date will be included in the results.
+--
+-- 'createdBefore', 'datastoreFilter_createdBefore' - A filter that allows the user to set cutoff dates for records. All Data
+-- Stores created before the specified date will be included in the
+-- results.
+--
+-- 'datastoreName', 'datastoreFilter_datastoreName' - Allows the user to filter Data Store results by name.
+--
+-- 'datastoreStatus', 'datastoreFilter_datastoreStatus' - Allows the user to filter Data Store results by status.
+newDatastoreFilter ::
+  DatastoreFilter
+newDatastoreFilter =
+  DatastoreFilter'
+    { createdAfter = Prelude.Nothing,
+      createdBefore = Prelude.Nothing,
+      datastoreName = Prelude.Nothing,
+      datastoreStatus = Prelude.Nothing
+    }
+
+-- | A filter that allows the user to set cutoff dates for records. All Data
+-- Stores created after the specified date will be included in the results.
+datastoreFilter_createdAfter :: Lens.Lens' DatastoreFilter (Prelude.Maybe Prelude.UTCTime)
+datastoreFilter_createdAfter = Lens.lens (\DatastoreFilter' {createdAfter} -> createdAfter) (\s@DatastoreFilter' {} a -> s {createdAfter = a} :: DatastoreFilter) Prelude.. Lens.mapping Data._Time
+
+-- | A filter that allows the user to set cutoff dates for records. All Data
+-- Stores created before the specified date will be included in the
+-- results.
+datastoreFilter_createdBefore :: Lens.Lens' DatastoreFilter (Prelude.Maybe Prelude.UTCTime)
+datastoreFilter_createdBefore = Lens.lens (\DatastoreFilter' {createdBefore} -> createdBefore) (\s@DatastoreFilter' {} a -> s {createdBefore = a} :: DatastoreFilter) Prelude.. Lens.mapping Data._Time
+
+-- | Allows the user to filter Data Store results by name.
+datastoreFilter_datastoreName :: Lens.Lens' DatastoreFilter (Prelude.Maybe Prelude.Text)
+datastoreFilter_datastoreName = Lens.lens (\DatastoreFilter' {datastoreName} -> datastoreName) (\s@DatastoreFilter' {} a -> s {datastoreName = a} :: DatastoreFilter)
+
+-- | Allows the user to filter Data Store results by status.
+datastoreFilter_datastoreStatus :: Lens.Lens' DatastoreFilter (Prelude.Maybe DatastoreStatus)
+datastoreFilter_datastoreStatus = Lens.lens (\DatastoreFilter' {datastoreStatus} -> datastoreStatus) (\s@DatastoreFilter' {} a -> s {datastoreStatus = a} :: DatastoreFilter)
+
+instance Prelude.Hashable DatastoreFilter where
+  hashWithSalt _salt DatastoreFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdAfter
+      `Prelude.hashWithSalt` createdBefore
+      `Prelude.hashWithSalt` datastoreName
+      `Prelude.hashWithSalt` datastoreStatus
+
+instance Prelude.NFData DatastoreFilter where
+  rnf DatastoreFilter' {..} =
+    Prelude.rnf createdAfter
+      `Prelude.seq` Prelude.rnf createdBefore
+      `Prelude.seq` Prelude.rnf datastoreName
+      `Prelude.seq` Prelude.rnf datastoreStatus
+
+instance Data.ToJSON DatastoreFilter where
+  toJSON DatastoreFilter' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CreatedAfter" Data..=) Prelude.<$> createdAfter,
+            ("CreatedBefore" Data..=) Prelude.<$> createdBefore,
+            ("DatastoreName" Data..=) Prelude.<$> datastoreName,
+            ("DatastoreStatus" Data..=)
+              Prelude.<$> datastoreStatus
+          ]
+      )
diff --git a/gen/Amazonka/HealthLake/Types/DatastoreProperties.hs b/gen/Amazonka/HealthLake/Types/DatastoreProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/Types/DatastoreProperties.hs
@@ -0,0 +1,200 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.DatastoreProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.HealthLake.Types.DatastoreProperties 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.DatastoreStatus
+import Amazonka.HealthLake.Types.FHIRVersion
+import Amazonka.HealthLake.Types.PreloadDataConfig
+import Amazonka.HealthLake.Types.SseConfiguration
+import qualified Amazonka.Prelude as Prelude
+
+-- | Displays the properties of the Data Store, including the ID, Arn, name,
+-- and the status of the Data Store.
+--
+-- /See:/ 'newDatastoreProperties' smart constructor.
+data DatastoreProperties = DatastoreProperties'
+  { -- | The time that a Data Store was created.
+    createdAt :: Prelude.Maybe Data.POSIX,
+    -- | The user-generated name for the Data Store.
+    datastoreName :: Prelude.Maybe Prelude.Text,
+    -- | The preloaded data configuration for the Data Store. Only data preloaded
+    -- from Synthea is supported.
+    preloadDataConfig :: Prelude.Maybe PreloadDataConfig,
+    -- | The server-side encryption key configuration for a customer provided
+    -- encryption key (CMK).
+    sseConfiguration :: Prelude.Maybe SseConfiguration,
+    -- | The AWS-generated ID number for the Data Store.
+    datastoreId :: Prelude.Text,
+    -- | The Amazon Resource Name used in the creation of the Data Store.
+    datastoreArn :: Prelude.Text,
+    -- | The status of the Data Store. Possible statuses are \'CREATING\',
+    -- \'ACTIVE\', \'DELETING\', or \'DELETED\'.
+    datastoreStatus :: DatastoreStatus,
+    -- | The FHIR version. Only R4 version data is supported.
+    datastoreTypeVersion :: FHIRVersion,
+    -- | The AWS endpoint for the Data Store. Each Data Store will have it\'s own
+    -- endpoint with Data Store ID in the endpoint URL.
+    datastoreEndpoint :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DatastoreProperties' 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:
+--
+-- 'createdAt', 'datastoreProperties_createdAt' - The time that a Data Store was created.
+--
+-- 'datastoreName', 'datastoreProperties_datastoreName' - The user-generated name for the Data Store.
+--
+-- 'preloadDataConfig', 'datastoreProperties_preloadDataConfig' - The preloaded data configuration for the Data Store. Only data preloaded
+-- from Synthea is supported.
+--
+-- 'sseConfiguration', 'datastoreProperties_sseConfiguration' - The server-side encryption key configuration for a customer provided
+-- encryption key (CMK).
+--
+-- 'datastoreId', 'datastoreProperties_datastoreId' - The AWS-generated ID number for the Data Store.
+--
+-- 'datastoreArn', 'datastoreProperties_datastoreArn' - The Amazon Resource Name used in the creation of the Data Store.
+--
+-- 'datastoreStatus', 'datastoreProperties_datastoreStatus' - The status of the Data Store. Possible statuses are \'CREATING\',
+-- \'ACTIVE\', \'DELETING\', or \'DELETED\'.
+--
+-- 'datastoreTypeVersion', 'datastoreProperties_datastoreTypeVersion' - The FHIR version. Only R4 version data is supported.
+--
+-- 'datastoreEndpoint', 'datastoreProperties_datastoreEndpoint' - The AWS endpoint for the Data Store. Each Data Store will have it\'s own
+-- endpoint with Data Store ID in the endpoint URL.
+newDatastoreProperties ::
+  -- | 'datastoreId'
+  Prelude.Text ->
+  -- | 'datastoreArn'
+  Prelude.Text ->
+  -- | 'datastoreStatus'
+  DatastoreStatus ->
+  -- | 'datastoreTypeVersion'
+  FHIRVersion ->
+  -- | 'datastoreEndpoint'
+  Prelude.Text ->
+  DatastoreProperties
+newDatastoreProperties
+  pDatastoreId_
+  pDatastoreArn_
+  pDatastoreStatus_
+  pDatastoreTypeVersion_
+  pDatastoreEndpoint_ =
+    DatastoreProperties'
+      { createdAt = Prelude.Nothing,
+        datastoreName = Prelude.Nothing,
+        preloadDataConfig = Prelude.Nothing,
+        sseConfiguration = Prelude.Nothing,
+        datastoreId = pDatastoreId_,
+        datastoreArn = pDatastoreArn_,
+        datastoreStatus = pDatastoreStatus_,
+        datastoreTypeVersion = pDatastoreTypeVersion_,
+        datastoreEndpoint = pDatastoreEndpoint_
+      }
+
+-- | The time that a Data Store was created.
+datastoreProperties_createdAt :: Lens.Lens' DatastoreProperties (Prelude.Maybe Prelude.UTCTime)
+datastoreProperties_createdAt = Lens.lens (\DatastoreProperties' {createdAt} -> createdAt) (\s@DatastoreProperties' {} a -> s {createdAt = a} :: DatastoreProperties) Prelude.. Lens.mapping Data._Time
+
+-- | The user-generated name for the Data Store.
+datastoreProperties_datastoreName :: Lens.Lens' DatastoreProperties (Prelude.Maybe Prelude.Text)
+datastoreProperties_datastoreName = Lens.lens (\DatastoreProperties' {datastoreName} -> datastoreName) (\s@DatastoreProperties' {} a -> s {datastoreName = a} :: DatastoreProperties)
+
+-- | The preloaded data configuration for the Data Store. Only data preloaded
+-- from Synthea is supported.
+datastoreProperties_preloadDataConfig :: Lens.Lens' DatastoreProperties (Prelude.Maybe PreloadDataConfig)
+datastoreProperties_preloadDataConfig = Lens.lens (\DatastoreProperties' {preloadDataConfig} -> preloadDataConfig) (\s@DatastoreProperties' {} a -> s {preloadDataConfig = a} :: DatastoreProperties)
+
+-- | The server-side encryption key configuration for a customer provided
+-- encryption key (CMK).
+datastoreProperties_sseConfiguration :: Lens.Lens' DatastoreProperties (Prelude.Maybe SseConfiguration)
+datastoreProperties_sseConfiguration = Lens.lens (\DatastoreProperties' {sseConfiguration} -> sseConfiguration) (\s@DatastoreProperties' {} a -> s {sseConfiguration = a} :: DatastoreProperties)
+
+-- | The AWS-generated ID number for the Data Store.
+datastoreProperties_datastoreId :: Lens.Lens' DatastoreProperties Prelude.Text
+datastoreProperties_datastoreId = Lens.lens (\DatastoreProperties' {datastoreId} -> datastoreId) (\s@DatastoreProperties' {} a -> s {datastoreId = a} :: DatastoreProperties)
+
+-- | The Amazon Resource Name used in the creation of the Data Store.
+datastoreProperties_datastoreArn :: Lens.Lens' DatastoreProperties Prelude.Text
+datastoreProperties_datastoreArn = Lens.lens (\DatastoreProperties' {datastoreArn} -> datastoreArn) (\s@DatastoreProperties' {} a -> s {datastoreArn = a} :: DatastoreProperties)
+
+-- | The status of the Data Store. Possible statuses are \'CREATING\',
+-- \'ACTIVE\', \'DELETING\', or \'DELETED\'.
+datastoreProperties_datastoreStatus :: Lens.Lens' DatastoreProperties DatastoreStatus
+datastoreProperties_datastoreStatus = Lens.lens (\DatastoreProperties' {datastoreStatus} -> datastoreStatus) (\s@DatastoreProperties' {} a -> s {datastoreStatus = a} :: DatastoreProperties)
+
+-- | The FHIR version. Only R4 version data is supported.
+datastoreProperties_datastoreTypeVersion :: Lens.Lens' DatastoreProperties FHIRVersion
+datastoreProperties_datastoreTypeVersion = Lens.lens (\DatastoreProperties' {datastoreTypeVersion} -> datastoreTypeVersion) (\s@DatastoreProperties' {} a -> s {datastoreTypeVersion = a} :: DatastoreProperties)
+
+-- | The AWS endpoint for the Data Store. Each Data Store will have it\'s own
+-- endpoint with Data Store ID in the endpoint URL.
+datastoreProperties_datastoreEndpoint :: Lens.Lens' DatastoreProperties Prelude.Text
+datastoreProperties_datastoreEndpoint = Lens.lens (\DatastoreProperties' {datastoreEndpoint} -> datastoreEndpoint) (\s@DatastoreProperties' {} a -> s {datastoreEndpoint = a} :: DatastoreProperties)
+
+instance Data.FromJSON DatastoreProperties where
+  parseJSON =
+    Data.withObject
+      "DatastoreProperties"
+      ( \x ->
+          DatastoreProperties'
+            Prelude.<$> (x Data..:? "CreatedAt")
+            Prelude.<*> (x Data..:? "DatastoreName")
+            Prelude.<*> (x Data..:? "PreloadDataConfig")
+            Prelude.<*> (x Data..:? "SseConfiguration")
+            Prelude.<*> (x Data..: "DatastoreId")
+            Prelude.<*> (x Data..: "DatastoreArn")
+            Prelude.<*> (x Data..: "DatastoreStatus")
+            Prelude.<*> (x Data..: "DatastoreTypeVersion")
+            Prelude.<*> (x Data..: "DatastoreEndpoint")
+      )
+
+instance Prelude.Hashable DatastoreProperties where
+  hashWithSalt _salt DatastoreProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdAt
+      `Prelude.hashWithSalt` datastoreName
+      `Prelude.hashWithSalt` preloadDataConfig
+      `Prelude.hashWithSalt` sseConfiguration
+      `Prelude.hashWithSalt` datastoreId
+      `Prelude.hashWithSalt` datastoreArn
+      `Prelude.hashWithSalt` datastoreStatus
+      `Prelude.hashWithSalt` datastoreTypeVersion
+      `Prelude.hashWithSalt` datastoreEndpoint
+
+instance Prelude.NFData DatastoreProperties where
+  rnf DatastoreProperties' {..} =
+    Prelude.rnf createdAt
+      `Prelude.seq` Prelude.rnf datastoreName
+      `Prelude.seq` Prelude.rnf preloadDataConfig
+      `Prelude.seq` Prelude.rnf sseConfiguration
+      `Prelude.seq` Prelude.rnf datastoreId
+      `Prelude.seq` Prelude.rnf datastoreArn
+      `Prelude.seq` Prelude.rnf datastoreStatus
+      `Prelude.seq` Prelude.rnf datastoreTypeVersion
+      `Prelude.seq` Prelude.rnf datastoreEndpoint
diff --git a/gen/Amazonka/HealthLake/Types/DatastoreStatus.hs b/gen/Amazonka/HealthLake/Types/DatastoreStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/Types/DatastoreStatus.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.HealthLake.Types.DatastoreStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.HealthLake.Types.DatastoreStatus
+  ( DatastoreStatus
+      ( ..,
+        DatastoreStatus_ACTIVE,
+        DatastoreStatus_CREATING,
+        DatastoreStatus_DELETED,
+        DatastoreStatus_DELETING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DatastoreStatus = DatastoreStatus'
+  { fromDatastoreStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DatastoreStatus_ACTIVE :: DatastoreStatus
+pattern DatastoreStatus_ACTIVE = DatastoreStatus' "ACTIVE"
+
+pattern DatastoreStatus_CREATING :: DatastoreStatus
+pattern DatastoreStatus_CREATING = DatastoreStatus' "CREATING"
+
+pattern DatastoreStatus_DELETED :: DatastoreStatus
+pattern DatastoreStatus_DELETED = DatastoreStatus' "DELETED"
+
+pattern DatastoreStatus_DELETING :: DatastoreStatus
+pattern DatastoreStatus_DELETING = DatastoreStatus' "DELETING"
+
+{-# COMPLETE
+  DatastoreStatus_ACTIVE,
+  DatastoreStatus_CREATING,
+  DatastoreStatus_DELETED,
+  DatastoreStatus_DELETING,
+  DatastoreStatus'
+  #-}
diff --git a/gen/Amazonka/HealthLake/Types/ExportJobProperties.hs b/gen/Amazonka/HealthLake/Types/ExportJobProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/Types/ExportJobProperties.hs
@@ -0,0 +1,199 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ExportJobProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.HealthLake.Types.ExportJobProperties 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.JobStatus
+import Amazonka.HealthLake.Types.OutputDataConfig
+import qualified Amazonka.Prelude as Prelude
+
+-- | The properties of a FHIR export job, including the ID, ARN, name, and
+-- the status of the job.
+--
+-- /See:/ 'newExportJobProperties' smart constructor.
+data ExportJobProperties = ExportJobProperties'
+  { -- | The Amazon Resource Name used during the initiation of the job.
+    dataAccessRoleArn :: Prelude.Maybe Prelude.Text,
+    -- | The time an export job completed.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | The user generated name for an export job.
+    jobName :: Prelude.Maybe Prelude.Text,
+    -- | An explanation of any errors that may have occurred during the export
+    -- job.
+    message :: Prelude.Maybe Prelude.Text,
+    -- | The AWS generated ID for an export job.
+    jobId :: Prelude.Text,
+    -- | The status of a FHIR export job. Possible statuses are SUBMITTED,
+    -- IN_PROGRESS, COMPLETED, or FAILED.
+    jobStatus :: JobStatus,
+    -- | The time an export job was initiated.
+    submitTime :: Data.POSIX,
+    -- | The AWS generated ID for the Data Store from which files are being
+    -- exported for an export job.
+    datastoreId :: Prelude.Text,
+    -- | The output data configuration that was supplied when the export job was
+    -- created.
+    outputDataConfig :: OutputDataConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExportJobProperties' 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:
+--
+-- 'dataAccessRoleArn', 'exportJobProperties_dataAccessRoleArn' - The Amazon Resource Name used during the initiation of the job.
+--
+-- 'endTime', 'exportJobProperties_endTime' - The time an export job completed.
+--
+-- 'jobName', 'exportJobProperties_jobName' - The user generated name for an export job.
+--
+-- 'message', 'exportJobProperties_message' - An explanation of any errors that may have occurred during the export
+-- job.
+--
+-- 'jobId', 'exportJobProperties_jobId' - The AWS generated ID for an export job.
+--
+-- 'jobStatus', 'exportJobProperties_jobStatus' - The status of a FHIR export job. Possible statuses are SUBMITTED,
+-- IN_PROGRESS, COMPLETED, or FAILED.
+--
+-- 'submitTime', 'exportJobProperties_submitTime' - The time an export job was initiated.
+--
+-- 'datastoreId', 'exportJobProperties_datastoreId' - The AWS generated ID for the Data Store from which files are being
+-- exported for an export job.
+--
+-- 'outputDataConfig', 'exportJobProperties_outputDataConfig' - The output data configuration that was supplied when the export job was
+-- created.
+newExportJobProperties ::
+  -- | 'jobId'
+  Prelude.Text ->
+  -- | 'jobStatus'
+  JobStatus ->
+  -- | 'submitTime'
+  Prelude.UTCTime ->
+  -- | 'datastoreId'
+  Prelude.Text ->
+  -- | 'outputDataConfig'
+  OutputDataConfig ->
+  ExportJobProperties
+newExportJobProperties
+  pJobId_
+  pJobStatus_
+  pSubmitTime_
+  pDatastoreId_
+  pOutputDataConfig_ =
+    ExportJobProperties'
+      { dataAccessRoleArn =
+          Prelude.Nothing,
+        endTime = Prelude.Nothing,
+        jobName = Prelude.Nothing,
+        message = Prelude.Nothing,
+        jobId = pJobId_,
+        jobStatus = pJobStatus_,
+        submitTime = Data._Time Lens.# pSubmitTime_,
+        datastoreId = pDatastoreId_,
+        outputDataConfig = pOutputDataConfig_
+      }
+
+-- | The Amazon Resource Name used during the initiation of the job.
+exportJobProperties_dataAccessRoleArn :: Lens.Lens' ExportJobProperties (Prelude.Maybe Prelude.Text)
+exportJobProperties_dataAccessRoleArn = Lens.lens (\ExportJobProperties' {dataAccessRoleArn} -> dataAccessRoleArn) (\s@ExportJobProperties' {} a -> s {dataAccessRoleArn = a} :: ExportJobProperties)
+
+-- | The time an export job completed.
+exportJobProperties_endTime :: Lens.Lens' ExportJobProperties (Prelude.Maybe Prelude.UTCTime)
+exportJobProperties_endTime = Lens.lens (\ExportJobProperties' {endTime} -> endTime) (\s@ExportJobProperties' {} a -> s {endTime = a} :: ExportJobProperties) Prelude.. Lens.mapping Data._Time
+
+-- | The user generated name for an export job.
+exportJobProperties_jobName :: Lens.Lens' ExportJobProperties (Prelude.Maybe Prelude.Text)
+exportJobProperties_jobName = Lens.lens (\ExportJobProperties' {jobName} -> jobName) (\s@ExportJobProperties' {} a -> s {jobName = a} :: ExportJobProperties)
+
+-- | An explanation of any errors that may have occurred during the export
+-- job.
+exportJobProperties_message :: Lens.Lens' ExportJobProperties (Prelude.Maybe Prelude.Text)
+exportJobProperties_message = Lens.lens (\ExportJobProperties' {message} -> message) (\s@ExportJobProperties' {} a -> s {message = a} :: ExportJobProperties)
+
+-- | The AWS generated ID for an export job.
+exportJobProperties_jobId :: Lens.Lens' ExportJobProperties Prelude.Text
+exportJobProperties_jobId = Lens.lens (\ExportJobProperties' {jobId} -> jobId) (\s@ExportJobProperties' {} a -> s {jobId = a} :: ExportJobProperties)
+
+-- | The status of a FHIR export job. Possible statuses are SUBMITTED,
+-- IN_PROGRESS, COMPLETED, or FAILED.
+exportJobProperties_jobStatus :: Lens.Lens' ExportJobProperties JobStatus
+exportJobProperties_jobStatus = Lens.lens (\ExportJobProperties' {jobStatus} -> jobStatus) (\s@ExportJobProperties' {} a -> s {jobStatus = a} :: ExportJobProperties)
+
+-- | The time an export job was initiated.
+exportJobProperties_submitTime :: Lens.Lens' ExportJobProperties Prelude.UTCTime
+exportJobProperties_submitTime = Lens.lens (\ExportJobProperties' {submitTime} -> submitTime) (\s@ExportJobProperties' {} a -> s {submitTime = a} :: ExportJobProperties) Prelude.. Data._Time
+
+-- | The AWS generated ID for the Data Store from which files are being
+-- exported for an export job.
+exportJobProperties_datastoreId :: Lens.Lens' ExportJobProperties Prelude.Text
+exportJobProperties_datastoreId = Lens.lens (\ExportJobProperties' {datastoreId} -> datastoreId) (\s@ExportJobProperties' {} a -> s {datastoreId = a} :: ExportJobProperties)
+
+-- | The output data configuration that was supplied when the export job was
+-- created.
+exportJobProperties_outputDataConfig :: Lens.Lens' ExportJobProperties OutputDataConfig
+exportJobProperties_outputDataConfig = Lens.lens (\ExportJobProperties' {outputDataConfig} -> outputDataConfig) (\s@ExportJobProperties' {} a -> s {outputDataConfig = a} :: ExportJobProperties)
+
+instance Data.FromJSON ExportJobProperties where
+  parseJSON =
+    Data.withObject
+      "ExportJobProperties"
+      ( \x ->
+          ExportJobProperties'
+            Prelude.<$> (x Data..:? "DataAccessRoleArn")
+            Prelude.<*> (x Data..:? "EndTime")
+            Prelude.<*> (x Data..:? "JobName")
+            Prelude.<*> (x Data..:? "Message")
+            Prelude.<*> (x Data..: "JobId")
+            Prelude.<*> (x Data..: "JobStatus")
+            Prelude.<*> (x Data..: "SubmitTime")
+            Prelude.<*> (x Data..: "DatastoreId")
+            Prelude.<*> (x Data..: "OutputDataConfig")
+      )
+
+instance Prelude.Hashable ExportJobProperties where
+  hashWithSalt _salt ExportJobProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataAccessRoleArn
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` jobName
+      `Prelude.hashWithSalt` message
+      `Prelude.hashWithSalt` jobId
+      `Prelude.hashWithSalt` jobStatus
+      `Prelude.hashWithSalt` submitTime
+      `Prelude.hashWithSalt` datastoreId
+      `Prelude.hashWithSalt` outputDataConfig
+
+instance Prelude.NFData ExportJobProperties where
+  rnf ExportJobProperties' {..} =
+    Prelude.rnf dataAccessRoleArn
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf jobName
+      `Prelude.seq` Prelude.rnf message
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf jobStatus
+      `Prelude.seq` Prelude.rnf submitTime
+      `Prelude.seq` Prelude.rnf datastoreId
+      `Prelude.seq` Prelude.rnf outputDataConfig
diff --git a/gen/Amazonka/HealthLake/Types/FHIRVersion.hs b/gen/Amazonka/HealthLake/Types/FHIRVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/Types/FHIRVersion.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.HealthLake.Types.FHIRVersion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.HealthLake.Types.FHIRVersion
+  ( FHIRVersion
+      ( ..,
+        FHIRVersion_R4
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FHIRVersion = FHIRVersion'
+  { fromFHIRVersion ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern FHIRVersion_R4 :: FHIRVersion
+pattern FHIRVersion_R4 = FHIRVersion' "R4"
+
+{-# COMPLETE
+  FHIRVersion_R4,
+  FHIRVersion'
+  #-}
diff --git a/gen/Amazonka/HealthLake/Types/ImportJobProperties.hs b/gen/Amazonka/HealthLake/Types/ImportJobProperties.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/Types/ImportJobProperties.hs
@@ -0,0 +1,211 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.ImportJobProperties
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.HealthLake.Types.ImportJobProperties 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.InputDataConfig
+import Amazonka.HealthLake.Types.JobStatus
+import Amazonka.HealthLake.Types.OutputDataConfig
+import qualified Amazonka.Prelude as Prelude
+
+-- | Displays the properties of the import job, including the ID, Arn, Name,
+-- and the status of the Data Store.
+--
+-- /See:/ 'newImportJobProperties' smart constructor.
+data ImportJobProperties = ImportJobProperties'
+  { -- | The Amazon Resource Name (ARN) that gives Amazon HealthLake access to
+    -- your input data.
+    dataAccessRoleArn :: Prelude.Maybe Prelude.Text,
+    -- | The time that the Import job was completed.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | The user-generated name for an Import job.
+    jobName :: Prelude.Maybe Prelude.Text,
+    jobOutputDataConfig :: Prelude.Maybe OutputDataConfig,
+    -- | An explanation of any errors that may have occurred during the FHIR
+    -- import job.
+    message :: Prelude.Maybe Prelude.Text,
+    -- | The AWS-generated id number for the Import job.
+    jobId :: Prelude.Text,
+    -- | The job status for an Import job. Possible statuses are SUBMITTED,
+    -- IN_PROGRESS, COMPLETED, FAILED.
+    jobStatus :: JobStatus,
+    -- | The time that the Import job was submitted for processing.
+    submitTime :: Data.POSIX,
+    -- | The datastore id used when the Import job was created.
+    datastoreId :: Prelude.Text,
+    -- | The input data configuration that was supplied when the Import job was
+    -- created.
+    inputDataConfig :: InputDataConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ImportJobProperties' 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:
+--
+-- 'dataAccessRoleArn', 'importJobProperties_dataAccessRoleArn' - The Amazon Resource Name (ARN) that gives Amazon HealthLake access to
+-- your input data.
+--
+-- 'endTime', 'importJobProperties_endTime' - The time that the Import job was completed.
+--
+-- 'jobName', 'importJobProperties_jobName' - The user-generated name for an Import job.
+--
+-- 'jobOutputDataConfig', 'importJobProperties_jobOutputDataConfig' - Undocumented member.
+--
+-- 'message', 'importJobProperties_message' - An explanation of any errors that may have occurred during the FHIR
+-- import job.
+--
+-- 'jobId', 'importJobProperties_jobId' - The AWS-generated id number for the Import job.
+--
+-- 'jobStatus', 'importJobProperties_jobStatus' - The job status for an Import job. Possible statuses are SUBMITTED,
+-- IN_PROGRESS, COMPLETED, FAILED.
+--
+-- 'submitTime', 'importJobProperties_submitTime' - The time that the Import job was submitted for processing.
+--
+-- 'datastoreId', 'importJobProperties_datastoreId' - The datastore id used when the Import job was created.
+--
+-- 'inputDataConfig', 'importJobProperties_inputDataConfig' - The input data configuration that was supplied when the Import job was
+-- created.
+newImportJobProperties ::
+  -- | 'jobId'
+  Prelude.Text ->
+  -- | 'jobStatus'
+  JobStatus ->
+  -- | 'submitTime'
+  Prelude.UTCTime ->
+  -- | 'datastoreId'
+  Prelude.Text ->
+  -- | 'inputDataConfig'
+  InputDataConfig ->
+  ImportJobProperties
+newImportJobProperties
+  pJobId_
+  pJobStatus_
+  pSubmitTime_
+  pDatastoreId_
+  pInputDataConfig_ =
+    ImportJobProperties'
+      { dataAccessRoleArn =
+          Prelude.Nothing,
+        endTime = Prelude.Nothing,
+        jobName = Prelude.Nothing,
+        jobOutputDataConfig = Prelude.Nothing,
+        message = Prelude.Nothing,
+        jobId = pJobId_,
+        jobStatus = pJobStatus_,
+        submitTime = Data._Time Lens.# pSubmitTime_,
+        datastoreId = pDatastoreId_,
+        inputDataConfig = pInputDataConfig_
+      }
+
+-- | The Amazon Resource Name (ARN) that gives Amazon HealthLake access to
+-- your input data.
+importJobProperties_dataAccessRoleArn :: Lens.Lens' ImportJobProperties (Prelude.Maybe Prelude.Text)
+importJobProperties_dataAccessRoleArn = Lens.lens (\ImportJobProperties' {dataAccessRoleArn} -> dataAccessRoleArn) (\s@ImportJobProperties' {} a -> s {dataAccessRoleArn = a} :: ImportJobProperties)
+
+-- | The time that the Import job was completed.
+importJobProperties_endTime :: Lens.Lens' ImportJobProperties (Prelude.Maybe Prelude.UTCTime)
+importJobProperties_endTime = Lens.lens (\ImportJobProperties' {endTime} -> endTime) (\s@ImportJobProperties' {} a -> s {endTime = a} :: ImportJobProperties) Prelude.. Lens.mapping Data._Time
+
+-- | The user-generated name for an Import job.
+importJobProperties_jobName :: Lens.Lens' ImportJobProperties (Prelude.Maybe Prelude.Text)
+importJobProperties_jobName = Lens.lens (\ImportJobProperties' {jobName} -> jobName) (\s@ImportJobProperties' {} a -> s {jobName = a} :: ImportJobProperties)
+
+-- | Undocumented member.
+importJobProperties_jobOutputDataConfig :: Lens.Lens' ImportJobProperties (Prelude.Maybe OutputDataConfig)
+importJobProperties_jobOutputDataConfig = Lens.lens (\ImportJobProperties' {jobOutputDataConfig} -> jobOutputDataConfig) (\s@ImportJobProperties' {} a -> s {jobOutputDataConfig = a} :: ImportJobProperties)
+
+-- | An explanation of any errors that may have occurred during the FHIR
+-- import job.
+importJobProperties_message :: Lens.Lens' ImportJobProperties (Prelude.Maybe Prelude.Text)
+importJobProperties_message = Lens.lens (\ImportJobProperties' {message} -> message) (\s@ImportJobProperties' {} a -> s {message = a} :: ImportJobProperties)
+
+-- | The AWS-generated id number for the Import job.
+importJobProperties_jobId :: Lens.Lens' ImportJobProperties Prelude.Text
+importJobProperties_jobId = Lens.lens (\ImportJobProperties' {jobId} -> jobId) (\s@ImportJobProperties' {} a -> s {jobId = a} :: ImportJobProperties)
+
+-- | The job status for an Import job. Possible statuses are SUBMITTED,
+-- IN_PROGRESS, COMPLETED, FAILED.
+importJobProperties_jobStatus :: Lens.Lens' ImportJobProperties JobStatus
+importJobProperties_jobStatus = Lens.lens (\ImportJobProperties' {jobStatus} -> jobStatus) (\s@ImportJobProperties' {} a -> s {jobStatus = a} :: ImportJobProperties)
+
+-- | The time that the Import job was submitted for processing.
+importJobProperties_submitTime :: Lens.Lens' ImportJobProperties Prelude.UTCTime
+importJobProperties_submitTime = Lens.lens (\ImportJobProperties' {submitTime} -> submitTime) (\s@ImportJobProperties' {} a -> s {submitTime = a} :: ImportJobProperties) Prelude.. Data._Time
+
+-- | The datastore id used when the Import job was created.
+importJobProperties_datastoreId :: Lens.Lens' ImportJobProperties Prelude.Text
+importJobProperties_datastoreId = Lens.lens (\ImportJobProperties' {datastoreId} -> datastoreId) (\s@ImportJobProperties' {} a -> s {datastoreId = a} :: ImportJobProperties)
+
+-- | The input data configuration that was supplied when the Import job was
+-- created.
+importJobProperties_inputDataConfig :: Lens.Lens' ImportJobProperties InputDataConfig
+importJobProperties_inputDataConfig = Lens.lens (\ImportJobProperties' {inputDataConfig} -> inputDataConfig) (\s@ImportJobProperties' {} a -> s {inputDataConfig = a} :: ImportJobProperties)
+
+instance Data.FromJSON ImportJobProperties where
+  parseJSON =
+    Data.withObject
+      "ImportJobProperties"
+      ( \x ->
+          ImportJobProperties'
+            Prelude.<$> (x Data..:? "DataAccessRoleArn")
+            Prelude.<*> (x Data..:? "EndTime")
+            Prelude.<*> (x Data..:? "JobName")
+            Prelude.<*> (x Data..:? "JobOutputDataConfig")
+            Prelude.<*> (x Data..:? "Message")
+            Prelude.<*> (x Data..: "JobId")
+            Prelude.<*> (x Data..: "JobStatus")
+            Prelude.<*> (x Data..: "SubmitTime")
+            Prelude.<*> (x Data..: "DatastoreId")
+            Prelude.<*> (x Data..: "InputDataConfig")
+      )
+
+instance Prelude.Hashable ImportJobProperties where
+  hashWithSalt _salt ImportJobProperties' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataAccessRoleArn
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` jobName
+      `Prelude.hashWithSalt` jobOutputDataConfig
+      `Prelude.hashWithSalt` message
+      `Prelude.hashWithSalt` jobId
+      `Prelude.hashWithSalt` jobStatus
+      `Prelude.hashWithSalt` submitTime
+      `Prelude.hashWithSalt` datastoreId
+      `Prelude.hashWithSalt` inputDataConfig
+
+instance Prelude.NFData ImportJobProperties where
+  rnf ImportJobProperties' {..} =
+    Prelude.rnf dataAccessRoleArn
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf jobName
+      `Prelude.seq` Prelude.rnf jobOutputDataConfig
+      `Prelude.seq` Prelude.rnf message
+      `Prelude.seq` Prelude.rnf jobId
+      `Prelude.seq` Prelude.rnf jobStatus
+      `Prelude.seq` Prelude.rnf submitTime
+      `Prelude.seq` Prelude.rnf datastoreId
+      `Prelude.seq` Prelude.rnf inputDataConfig
diff --git a/gen/Amazonka/HealthLake/Types/InputDataConfig.hs b/gen/Amazonka/HealthLake/Types/InputDataConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/Types/InputDataConfig.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.InputDataConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.HealthLake.Types.InputDataConfig where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The input properties for an import job.
+--
+-- /See:/ 'newInputDataConfig' smart constructor.
+data InputDataConfig = InputDataConfig'
+  { -- | The S3Uri is the user specified S3 location of the FHIR data to be
+    -- imported into Amazon HealthLake.
+    s3Uri :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InputDataConfig' 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:
+--
+-- 's3Uri', 'inputDataConfig_s3Uri' - The S3Uri is the user specified S3 location of the FHIR data to be
+-- imported into Amazon HealthLake.
+newInputDataConfig ::
+  InputDataConfig
+newInputDataConfig =
+  InputDataConfig' {s3Uri = Prelude.Nothing}
+
+-- | The S3Uri is the user specified S3 location of the FHIR data to be
+-- imported into Amazon HealthLake.
+inputDataConfig_s3Uri :: Lens.Lens' InputDataConfig (Prelude.Maybe Prelude.Text)
+inputDataConfig_s3Uri = Lens.lens (\InputDataConfig' {s3Uri} -> s3Uri) (\s@InputDataConfig' {} a -> s {s3Uri = a} :: InputDataConfig)
+
+instance Data.FromJSON InputDataConfig where
+  parseJSON =
+    Data.withObject
+      "InputDataConfig"
+      ( \x ->
+          InputDataConfig' Prelude.<$> (x Data..:? "S3Uri")
+      )
+
+instance Prelude.Hashable InputDataConfig where
+  hashWithSalt _salt InputDataConfig' {..} =
+    _salt `Prelude.hashWithSalt` s3Uri
+
+instance Prelude.NFData InputDataConfig where
+  rnf InputDataConfig' {..} = Prelude.rnf s3Uri
+
+instance Data.ToJSON InputDataConfig where
+  toJSON InputDataConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [("S3Uri" Data..=) Prelude.<$> s3Uri]
+      )
diff --git a/gen/Amazonka/HealthLake/Types/JobStatus.hs b/gen/Amazonka/HealthLake/Types/JobStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/Types/JobStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.HealthLake.Types.JobStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.HealthLake.Types.JobStatus
+  ( JobStatus
+      ( ..,
+        JobStatus_COMPLETED,
+        JobStatus_COMPLETED_WITH_ERRORS,
+        JobStatus_FAILED,
+        JobStatus_IN_PROGRESS,
+        JobStatus_SUBMITTED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype JobStatus = JobStatus'
+  { fromJobStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern JobStatus_COMPLETED :: JobStatus
+pattern JobStatus_COMPLETED = JobStatus' "COMPLETED"
+
+pattern JobStatus_COMPLETED_WITH_ERRORS :: JobStatus
+pattern JobStatus_COMPLETED_WITH_ERRORS = JobStatus' "COMPLETED_WITH_ERRORS"
+
+pattern JobStatus_FAILED :: JobStatus
+pattern JobStatus_FAILED = JobStatus' "FAILED"
+
+pattern JobStatus_IN_PROGRESS :: JobStatus
+pattern JobStatus_IN_PROGRESS = JobStatus' "IN_PROGRESS"
+
+pattern JobStatus_SUBMITTED :: JobStatus
+pattern JobStatus_SUBMITTED = JobStatus' "SUBMITTED"
+
+{-# COMPLETE
+  JobStatus_COMPLETED,
+  JobStatus_COMPLETED_WITH_ERRORS,
+  JobStatus_FAILED,
+  JobStatus_IN_PROGRESS,
+  JobStatus_SUBMITTED,
+  JobStatus'
+  #-}
diff --git a/gen/Amazonka/HealthLake/Types/KmsEncryptionConfig.hs b/gen/Amazonka/HealthLake/Types/KmsEncryptionConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/Types/KmsEncryptionConfig.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.KmsEncryptionConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.HealthLake.Types.KmsEncryptionConfig 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.CmkType
+import qualified Amazonka.Prelude as Prelude
+
+-- | The customer-managed-key(CMK) used when creating a Data Store. If a
+-- customer owned key is not specified, an AWS owned key will be used for
+-- encryption.
+--
+-- /See:/ 'newKmsEncryptionConfig' smart constructor.
+data KmsEncryptionConfig = KmsEncryptionConfig'
+  { -- | The KMS encryption key id\/alias used to encrypt the Data Store contents
+    -- at rest.
+    kmsKeyId :: Prelude.Maybe Prelude.Text,
+    -- | The type of customer-managed-key(CMK) used for encyrption. The two types
+    -- of supported CMKs are customer owned CMKs and AWS owned CMKs.
+    cmkType :: CmkType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KmsEncryptionConfig' 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:
+--
+-- 'kmsKeyId', 'kmsEncryptionConfig_kmsKeyId' - The KMS encryption key id\/alias used to encrypt the Data Store contents
+-- at rest.
+--
+-- 'cmkType', 'kmsEncryptionConfig_cmkType' - The type of customer-managed-key(CMK) used for encyrption. The two types
+-- of supported CMKs are customer owned CMKs and AWS owned CMKs.
+newKmsEncryptionConfig ::
+  -- | 'cmkType'
+  CmkType ->
+  KmsEncryptionConfig
+newKmsEncryptionConfig pCmkType_ =
+  KmsEncryptionConfig'
+    { kmsKeyId = Prelude.Nothing,
+      cmkType = pCmkType_
+    }
+
+-- | The KMS encryption key id\/alias used to encrypt the Data Store contents
+-- at rest.
+kmsEncryptionConfig_kmsKeyId :: Lens.Lens' KmsEncryptionConfig (Prelude.Maybe Prelude.Text)
+kmsEncryptionConfig_kmsKeyId = Lens.lens (\KmsEncryptionConfig' {kmsKeyId} -> kmsKeyId) (\s@KmsEncryptionConfig' {} a -> s {kmsKeyId = a} :: KmsEncryptionConfig)
+
+-- | The type of customer-managed-key(CMK) used for encyrption. The two types
+-- of supported CMKs are customer owned CMKs and AWS owned CMKs.
+kmsEncryptionConfig_cmkType :: Lens.Lens' KmsEncryptionConfig CmkType
+kmsEncryptionConfig_cmkType = Lens.lens (\KmsEncryptionConfig' {cmkType} -> cmkType) (\s@KmsEncryptionConfig' {} a -> s {cmkType = a} :: KmsEncryptionConfig)
+
+instance Data.FromJSON KmsEncryptionConfig where
+  parseJSON =
+    Data.withObject
+      "KmsEncryptionConfig"
+      ( \x ->
+          KmsEncryptionConfig'
+            Prelude.<$> (x Data..:? "KmsKeyId")
+            Prelude.<*> (x Data..: "CmkType")
+      )
+
+instance Prelude.Hashable KmsEncryptionConfig where
+  hashWithSalt _salt KmsEncryptionConfig' {..} =
+    _salt
+      `Prelude.hashWithSalt` kmsKeyId
+      `Prelude.hashWithSalt` cmkType
+
+instance Prelude.NFData KmsEncryptionConfig where
+  rnf KmsEncryptionConfig' {..} =
+    Prelude.rnf kmsKeyId
+      `Prelude.seq` Prelude.rnf cmkType
+
+instance Data.ToJSON KmsEncryptionConfig where
+  toJSON KmsEncryptionConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("KmsKeyId" Data..=) Prelude.<$> kmsKeyId,
+            Prelude.Just ("CmkType" Data..= cmkType)
+          ]
+      )
diff --git a/gen/Amazonka/HealthLake/Types/OutputDataConfig.hs b/gen/Amazonka/HealthLake/Types/OutputDataConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/Types/OutputDataConfig.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.OutputDataConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.HealthLake.Types.OutputDataConfig 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.S3Configuration
+import qualified Amazonka.Prelude as Prelude
+
+-- | The output data configuration that was supplied when the export job was
+-- created.
+--
+-- /See:/ 'newOutputDataConfig' smart constructor.
+data OutputDataConfig = OutputDataConfig'
+  { -- | The output data configuration that was supplied when the export job was
+    -- created.
+    s3Configuration :: Prelude.Maybe S3Configuration
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'OutputDataConfig' 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:
+--
+-- 's3Configuration', 'outputDataConfig_s3Configuration' - The output data configuration that was supplied when the export job was
+-- created.
+newOutputDataConfig ::
+  OutputDataConfig
+newOutputDataConfig =
+  OutputDataConfig'
+    { s3Configuration =
+        Prelude.Nothing
+    }
+
+-- | The output data configuration that was supplied when the export job was
+-- created.
+outputDataConfig_s3Configuration :: Lens.Lens' OutputDataConfig (Prelude.Maybe S3Configuration)
+outputDataConfig_s3Configuration = Lens.lens (\OutputDataConfig' {s3Configuration} -> s3Configuration) (\s@OutputDataConfig' {} a -> s {s3Configuration = a} :: OutputDataConfig)
+
+instance Data.FromJSON OutputDataConfig where
+  parseJSON =
+    Data.withObject
+      "OutputDataConfig"
+      ( \x ->
+          OutputDataConfig'
+            Prelude.<$> (x Data..:? "S3Configuration")
+      )
+
+instance Prelude.Hashable OutputDataConfig where
+  hashWithSalt _salt OutputDataConfig' {..} =
+    _salt `Prelude.hashWithSalt` s3Configuration
+
+instance Prelude.NFData OutputDataConfig where
+  rnf OutputDataConfig' {..} =
+    Prelude.rnf s3Configuration
+
+instance Data.ToJSON OutputDataConfig where
+  toJSON OutputDataConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("S3Configuration" Data..=)
+              Prelude.<$> s3Configuration
+          ]
+      )
diff --git a/gen/Amazonka/HealthLake/Types/PreloadDataConfig.hs b/gen/Amazonka/HealthLake/Types/PreloadDataConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/Types/PreloadDataConfig.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.PreloadDataConfig
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.HealthLake.Types.PreloadDataConfig 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.PreloadDataType
+import qualified Amazonka.Prelude as Prelude
+
+-- | The input properties for the preloaded Data Store. Only data preloaded
+-- from Synthea is supported.
+--
+-- /See:/ 'newPreloadDataConfig' smart constructor.
+data PreloadDataConfig = PreloadDataConfig'
+  { -- | The type of preloaded data. Only Synthea preloaded data is supported.
+    preloadDataType :: PreloadDataType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PreloadDataConfig' 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:
+--
+-- 'preloadDataType', 'preloadDataConfig_preloadDataType' - The type of preloaded data. Only Synthea preloaded data is supported.
+newPreloadDataConfig ::
+  -- | 'preloadDataType'
+  PreloadDataType ->
+  PreloadDataConfig
+newPreloadDataConfig pPreloadDataType_ =
+  PreloadDataConfig'
+    { preloadDataType =
+        pPreloadDataType_
+    }
+
+-- | The type of preloaded data. Only Synthea preloaded data is supported.
+preloadDataConfig_preloadDataType :: Lens.Lens' PreloadDataConfig PreloadDataType
+preloadDataConfig_preloadDataType = Lens.lens (\PreloadDataConfig' {preloadDataType} -> preloadDataType) (\s@PreloadDataConfig' {} a -> s {preloadDataType = a} :: PreloadDataConfig)
+
+instance Data.FromJSON PreloadDataConfig where
+  parseJSON =
+    Data.withObject
+      "PreloadDataConfig"
+      ( \x ->
+          PreloadDataConfig'
+            Prelude.<$> (x Data..: "PreloadDataType")
+      )
+
+instance Prelude.Hashable PreloadDataConfig where
+  hashWithSalt _salt PreloadDataConfig' {..} =
+    _salt `Prelude.hashWithSalt` preloadDataType
+
+instance Prelude.NFData PreloadDataConfig where
+  rnf PreloadDataConfig' {..} =
+    Prelude.rnf preloadDataType
+
+instance Data.ToJSON PreloadDataConfig where
+  toJSON PreloadDataConfig' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("PreloadDataType" Data..= preloadDataType)
+          ]
+      )
diff --git a/gen/Amazonka/HealthLake/Types/PreloadDataType.hs b/gen/Amazonka/HealthLake/Types/PreloadDataType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/Types/PreloadDataType.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.HealthLake.Types.PreloadDataType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.HealthLake.Types.PreloadDataType
+  ( PreloadDataType
+      ( ..,
+        PreloadDataType_SYNTHEA
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PreloadDataType = PreloadDataType'
+  { fromPreloadDataType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern PreloadDataType_SYNTHEA :: PreloadDataType
+pattern PreloadDataType_SYNTHEA = PreloadDataType' "SYNTHEA"
+
+{-# COMPLETE
+  PreloadDataType_SYNTHEA,
+  PreloadDataType'
+  #-}
diff --git a/gen/Amazonka/HealthLake/Types/S3Configuration.hs b/gen/Amazonka/HealthLake/Types/S3Configuration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/Types/S3Configuration.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.S3Configuration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.HealthLake.Types.S3Configuration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The configuration of the S3 bucket for either an import or export job.
+-- This includes assigning permissions for access.
+--
+-- /See:/ 'newS3Configuration' smart constructor.
+data S3Configuration = S3Configuration'
+  { -- | The S3Uri is the user specified S3 location of the FHIR data to be
+    -- imported into Amazon HealthLake.
+    s3Uri :: Prelude.Text,
+    -- | The KMS key ID used to access the S3 bucket.
+    kmsKeyId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3Configuration' 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:
+--
+-- 's3Uri', 's3Configuration_s3Uri' - The S3Uri is the user specified S3 location of the FHIR data to be
+-- imported into Amazon HealthLake.
+--
+-- 'kmsKeyId', 's3Configuration_kmsKeyId' - The KMS key ID used to access the S3 bucket.
+newS3Configuration ::
+  -- | 's3Uri'
+  Prelude.Text ->
+  -- | 'kmsKeyId'
+  Prelude.Text ->
+  S3Configuration
+newS3Configuration pS3Uri_ pKmsKeyId_ =
+  S3Configuration'
+    { s3Uri = pS3Uri_,
+      kmsKeyId = pKmsKeyId_
+    }
+
+-- | The S3Uri is the user specified S3 location of the FHIR data to be
+-- imported into Amazon HealthLake.
+s3Configuration_s3Uri :: Lens.Lens' S3Configuration Prelude.Text
+s3Configuration_s3Uri = Lens.lens (\S3Configuration' {s3Uri} -> s3Uri) (\s@S3Configuration' {} a -> s {s3Uri = a} :: S3Configuration)
+
+-- | The KMS key ID used to access the S3 bucket.
+s3Configuration_kmsKeyId :: Lens.Lens' S3Configuration Prelude.Text
+s3Configuration_kmsKeyId = Lens.lens (\S3Configuration' {kmsKeyId} -> kmsKeyId) (\s@S3Configuration' {} a -> s {kmsKeyId = a} :: S3Configuration)
+
+instance Data.FromJSON S3Configuration where
+  parseJSON =
+    Data.withObject
+      "S3Configuration"
+      ( \x ->
+          S3Configuration'
+            Prelude.<$> (x Data..: "S3Uri")
+            Prelude.<*> (x Data..: "KmsKeyId")
+      )
+
+instance Prelude.Hashable S3Configuration where
+  hashWithSalt _salt S3Configuration' {..} =
+    _salt
+      `Prelude.hashWithSalt` s3Uri
+      `Prelude.hashWithSalt` kmsKeyId
+
+instance Prelude.NFData S3Configuration where
+  rnf S3Configuration' {..} =
+    Prelude.rnf s3Uri
+      `Prelude.seq` Prelude.rnf kmsKeyId
+
+instance Data.ToJSON S3Configuration where
+  toJSON S3Configuration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("S3Uri" Data..= s3Uri),
+            Prelude.Just ("KmsKeyId" Data..= kmsKeyId)
+          ]
+      )
diff --git a/gen/Amazonka/HealthLake/Types/SseConfiguration.hs b/gen/Amazonka/HealthLake/Types/SseConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/Types/SseConfiguration.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.SseConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.HealthLake.Types.SseConfiguration 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.KmsEncryptionConfig
+import qualified Amazonka.Prelude as Prelude
+
+-- | The server-side encryption key configuration for a customer provided
+-- encryption key.
+--
+-- /See:/ 'newSseConfiguration' smart constructor.
+data SseConfiguration = SseConfiguration'
+  { -- | The KMS encryption configuration used to provide details for data
+    -- encryption.
+    kmsEncryptionConfig :: KmsEncryptionConfig
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SseConfiguration' 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:
+--
+-- 'kmsEncryptionConfig', 'sseConfiguration_kmsEncryptionConfig' - The KMS encryption configuration used to provide details for data
+-- encryption.
+newSseConfiguration ::
+  -- | 'kmsEncryptionConfig'
+  KmsEncryptionConfig ->
+  SseConfiguration
+newSseConfiguration pKmsEncryptionConfig_ =
+  SseConfiguration'
+    { kmsEncryptionConfig =
+        pKmsEncryptionConfig_
+    }
+
+-- | The KMS encryption configuration used to provide details for data
+-- encryption.
+sseConfiguration_kmsEncryptionConfig :: Lens.Lens' SseConfiguration KmsEncryptionConfig
+sseConfiguration_kmsEncryptionConfig = Lens.lens (\SseConfiguration' {kmsEncryptionConfig} -> kmsEncryptionConfig) (\s@SseConfiguration' {} a -> s {kmsEncryptionConfig = a} :: SseConfiguration)
+
+instance Data.FromJSON SseConfiguration where
+  parseJSON =
+    Data.withObject
+      "SseConfiguration"
+      ( \x ->
+          SseConfiguration'
+            Prelude.<$> (x Data..: "KmsEncryptionConfig")
+      )
+
+instance Prelude.Hashable SseConfiguration where
+  hashWithSalt _salt SseConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` kmsEncryptionConfig
+
+instance Prelude.NFData SseConfiguration where
+  rnf SseConfiguration' {..} =
+    Prelude.rnf kmsEncryptionConfig
+
+instance Data.ToJSON SseConfiguration where
+  toJSON SseConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("KmsEncryptionConfig" Data..= kmsEncryptionConfig)
+          ]
+      )
diff --git a/gen/Amazonka/HealthLake/Types/Tag.hs b/gen/Amazonka/HealthLake/Types/Tag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/Types/Tag.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# 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.Types.Tag
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.HealthLake.Types.Tag where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A tag is a label consisting of a user-defined key and value. The form
+-- for tags is {\"Key\", \"Value\"}
+--
+-- /See:/ 'newTag' smart constructor.
+data Tag = Tag'
+  { -- | The key portion of a tag. Tag keys are case sensitive.
+    key :: Prelude.Text,
+    -- | The value portion of tag. Tag values are case sensitive.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Tag' 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:
+--
+-- 'key', 'tag_key' - The key portion of a tag. Tag keys are case sensitive.
+--
+-- 'value', 'tag_value' - The value portion of tag. Tag values are case sensitive.
+newTag ::
+  -- | 'key'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.Text ->
+  Tag
+newTag pKey_ pValue_ =
+  Tag' {key = pKey_, value = pValue_}
+
+-- | The key portion of a tag. Tag keys are case sensitive.
+tag_key :: Lens.Lens' Tag Prelude.Text
+tag_key = Lens.lens (\Tag' {key} -> key) (\s@Tag' {} a -> s {key = a} :: Tag)
+
+-- | The value portion of tag. Tag values are case sensitive.
+tag_value :: Lens.Lens' Tag Prelude.Text
+tag_value = Lens.lens (\Tag' {value} -> value) (\s@Tag' {} a -> s {value = a} :: Tag)
+
+instance Data.FromJSON Tag where
+  parseJSON =
+    Data.withObject
+      "Tag"
+      ( \x ->
+          Tag'
+            Prelude.<$> (x Data..: "Key")
+            Prelude.<*> (x Data..: "Value")
+      )
+
+instance Prelude.Hashable Tag where
+  hashWithSalt _salt Tag' {..} =
+    _salt
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData Tag where
+  rnf Tag' {..} =
+    Prelude.rnf key `Prelude.seq` Prelude.rnf value
+
+instance Data.ToJSON Tag where
+  toJSON Tag' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Key" Data..= key),
+            Prelude.Just ("Value" Data..= value)
+          ]
+      )
diff --git a/gen/Amazonka/HealthLake/UntagResource.hs b/gen/Amazonka/HealthLake/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/UntagResource.hs
@@ -0,0 +1,172 @@
+{-# 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.UntagResource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes tags from a Data Store.
+module Amazonka.HealthLake.UntagResource
+  ( -- * Creating a Request
+    UntagResource (..),
+    newUntagResource,
+
+    -- * Request Lenses
+    untagResource_resourceARN,
+    untagResource_tagKeys,
+
+    -- * Destructuring the Response
+    UntagResourceResponse (..),
+    newUntagResourceResponse,
+
+    -- * Response Lenses
+    untagResourceResponse_httpStatus,
+  )
+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:/ 'newUntagResource' smart constructor.
+data UntagResource = UntagResource'
+  { -- | \"The Amazon Resource Name(ARN) of the Data Store for which tags are
+    -- being removed
+    resourceARN :: Prelude.Text,
+    -- | The keys for the tags to be removed from the Healthlake Data Store.
+    tagKeys :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResource' 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:
+--
+-- 'resourceARN', 'untagResource_resourceARN' - \"The Amazon Resource Name(ARN) of the Data Store for which tags are
+-- being removed
+--
+-- 'tagKeys', 'untagResource_tagKeys' - The keys for the tags to be removed from the Healthlake Data Store.
+newUntagResource ::
+  -- | 'resourceARN'
+  Prelude.Text ->
+  UntagResource
+newUntagResource pResourceARN_ =
+  UntagResource'
+    { resourceARN = pResourceARN_,
+      tagKeys = Prelude.mempty
+    }
+
+-- | \"The Amazon Resource Name(ARN) of the Data Store for which tags are
+-- being removed
+untagResource_resourceARN :: Lens.Lens' UntagResource Prelude.Text
+untagResource_resourceARN = Lens.lens (\UntagResource' {resourceARN} -> resourceARN) (\s@UntagResource' {} a -> s {resourceARN = a} :: UntagResource)
+
+-- | The keys for the tags to be removed from the Healthlake Data Store.
+untagResource_tagKeys :: Lens.Lens' UntagResource [Prelude.Text]
+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced
+
+instance Core.AWSRequest UntagResource where
+  type
+    AWSResponse UntagResource =
+      UntagResourceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UntagResourceResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UntagResource where
+  hashWithSalt _salt UntagResource' {..} =
+    _salt
+      `Prelude.hashWithSalt` resourceARN
+      `Prelude.hashWithSalt` tagKeys
+
+instance Prelude.NFData UntagResource where
+  rnf UntagResource' {..} =
+    Prelude.rnf resourceARN
+      `Prelude.seq` Prelude.rnf tagKeys
+
+instance Data.ToHeaders UntagResource where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "X-Amz-Target"
+              Data.=# ("HealthLake.UntagResource" :: Prelude.ByteString),
+            "Content-Type"
+              Data.=# ( "application/x-amz-json-1.0" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON UntagResource where
+  toJSON UntagResource' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("ResourceARN" Data..= resourceARN),
+            Prelude.Just ("TagKeys" Data..= tagKeys)
+          ]
+      )
+
+instance Data.ToPath UntagResource where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UntagResource where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUntagResourceResponse' smart constructor.
+data UntagResourceResponse = UntagResourceResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UntagResourceResponse' 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:
+--
+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.
+newUntagResourceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UntagResourceResponse
+newUntagResourceResponse pHttpStatus_ =
+  UntagResourceResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int
+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)
+
+instance Prelude.NFData UntagResourceResponse where
+  rnf UntagResourceResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/HealthLake/Waiters.hs b/gen/Amazonka/HealthLake/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/HealthLake/Waiters.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE DisambiguateRecordFields #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.HealthLake.Waiters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.HealthLake.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import Amazonka.HealthLake.Lens
+import Amazonka.HealthLake.Types
+import qualified Amazonka.Prelude as Prelude
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Main (main) where
+
+import Test.Amazonka.HealthLake
+import Test.Amazonka.HealthLake.Internal
+import Test.Tasty
+
+main :: IO ()
+main =
+  defaultMain $
+    testGroup
+      "HealthLake"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/Amazonka/Gen/HealthLake.hs b/test/Test/Amazonka/Gen/HealthLake.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/HealthLake.hs
@@ -0,0 +1,298 @@
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Test.Amazonka.Gen.HealthLake
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Test.Amazonka.Gen.HealthLake where
+
+import Amazonka.HealthLake
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.HealthLake.Internal
+import Test.Amazonka.Prelude
+import Test.Tasty
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ requestCreateFHIRDatastore $
+--             newCreateFHIRDatastore
+--
+--         , requestDeleteFHIRDatastore $
+--             newDeleteFHIRDatastore
+--
+--         , requestDescribeFHIRDatastore $
+--             newDescribeFHIRDatastore
+--
+--         , requestDescribeFHIRExportJob $
+--             newDescribeFHIRExportJob
+--
+--         , requestDescribeFHIRImportJob $
+--             newDescribeFHIRImportJob
+--
+--         , requestListFHIRDatastores $
+--             newListFHIRDatastores
+--
+--         , requestListFHIRExportJobs $
+--             newListFHIRExportJobs
+--
+--         , requestListFHIRImportJobs $
+--             newListFHIRImportJobs
+--
+--         , requestListTagsForResource $
+--             newListTagsForResource
+--
+--         , requestStartFHIRExportJob $
+--             newStartFHIRExportJob
+--
+--         , requestStartFHIRImportJob $
+--             newStartFHIRImportJob
+--
+--         , requestTagResource $
+--             newTagResource
+--
+--         , requestUntagResource $
+--             newUntagResource
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseCreateFHIRDatastore $
+--             newCreateFHIRDatastoreResponse
+--
+--         , responseDeleteFHIRDatastore $
+--             newDeleteFHIRDatastoreResponse
+--
+--         , responseDescribeFHIRDatastore $
+--             newDescribeFHIRDatastoreResponse
+--
+--         , responseDescribeFHIRExportJob $
+--             newDescribeFHIRExportJobResponse
+--
+--         , responseDescribeFHIRImportJob $
+--             newDescribeFHIRImportJobResponse
+--
+--         , responseListFHIRDatastores $
+--             newListFHIRDatastoresResponse
+--
+--         , responseListFHIRExportJobs $
+--             newListFHIRExportJobsResponse
+--
+--         , responseListFHIRImportJobs $
+--             newListFHIRImportJobsResponse
+--
+--         , responseListTagsForResource $
+--             newListTagsForResourceResponse
+--
+--         , responseStartFHIRExportJob $
+--             newStartFHIRExportJobResponse
+--
+--         , responseStartFHIRImportJob $
+--             newStartFHIRImportJobResponse
+--
+--         , responseTagResource $
+--             newTagResourceResponse
+--
+--         , responseUntagResource $
+--             newUntagResourceResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestCreateFHIRDatastore :: CreateFHIRDatastore -> TestTree
+requestCreateFHIRDatastore =
+  req
+    "CreateFHIRDatastore"
+    "fixture/CreateFHIRDatastore.yaml"
+
+requestDeleteFHIRDatastore :: DeleteFHIRDatastore -> TestTree
+requestDeleteFHIRDatastore =
+  req
+    "DeleteFHIRDatastore"
+    "fixture/DeleteFHIRDatastore.yaml"
+
+requestDescribeFHIRDatastore :: DescribeFHIRDatastore -> TestTree
+requestDescribeFHIRDatastore =
+  req
+    "DescribeFHIRDatastore"
+    "fixture/DescribeFHIRDatastore.yaml"
+
+requestDescribeFHIRExportJob :: DescribeFHIRExportJob -> TestTree
+requestDescribeFHIRExportJob =
+  req
+    "DescribeFHIRExportJob"
+    "fixture/DescribeFHIRExportJob.yaml"
+
+requestDescribeFHIRImportJob :: DescribeFHIRImportJob -> TestTree
+requestDescribeFHIRImportJob =
+  req
+    "DescribeFHIRImportJob"
+    "fixture/DescribeFHIRImportJob.yaml"
+
+requestListFHIRDatastores :: ListFHIRDatastores -> TestTree
+requestListFHIRDatastores =
+  req
+    "ListFHIRDatastores"
+    "fixture/ListFHIRDatastores.yaml"
+
+requestListFHIRExportJobs :: ListFHIRExportJobs -> TestTree
+requestListFHIRExportJobs =
+  req
+    "ListFHIRExportJobs"
+    "fixture/ListFHIRExportJobs.yaml"
+
+requestListFHIRImportJobs :: ListFHIRImportJobs -> TestTree
+requestListFHIRImportJobs =
+  req
+    "ListFHIRImportJobs"
+    "fixture/ListFHIRImportJobs.yaml"
+
+requestListTagsForResource :: ListTagsForResource -> TestTree
+requestListTagsForResource =
+  req
+    "ListTagsForResource"
+    "fixture/ListTagsForResource.yaml"
+
+requestStartFHIRExportJob :: StartFHIRExportJob -> TestTree
+requestStartFHIRExportJob =
+  req
+    "StartFHIRExportJob"
+    "fixture/StartFHIRExportJob.yaml"
+
+requestStartFHIRImportJob :: StartFHIRImportJob -> TestTree
+requestStartFHIRImportJob =
+  req
+    "StartFHIRImportJob"
+    "fixture/StartFHIRImportJob.yaml"
+
+requestTagResource :: TagResource -> TestTree
+requestTagResource =
+  req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource =
+  req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
+-- Responses
+
+responseCreateFHIRDatastore :: CreateFHIRDatastoreResponse -> TestTree
+responseCreateFHIRDatastore =
+  res
+    "CreateFHIRDatastoreResponse"
+    "fixture/CreateFHIRDatastoreResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateFHIRDatastore)
+
+responseDeleteFHIRDatastore :: DeleteFHIRDatastoreResponse -> TestTree
+responseDeleteFHIRDatastore =
+  res
+    "DeleteFHIRDatastoreResponse"
+    "fixture/DeleteFHIRDatastoreResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteFHIRDatastore)
+
+responseDescribeFHIRDatastore :: DescribeFHIRDatastoreResponse -> TestTree
+responseDescribeFHIRDatastore =
+  res
+    "DescribeFHIRDatastoreResponse"
+    "fixture/DescribeFHIRDatastoreResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeFHIRDatastore)
+
+responseDescribeFHIRExportJob :: DescribeFHIRExportJobResponse -> TestTree
+responseDescribeFHIRExportJob =
+  res
+    "DescribeFHIRExportJobResponse"
+    "fixture/DescribeFHIRExportJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeFHIRExportJob)
+
+responseDescribeFHIRImportJob :: DescribeFHIRImportJobResponse -> TestTree
+responseDescribeFHIRImportJob =
+  res
+    "DescribeFHIRImportJobResponse"
+    "fixture/DescribeFHIRImportJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeFHIRImportJob)
+
+responseListFHIRDatastores :: ListFHIRDatastoresResponse -> TestTree
+responseListFHIRDatastores =
+  res
+    "ListFHIRDatastoresResponse"
+    "fixture/ListFHIRDatastoresResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListFHIRDatastores)
+
+responseListFHIRExportJobs :: ListFHIRExportJobsResponse -> TestTree
+responseListFHIRExportJobs =
+  res
+    "ListFHIRExportJobsResponse"
+    "fixture/ListFHIRExportJobsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListFHIRExportJobs)
+
+responseListFHIRImportJobs :: ListFHIRImportJobsResponse -> TestTree
+responseListFHIRImportJobs =
+  res
+    "ListFHIRImportJobsResponse"
+    "fixture/ListFHIRImportJobsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListFHIRImportJobs)
+
+responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
+responseListTagsForResource =
+  res
+    "ListTagsForResourceResponse"
+    "fixture/ListTagsForResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)
+
+responseStartFHIRExportJob :: StartFHIRExportJobResponse -> TestTree
+responseStartFHIRExportJob =
+  res
+    "StartFHIRExportJobResponse"
+    "fixture/StartFHIRExportJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartFHIRExportJob)
+
+responseStartFHIRImportJob :: StartFHIRImportJobResponse -> TestTree
+responseStartFHIRImportJob =
+  res
+    "StartFHIRImportJobResponse"
+    "fixture/StartFHIRImportJobResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy StartFHIRImportJob)
+
+responseTagResource :: TagResourceResponse -> TestTree
+responseTagResource =
+  res
+    "TagResourceResponse"
+    "fixture/TagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy TagResource)
+
+responseUntagResource :: UntagResourceResponse -> TestTree
+responseUntagResource =
+  res
+    "UntagResourceResponse"
+    "fixture/UntagResourceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UntagResource)
diff --git a/test/Test/Amazonka/HealthLake.hs b/test/Test/Amazonka/HealthLake.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/HealthLake.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.HealthLake
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Test.Amazonka.HealthLake
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/HealthLake/Internal.hs b/test/Test/Amazonka/HealthLake/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/HealthLake/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.HealthLake.Internal
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Test.Amazonka.HealthLake.Internal where
