medicode / lib /medical_transcription /transcriptions.ex
timgremore's picture
wip: feat: Define show screen for transcriptions
deecaf3
raw
history blame
2.56 kB
defmodule MedicalTranscription.Transcriptions do
@moduledoc """
The Transcriptions context.
"""
import Ecto.Query, warn: false
alias MedicalTranscription.Repo
alias MedicalTranscription.Transcriptions.Transcription
@doc """
Create transcription record and begin transcribing
## Examples
iex> create_and_transcribe_audio("my-audio.mp3")
%Transcription{audio_file: "my-audio.mp3"}
"""
def transcribe_audio(transcription) do
MedicalTranscription.TranscriptionSupervisor.start_transcription(transcription)
end
@doc """
Returns the list of transcriptions.
## Examples
iex> list_transcriptions()
[%Transcription{}, ...]
"""
def list_transcriptions(user) do
Transcription
|> where([t], t.user_id == ^user.id)
|> Repo.all()
end
@doc """
Gets a single transcription.
Raises `Ecto.NoResultsError` if the Transcription does not exist.
## Examples
iex> get_transcription!(123)
%Transcription{}
iex> get_transcription!(456)
** (Ecto.NoResultsError)
"""
def get_transcription!(id), do: Repo.get!(Transcription, id)
@doc """
Creates a transcription.
## Examples
iex> create_transcription(%{field: value})
{:ok, %Transcription{}}
iex> create_transcription(%{field: bad_value})
{:error, %Ecto.Changeset{}}
"""
def create_transcription(attrs \\ %{}) do
%Transcription{}
|> Transcription.changeset(attrs)
|> Repo.insert()
end
@doc """
Updates a transcription.
## Examples
iex> update_transcription(transcription, %{field: new_value})
{:ok, %Transcription{}}
iex> update_transcription(transcription, %{field: bad_value})
{:error, %Ecto.Changeset{}}
"""
def update_transcription(%Transcription{} = transcription, attrs) do
transcription
|> Transcription.changeset(attrs)
|> Repo.update()
end
@doc """
Deletes a transcription.
## Examples
iex> delete_transcription(transcription)
{:ok, %Transcription{}}
iex> delete_transcription(transcription)
{:error, %Ecto.Changeset{}}
"""
def delete_transcription(%Transcription{} = transcription) do
Repo.delete(transcription)
end
@doc """
Returns an `%Ecto.Changeset{}` for tracking transcription changes.
## Examples
iex> change_transcription(transcription)
%Ecto.Changeset{data: %Transcription{}}
"""
def change_transcription(%Transcription{} = transcription, attrs \\ %{}) do
Transcription.changeset(transcription, attrs)
end
end