{-# 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.Transcribe.Types.MedicalTranscriptionJob
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Transcribe.Types.MedicalTranscriptionJob where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.Transcribe.Types.LanguageCode
import Amazonka.Transcribe.Types.Media
import Amazonka.Transcribe.Types.MediaFormat
import Amazonka.Transcribe.Types.MedicalContentIdentificationType
import Amazonka.Transcribe.Types.MedicalTranscript
import Amazonka.Transcribe.Types.MedicalTranscriptionSetting
import Amazonka.Transcribe.Types.Specialty
import Amazonka.Transcribe.Types.Tag
import Amazonka.Transcribe.Types.TranscriptionJobStatus
import Amazonka.Transcribe.Types.Type

-- | The data structure that contains the information for a medical
-- transcription job.
--
-- /See:/ 'newMedicalTranscriptionJob' smart constructor.
data MedicalTranscriptionJob = MedicalTranscriptionJob'
  { -- | A timestamp that shows when the job was created.
    MedicalTranscriptionJob -> Maybe POSIX
creationTime :: Prelude.Maybe Core.POSIX,
    -- | The medical specialty of any clinicians providing a dictation or having
    -- a conversation. Refer to
    -- <https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-medical-conversation.html Transcribing a medical conversation>for
    -- a list of supported specialties.
    MedicalTranscriptionJob -> Maybe Specialty
specialty :: Prelude.Maybe Specialty,
    -- | If the @TranscriptionJobStatus@ field is @FAILED@, this field contains
    -- information about why the job failed.
    --
    -- The @FailureReason@ field contains one of the following values:
    --
    -- -   @Unsupported media format@- The media format specified in the
    --     @MediaFormat@ field of the request isn\'t valid. See the description
    --     of the @MediaFormat@ field for a list of valid values.
    --
    -- -   @The media format provided does not match the detected media format@-
    --     The media format of the audio file doesn\'t match the format
    --     specified in the @MediaFormat@ field in the request. Check the media
    --     format of your media file and make sure the two values match.
    --
    -- -   @Invalid sample rate for audio file@- The sample rate specified in
    --     the @MediaSampleRateHertz@ of the request isn\'t valid. The sample
    --     rate must be between 8,000 and 48,000 Hertz.
    --
    -- -   @The sample rate provided does not match the detected sample rate@-
    --     The sample rate in the audio file doesn\'t match the sample rate
    --     specified in the @MediaSampleRateHertz@ field in the request. Check
    --     the sample rate of your media file and make sure that the two values
    --     match.
    --
    -- -   @Invalid file size: file size too large@- The size of your audio
    --     file is larger than what Amazon Transcribe Medical can process. For
    --     more information, see
    --     <https://docs.aws.amazon.com/transcribe/latest/dg/limits-guidelines.html#limits Guidelines and Quotas>
    --     in the /Amazon Transcribe Medical Guide/
    --
    -- -   @Invalid number of channels: number of channels too large@- Your
    --     audio contains more channels than Amazon Transcribe Medical is
    --     configured to process. To request additional channels, see
    --     <https://docs.aws.amazon.com/general/latest/gr/transcribe-medical.html Amazon Transcribe Medical Endpoints and Quotas>
    --     in the /Amazon Web Services General Reference/
    MedicalTranscriptionJob -> Maybe Text
failureReason :: Prelude.Maybe Prelude.Text,
    -- | The language code for the language spoken in the source audio file. US
    -- English (en-US) is the only supported language for medical
    -- transcriptions. Any other value you enter for language code results in a
    -- @BadRequestException@ error.
    MedicalTranscriptionJob -> Maybe LanguageCode
languageCode :: Prelude.Maybe LanguageCode,
    -- | Object that contains object.
    MedicalTranscriptionJob -> Maybe MedicalTranscriptionSetting
settings :: Prelude.Maybe MedicalTranscriptionSetting,
    -- | A timestamp that shows when the job started processing.
    MedicalTranscriptionJob -> Maybe POSIX
startTime :: Prelude.Maybe Core.POSIX,
    -- | A timestamp that shows when the job was completed.
    MedicalTranscriptionJob -> Maybe POSIX
completionTime :: Prelude.Maybe Core.POSIX,
    MedicalTranscriptionJob -> Maybe Media
media :: Prelude.Maybe Media,
    -- | The format of the input media file.
    MedicalTranscriptionJob -> Maybe MediaFormat
mediaFormat :: Prelude.Maybe MediaFormat,
    -- | The name for a given medical transcription job.
    MedicalTranscriptionJob -> Maybe Text
medicalTranscriptionJobName :: Prelude.Maybe Prelude.Text,
    -- | The completion status of a medical transcription job.
    MedicalTranscriptionJob -> Maybe TranscriptionJobStatus
transcriptionJobStatus :: Prelude.Maybe TranscriptionJobStatus,
    -- | The type of speech in the transcription job. @CONVERSATION@ is generally
    -- used for patient-physician dialogues. @DICTATION@ is the setting for
    -- physicians speaking their notes after seeing a patient. For more
    -- information, see
    -- <https://docs.aws.amazon.com/transcribe/latest/dg/what-is-transcribe-med.html What is Amazon Transcribe Medical?>.
    MedicalTranscriptionJob -> Maybe Type
type' :: Prelude.Maybe Type,
    -- | Shows the type of content that you\'ve configured Amazon Transcribe
    -- Medical to identify in a transcription job. If the value is @PHI@,
    -- you\'ve configured the job to identify personal health information (PHI)
    -- in the transcription output.
    MedicalTranscriptionJob -> Maybe MedicalContentIdentificationType
contentIdentificationType :: Prelude.Maybe MedicalContentIdentificationType,
    -- | An object that contains the @MedicalTranscript@. The @MedicalTranscript@
    -- contains the @TranscriptFileUri@.
    MedicalTranscriptionJob -> Maybe MedicalTranscript
transcript :: Prelude.Maybe MedicalTranscript,
    -- | A key:value pair assigned to a given medical transcription job.
    MedicalTranscriptionJob -> Maybe (NonEmpty Tag)
tags :: Prelude.Maybe (Prelude.NonEmpty Tag),
    -- | The sample rate, in Hertz, of the source audio containing medical
    -- information.
    --
    -- If you don\'t specify the sample rate, Amazon Transcribe Medical
    -- determines it for you. If you choose to specify the sample rate, it must
    -- match the rate detected by Amazon Transcribe Medical. In most cases, you
    -- should leave the @MedicalMediaSampleHertz@ blank and let Amazon
    -- Transcribe Medical determine the sample rate.
    MedicalTranscriptionJob -> Maybe Natural
mediaSampleRateHertz :: Prelude.Maybe Prelude.Natural
  }
  deriving (MedicalTranscriptionJob -> MedicalTranscriptionJob -> Bool
(MedicalTranscriptionJob -> MedicalTranscriptionJob -> Bool)
-> (MedicalTranscriptionJob -> MedicalTranscriptionJob -> Bool)
-> Eq MedicalTranscriptionJob
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MedicalTranscriptionJob -> MedicalTranscriptionJob -> Bool
$c/= :: MedicalTranscriptionJob -> MedicalTranscriptionJob -> Bool
== :: MedicalTranscriptionJob -> MedicalTranscriptionJob -> Bool
$c== :: MedicalTranscriptionJob -> MedicalTranscriptionJob -> Bool
Prelude.Eq, ReadPrec [MedicalTranscriptionJob]
ReadPrec MedicalTranscriptionJob
Int -> ReadS MedicalTranscriptionJob
ReadS [MedicalTranscriptionJob]
(Int -> ReadS MedicalTranscriptionJob)
-> ReadS [MedicalTranscriptionJob]
-> ReadPrec MedicalTranscriptionJob
-> ReadPrec [MedicalTranscriptionJob]
-> Read MedicalTranscriptionJob
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MedicalTranscriptionJob]
$creadListPrec :: ReadPrec [MedicalTranscriptionJob]
readPrec :: ReadPrec MedicalTranscriptionJob
$creadPrec :: ReadPrec MedicalTranscriptionJob
readList :: ReadS [MedicalTranscriptionJob]
$creadList :: ReadS [MedicalTranscriptionJob]
readsPrec :: Int -> ReadS MedicalTranscriptionJob
$creadsPrec :: Int -> ReadS MedicalTranscriptionJob
Prelude.Read, Int -> MedicalTranscriptionJob -> ShowS
[MedicalTranscriptionJob] -> ShowS
MedicalTranscriptionJob -> String
(Int -> MedicalTranscriptionJob -> ShowS)
-> (MedicalTranscriptionJob -> String)
-> ([MedicalTranscriptionJob] -> ShowS)
-> Show MedicalTranscriptionJob
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MedicalTranscriptionJob] -> ShowS
$cshowList :: [MedicalTranscriptionJob] -> ShowS
show :: MedicalTranscriptionJob -> String
$cshow :: MedicalTranscriptionJob -> String
showsPrec :: Int -> MedicalTranscriptionJob -> ShowS
$cshowsPrec :: Int -> MedicalTranscriptionJob -> ShowS
Prelude.Show, (forall x.
 MedicalTranscriptionJob -> Rep MedicalTranscriptionJob x)
-> (forall x.
    Rep MedicalTranscriptionJob x -> MedicalTranscriptionJob)
-> Generic MedicalTranscriptionJob
forall x. Rep MedicalTranscriptionJob x -> MedicalTranscriptionJob
forall x. MedicalTranscriptionJob -> Rep MedicalTranscriptionJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep MedicalTranscriptionJob x -> MedicalTranscriptionJob
$cfrom :: forall x. MedicalTranscriptionJob -> Rep MedicalTranscriptionJob x
Prelude.Generic)

-- |
-- Create a value of 'MedicalTranscriptionJob' 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:
--
-- 'creationTime', 'medicalTranscriptionJob_creationTime' - A timestamp that shows when the job was created.
--
-- 'specialty', 'medicalTranscriptionJob_specialty' - The medical specialty of any clinicians providing a dictation or having
-- a conversation. Refer to
-- <https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-medical-conversation.html Transcribing a medical conversation>for
-- a list of supported specialties.
--
-- 'failureReason', 'medicalTranscriptionJob_failureReason' - If the @TranscriptionJobStatus@ field is @FAILED@, this field contains
-- information about why the job failed.
--
-- The @FailureReason@ field contains one of the following values:
--
-- -   @Unsupported media format@- The media format specified in the
--     @MediaFormat@ field of the request isn\'t valid. See the description
--     of the @MediaFormat@ field for a list of valid values.
--
-- -   @The media format provided does not match the detected media format@-
--     The media format of the audio file doesn\'t match the format
--     specified in the @MediaFormat@ field in the request. Check the media
--     format of your media file and make sure the two values match.
--
-- -   @Invalid sample rate for audio file@- The sample rate specified in
--     the @MediaSampleRateHertz@ of the request isn\'t valid. The sample
--     rate must be between 8,000 and 48,000 Hertz.
--
-- -   @The sample rate provided does not match the detected sample rate@-
--     The sample rate in the audio file doesn\'t match the sample rate
--     specified in the @MediaSampleRateHertz@ field in the request. Check
--     the sample rate of your media file and make sure that the two values
--     match.
--
-- -   @Invalid file size: file size too large@- The size of your audio
--     file is larger than what Amazon Transcribe Medical can process. For
--     more information, see
--     <https://docs.aws.amazon.com/transcribe/latest/dg/limits-guidelines.html#limits Guidelines and Quotas>
--     in the /Amazon Transcribe Medical Guide/
--
-- -   @Invalid number of channels: number of channels too large@- Your
--     audio contains more channels than Amazon Transcribe Medical is
--     configured to process. To request additional channels, see
--     <https://docs.aws.amazon.com/general/latest/gr/transcribe-medical.html Amazon Transcribe Medical Endpoints and Quotas>
--     in the /Amazon Web Services General Reference/
--
-- 'languageCode', 'medicalTranscriptionJob_languageCode' - The language code for the language spoken in the source audio file. US
-- English (en-US) is the only supported language for medical
-- transcriptions. Any other value you enter for language code results in a
-- @BadRequestException@ error.
--
-- 'settings', 'medicalTranscriptionJob_settings' - Object that contains object.
--
-- 'startTime', 'medicalTranscriptionJob_startTime' - A timestamp that shows when the job started processing.
--
-- 'completionTime', 'medicalTranscriptionJob_completionTime' - A timestamp that shows when the job was completed.
--
-- 'media', 'medicalTranscriptionJob_media' - Undocumented member.
--
-- 'mediaFormat', 'medicalTranscriptionJob_mediaFormat' - The format of the input media file.
--
-- 'medicalTranscriptionJobName', 'medicalTranscriptionJob_medicalTranscriptionJobName' - The name for a given medical transcription job.
--
-- 'transcriptionJobStatus', 'medicalTranscriptionJob_transcriptionJobStatus' - The completion status of a medical transcription job.
--
-- 'type'', 'medicalTranscriptionJob_type' - The type of speech in the transcription job. @CONVERSATION@ is generally
-- used for patient-physician dialogues. @DICTATION@ is the setting for
-- physicians speaking their notes after seeing a patient. For more
-- information, see
-- <https://docs.aws.amazon.com/transcribe/latest/dg/what-is-transcribe-med.html What is Amazon Transcribe Medical?>.
--
-- 'contentIdentificationType', 'medicalTranscriptionJob_contentIdentificationType' - Shows the type of content that you\'ve configured Amazon Transcribe
-- Medical to identify in a transcription job. If the value is @PHI@,
-- you\'ve configured the job to identify personal health information (PHI)
-- in the transcription output.
--
-- 'transcript', 'medicalTranscriptionJob_transcript' - An object that contains the @MedicalTranscript@. The @MedicalTranscript@
-- contains the @TranscriptFileUri@.
--
-- 'tags', 'medicalTranscriptionJob_tags' - A key:value pair assigned to a given medical transcription job.
--
-- 'mediaSampleRateHertz', 'medicalTranscriptionJob_mediaSampleRateHertz' - The sample rate, in Hertz, of the source audio containing medical
-- information.
--
-- If you don\'t specify the sample rate, Amazon Transcribe Medical
-- determines it for you. If you choose to specify the sample rate, it must
-- match the rate detected by Amazon Transcribe Medical. In most cases, you
-- should leave the @MedicalMediaSampleHertz@ blank and let Amazon
-- Transcribe Medical determine the sample rate.
newMedicalTranscriptionJob ::
  MedicalTranscriptionJob
newMedicalTranscriptionJob :: MedicalTranscriptionJob
newMedicalTranscriptionJob =
  MedicalTranscriptionJob' :: Maybe POSIX
-> Maybe Specialty
-> Maybe Text
-> Maybe LanguageCode
-> Maybe MedicalTranscriptionSetting
-> Maybe POSIX
-> Maybe POSIX
-> Maybe Media
-> Maybe MediaFormat
-> Maybe Text
-> Maybe TranscriptionJobStatus
-> Maybe Type
-> Maybe MedicalContentIdentificationType
-> Maybe MedicalTranscript
-> Maybe (NonEmpty Tag)
-> Maybe Natural
-> MedicalTranscriptionJob
MedicalTranscriptionJob'
    { $sel:creationTime:MedicalTranscriptionJob' :: Maybe POSIX
creationTime =
        Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:specialty:MedicalTranscriptionJob' :: Maybe Specialty
specialty = Maybe Specialty
forall a. Maybe a
Prelude.Nothing,
      $sel:failureReason:MedicalTranscriptionJob' :: Maybe Text
failureReason = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:languageCode:MedicalTranscriptionJob' :: Maybe LanguageCode
languageCode = Maybe LanguageCode
forall a. Maybe a
Prelude.Nothing,
      $sel:settings:MedicalTranscriptionJob' :: Maybe MedicalTranscriptionSetting
settings = Maybe MedicalTranscriptionSetting
forall a. Maybe a
Prelude.Nothing,
      $sel:startTime:MedicalTranscriptionJob' :: Maybe POSIX
startTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:completionTime:MedicalTranscriptionJob' :: Maybe POSIX
completionTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:media:MedicalTranscriptionJob' :: Maybe Media
media = Maybe Media
forall a. Maybe a
Prelude.Nothing,
      $sel:mediaFormat:MedicalTranscriptionJob' :: Maybe MediaFormat
mediaFormat = Maybe MediaFormat
forall a. Maybe a
Prelude.Nothing,
      $sel:medicalTranscriptionJobName:MedicalTranscriptionJob' :: Maybe Text
medicalTranscriptionJobName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:transcriptionJobStatus:MedicalTranscriptionJob' :: Maybe TranscriptionJobStatus
transcriptionJobStatus = Maybe TranscriptionJobStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:type':MedicalTranscriptionJob' :: Maybe Type
type' = Maybe Type
forall a. Maybe a
Prelude.Nothing,
      $sel:contentIdentificationType:MedicalTranscriptionJob' :: Maybe MedicalContentIdentificationType
contentIdentificationType = Maybe MedicalContentIdentificationType
forall a. Maybe a
Prelude.Nothing,
      $sel:transcript:MedicalTranscriptionJob' :: Maybe MedicalTranscript
transcript = Maybe MedicalTranscript
forall a. Maybe a
Prelude.Nothing,
      $sel:tags:MedicalTranscriptionJob' :: Maybe (NonEmpty Tag)
tags = Maybe (NonEmpty Tag)
forall a. Maybe a
Prelude.Nothing,
      $sel:mediaSampleRateHertz:MedicalTranscriptionJob' :: Maybe Natural
mediaSampleRateHertz = Maybe Natural
forall a. Maybe a
Prelude.Nothing
    }

-- | A timestamp that shows when the job was created.
medicalTranscriptionJob_creationTime :: Lens.Lens' MedicalTranscriptionJob (Prelude.Maybe Prelude.UTCTime)
medicalTranscriptionJob_creationTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> MedicalTranscriptionJob -> f MedicalTranscriptionJob
medicalTranscriptionJob_creationTime = (MedicalTranscriptionJob -> Maybe POSIX)
-> (MedicalTranscriptionJob
    -> Maybe POSIX -> MedicalTranscriptionJob)
-> Lens
     MedicalTranscriptionJob
     MedicalTranscriptionJob
     (Maybe POSIX)
     (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MedicalTranscriptionJob' {Maybe POSIX
creationTime :: Maybe POSIX
$sel:creationTime:MedicalTranscriptionJob' :: MedicalTranscriptionJob -> Maybe POSIX
creationTime} -> Maybe POSIX
creationTime) (\s :: MedicalTranscriptionJob
s@MedicalTranscriptionJob' {} Maybe POSIX
a -> MedicalTranscriptionJob
s {$sel:creationTime:MedicalTranscriptionJob' :: Maybe POSIX
creationTime = Maybe POSIX
a} :: MedicalTranscriptionJob) ((Maybe POSIX -> f (Maybe POSIX))
 -> MedicalTranscriptionJob -> f MedicalTranscriptionJob)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> MedicalTranscriptionJob
-> f MedicalTranscriptionJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The medical specialty of any clinicians providing a dictation or having
-- a conversation. Refer to
-- <https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-medical-conversation.html Transcribing a medical conversation>for
-- a list of supported specialties.
medicalTranscriptionJob_specialty :: Lens.Lens' MedicalTranscriptionJob (Prelude.Maybe Specialty)
medicalTranscriptionJob_specialty :: (Maybe Specialty -> f (Maybe Specialty))
-> MedicalTranscriptionJob -> f MedicalTranscriptionJob
medicalTranscriptionJob_specialty = (MedicalTranscriptionJob -> Maybe Specialty)
-> (MedicalTranscriptionJob
    -> Maybe Specialty -> MedicalTranscriptionJob)
-> Lens
     MedicalTranscriptionJob
     MedicalTranscriptionJob
     (Maybe Specialty)
     (Maybe Specialty)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MedicalTranscriptionJob' {Maybe Specialty
specialty :: Maybe Specialty
$sel:specialty:MedicalTranscriptionJob' :: MedicalTranscriptionJob -> Maybe Specialty
specialty} -> Maybe Specialty
specialty) (\s :: MedicalTranscriptionJob
s@MedicalTranscriptionJob' {} Maybe Specialty
a -> MedicalTranscriptionJob
s {$sel:specialty:MedicalTranscriptionJob' :: Maybe Specialty
specialty = Maybe Specialty
a} :: MedicalTranscriptionJob)

-- | If the @TranscriptionJobStatus@ field is @FAILED@, this field contains
-- information about why the job failed.
--
-- The @FailureReason@ field contains one of the following values:
--
-- -   @Unsupported media format@- The media format specified in the
--     @MediaFormat@ field of the request isn\'t valid. See the description
--     of the @MediaFormat@ field for a list of valid values.
--
-- -   @The media format provided does not match the detected media format@-
--     The media format of the audio file doesn\'t match the format
--     specified in the @MediaFormat@ field in the request. Check the media
--     format of your media file and make sure the two values match.
--
-- -   @Invalid sample rate for audio file@- The sample rate specified in
--     the @MediaSampleRateHertz@ of the request isn\'t valid. The sample
--     rate must be between 8,000 and 48,000 Hertz.
--
-- -   @The sample rate provided does not match the detected sample rate@-
--     The sample rate in the audio file doesn\'t match the sample rate
--     specified in the @MediaSampleRateHertz@ field in the request. Check
--     the sample rate of your media file and make sure that the two values
--     match.
--
-- -   @Invalid file size: file size too large@- The size of your audio
--     file is larger than what Amazon Transcribe Medical can process. For
--     more information, see
--     <https://docs.aws.amazon.com/transcribe/latest/dg/limits-guidelines.html#limits Guidelines and Quotas>
--     in the /Amazon Transcribe Medical Guide/
--
-- -   @Invalid number of channels: number of channels too large@- Your
--     audio contains more channels than Amazon Transcribe Medical is
--     configured to process. To request additional channels, see
--     <https://docs.aws.amazon.com/general/latest/gr/transcribe-medical.html Amazon Transcribe Medical Endpoints and Quotas>
--     in the /Amazon Web Services General Reference/
medicalTranscriptionJob_failureReason :: Lens.Lens' MedicalTranscriptionJob (Prelude.Maybe Prelude.Text)
medicalTranscriptionJob_failureReason :: (Maybe Text -> f (Maybe Text))
-> MedicalTranscriptionJob -> f MedicalTranscriptionJob
medicalTranscriptionJob_failureReason = (MedicalTranscriptionJob -> Maybe Text)
-> (MedicalTranscriptionJob
    -> Maybe Text -> MedicalTranscriptionJob)
-> Lens
     MedicalTranscriptionJob
     MedicalTranscriptionJob
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MedicalTranscriptionJob' {Maybe Text
failureReason :: Maybe Text
$sel:failureReason:MedicalTranscriptionJob' :: MedicalTranscriptionJob -> Maybe Text
failureReason} -> Maybe Text
failureReason) (\s :: MedicalTranscriptionJob
s@MedicalTranscriptionJob' {} Maybe Text
a -> MedicalTranscriptionJob
s {$sel:failureReason:MedicalTranscriptionJob' :: Maybe Text
failureReason = Maybe Text
a} :: MedicalTranscriptionJob)

-- | The language code for the language spoken in the source audio file. US
-- English (en-US) is the only supported language for medical
-- transcriptions. Any other value you enter for language code results in a
-- @BadRequestException@ error.
medicalTranscriptionJob_languageCode :: Lens.Lens' MedicalTranscriptionJob (Prelude.Maybe LanguageCode)
medicalTranscriptionJob_languageCode :: (Maybe LanguageCode -> f (Maybe LanguageCode))
-> MedicalTranscriptionJob -> f MedicalTranscriptionJob
medicalTranscriptionJob_languageCode = (MedicalTranscriptionJob -> Maybe LanguageCode)
-> (MedicalTranscriptionJob
    -> Maybe LanguageCode -> MedicalTranscriptionJob)
-> Lens
     MedicalTranscriptionJob
     MedicalTranscriptionJob
     (Maybe LanguageCode)
     (Maybe LanguageCode)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MedicalTranscriptionJob' {Maybe LanguageCode
languageCode :: Maybe LanguageCode
$sel:languageCode:MedicalTranscriptionJob' :: MedicalTranscriptionJob -> Maybe LanguageCode
languageCode} -> Maybe LanguageCode
languageCode) (\s :: MedicalTranscriptionJob
s@MedicalTranscriptionJob' {} Maybe LanguageCode
a -> MedicalTranscriptionJob
s {$sel:languageCode:MedicalTranscriptionJob' :: Maybe LanguageCode
languageCode = Maybe LanguageCode
a} :: MedicalTranscriptionJob)

-- | Object that contains object.
medicalTranscriptionJob_settings :: Lens.Lens' MedicalTranscriptionJob (Prelude.Maybe MedicalTranscriptionSetting)
medicalTranscriptionJob_settings :: (Maybe MedicalTranscriptionSetting
 -> f (Maybe MedicalTranscriptionSetting))
-> MedicalTranscriptionJob -> f MedicalTranscriptionJob
medicalTranscriptionJob_settings = (MedicalTranscriptionJob -> Maybe MedicalTranscriptionSetting)
-> (MedicalTranscriptionJob
    -> Maybe MedicalTranscriptionSetting -> MedicalTranscriptionJob)
-> Lens
     MedicalTranscriptionJob
     MedicalTranscriptionJob
     (Maybe MedicalTranscriptionSetting)
     (Maybe MedicalTranscriptionSetting)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MedicalTranscriptionJob' {Maybe MedicalTranscriptionSetting
settings :: Maybe MedicalTranscriptionSetting
$sel:settings:MedicalTranscriptionJob' :: MedicalTranscriptionJob -> Maybe MedicalTranscriptionSetting
settings} -> Maybe MedicalTranscriptionSetting
settings) (\s :: MedicalTranscriptionJob
s@MedicalTranscriptionJob' {} Maybe MedicalTranscriptionSetting
a -> MedicalTranscriptionJob
s {$sel:settings:MedicalTranscriptionJob' :: Maybe MedicalTranscriptionSetting
settings = Maybe MedicalTranscriptionSetting
a} :: MedicalTranscriptionJob)

-- | A timestamp that shows when the job started processing.
medicalTranscriptionJob_startTime :: Lens.Lens' MedicalTranscriptionJob (Prelude.Maybe Prelude.UTCTime)
medicalTranscriptionJob_startTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> MedicalTranscriptionJob -> f MedicalTranscriptionJob
medicalTranscriptionJob_startTime = (MedicalTranscriptionJob -> Maybe POSIX)
-> (MedicalTranscriptionJob
    -> Maybe POSIX -> MedicalTranscriptionJob)
-> Lens
     MedicalTranscriptionJob
     MedicalTranscriptionJob
     (Maybe POSIX)
     (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MedicalTranscriptionJob' {Maybe POSIX
startTime :: Maybe POSIX
$sel:startTime:MedicalTranscriptionJob' :: MedicalTranscriptionJob -> Maybe POSIX
startTime} -> Maybe POSIX
startTime) (\s :: MedicalTranscriptionJob
s@MedicalTranscriptionJob' {} Maybe POSIX
a -> MedicalTranscriptionJob
s {$sel:startTime:MedicalTranscriptionJob' :: Maybe POSIX
startTime = Maybe POSIX
a} :: MedicalTranscriptionJob) ((Maybe POSIX -> f (Maybe POSIX))
 -> MedicalTranscriptionJob -> f MedicalTranscriptionJob)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> MedicalTranscriptionJob
-> f MedicalTranscriptionJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | A timestamp that shows when the job was completed.
medicalTranscriptionJob_completionTime :: Lens.Lens' MedicalTranscriptionJob (Prelude.Maybe Prelude.UTCTime)
medicalTranscriptionJob_completionTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> MedicalTranscriptionJob -> f MedicalTranscriptionJob
medicalTranscriptionJob_completionTime = (MedicalTranscriptionJob -> Maybe POSIX)
-> (MedicalTranscriptionJob
    -> Maybe POSIX -> MedicalTranscriptionJob)
-> Lens
     MedicalTranscriptionJob
     MedicalTranscriptionJob
     (Maybe POSIX)
     (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MedicalTranscriptionJob' {Maybe POSIX
completionTime :: Maybe POSIX
$sel:completionTime:MedicalTranscriptionJob' :: MedicalTranscriptionJob -> Maybe POSIX
completionTime} -> Maybe POSIX
completionTime) (\s :: MedicalTranscriptionJob
s@MedicalTranscriptionJob' {} Maybe POSIX
a -> MedicalTranscriptionJob
s {$sel:completionTime:MedicalTranscriptionJob' :: Maybe POSIX
completionTime = Maybe POSIX
a} :: MedicalTranscriptionJob) ((Maybe POSIX -> f (Maybe POSIX))
 -> MedicalTranscriptionJob -> f MedicalTranscriptionJob)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> MedicalTranscriptionJob
-> f MedicalTranscriptionJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | Undocumented member.
medicalTranscriptionJob_media :: Lens.Lens' MedicalTranscriptionJob (Prelude.Maybe Media)
medicalTranscriptionJob_media :: (Maybe Media -> f (Maybe Media))
-> MedicalTranscriptionJob -> f MedicalTranscriptionJob
medicalTranscriptionJob_media = (MedicalTranscriptionJob -> Maybe Media)
-> (MedicalTranscriptionJob
    -> Maybe Media -> MedicalTranscriptionJob)
-> Lens
     MedicalTranscriptionJob
     MedicalTranscriptionJob
     (Maybe Media)
     (Maybe Media)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MedicalTranscriptionJob' {Maybe Media
media :: Maybe Media
$sel:media:MedicalTranscriptionJob' :: MedicalTranscriptionJob -> Maybe Media
media} -> Maybe Media
media) (\s :: MedicalTranscriptionJob
s@MedicalTranscriptionJob' {} Maybe Media
a -> MedicalTranscriptionJob
s {$sel:media:MedicalTranscriptionJob' :: Maybe Media
media = Maybe Media
a} :: MedicalTranscriptionJob)

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

-- | The name for a given medical transcription job.
medicalTranscriptionJob_medicalTranscriptionJobName :: Lens.Lens' MedicalTranscriptionJob (Prelude.Maybe Prelude.Text)
medicalTranscriptionJob_medicalTranscriptionJobName :: (Maybe Text -> f (Maybe Text))
-> MedicalTranscriptionJob -> f MedicalTranscriptionJob
medicalTranscriptionJob_medicalTranscriptionJobName = (MedicalTranscriptionJob -> Maybe Text)
-> (MedicalTranscriptionJob
    -> Maybe Text -> MedicalTranscriptionJob)
-> Lens
     MedicalTranscriptionJob
     MedicalTranscriptionJob
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MedicalTranscriptionJob' {Maybe Text
medicalTranscriptionJobName :: Maybe Text
$sel:medicalTranscriptionJobName:MedicalTranscriptionJob' :: MedicalTranscriptionJob -> Maybe Text
medicalTranscriptionJobName} -> Maybe Text
medicalTranscriptionJobName) (\s :: MedicalTranscriptionJob
s@MedicalTranscriptionJob' {} Maybe Text
a -> MedicalTranscriptionJob
s {$sel:medicalTranscriptionJobName:MedicalTranscriptionJob' :: Maybe Text
medicalTranscriptionJobName = Maybe Text
a} :: MedicalTranscriptionJob)

-- | The completion status of a medical transcription job.
medicalTranscriptionJob_transcriptionJobStatus :: Lens.Lens' MedicalTranscriptionJob (Prelude.Maybe TranscriptionJobStatus)
medicalTranscriptionJob_transcriptionJobStatus :: (Maybe TranscriptionJobStatus -> f (Maybe TranscriptionJobStatus))
-> MedicalTranscriptionJob -> f MedicalTranscriptionJob
medicalTranscriptionJob_transcriptionJobStatus = (MedicalTranscriptionJob -> Maybe TranscriptionJobStatus)
-> (MedicalTranscriptionJob
    -> Maybe TranscriptionJobStatus -> MedicalTranscriptionJob)
-> Lens
     MedicalTranscriptionJob
     MedicalTranscriptionJob
     (Maybe TranscriptionJobStatus)
     (Maybe TranscriptionJobStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MedicalTranscriptionJob' {Maybe TranscriptionJobStatus
transcriptionJobStatus :: Maybe TranscriptionJobStatus
$sel:transcriptionJobStatus:MedicalTranscriptionJob' :: MedicalTranscriptionJob -> Maybe TranscriptionJobStatus
transcriptionJobStatus} -> Maybe TranscriptionJobStatus
transcriptionJobStatus) (\s :: MedicalTranscriptionJob
s@MedicalTranscriptionJob' {} Maybe TranscriptionJobStatus
a -> MedicalTranscriptionJob
s {$sel:transcriptionJobStatus:MedicalTranscriptionJob' :: Maybe TranscriptionJobStatus
transcriptionJobStatus = Maybe TranscriptionJobStatus
a} :: MedicalTranscriptionJob)

-- | The type of speech in the transcription job. @CONVERSATION@ is generally
-- used for patient-physician dialogues. @DICTATION@ is the setting for
-- physicians speaking their notes after seeing a patient. For more
-- information, see
-- <https://docs.aws.amazon.com/transcribe/latest/dg/what-is-transcribe-med.html What is Amazon Transcribe Medical?>.
medicalTranscriptionJob_type :: Lens.Lens' MedicalTranscriptionJob (Prelude.Maybe Type)
medicalTranscriptionJob_type :: (Maybe Type -> f (Maybe Type))
-> MedicalTranscriptionJob -> f MedicalTranscriptionJob
medicalTranscriptionJob_type = (MedicalTranscriptionJob -> Maybe Type)
-> (MedicalTranscriptionJob
    -> Maybe Type -> MedicalTranscriptionJob)
-> Lens
     MedicalTranscriptionJob
     MedicalTranscriptionJob
     (Maybe Type)
     (Maybe Type)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MedicalTranscriptionJob' {Maybe Type
type' :: Maybe Type
$sel:type':MedicalTranscriptionJob' :: MedicalTranscriptionJob -> Maybe Type
type'} -> Maybe Type
type') (\s :: MedicalTranscriptionJob
s@MedicalTranscriptionJob' {} Maybe Type
a -> MedicalTranscriptionJob
s {$sel:type':MedicalTranscriptionJob' :: Maybe Type
type' = Maybe Type
a} :: MedicalTranscriptionJob)

-- | Shows the type of content that you\'ve configured Amazon Transcribe
-- Medical to identify in a transcription job. If the value is @PHI@,
-- you\'ve configured the job to identify personal health information (PHI)
-- in the transcription output.
medicalTranscriptionJob_contentIdentificationType :: Lens.Lens' MedicalTranscriptionJob (Prelude.Maybe MedicalContentIdentificationType)
medicalTranscriptionJob_contentIdentificationType :: (Maybe MedicalContentIdentificationType
 -> f (Maybe MedicalContentIdentificationType))
-> MedicalTranscriptionJob -> f MedicalTranscriptionJob
medicalTranscriptionJob_contentIdentificationType = (MedicalTranscriptionJob -> Maybe MedicalContentIdentificationType)
-> (MedicalTranscriptionJob
    -> Maybe MedicalContentIdentificationType
    -> MedicalTranscriptionJob)
-> Lens
     MedicalTranscriptionJob
     MedicalTranscriptionJob
     (Maybe MedicalContentIdentificationType)
     (Maybe MedicalContentIdentificationType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MedicalTranscriptionJob' {Maybe MedicalContentIdentificationType
contentIdentificationType :: Maybe MedicalContentIdentificationType
$sel:contentIdentificationType:MedicalTranscriptionJob' :: MedicalTranscriptionJob -> Maybe MedicalContentIdentificationType
contentIdentificationType} -> Maybe MedicalContentIdentificationType
contentIdentificationType) (\s :: MedicalTranscriptionJob
s@MedicalTranscriptionJob' {} Maybe MedicalContentIdentificationType
a -> MedicalTranscriptionJob
s {$sel:contentIdentificationType:MedicalTranscriptionJob' :: Maybe MedicalContentIdentificationType
contentIdentificationType = Maybe MedicalContentIdentificationType
a} :: MedicalTranscriptionJob)

-- | An object that contains the @MedicalTranscript@. The @MedicalTranscript@
-- contains the @TranscriptFileUri@.
medicalTranscriptionJob_transcript :: Lens.Lens' MedicalTranscriptionJob (Prelude.Maybe MedicalTranscript)
medicalTranscriptionJob_transcript :: (Maybe MedicalTranscript -> f (Maybe MedicalTranscript))
-> MedicalTranscriptionJob -> f MedicalTranscriptionJob
medicalTranscriptionJob_transcript = (MedicalTranscriptionJob -> Maybe MedicalTranscript)
-> (MedicalTranscriptionJob
    -> Maybe MedicalTranscript -> MedicalTranscriptionJob)
-> Lens
     MedicalTranscriptionJob
     MedicalTranscriptionJob
     (Maybe MedicalTranscript)
     (Maybe MedicalTranscript)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MedicalTranscriptionJob' {Maybe MedicalTranscript
transcript :: Maybe MedicalTranscript
$sel:transcript:MedicalTranscriptionJob' :: MedicalTranscriptionJob -> Maybe MedicalTranscript
transcript} -> Maybe MedicalTranscript
transcript) (\s :: MedicalTranscriptionJob
s@MedicalTranscriptionJob' {} Maybe MedicalTranscript
a -> MedicalTranscriptionJob
s {$sel:transcript:MedicalTranscriptionJob' :: Maybe MedicalTranscript
transcript = Maybe MedicalTranscript
a} :: MedicalTranscriptionJob)

-- | A key:value pair assigned to a given medical transcription job.
medicalTranscriptionJob_tags :: Lens.Lens' MedicalTranscriptionJob (Prelude.Maybe (Prelude.NonEmpty Tag))
medicalTranscriptionJob_tags :: (Maybe (NonEmpty Tag) -> f (Maybe (NonEmpty Tag)))
-> MedicalTranscriptionJob -> f MedicalTranscriptionJob
medicalTranscriptionJob_tags = (MedicalTranscriptionJob -> Maybe (NonEmpty Tag))
-> (MedicalTranscriptionJob
    -> Maybe (NonEmpty Tag) -> MedicalTranscriptionJob)
-> Lens
     MedicalTranscriptionJob
     MedicalTranscriptionJob
     (Maybe (NonEmpty Tag))
     (Maybe (NonEmpty Tag))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MedicalTranscriptionJob' {Maybe (NonEmpty Tag)
tags :: Maybe (NonEmpty Tag)
$sel:tags:MedicalTranscriptionJob' :: MedicalTranscriptionJob -> Maybe (NonEmpty Tag)
tags} -> Maybe (NonEmpty Tag)
tags) (\s :: MedicalTranscriptionJob
s@MedicalTranscriptionJob' {} Maybe (NonEmpty Tag)
a -> MedicalTranscriptionJob
s {$sel:tags:MedicalTranscriptionJob' :: Maybe (NonEmpty Tag)
tags = Maybe (NonEmpty Tag)
a} :: MedicalTranscriptionJob) ((Maybe (NonEmpty Tag) -> f (Maybe (NonEmpty Tag)))
 -> MedicalTranscriptionJob -> f MedicalTranscriptionJob)
-> ((Maybe (NonEmpty Tag) -> f (Maybe (NonEmpty Tag)))
    -> Maybe (NonEmpty Tag) -> f (Maybe (NonEmpty Tag)))
-> (Maybe (NonEmpty Tag) -> f (Maybe (NonEmpty Tag)))
-> MedicalTranscriptionJob
-> f MedicalTranscriptionJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso (NonEmpty Tag) (NonEmpty Tag) (NonEmpty Tag) (NonEmpty Tag)
-> Iso
     (Maybe (NonEmpty Tag))
     (Maybe (NonEmpty Tag))
     (Maybe (NonEmpty Tag))
     (Maybe (NonEmpty Tag))
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 AnIso (NonEmpty Tag) (NonEmpty Tag) (NonEmpty Tag) (NonEmpty Tag)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The sample rate, in Hertz, of the source audio containing medical
-- information.
--
-- If you don\'t specify the sample rate, Amazon Transcribe Medical
-- determines it for you. If you choose to specify the sample rate, it must
-- match the rate detected by Amazon Transcribe Medical. In most cases, you
-- should leave the @MedicalMediaSampleHertz@ blank and let Amazon
-- Transcribe Medical determine the sample rate.
medicalTranscriptionJob_mediaSampleRateHertz :: Lens.Lens' MedicalTranscriptionJob (Prelude.Maybe Prelude.Natural)
medicalTranscriptionJob_mediaSampleRateHertz :: (Maybe Natural -> f (Maybe Natural))
-> MedicalTranscriptionJob -> f MedicalTranscriptionJob
medicalTranscriptionJob_mediaSampleRateHertz = (MedicalTranscriptionJob -> Maybe Natural)
-> (MedicalTranscriptionJob
    -> Maybe Natural -> MedicalTranscriptionJob)
-> Lens
     MedicalTranscriptionJob
     MedicalTranscriptionJob
     (Maybe Natural)
     (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MedicalTranscriptionJob' {Maybe Natural
mediaSampleRateHertz :: Maybe Natural
$sel:mediaSampleRateHertz:MedicalTranscriptionJob' :: MedicalTranscriptionJob -> Maybe Natural
mediaSampleRateHertz} -> Maybe Natural
mediaSampleRateHertz) (\s :: MedicalTranscriptionJob
s@MedicalTranscriptionJob' {} Maybe Natural
a -> MedicalTranscriptionJob
s {$sel:mediaSampleRateHertz:MedicalTranscriptionJob' :: Maybe Natural
mediaSampleRateHertz = Maybe Natural
a} :: MedicalTranscriptionJob)

instance Core.FromJSON MedicalTranscriptionJob where
  parseJSON :: Value -> Parser MedicalTranscriptionJob
parseJSON =
    String
-> (Object -> Parser MedicalTranscriptionJob)
-> Value
-> Parser MedicalTranscriptionJob
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"MedicalTranscriptionJob"
      ( \Object
x ->
          Maybe POSIX
-> Maybe Specialty
-> Maybe Text
-> Maybe LanguageCode
-> Maybe MedicalTranscriptionSetting
-> Maybe POSIX
-> Maybe POSIX
-> Maybe Media
-> Maybe MediaFormat
-> Maybe Text
-> Maybe TranscriptionJobStatus
-> Maybe Type
-> Maybe MedicalContentIdentificationType
-> Maybe MedicalTranscript
-> Maybe (NonEmpty Tag)
-> Maybe Natural
-> MedicalTranscriptionJob
MedicalTranscriptionJob'
            (Maybe POSIX
 -> Maybe Specialty
 -> Maybe Text
 -> Maybe LanguageCode
 -> Maybe MedicalTranscriptionSetting
 -> Maybe POSIX
 -> Maybe POSIX
 -> Maybe Media
 -> Maybe MediaFormat
 -> Maybe Text
 -> Maybe TranscriptionJobStatus
 -> Maybe Type
 -> Maybe MedicalContentIdentificationType
 -> Maybe MedicalTranscript
 -> Maybe (NonEmpty Tag)
 -> Maybe Natural
 -> MedicalTranscriptionJob)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Specialty
      -> Maybe Text
      -> Maybe LanguageCode
      -> Maybe MedicalTranscriptionSetting
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Media
      -> Maybe MediaFormat
      -> Maybe Text
      -> Maybe TranscriptionJobStatus
      -> Maybe Type
      -> Maybe MedicalContentIdentificationType
      -> Maybe MedicalTranscript
      -> Maybe (NonEmpty Tag)
      -> Maybe Natural
      -> MedicalTranscriptionJob)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CreationTime")
            Parser
  (Maybe Specialty
   -> Maybe Text
   -> Maybe LanguageCode
   -> Maybe MedicalTranscriptionSetting
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Media
   -> Maybe MediaFormat
   -> Maybe Text
   -> Maybe TranscriptionJobStatus
   -> Maybe Type
   -> Maybe MedicalContentIdentificationType
   -> Maybe MedicalTranscript
   -> Maybe (NonEmpty Tag)
   -> Maybe Natural
   -> MedicalTranscriptionJob)
-> Parser (Maybe Specialty)
-> Parser
     (Maybe Text
      -> Maybe LanguageCode
      -> Maybe MedicalTranscriptionSetting
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Media
      -> Maybe MediaFormat
      -> Maybe Text
      -> Maybe TranscriptionJobStatus
      -> Maybe Type
      -> Maybe MedicalContentIdentificationType
      -> Maybe MedicalTranscript
      -> Maybe (NonEmpty Tag)
      -> Maybe Natural
      -> MedicalTranscriptionJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Specialty)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Specialty")
            Parser
  (Maybe Text
   -> Maybe LanguageCode
   -> Maybe MedicalTranscriptionSetting
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Media
   -> Maybe MediaFormat
   -> Maybe Text
   -> Maybe TranscriptionJobStatus
   -> Maybe Type
   -> Maybe MedicalContentIdentificationType
   -> Maybe MedicalTranscript
   -> Maybe (NonEmpty Tag)
   -> Maybe Natural
   -> MedicalTranscriptionJob)
-> Parser (Maybe Text)
-> Parser
     (Maybe LanguageCode
      -> Maybe MedicalTranscriptionSetting
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Media
      -> Maybe MediaFormat
      -> Maybe Text
      -> Maybe TranscriptionJobStatus
      -> Maybe Type
      -> Maybe MedicalContentIdentificationType
      -> Maybe MedicalTranscript
      -> Maybe (NonEmpty Tag)
      -> Maybe Natural
      -> MedicalTranscriptionJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"FailureReason")
            Parser
  (Maybe LanguageCode
   -> Maybe MedicalTranscriptionSetting
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Media
   -> Maybe MediaFormat
   -> Maybe Text
   -> Maybe TranscriptionJobStatus
   -> Maybe Type
   -> Maybe MedicalContentIdentificationType
   -> Maybe MedicalTranscript
   -> Maybe (NonEmpty Tag)
   -> Maybe Natural
   -> MedicalTranscriptionJob)
-> Parser (Maybe LanguageCode)
-> Parser
     (Maybe MedicalTranscriptionSetting
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Media
      -> Maybe MediaFormat
      -> Maybe Text
      -> Maybe TranscriptionJobStatus
      -> Maybe Type
      -> Maybe MedicalContentIdentificationType
      -> Maybe MedicalTranscript
      -> Maybe (NonEmpty Tag)
      -> Maybe Natural
      -> MedicalTranscriptionJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe LanguageCode)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LanguageCode")
            Parser
  (Maybe MedicalTranscriptionSetting
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Media
   -> Maybe MediaFormat
   -> Maybe Text
   -> Maybe TranscriptionJobStatus
   -> Maybe Type
   -> Maybe MedicalContentIdentificationType
   -> Maybe MedicalTranscript
   -> Maybe (NonEmpty Tag)
   -> Maybe Natural
   -> MedicalTranscriptionJob)
-> Parser (Maybe MedicalTranscriptionSetting)
-> Parser
     (Maybe POSIX
      -> Maybe POSIX
      -> Maybe Media
      -> Maybe MediaFormat
      -> Maybe Text
      -> Maybe TranscriptionJobStatus
      -> Maybe Type
      -> Maybe MedicalContentIdentificationType
      -> Maybe MedicalTranscript
      -> Maybe (NonEmpty Tag)
      -> Maybe Natural
      -> MedicalTranscriptionJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe MedicalTranscriptionSetting)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Settings")
            Parser
  (Maybe POSIX
   -> Maybe POSIX
   -> Maybe Media
   -> Maybe MediaFormat
   -> Maybe Text
   -> Maybe TranscriptionJobStatus
   -> Maybe Type
   -> Maybe MedicalContentIdentificationType
   -> Maybe MedicalTranscript
   -> Maybe (NonEmpty Tag)
   -> Maybe Natural
   -> MedicalTranscriptionJob)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe POSIX
      -> Maybe Media
      -> Maybe MediaFormat
      -> Maybe Text
      -> Maybe TranscriptionJobStatus
      -> Maybe Type
      -> Maybe MedicalContentIdentificationType
      -> Maybe MedicalTranscript
      -> Maybe (NonEmpty Tag)
      -> Maybe Natural
      -> MedicalTranscriptionJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"StartTime")
            Parser
  (Maybe POSIX
   -> Maybe Media
   -> Maybe MediaFormat
   -> Maybe Text
   -> Maybe TranscriptionJobStatus
   -> Maybe Type
   -> Maybe MedicalContentIdentificationType
   -> Maybe MedicalTranscript
   -> Maybe (NonEmpty Tag)
   -> Maybe Natural
   -> MedicalTranscriptionJob)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Media
      -> Maybe MediaFormat
      -> Maybe Text
      -> Maybe TranscriptionJobStatus
      -> Maybe Type
      -> Maybe MedicalContentIdentificationType
      -> Maybe MedicalTranscript
      -> Maybe (NonEmpty Tag)
      -> Maybe Natural
      -> MedicalTranscriptionJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CompletionTime")
            Parser
  (Maybe Media
   -> Maybe MediaFormat
   -> Maybe Text
   -> Maybe TranscriptionJobStatus
   -> Maybe Type
   -> Maybe MedicalContentIdentificationType
   -> Maybe MedicalTranscript
   -> Maybe (NonEmpty Tag)
   -> Maybe Natural
   -> MedicalTranscriptionJob)
-> Parser (Maybe Media)
-> Parser
     (Maybe MediaFormat
      -> Maybe Text
      -> Maybe TranscriptionJobStatus
      -> Maybe Type
      -> Maybe MedicalContentIdentificationType
      -> Maybe MedicalTranscript
      -> Maybe (NonEmpty Tag)
      -> Maybe Natural
      -> MedicalTranscriptionJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Media)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Media")
            Parser
  (Maybe MediaFormat
   -> Maybe Text
   -> Maybe TranscriptionJobStatus
   -> Maybe Type
   -> Maybe MedicalContentIdentificationType
   -> Maybe MedicalTranscript
   -> Maybe (NonEmpty Tag)
   -> Maybe Natural
   -> MedicalTranscriptionJob)
-> Parser (Maybe MediaFormat)
-> Parser
     (Maybe Text
      -> Maybe TranscriptionJobStatus
      -> Maybe Type
      -> Maybe MedicalContentIdentificationType
      -> Maybe MedicalTranscript
      -> Maybe (NonEmpty Tag)
      -> Maybe Natural
      -> MedicalTranscriptionJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe MediaFormat)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"MediaFormat")
            Parser
  (Maybe Text
   -> Maybe TranscriptionJobStatus
   -> Maybe Type
   -> Maybe MedicalContentIdentificationType
   -> Maybe MedicalTranscript
   -> Maybe (NonEmpty Tag)
   -> Maybe Natural
   -> MedicalTranscriptionJob)
-> Parser (Maybe Text)
-> Parser
     (Maybe TranscriptionJobStatus
      -> Maybe Type
      -> Maybe MedicalContentIdentificationType
      -> Maybe MedicalTranscript
      -> Maybe (NonEmpty Tag)
      -> Maybe Natural
      -> MedicalTranscriptionJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"MedicalTranscriptionJobName")
            Parser
  (Maybe TranscriptionJobStatus
   -> Maybe Type
   -> Maybe MedicalContentIdentificationType
   -> Maybe MedicalTranscript
   -> Maybe (NonEmpty Tag)
   -> Maybe Natural
   -> MedicalTranscriptionJob)
-> Parser (Maybe TranscriptionJobStatus)
-> Parser
     (Maybe Type
      -> Maybe MedicalContentIdentificationType
      -> Maybe MedicalTranscript
      -> Maybe (NonEmpty Tag)
      -> Maybe Natural
      -> MedicalTranscriptionJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe TranscriptionJobStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TranscriptionJobStatus")
            Parser
  (Maybe Type
   -> Maybe MedicalContentIdentificationType
   -> Maybe MedicalTranscript
   -> Maybe (NonEmpty Tag)
   -> Maybe Natural
   -> MedicalTranscriptionJob)
-> Parser (Maybe Type)
-> Parser
     (Maybe MedicalContentIdentificationType
      -> Maybe MedicalTranscript
      -> Maybe (NonEmpty Tag)
      -> Maybe Natural
      -> MedicalTranscriptionJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Type)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Type")
            Parser
  (Maybe MedicalContentIdentificationType
   -> Maybe MedicalTranscript
   -> Maybe (NonEmpty Tag)
   -> Maybe Natural
   -> MedicalTranscriptionJob)
-> Parser (Maybe MedicalContentIdentificationType)
-> Parser
     (Maybe MedicalTranscript
      -> Maybe (NonEmpty Tag)
      -> Maybe Natural
      -> MedicalTranscriptionJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe MedicalContentIdentificationType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ContentIdentificationType")
            Parser
  (Maybe MedicalTranscript
   -> Maybe (NonEmpty Tag)
   -> Maybe Natural
   -> MedicalTranscriptionJob)
-> Parser (Maybe MedicalTranscript)
-> Parser
     (Maybe (NonEmpty Tag) -> Maybe Natural -> MedicalTranscriptionJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe MedicalTranscript)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Transcript")
            Parser
  (Maybe (NonEmpty Tag) -> Maybe Natural -> MedicalTranscriptionJob)
-> Parser (Maybe (NonEmpty Tag))
-> Parser (Maybe Natural -> MedicalTranscriptionJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (NonEmpty Tag))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Tags")
            Parser (Maybe Natural -> MedicalTranscriptionJob)
-> Parser (Maybe Natural) -> Parser MedicalTranscriptionJob
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"MediaSampleRateHertz")
      )

instance Prelude.Hashable MedicalTranscriptionJob

instance Prelude.NFData MedicalTranscriptionJob