{-# 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.Transcribe.StartMedicalTranscriptionJob
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Transcribes the audio from a medical dictation or conversation and
-- applies any additional Request Parameters you choose to include in your
-- request.
--
-- In addition to many standard transcription features, Amazon Transcribe
-- Medical provides you with a robust medical vocabulary and, optionally,
-- content identification, which adds flags to personal health information
-- (PHI). To learn more about these features, refer to
-- <https://docs.aws.amazon.com/transcribe/latest/dg/how-it-works-med.html How Amazon Transcribe Medical works>.
--
-- To make a @StartMedicalTranscriptionJob@ request, you must first upload
-- your media file into an Amazon S3 bucket; you can then specify the S3
-- location of the file using the @Media@ parameter.
--
-- You must include the following parameters in your
-- @StartMedicalTranscriptionJob@ request:
--
-- -   @region@: The Amazon Web Services Region where you are making your
--     request. For a list of Amazon Web Services Regions supported with
--     Amazon Transcribe, refer to
--     <https://docs.aws.amazon.com/general/latest/gr/transcribe.html Amazon Transcribe endpoints and quotas>.
--
-- -   @MedicalTranscriptionJobName@: A custom name you create for your
--     transcription job that is unique within your Amazon Web Services
--     account.
--
-- -   @Media@ (@MediaFileUri@): The Amazon S3 location of your media file.
--
-- -   @LanguageCode@: This must be @en-US@.
--
-- -   @OutputBucketName@: The Amazon S3 bucket where you want your
--     transcript stored. If you want your output stored in a sub-folder of
--     this bucket, you must also include @OutputKey@.
--
-- -   @Specialty@: This must be @PRIMARYCARE@.
--
-- -   @Type@: Choose whether your audio is a conversation or a dictation.
module Amazonka.Transcribe.StartMedicalTranscriptionJob
  ( -- * Creating a Request
    StartMedicalTranscriptionJob (..),
    newStartMedicalTranscriptionJob,

    -- * Request Lenses
    startMedicalTranscriptionJob_contentIdentificationType,
    startMedicalTranscriptionJob_kmsEncryptionContext,
    startMedicalTranscriptionJob_mediaFormat,
    startMedicalTranscriptionJob_mediaSampleRateHertz,
    startMedicalTranscriptionJob_outputEncryptionKMSKeyId,
    startMedicalTranscriptionJob_outputKey,
    startMedicalTranscriptionJob_settings,
    startMedicalTranscriptionJob_tags,
    startMedicalTranscriptionJob_medicalTranscriptionJobName,
    startMedicalTranscriptionJob_languageCode,
    startMedicalTranscriptionJob_media,
    startMedicalTranscriptionJob_outputBucketName,
    startMedicalTranscriptionJob_specialty,
    startMedicalTranscriptionJob_type,

    -- * Destructuring the Response
    StartMedicalTranscriptionJobResponse (..),
    newStartMedicalTranscriptionJobResponse,

    -- * Response Lenses
    startMedicalTranscriptionJobResponse_medicalTranscriptionJob,
    startMedicalTranscriptionJobResponse_httpStatus,
  )
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
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.Transcribe.Types

-- | /See:/ 'newStartMedicalTranscriptionJob' smart constructor.
data StartMedicalTranscriptionJob = StartMedicalTranscriptionJob'
  { -- | Labels all personal health information (PHI) identified in your
    -- transcript. For more information, see
    -- <https://docs.aws.amazon.com/transcribe/latest/dg/phi-id.html Identifying personal health information (PHI) in a transcription>.
    StartMedicalTranscriptionJob
-> Maybe MedicalContentIdentificationType
contentIdentificationType :: Prelude.Maybe MedicalContentIdentificationType,
    -- | A map of plain text, non-secret key:value pairs, known as encryption
    -- context pairs, that provide an added layer of security for your data.
    -- For more information, see
    -- <https://docs.aws.amazon.com/transcribe/latest/dg/key-management.html#kms-context KMS encryption context>
    -- and
    -- <https://docs.aws.amazon.com/transcribe/latest/dg/symmetric-asymmetric.html Asymmetric keys in KMS>.
    StartMedicalTranscriptionJob -> Maybe (HashMap Text Text)
kmsEncryptionContext :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | Specify the format of your input media file.
    StartMedicalTranscriptionJob -> Maybe MediaFormat
mediaFormat :: Prelude.Maybe MediaFormat,
    -- | The sample rate, in hertz, of the audio track in your input media file.
    --
    -- If you don\'t specify the media sample rate, Amazon Transcribe Medical
    -- determines it for you. If you specify the sample rate, it must match the
    -- rate detected by Amazon Transcribe Medical; if there\'s a mismatch
    -- between the value that you specify and the value detected, your job
    -- fails. Therefore, in most cases, it\'s advised to omit
    -- @MediaSampleRateHertz@ and let Amazon Transcribe Medical determine the
    -- sample rate.
    StartMedicalTranscriptionJob -> Maybe Natural
mediaSampleRateHertz :: Prelude.Maybe Prelude.Natural,
    -- | The KMS key you want to use to encrypt your medical transcription
    -- output.
    --
    -- If using a key located in the __current__ Amazon Web Services account,
    -- you can specify your KMS key in one of four ways:
    --
    -- 1.  Use the KMS key ID itself. For example,
    --     @1234abcd-12ab-34cd-56ef-1234567890ab@.
    --
    -- 2.  Use an alias for the KMS key ID. For example, @alias\/ExampleAlias@.
    --
    -- 3.  Use the Amazon Resource Name (ARN) for the KMS key ID. For example,
    --     @arn:aws:kms:region:account-ID:key\/1234abcd-12ab-34cd-56ef-1234567890ab@.
    --
    -- 4.  Use the ARN for the KMS key alias. For example,
    --     @arn:aws:kms:region:account-ID:alias\/ExampleAlias@.
    --
    -- If using a key located in a __different__ Amazon Web Services account
    -- than the current Amazon Web Services account, you can specify your KMS
    -- key in one of two ways:
    --
    -- 1.  Use the ARN for the KMS key ID. For example,
    --     @arn:aws:kms:region:account-ID:key\/1234abcd-12ab-34cd-56ef-1234567890ab@.
    --
    -- 2.  Use the ARN for the KMS key alias. For example,
    --     @arn:aws:kms:region:account-ID:alias\/ExampleAlias@.
    --
    -- If you don\'t specify an encryption key, your output is encrypted with
    -- the default Amazon S3 key (SSE-S3).
    --
    -- If you specify a KMS key to encrypt your output, you must also specify
    -- an output location using the @OutputLocation@ parameter.
    --
    -- Note that the user making the request must have permission to use the
    -- specified KMS key.
    StartMedicalTranscriptionJob -> Maybe Text
outputEncryptionKMSKeyId :: Prelude.Maybe Prelude.Text,
    -- | Use in combination with @OutputBucketName@ to specify the output
    -- location of your transcript and, optionally, a unique name for your
    -- output file. The default name for your transcription output is the same
    -- as the name you specified for your medical transcription job
    -- (@MedicalTranscriptionJobName@).
    --
    -- Here are some examples of how you can use @OutputKey@:
    --
    -- -   If you specify \'DOC-EXAMPLE-BUCKET\' as the @OutputBucketName@ and
    --     \'my-transcript.json\' as the @OutputKey@, your transcription output
    --     path is @s3:\/\/DOC-EXAMPLE-BUCKET\/my-transcript.json@.
    --
    -- -   If you specify \'my-first-transcription\' as the
    --     @MedicalTranscriptionJobName@, \'DOC-EXAMPLE-BUCKET\' as the
    --     @OutputBucketName@, and \'my-transcript\' as the @OutputKey@, your
    --     transcription output path is
    --     @s3:\/\/DOC-EXAMPLE-BUCKET\/my-transcript\/my-first-transcription.json@.
    --
    -- -   If you specify \'DOC-EXAMPLE-BUCKET\' as the @OutputBucketName@ and
    --     \'test-files\/my-transcript.json\' as the @OutputKey@, your
    --     transcription output path is
    --     @s3:\/\/DOC-EXAMPLE-BUCKET\/test-files\/my-transcript.json@.
    --
    -- -   If you specify \'my-first-transcription\' as the
    --     @MedicalTranscriptionJobName@, \'DOC-EXAMPLE-BUCKET\' as the
    --     @OutputBucketName@, and \'test-files\/my-transcript\' as the
    --     @OutputKey@, your transcription output path is
    --     @s3:\/\/DOC-EXAMPLE-BUCKET\/test-files\/my-transcript\/my-first-transcription.json@.
    --
    -- If you specify the name of an Amazon S3 bucket sub-folder that doesn\'t
    -- exist, one is created for you.
    StartMedicalTranscriptionJob -> Maybe Text
outputKey :: Prelude.Maybe Prelude.Text,
    -- | Specify additional optional settings in your request, including channel
    -- identification, alternative transcriptions, and speaker partitioning.
    -- You can use that to apply custom vocabularies to your transcription job.
    StartMedicalTranscriptionJob -> Maybe MedicalTranscriptionSetting
settings :: Prelude.Maybe MedicalTranscriptionSetting,
    -- | Adds one or more custom tags, each in the form of a key:value pair, to a
    -- new medical transcription job at the time you start this new job.
    --
    -- To learn more about using tags with Amazon Transcribe, refer to
    -- <https://docs.aws.amazon.com/transcribe/latest/dg/tagging.html Tagging resources>.
    StartMedicalTranscriptionJob -> Maybe (NonEmpty Tag)
tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
    -- | A unique name, chosen by you, for your medical transcription job. The
    -- name that you specify is also used as the default name of your
    -- transcription output file. If you want to specify a different name for
    -- your transcription output, use the @OutputKey@ parameter.
    --
    -- This name is case sensitive, cannot contain spaces, and must be unique
    -- within an Amazon Web Services account. If you try to create a new job
    -- with the same name as an existing job, you get a @ConflictException@
    -- error.
    StartMedicalTranscriptionJob -> Text
medicalTranscriptionJobName :: Prelude.Text,
    -- | The language code that represents the language spoken in the input media
    -- file. US English (@en-US@) is the only valid value for medical
    -- transcription jobs. Any other value you enter for language code results
    -- in a @BadRequestException@ error.
    StartMedicalTranscriptionJob -> LanguageCode
languageCode :: LanguageCode,
    StartMedicalTranscriptionJob -> Media
media :: Media,
    -- | The name of the Amazon S3 bucket where you want your medical
    -- transcription output stored. Do not include the @S3:\/\/@ prefix of the
    -- specified bucket.
    --
    -- If you want your output to go to a sub-folder of this bucket, specify it
    -- using the @OutputKey@ parameter; @OutputBucketName@ only accepts the
    -- name of a bucket.
    --
    -- For example, if you want your output stored in
    -- @S3:\/\/DOC-EXAMPLE-BUCKET@, set @OutputBucketName@ to
    -- @DOC-EXAMPLE-BUCKET@. However, if you want your output stored in
    -- @S3:\/\/DOC-EXAMPLE-BUCKET\/test-files\/@, set @OutputBucketName@ to
    -- @DOC-EXAMPLE-BUCKET@ and @OutputKey@ to @test-files\/@.
    --
    -- Note that Amazon Transcribe must have permission to use the specified
    -- location. You can change Amazon S3 permissions using the
    -- <https://console.aws.amazon.com/s3 Amazon Web Services Management Console>.
    -- See also
    -- <https://docs.aws.amazon.com/transcribe/latest/dg/security_iam_id-based-policy-examples.html#auth-role-iam-user Permissions Required for IAM User Roles>.
    StartMedicalTranscriptionJob -> Text
outputBucketName :: Prelude.Text,
    -- | Specify the predominant medical specialty represented in your media. For
    -- batch transcriptions, @PRIMARYCARE@ is the only valid value. If you
    -- require additional specialties, refer to .
    StartMedicalTranscriptionJob -> Specialty
specialty :: Specialty,
    -- | Specify whether your input media contains only one person (@DICTATION@)
    -- or contains a conversation between two people (@CONVERSATION@).
    --
    -- For example, @DICTATION@ could be used for a medical professional
    -- wanting to transcribe voice memos; @CONVERSATION@ could be used for
    -- transcribing the doctor-patient dialogue during the patient\'s office
    -- visit.
    StartMedicalTranscriptionJob -> Type
type' :: Type
  }
  deriving (StartMedicalTranscriptionJob
-> StartMedicalTranscriptionJob -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StartMedicalTranscriptionJob
-> StartMedicalTranscriptionJob -> Bool
$c/= :: StartMedicalTranscriptionJob
-> StartMedicalTranscriptionJob -> Bool
== :: StartMedicalTranscriptionJob
-> StartMedicalTranscriptionJob -> Bool
$c== :: StartMedicalTranscriptionJob
-> StartMedicalTranscriptionJob -> Bool
Prelude.Eq, ReadPrec [StartMedicalTranscriptionJob]
ReadPrec StartMedicalTranscriptionJob
Int -> ReadS StartMedicalTranscriptionJob
ReadS [StartMedicalTranscriptionJob]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StartMedicalTranscriptionJob]
$creadListPrec :: ReadPrec [StartMedicalTranscriptionJob]
readPrec :: ReadPrec StartMedicalTranscriptionJob
$creadPrec :: ReadPrec StartMedicalTranscriptionJob
readList :: ReadS [StartMedicalTranscriptionJob]
$creadList :: ReadS [StartMedicalTranscriptionJob]
readsPrec :: Int -> ReadS StartMedicalTranscriptionJob
$creadsPrec :: Int -> ReadS StartMedicalTranscriptionJob
Prelude.Read, Int -> StartMedicalTranscriptionJob -> ShowS
[StartMedicalTranscriptionJob] -> ShowS
StartMedicalTranscriptionJob -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StartMedicalTranscriptionJob] -> ShowS
$cshowList :: [StartMedicalTranscriptionJob] -> ShowS
show :: StartMedicalTranscriptionJob -> String
$cshow :: StartMedicalTranscriptionJob -> String
showsPrec :: Int -> StartMedicalTranscriptionJob -> ShowS
$cshowsPrec :: Int -> StartMedicalTranscriptionJob -> ShowS
Prelude.Show, forall x.
Rep StartMedicalTranscriptionJob x -> StartMedicalTranscriptionJob
forall x.
StartMedicalTranscriptionJob -> Rep StartMedicalTranscriptionJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep StartMedicalTranscriptionJob x -> StartMedicalTranscriptionJob
$cfrom :: forall x.
StartMedicalTranscriptionJob -> Rep StartMedicalTranscriptionJob x
Prelude.Generic)

-- |
-- Create a value of 'StartMedicalTranscriptionJob' 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:
--
-- 'contentIdentificationType', 'startMedicalTranscriptionJob_contentIdentificationType' - Labels all personal health information (PHI) identified in your
-- transcript. For more information, see
-- <https://docs.aws.amazon.com/transcribe/latest/dg/phi-id.html Identifying personal health information (PHI) in a transcription>.
--
-- 'kmsEncryptionContext', 'startMedicalTranscriptionJob_kmsEncryptionContext' - A map of plain text, non-secret key:value pairs, known as encryption
-- context pairs, that provide an added layer of security for your data.
-- For more information, see
-- <https://docs.aws.amazon.com/transcribe/latest/dg/key-management.html#kms-context KMS encryption context>
-- and
-- <https://docs.aws.amazon.com/transcribe/latest/dg/symmetric-asymmetric.html Asymmetric keys in KMS>.
--
-- 'mediaFormat', 'startMedicalTranscriptionJob_mediaFormat' - Specify the format of your input media file.
--
-- 'mediaSampleRateHertz', 'startMedicalTranscriptionJob_mediaSampleRateHertz' - The sample rate, in hertz, of the audio track in your input media file.
--
-- If you don\'t specify the media sample rate, Amazon Transcribe Medical
-- determines it for you. If you specify the sample rate, it must match the
-- rate detected by Amazon Transcribe Medical; if there\'s a mismatch
-- between the value that you specify and the value detected, your job
-- fails. Therefore, in most cases, it\'s advised to omit
-- @MediaSampleRateHertz@ and let Amazon Transcribe Medical determine the
-- sample rate.
--
-- 'outputEncryptionKMSKeyId', 'startMedicalTranscriptionJob_outputEncryptionKMSKeyId' - The KMS key you want to use to encrypt your medical transcription
-- output.
--
-- If using a key located in the __current__ Amazon Web Services account,
-- you can specify your KMS key in one of four ways:
--
-- 1.  Use the KMS key ID itself. For example,
--     @1234abcd-12ab-34cd-56ef-1234567890ab@.
--
-- 2.  Use an alias for the KMS key ID. For example, @alias\/ExampleAlias@.
--
-- 3.  Use the Amazon Resource Name (ARN) for the KMS key ID. For example,
--     @arn:aws:kms:region:account-ID:key\/1234abcd-12ab-34cd-56ef-1234567890ab@.
--
-- 4.  Use the ARN for the KMS key alias. For example,
--     @arn:aws:kms:region:account-ID:alias\/ExampleAlias@.
--
-- If using a key located in a __different__ Amazon Web Services account
-- than the current Amazon Web Services account, you can specify your KMS
-- key in one of two ways:
--
-- 1.  Use the ARN for the KMS key ID. For example,
--     @arn:aws:kms:region:account-ID:key\/1234abcd-12ab-34cd-56ef-1234567890ab@.
--
-- 2.  Use the ARN for the KMS key alias. For example,
--     @arn:aws:kms:region:account-ID:alias\/ExampleAlias@.
--
-- If you don\'t specify an encryption key, your output is encrypted with
-- the default Amazon S3 key (SSE-S3).
--
-- If you specify a KMS key to encrypt your output, you must also specify
-- an output location using the @OutputLocation@ parameter.
--
-- Note that the user making the request must have permission to use the
-- specified KMS key.
--
-- 'outputKey', 'startMedicalTranscriptionJob_outputKey' - Use in combination with @OutputBucketName@ to specify the output
-- location of your transcript and, optionally, a unique name for your
-- output file. The default name for your transcription output is the same
-- as the name you specified for your medical transcription job
-- (@MedicalTranscriptionJobName@).
--
-- Here are some examples of how you can use @OutputKey@:
--
-- -   If you specify \'DOC-EXAMPLE-BUCKET\' as the @OutputBucketName@ and
--     \'my-transcript.json\' as the @OutputKey@, your transcription output
--     path is @s3:\/\/DOC-EXAMPLE-BUCKET\/my-transcript.json@.
--
-- -   If you specify \'my-first-transcription\' as the
--     @MedicalTranscriptionJobName@, \'DOC-EXAMPLE-BUCKET\' as the
--     @OutputBucketName@, and \'my-transcript\' as the @OutputKey@, your
--     transcription output path is
--     @s3:\/\/DOC-EXAMPLE-BUCKET\/my-transcript\/my-first-transcription.json@.
--
-- -   If you specify \'DOC-EXAMPLE-BUCKET\' as the @OutputBucketName@ and
--     \'test-files\/my-transcript.json\' as the @OutputKey@, your
--     transcription output path is
--     @s3:\/\/DOC-EXAMPLE-BUCKET\/test-files\/my-transcript.json@.
--
-- -   If you specify \'my-first-transcription\' as the
--     @MedicalTranscriptionJobName@, \'DOC-EXAMPLE-BUCKET\' as the
--     @OutputBucketName@, and \'test-files\/my-transcript\' as the
--     @OutputKey@, your transcription output path is
--     @s3:\/\/DOC-EXAMPLE-BUCKET\/test-files\/my-transcript\/my-first-transcription.json@.
--
-- If you specify the name of an Amazon S3 bucket sub-folder that doesn\'t
-- exist, one is created for you.
--
-- 'settings', 'startMedicalTranscriptionJob_settings' - Specify additional optional settings in your request, including channel
-- identification, alternative transcriptions, and speaker partitioning.
-- You can use that to apply custom vocabularies to your transcription job.
--
-- 'tags', 'startMedicalTranscriptionJob_tags' - Adds one or more custom tags, each in the form of a key:value pair, to a
-- new medical transcription job at the time you start this new job.
--
-- To learn more about using tags with Amazon Transcribe, refer to
-- <https://docs.aws.amazon.com/transcribe/latest/dg/tagging.html Tagging resources>.
--
-- 'medicalTranscriptionJobName', 'startMedicalTranscriptionJob_medicalTranscriptionJobName' - A unique name, chosen by you, for your medical transcription job. The
-- name that you specify is also used as the default name of your
-- transcription output file. If you want to specify a different name for
-- your transcription output, use the @OutputKey@ parameter.
--
-- This name is case sensitive, cannot contain spaces, and must be unique
-- within an Amazon Web Services account. If you try to create a new job
-- with the same name as an existing job, you get a @ConflictException@
-- error.
--
-- 'languageCode', 'startMedicalTranscriptionJob_languageCode' - The language code that represents the language spoken in the input media
-- file. US English (@en-US@) is the only valid value for medical
-- transcription jobs. Any other value you enter for language code results
-- in a @BadRequestException@ error.
--
-- 'media', 'startMedicalTranscriptionJob_media' - Undocumented member.
--
-- 'outputBucketName', 'startMedicalTranscriptionJob_outputBucketName' - The name of the Amazon S3 bucket where you want your medical
-- transcription output stored. Do not include the @S3:\/\/@ prefix of the
-- specified bucket.
--
-- If you want your output to go to a sub-folder of this bucket, specify it
-- using the @OutputKey@ parameter; @OutputBucketName@ only accepts the
-- name of a bucket.
--
-- For example, if you want your output stored in
-- @S3:\/\/DOC-EXAMPLE-BUCKET@, set @OutputBucketName@ to
-- @DOC-EXAMPLE-BUCKET@. However, if you want your output stored in
-- @S3:\/\/DOC-EXAMPLE-BUCKET\/test-files\/@, set @OutputBucketName@ to
-- @DOC-EXAMPLE-BUCKET@ and @OutputKey@ to @test-files\/@.
--
-- Note that Amazon Transcribe must have permission to use the specified
-- location. You can change Amazon S3 permissions using the
-- <https://console.aws.amazon.com/s3 Amazon Web Services Management Console>.
-- See also
-- <https://docs.aws.amazon.com/transcribe/latest/dg/security_iam_id-based-policy-examples.html#auth-role-iam-user Permissions Required for IAM User Roles>.
--
-- 'specialty', 'startMedicalTranscriptionJob_specialty' - Specify the predominant medical specialty represented in your media. For
-- batch transcriptions, @PRIMARYCARE@ is the only valid value. If you
-- require additional specialties, refer to .
--
-- 'type'', 'startMedicalTranscriptionJob_type' - Specify whether your input media contains only one person (@DICTATION@)
-- or contains a conversation between two people (@CONVERSATION@).
--
-- For example, @DICTATION@ could be used for a medical professional
-- wanting to transcribe voice memos; @CONVERSATION@ could be used for
-- transcribing the doctor-patient dialogue during the patient\'s office
-- visit.
newStartMedicalTranscriptionJob ::
  -- | 'medicalTranscriptionJobName'
  Prelude.Text ->
  -- | 'languageCode'
  LanguageCode ->
  -- | 'media'
  Media ->
  -- | 'outputBucketName'
  Prelude.Text ->
  -- | 'specialty'
  Specialty ->
  -- | 'type''
  Type ->
  StartMedicalTranscriptionJob
newStartMedicalTranscriptionJob :: Text
-> LanguageCode
-> Media
-> Text
-> Specialty
-> Type
-> StartMedicalTranscriptionJob
newStartMedicalTranscriptionJob
  Text
pMedicalTranscriptionJobName_
  LanguageCode
pLanguageCode_
  Media
pMedia_
  Text
pOutputBucketName_
  Specialty
pSpecialty_
  Type
pType_ =
    StartMedicalTranscriptionJob'
      { $sel:contentIdentificationType:StartMedicalTranscriptionJob' :: Maybe MedicalContentIdentificationType
contentIdentificationType =
          forall a. Maybe a
Prelude.Nothing,
        $sel:kmsEncryptionContext:StartMedicalTranscriptionJob' :: Maybe (HashMap Text Text)
kmsEncryptionContext = forall a. Maybe a
Prelude.Nothing,
        $sel:mediaFormat:StartMedicalTranscriptionJob' :: Maybe MediaFormat
mediaFormat = forall a. Maybe a
Prelude.Nothing,
        $sel:mediaSampleRateHertz:StartMedicalTranscriptionJob' :: Maybe Natural
mediaSampleRateHertz = forall a. Maybe a
Prelude.Nothing,
        $sel:outputEncryptionKMSKeyId:StartMedicalTranscriptionJob' :: Maybe Text
outputEncryptionKMSKeyId = forall a. Maybe a
Prelude.Nothing,
        $sel:outputKey:StartMedicalTranscriptionJob' :: Maybe Text
outputKey = forall a. Maybe a
Prelude.Nothing,
        $sel:settings:StartMedicalTranscriptionJob' :: Maybe MedicalTranscriptionSetting
settings = forall a. Maybe a
Prelude.Nothing,
        $sel:tags:StartMedicalTranscriptionJob' :: Maybe (NonEmpty Tag)
tags = forall a. Maybe a
Prelude.Nothing,
        $sel:medicalTranscriptionJobName:StartMedicalTranscriptionJob' :: Text
medicalTranscriptionJobName =
          Text
pMedicalTranscriptionJobName_,
        $sel:languageCode:StartMedicalTranscriptionJob' :: LanguageCode
languageCode = LanguageCode
pLanguageCode_,
        $sel:media:StartMedicalTranscriptionJob' :: Media
media = Media
pMedia_,
        $sel:outputBucketName:StartMedicalTranscriptionJob' :: Text
outputBucketName = Text
pOutputBucketName_,
        $sel:specialty:StartMedicalTranscriptionJob' :: Specialty
specialty = Specialty
pSpecialty_,
        $sel:type':StartMedicalTranscriptionJob' :: Type
type' = Type
pType_
      }

-- | Labels all personal health information (PHI) identified in your
-- transcript. For more information, see
-- <https://docs.aws.amazon.com/transcribe/latest/dg/phi-id.html Identifying personal health information (PHI) in a transcription>.
startMedicalTranscriptionJob_contentIdentificationType :: Lens.Lens' StartMedicalTranscriptionJob (Prelude.Maybe MedicalContentIdentificationType)
startMedicalTranscriptionJob_contentIdentificationType :: Lens'
  StartMedicalTranscriptionJob
  (Maybe MedicalContentIdentificationType)
startMedicalTranscriptionJob_contentIdentificationType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartMedicalTranscriptionJob' {Maybe MedicalContentIdentificationType
contentIdentificationType :: Maybe MedicalContentIdentificationType
$sel:contentIdentificationType:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob
-> Maybe MedicalContentIdentificationType
contentIdentificationType} -> Maybe MedicalContentIdentificationType
contentIdentificationType) (\s :: StartMedicalTranscriptionJob
s@StartMedicalTranscriptionJob' {} Maybe MedicalContentIdentificationType
a -> StartMedicalTranscriptionJob
s {$sel:contentIdentificationType:StartMedicalTranscriptionJob' :: Maybe MedicalContentIdentificationType
contentIdentificationType = Maybe MedicalContentIdentificationType
a} :: StartMedicalTranscriptionJob)

-- | A map of plain text, non-secret key:value pairs, known as encryption
-- context pairs, that provide an added layer of security for your data.
-- For more information, see
-- <https://docs.aws.amazon.com/transcribe/latest/dg/key-management.html#kms-context KMS encryption context>
-- and
-- <https://docs.aws.amazon.com/transcribe/latest/dg/symmetric-asymmetric.html Asymmetric keys in KMS>.
startMedicalTranscriptionJob_kmsEncryptionContext :: Lens.Lens' StartMedicalTranscriptionJob (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
startMedicalTranscriptionJob_kmsEncryptionContext :: Lens' StartMedicalTranscriptionJob (Maybe (HashMap Text Text))
startMedicalTranscriptionJob_kmsEncryptionContext = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartMedicalTranscriptionJob' {Maybe (HashMap Text Text)
kmsEncryptionContext :: Maybe (HashMap Text Text)
$sel:kmsEncryptionContext:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe (HashMap Text Text)
kmsEncryptionContext} -> Maybe (HashMap Text Text)
kmsEncryptionContext) (\s :: StartMedicalTranscriptionJob
s@StartMedicalTranscriptionJob' {} Maybe (HashMap Text Text)
a -> StartMedicalTranscriptionJob
s {$sel:kmsEncryptionContext:StartMedicalTranscriptionJob' :: Maybe (HashMap Text Text)
kmsEncryptionContext = Maybe (HashMap Text Text)
a} :: StartMedicalTranscriptionJob) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Specify the format of your input media file.
startMedicalTranscriptionJob_mediaFormat :: Lens.Lens' StartMedicalTranscriptionJob (Prelude.Maybe MediaFormat)
startMedicalTranscriptionJob_mediaFormat :: Lens' StartMedicalTranscriptionJob (Maybe MediaFormat)
startMedicalTranscriptionJob_mediaFormat = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartMedicalTranscriptionJob' {Maybe MediaFormat
mediaFormat :: Maybe MediaFormat
$sel:mediaFormat:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe MediaFormat
mediaFormat} -> Maybe MediaFormat
mediaFormat) (\s :: StartMedicalTranscriptionJob
s@StartMedicalTranscriptionJob' {} Maybe MediaFormat
a -> StartMedicalTranscriptionJob
s {$sel:mediaFormat:StartMedicalTranscriptionJob' :: Maybe MediaFormat
mediaFormat = Maybe MediaFormat
a} :: StartMedicalTranscriptionJob)

-- | The sample rate, in hertz, of the audio track in your input media file.
--
-- If you don\'t specify the media sample rate, Amazon Transcribe Medical
-- determines it for you. If you specify the sample rate, it must match the
-- rate detected by Amazon Transcribe Medical; if there\'s a mismatch
-- between the value that you specify and the value detected, your job
-- fails. Therefore, in most cases, it\'s advised to omit
-- @MediaSampleRateHertz@ and let Amazon Transcribe Medical determine the
-- sample rate.
startMedicalTranscriptionJob_mediaSampleRateHertz :: Lens.Lens' StartMedicalTranscriptionJob (Prelude.Maybe Prelude.Natural)
startMedicalTranscriptionJob_mediaSampleRateHertz :: Lens' StartMedicalTranscriptionJob (Maybe Natural)
startMedicalTranscriptionJob_mediaSampleRateHertz = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartMedicalTranscriptionJob' {Maybe Natural
mediaSampleRateHertz :: Maybe Natural
$sel:mediaSampleRateHertz:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe Natural
mediaSampleRateHertz} -> Maybe Natural
mediaSampleRateHertz) (\s :: StartMedicalTranscriptionJob
s@StartMedicalTranscriptionJob' {} Maybe Natural
a -> StartMedicalTranscriptionJob
s {$sel:mediaSampleRateHertz:StartMedicalTranscriptionJob' :: Maybe Natural
mediaSampleRateHertz = Maybe Natural
a} :: StartMedicalTranscriptionJob)

-- | The KMS key you want to use to encrypt your medical transcription
-- output.
--
-- If using a key located in the __current__ Amazon Web Services account,
-- you can specify your KMS key in one of four ways:
--
-- 1.  Use the KMS key ID itself. For example,
--     @1234abcd-12ab-34cd-56ef-1234567890ab@.
--
-- 2.  Use an alias for the KMS key ID. For example, @alias\/ExampleAlias@.
--
-- 3.  Use the Amazon Resource Name (ARN) for the KMS key ID. For example,
--     @arn:aws:kms:region:account-ID:key\/1234abcd-12ab-34cd-56ef-1234567890ab@.
--
-- 4.  Use the ARN for the KMS key alias. For example,
--     @arn:aws:kms:region:account-ID:alias\/ExampleAlias@.
--
-- If using a key located in a __different__ Amazon Web Services account
-- than the current Amazon Web Services account, you can specify your KMS
-- key in one of two ways:
--
-- 1.  Use the ARN for the KMS key ID. For example,
--     @arn:aws:kms:region:account-ID:key\/1234abcd-12ab-34cd-56ef-1234567890ab@.
--
-- 2.  Use the ARN for the KMS key alias. For example,
--     @arn:aws:kms:region:account-ID:alias\/ExampleAlias@.
--
-- If you don\'t specify an encryption key, your output is encrypted with
-- the default Amazon S3 key (SSE-S3).
--
-- If you specify a KMS key to encrypt your output, you must also specify
-- an output location using the @OutputLocation@ parameter.
--
-- Note that the user making the request must have permission to use the
-- specified KMS key.
startMedicalTranscriptionJob_outputEncryptionKMSKeyId :: Lens.Lens' StartMedicalTranscriptionJob (Prelude.Maybe Prelude.Text)
startMedicalTranscriptionJob_outputEncryptionKMSKeyId :: Lens' StartMedicalTranscriptionJob (Maybe Text)
startMedicalTranscriptionJob_outputEncryptionKMSKeyId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartMedicalTranscriptionJob' {Maybe Text
outputEncryptionKMSKeyId :: Maybe Text
$sel:outputEncryptionKMSKeyId:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe Text
outputEncryptionKMSKeyId} -> Maybe Text
outputEncryptionKMSKeyId) (\s :: StartMedicalTranscriptionJob
s@StartMedicalTranscriptionJob' {} Maybe Text
a -> StartMedicalTranscriptionJob
s {$sel:outputEncryptionKMSKeyId:StartMedicalTranscriptionJob' :: Maybe Text
outputEncryptionKMSKeyId = Maybe Text
a} :: StartMedicalTranscriptionJob)

-- | Use in combination with @OutputBucketName@ to specify the output
-- location of your transcript and, optionally, a unique name for your
-- output file. The default name for your transcription output is the same
-- as the name you specified for your medical transcription job
-- (@MedicalTranscriptionJobName@).
--
-- Here are some examples of how you can use @OutputKey@:
--
-- -   If you specify \'DOC-EXAMPLE-BUCKET\' as the @OutputBucketName@ and
--     \'my-transcript.json\' as the @OutputKey@, your transcription output
--     path is @s3:\/\/DOC-EXAMPLE-BUCKET\/my-transcript.json@.
--
-- -   If you specify \'my-first-transcription\' as the
--     @MedicalTranscriptionJobName@, \'DOC-EXAMPLE-BUCKET\' as the
--     @OutputBucketName@, and \'my-transcript\' as the @OutputKey@, your
--     transcription output path is
--     @s3:\/\/DOC-EXAMPLE-BUCKET\/my-transcript\/my-first-transcription.json@.
--
-- -   If you specify \'DOC-EXAMPLE-BUCKET\' as the @OutputBucketName@ and
--     \'test-files\/my-transcript.json\' as the @OutputKey@, your
--     transcription output path is
--     @s3:\/\/DOC-EXAMPLE-BUCKET\/test-files\/my-transcript.json@.
--
-- -   If you specify \'my-first-transcription\' as the
--     @MedicalTranscriptionJobName@, \'DOC-EXAMPLE-BUCKET\' as the
--     @OutputBucketName@, and \'test-files\/my-transcript\' as the
--     @OutputKey@, your transcription output path is
--     @s3:\/\/DOC-EXAMPLE-BUCKET\/test-files\/my-transcript\/my-first-transcription.json@.
--
-- If you specify the name of an Amazon S3 bucket sub-folder that doesn\'t
-- exist, one is created for you.
startMedicalTranscriptionJob_outputKey :: Lens.Lens' StartMedicalTranscriptionJob (Prelude.Maybe Prelude.Text)
startMedicalTranscriptionJob_outputKey :: Lens' StartMedicalTranscriptionJob (Maybe Text)
startMedicalTranscriptionJob_outputKey = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartMedicalTranscriptionJob' {Maybe Text
outputKey :: Maybe Text
$sel:outputKey:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe Text
outputKey} -> Maybe Text
outputKey) (\s :: StartMedicalTranscriptionJob
s@StartMedicalTranscriptionJob' {} Maybe Text
a -> StartMedicalTranscriptionJob
s {$sel:outputKey:StartMedicalTranscriptionJob' :: Maybe Text
outputKey = Maybe Text
a} :: StartMedicalTranscriptionJob)

-- | Specify additional optional settings in your request, including channel
-- identification, alternative transcriptions, and speaker partitioning.
-- You can use that to apply custom vocabularies to your transcription job.
startMedicalTranscriptionJob_settings :: Lens.Lens' StartMedicalTranscriptionJob (Prelude.Maybe MedicalTranscriptionSetting)
startMedicalTranscriptionJob_settings :: Lens'
  StartMedicalTranscriptionJob (Maybe MedicalTranscriptionSetting)
startMedicalTranscriptionJob_settings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartMedicalTranscriptionJob' {Maybe MedicalTranscriptionSetting
settings :: Maybe MedicalTranscriptionSetting
$sel:settings:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe MedicalTranscriptionSetting
settings} -> Maybe MedicalTranscriptionSetting
settings) (\s :: StartMedicalTranscriptionJob
s@StartMedicalTranscriptionJob' {} Maybe MedicalTranscriptionSetting
a -> StartMedicalTranscriptionJob
s {$sel:settings:StartMedicalTranscriptionJob' :: Maybe MedicalTranscriptionSetting
settings = Maybe MedicalTranscriptionSetting
a} :: StartMedicalTranscriptionJob)

-- | Adds one or more custom tags, each in the form of a key:value pair, to a
-- new medical transcription job at the time you start this new job.
--
-- To learn more about using tags with Amazon Transcribe, refer to
-- <https://docs.aws.amazon.com/transcribe/latest/dg/tagging.html Tagging resources>.
startMedicalTranscriptionJob_tags :: Lens.Lens' StartMedicalTranscriptionJob (Prelude.Maybe (Prelude.NonEmpty Tag))
startMedicalTranscriptionJob_tags :: Lens' StartMedicalTranscriptionJob (Maybe (NonEmpty Tag))
startMedicalTranscriptionJob_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartMedicalTranscriptionJob' {Maybe (NonEmpty Tag)
tags :: Maybe (NonEmpty Tag)
$sel:tags:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe (NonEmpty Tag)
tags} -> Maybe (NonEmpty Tag)
tags) (\s :: StartMedicalTranscriptionJob
s@StartMedicalTranscriptionJob' {} Maybe (NonEmpty Tag)
a -> StartMedicalTranscriptionJob
s {$sel:tags:StartMedicalTranscriptionJob' :: Maybe (NonEmpty Tag)
tags = Maybe (NonEmpty Tag)
a} :: StartMedicalTranscriptionJob) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A unique name, chosen by you, for your medical transcription job. The
-- name that you specify is also used as the default name of your
-- transcription output file. If you want to specify a different name for
-- your transcription output, use the @OutputKey@ parameter.
--
-- This name is case sensitive, cannot contain spaces, and must be unique
-- within an Amazon Web Services account. If you try to create a new job
-- with the same name as an existing job, you get a @ConflictException@
-- error.
startMedicalTranscriptionJob_medicalTranscriptionJobName :: Lens.Lens' StartMedicalTranscriptionJob Prelude.Text
startMedicalTranscriptionJob_medicalTranscriptionJobName :: Lens' StartMedicalTranscriptionJob Text
startMedicalTranscriptionJob_medicalTranscriptionJobName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartMedicalTranscriptionJob' {Text
medicalTranscriptionJobName :: Text
$sel:medicalTranscriptionJobName:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Text
medicalTranscriptionJobName} -> Text
medicalTranscriptionJobName) (\s :: StartMedicalTranscriptionJob
s@StartMedicalTranscriptionJob' {} Text
a -> StartMedicalTranscriptionJob
s {$sel:medicalTranscriptionJobName:StartMedicalTranscriptionJob' :: Text
medicalTranscriptionJobName = Text
a} :: StartMedicalTranscriptionJob)

-- | The language code that represents the language spoken in the input media
-- file. US English (@en-US@) is the only valid value for medical
-- transcription jobs. Any other value you enter for language code results
-- in a @BadRequestException@ error.
startMedicalTranscriptionJob_languageCode :: Lens.Lens' StartMedicalTranscriptionJob LanguageCode
startMedicalTranscriptionJob_languageCode :: Lens' StartMedicalTranscriptionJob LanguageCode
startMedicalTranscriptionJob_languageCode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartMedicalTranscriptionJob' {LanguageCode
languageCode :: LanguageCode
$sel:languageCode:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> LanguageCode
languageCode} -> LanguageCode
languageCode) (\s :: StartMedicalTranscriptionJob
s@StartMedicalTranscriptionJob' {} LanguageCode
a -> StartMedicalTranscriptionJob
s {$sel:languageCode:StartMedicalTranscriptionJob' :: LanguageCode
languageCode = LanguageCode
a} :: StartMedicalTranscriptionJob)

-- | Undocumented member.
startMedicalTranscriptionJob_media :: Lens.Lens' StartMedicalTranscriptionJob Media
startMedicalTranscriptionJob_media :: Lens' StartMedicalTranscriptionJob Media
startMedicalTranscriptionJob_media = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartMedicalTranscriptionJob' {Media
media :: Media
$sel:media:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Media
media} -> Media
media) (\s :: StartMedicalTranscriptionJob
s@StartMedicalTranscriptionJob' {} Media
a -> StartMedicalTranscriptionJob
s {$sel:media:StartMedicalTranscriptionJob' :: Media
media = Media
a} :: StartMedicalTranscriptionJob)

-- | The name of the Amazon S3 bucket where you want your medical
-- transcription output stored. Do not include the @S3:\/\/@ prefix of the
-- specified bucket.
--
-- If you want your output to go to a sub-folder of this bucket, specify it
-- using the @OutputKey@ parameter; @OutputBucketName@ only accepts the
-- name of a bucket.
--
-- For example, if you want your output stored in
-- @S3:\/\/DOC-EXAMPLE-BUCKET@, set @OutputBucketName@ to
-- @DOC-EXAMPLE-BUCKET@. However, if you want your output stored in
-- @S3:\/\/DOC-EXAMPLE-BUCKET\/test-files\/@, set @OutputBucketName@ to
-- @DOC-EXAMPLE-BUCKET@ and @OutputKey@ to @test-files\/@.
--
-- Note that Amazon Transcribe must have permission to use the specified
-- location. You can change Amazon S3 permissions using the
-- <https://console.aws.amazon.com/s3 Amazon Web Services Management Console>.
-- See also
-- <https://docs.aws.amazon.com/transcribe/latest/dg/security_iam_id-based-policy-examples.html#auth-role-iam-user Permissions Required for IAM User Roles>.
startMedicalTranscriptionJob_outputBucketName :: Lens.Lens' StartMedicalTranscriptionJob Prelude.Text
startMedicalTranscriptionJob_outputBucketName :: Lens' StartMedicalTranscriptionJob Text
startMedicalTranscriptionJob_outputBucketName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartMedicalTranscriptionJob' {Text
outputBucketName :: Text
$sel:outputBucketName:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Text
outputBucketName} -> Text
outputBucketName) (\s :: StartMedicalTranscriptionJob
s@StartMedicalTranscriptionJob' {} Text
a -> StartMedicalTranscriptionJob
s {$sel:outputBucketName:StartMedicalTranscriptionJob' :: Text
outputBucketName = Text
a} :: StartMedicalTranscriptionJob)

-- | Specify the predominant medical specialty represented in your media. For
-- batch transcriptions, @PRIMARYCARE@ is the only valid value. If you
-- require additional specialties, refer to .
startMedicalTranscriptionJob_specialty :: Lens.Lens' StartMedicalTranscriptionJob Specialty
startMedicalTranscriptionJob_specialty :: Lens' StartMedicalTranscriptionJob Specialty
startMedicalTranscriptionJob_specialty = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartMedicalTranscriptionJob' {Specialty
specialty :: Specialty
$sel:specialty:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Specialty
specialty} -> Specialty
specialty) (\s :: StartMedicalTranscriptionJob
s@StartMedicalTranscriptionJob' {} Specialty
a -> StartMedicalTranscriptionJob
s {$sel:specialty:StartMedicalTranscriptionJob' :: Specialty
specialty = Specialty
a} :: StartMedicalTranscriptionJob)

-- | Specify whether your input media contains only one person (@DICTATION@)
-- or contains a conversation between two people (@CONVERSATION@).
--
-- For example, @DICTATION@ could be used for a medical professional
-- wanting to transcribe voice memos; @CONVERSATION@ could be used for
-- transcribing the doctor-patient dialogue during the patient\'s office
-- visit.
startMedicalTranscriptionJob_type :: Lens.Lens' StartMedicalTranscriptionJob Type
startMedicalTranscriptionJob_type :: Lens' StartMedicalTranscriptionJob Type
startMedicalTranscriptionJob_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartMedicalTranscriptionJob' {Type
type' :: Type
$sel:type':StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Type
type'} -> Type
type') (\s :: StartMedicalTranscriptionJob
s@StartMedicalTranscriptionJob' {} Type
a -> StartMedicalTranscriptionJob
s {$sel:type':StartMedicalTranscriptionJob' :: Type
type' = Type
a} :: StartMedicalTranscriptionJob)

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

instance
  Prelude.Hashable
    StartMedicalTranscriptionJob
  where
  hashWithSalt :: Int -> StartMedicalTranscriptionJob -> Int
hashWithSalt Int
_salt StartMedicalTranscriptionJob' {Maybe Natural
Maybe (NonEmpty Tag)
Maybe Text
Maybe (HashMap Text Text)
Maybe MediaFormat
Maybe MedicalContentIdentificationType
Maybe MedicalTranscriptionSetting
Text
LanguageCode
Media
Specialty
Type
type' :: Type
specialty :: Specialty
outputBucketName :: Text
media :: Media
languageCode :: LanguageCode
medicalTranscriptionJobName :: Text
tags :: Maybe (NonEmpty Tag)
settings :: Maybe MedicalTranscriptionSetting
outputKey :: Maybe Text
outputEncryptionKMSKeyId :: Maybe Text
mediaSampleRateHertz :: Maybe Natural
mediaFormat :: Maybe MediaFormat
kmsEncryptionContext :: Maybe (HashMap Text Text)
contentIdentificationType :: Maybe MedicalContentIdentificationType
$sel:type':StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Type
$sel:specialty:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Specialty
$sel:outputBucketName:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Text
$sel:media:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Media
$sel:languageCode:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> LanguageCode
$sel:medicalTranscriptionJobName:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Text
$sel:tags:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe (NonEmpty Tag)
$sel:settings:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe MedicalTranscriptionSetting
$sel:outputKey:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe Text
$sel:outputEncryptionKMSKeyId:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe Text
$sel:mediaSampleRateHertz:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe Natural
$sel:mediaFormat:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe MediaFormat
$sel:kmsEncryptionContext:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe (HashMap Text Text)
$sel:contentIdentificationType:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob
-> Maybe MedicalContentIdentificationType
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MedicalContentIdentificationType
contentIdentificationType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
kmsEncryptionContext
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MediaFormat
mediaFormat
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
mediaSampleRateHertz
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
outputEncryptionKMSKeyId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
outputKey
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MedicalTranscriptionSetting
settings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Tag)
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
medicalTranscriptionJobName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` LanguageCode
languageCode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Media
media
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
outputBucketName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Specialty
specialty
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Type
type'

instance Prelude.NFData StartMedicalTranscriptionJob where
  rnf :: StartMedicalTranscriptionJob -> ()
rnf StartMedicalTranscriptionJob' {Maybe Natural
Maybe (NonEmpty Tag)
Maybe Text
Maybe (HashMap Text Text)
Maybe MediaFormat
Maybe MedicalContentIdentificationType
Maybe MedicalTranscriptionSetting
Text
LanguageCode
Media
Specialty
Type
type' :: Type
specialty :: Specialty
outputBucketName :: Text
media :: Media
languageCode :: LanguageCode
medicalTranscriptionJobName :: Text
tags :: Maybe (NonEmpty Tag)
settings :: Maybe MedicalTranscriptionSetting
outputKey :: Maybe Text
outputEncryptionKMSKeyId :: Maybe Text
mediaSampleRateHertz :: Maybe Natural
mediaFormat :: Maybe MediaFormat
kmsEncryptionContext :: Maybe (HashMap Text Text)
contentIdentificationType :: Maybe MedicalContentIdentificationType
$sel:type':StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Type
$sel:specialty:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Specialty
$sel:outputBucketName:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Text
$sel:media:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Media
$sel:languageCode:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> LanguageCode
$sel:medicalTranscriptionJobName:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Text
$sel:tags:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe (NonEmpty Tag)
$sel:settings:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe MedicalTranscriptionSetting
$sel:outputKey:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe Text
$sel:outputEncryptionKMSKeyId:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe Text
$sel:mediaSampleRateHertz:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe Natural
$sel:mediaFormat:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe MediaFormat
$sel:kmsEncryptionContext:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe (HashMap Text Text)
$sel:contentIdentificationType:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob
-> Maybe MedicalContentIdentificationType
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe MedicalContentIdentificationType
contentIdentificationType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
kmsEncryptionContext
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MediaFormat
mediaFormat
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
mediaSampleRateHertz
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
outputEncryptionKMSKeyId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
outputKey
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MedicalTranscriptionSetting
settings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Tag)
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
medicalTranscriptionJobName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf LanguageCode
languageCode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Media
media
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
outputBucketName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Specialty
specialty
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Type
type'

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

instance Data.ToJSON StartMedicalTranscriptionJob where
  toJSON :: StartMedicalTranscriptionJob -> Value
toJSON StartMedicalTranscriptionJob' {Maybe Natural
Maybe (NonEmpty Tag)
Maybe Text
Maybe (HashMap Text Text)
Maybe MediaFormat
Maybe MedicalContentIdentificationType
Maybe MedicalTranscriptionSetting
Text
LanguageCode
Media
Specialty
Type
type' :: Type
specialty :: Specialty
outputBucketName :: Text
media :: Media
languageCode :: LanguageCode
medicalTranscriptionJobName :: Text
tags :: Maybe (NonEmpty Tag)
settings :: Maybe MedicalTranscriptionSetting
outputKey :: Maybe Text
outputEncryptionKMSKeyId :: Maybe Text
mediaSampleRateHertz :: Maybe Natural
mediaFormat :: Maybe MediaFormat
kmsEncryptionContext :: Maybe (HashMap Text Text)
contentIdentificationType :: Maybe MedicalContentIdentificationType
$sel:type':StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Type
$sel:specialty:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Specialty
$sel:outputBucketName:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Text
$sel:media:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Media
$sel:languageCode:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> LanguageCode
$sel:medicalTranscriptionJobName:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Text
$sel:tags:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe (NonEmpty Tag)
$sel:settings:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe MedicalTranscriptionSetting
$sel:outputKey:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe Text
$sel:outputEncryptionKMSKeyId:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe Text
$sel:mediaSampleRateHertz:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe Natural
$sel:mediaFormat:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe MediaFormat
$sel:kmsEncryptionContext:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob -> Maybe (HashMap Text Text)
$sel:contentIdentificationType:StartMedicalTranscriptionJob' :: StartMedicalTranscriptionJob
-> Maybe MedicalContentIdentificationType
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ContentIdentificationType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe MedicalContentIdentificationType
contentIdentificationType,
            (Key
"KMSEncryptionContext" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text Text)
kmsEncryptionContext,
            (Key
"MediaFormat" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe MediaFormat
mediaFormat,
            (Key
"MediaSampleRateHertz" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
mediaSampleRateHertz,
            (Key
"OutputEncryptionKMSKeyId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
outputEncryptionKMSKeyId,
            (Key
"OutputKey" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
outputKey,
            (Key
"Settings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe MedicalTranscriptionSetting
settings,
            (Key
"Tags" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty Tag)
tags,
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"MedicalTranscriptionJobName"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
medicalTranscriptionJobName
              ),
            forall a. a -> Maybe a
Prelude.Just (Key
"LanguageCode" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= LanguageCode
languageCode),
            forall a. a -> Maybe a
Prelude.Just (Key
"Media" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Media
media),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"OutputBucketName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
outputBucketName),
            forall a. a -> Maybe a
Prelude.Just (Key
"Specialty" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Specialty
specialty),
            forall a. a -> Maybe a
Prelude.Just (Key
"Type" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Type
type')
          ]
      )

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

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

-- | /See:/ 'newStartMedicalTranscriptionJobResponse' smart constructor.
data StartMedicalTranscriptionJobResponse = StartMedicalTranscriptionJobResponse'
  { -- | Provides detailed information about the current medical transcription
    -- job, including job status and, if applicable, failure reason.
    StartMedicalTranscriptionJobResponse
-> Maybe MedicalTranscriptionJob
medicalTranscriptionJob :: Prelude.Maybe MedicalTranscriptionJob,
    -- | The response's http status code.
    StartMedicalTranscriptionJobResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (StartMedicalTranscriptionJobResponse
-> StartMedicalTranscriptionJobResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StartMedicalTranscriptionJobResponse
-> StartMedicalTranscriptionJobResponse -> Bool
$c/= :: StartMedicalTranscriptionJobResponse
-> StartMedicalTranscriptionJobResponse -> Bool
== :: StartMedicalTranscriptionJobResponse
-> StartMedicalTranscriptionJobResponse -> Bool
$c== :: StartMedicalTranscriptionJobResponse
-> StartMedicalTranscriptionJobResponse -> Bool
Prelude.Eq, ReadPrec [StartMedicalTranscriptionJobResponse]
ReadPrec StartMedicalTranscriptionJobResponse
Int -> ReadS StartMedicalTranscriptionJobResponse
ReadS [StartMedicalTranscriptionJobResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StartMedicalTranscriptionJobResponse]
$creadListPrec :: ReadPrec [StartMedicalTranscriptionJobResponse]
readPrec :: ReadPrec StartMedicalTranscriptionJobResponse
$creadPrec :: ReadPrec StartMedicalTranscriptionJobResponse
readList :: ReadS [StartMedicalTranscriptionJobResponse]
$creadList :: ReadS [StartMedicalTranscriptionJobResponse]
readsPrec :: Int -> ReadS StartMedicalTranscriptionJobResponse
$creadsPrec :: Int -> ReadS StartMedicalTranscriptionJobResponse
Prelude.Read, Int -> StartMedicalTranscriptionJobResponse -> ShowS
[StartMedicalTranscriptionJobResponse] -> ShowS
StartMedicalTranscriptionJobResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StartMedicalTranscriptionJobResponse] -> ShowS
$cshowList :: [StartMedicalTranscriptionJobResponse] -> ShowS
show :: StartMedicalTranscriptionJobResponse -> String
$cshow :: StartMedicalTranscriptionJobResponse -> String
showsPrec :: Int -> StartMedicalTranscriptionJobResponse -> ShowS
$cshowsPrec :: Int -> StartMedicalTranscriptionJobResponse -> ShowS
Prelude.Show, forall x.
Rep StartMedicalTranscriptionJobResponse x
-> StartMedicalTranscriptionJobResponse
forall x.
StartMedicalTranscriptionJobResponse
-> Rep StartMedicalTranscriptionJobResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep StartMedicalTranscriptionJobResponse x
-> StartMedicalTranscriptionJobResponse
$cfrom :: forall x.
StartMedicalTranscriptionJobResponse
-> Rep StartMedicalTranscriptionJobResponse x
Prelude.Generic)

-- |
-- Create a value of 'StartMedicalTranscriptionJobResponse' 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:
--
-- 'medicalTranscriptionJob', 'startMedicalTranscriptionJobResponse_medicalTranscriptionJob' - Provides detailed information about the current medical transcription
-- job, including job status and, if applicable, failure reason.
--
-- 'httpStatus', 'startMedicalTranscriptionJobResponse_httpStatus' - The response's http status code.
newStartMedicalTranscriptionJobResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  StartMedicalTranscriptionJobResponse
newStartMedicalTranscriptionJobResponse :: Int -> StartMedicalTranscriptionJobResponse
newStartMedicalTranscriptionJobResponse Int
pHttpStatus_ =
  StartMedicalTranscriptionJobResponse'
    { $sel:medicalTranscriptionJob:StartMedicalTranscriptionJobResponse' :: Maybe MedicalTranscriptionJob
medicalTranscriptionJob =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:StartMedicalTranscriptionJobResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Provides detailed information about the current medical transcription
-- job, including job status and, if applicable, failure reason.
startMedicalTranscriptionJobResponse_medicalTranscriptionJob :: Lens.Lens' StartMedicalTranscriptionJobResponse (Prelude.Maybe MedicalTranscriptionJob)
startMedicalTranscriptionJobResponse_medicalTranscriptionJob :: Lens'
  StartMedicalTranscriptionJobResponse
  (Maybe MedicalTranscriptionJob)
startMedicalTranscriptionJobResponse_medicalTranscriptionJob = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartMedicalTranscriptionJobResponse' {Maybe MedicalTranscriptionJob
medicalTranscriptionJob :: Maybe MedicalTranscriptionJob
$sel:medicalTranscriptionJob:StartMedicalTranscriptionJobResponse' :: StartMedicalTranscriptionJobResponse
-> Maybe MedicalTranscriptionJob
medicalTranscriptionJob} -> Maybe MedicalTranscriptionJob
medicalTranscriptionJob) (\s :: StartMedicalTranscriptionJobResponse
s@StartMedicalTranscriptionJobResponse' {} Maybe MedicalTranscriptionJob
a -> StartMedicalTranscriptionJobResponse
s {$sel:medicalTranscriptionJob:StartMedicalTranscriptionJobResponse' :: Maybe MedicalTranscriptionJob
medicalTranscriptionJob = Maybe MedicalTranscriptionJob
a} :: StartMedicalTranscriptionJobResponse)

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

instance
  Prelude.NFData
    StartMedicalTranscriptionJobResponse
  where
  rnf :: StartMedicalTranscriptionJobResponse -> ()
rnf StartMedicalTranscriptionJobResponse' {Int
Maybe MedicalTranscriptionJob
httpStatus :: Int
medicalTranscriptionJob :: Maybe MedicalTranscriptionJob
$sel:httpStatus:StartMedicalTranscriptionJobResponse' :: StartMedicalTranscriptionJobResponse -> Int
$sel:medicalTranscriptionJob:StartMedicalTranscriptionJobResponse' :: StartMedicalTranscriptionJobResponse
-> Maybe MedicalTranscriptionJob
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe MedicalTranscriptionJob
medicalTranscriptionJob
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus