timgremore
commited on
Commit
•
cf5a59c
1
Parent(s):
5bbeb93
chore: Formatting
Browse files- lib/medical_transcription/transcription_supervisor.ex +2 -1
- lib/medical_transcription/transcriptions.ex +5 -1
- lib/medical_transcription/transcriptions/transcription.ex +3 -1
- lib/medical_transcription_web/components/components.ex +12 -2
- lib/medical_transcription_web/components/sidebar_component.ex +5 -1
- lib/medical_transcription_web/components/transcription_text_component.ex +4 -1
- lib/medical_transcription_web/controllers/error_html/404.html.heex +0 -1
- lib/medical_transcription_web/live/transcriptions_live/show.ex +2 -5
- priv/repo/migrations/20240208193759_create_transcription_chunks.exs +4 -1
- test/medical_transcription_web/live/home_live_test.exs +1 -1
- test/medical_transcription_web/live/transcriptions_live_show_test.exs +6 -1
lib/medical_transcription/transcription_supervisor.ex
CHANGED
@@ -14,7 +14,8 @@ defmodule MedicalTranscription.TranscriptionSupervisor do
|
|
14 |
def start_transcription(transcription) do
|
15 |
spec = %{
|
16 |
id: MedicalTranscription.TranscriptionServer,
|
17 |
-
start:
|
|
|
18 |
restart: :transient,
|
19 |
type: :worker
|
20 |
}
|
|
|
14 |
def start_transcription(transcription) do
|
15 |
spec = %{
|
16 |
id: MedicalTranscription.TranscriptionServer,
|
17 |
+
start:
|
18 |
+
{MedicalTranscription.TranscriptionServer, :start_link, [transcription: transcription]},
|
19 |
restart: :transient,
|
20 |
type: :worker
|
21 |
}
|
lib/medical_transcription/transcriptions.ex
CHANGED
@@ -6,7 +6,11 @@ defmodule MedicalTranscription.Transcriptions do
|
|
6 |
import Ecto.Query, warn: false
|
7 |
alias MedicalTranscription.Repo
|
8 |
|
9 |
-
alias MedicalTranscription.Transcriptions.{
|
|
|
|
|
|
|
|
|
10 |
|
11 |
@doc """
|
12 |
Create transcription record and begin transcribing
|
|
|
6 |
import Ecto.Query, warn: false
|
7 |
alias MedicalTranscription.Repo
|
8 |
|
9 |
+
alias MedicalTranscription.Transcriptions.{
|
10 |
+
Transcription,
|
11 |
+
TranscriptionChunk,
|
12 |
+
TranscriptionChunkKeyword
|
13 |
+
}
|
14 |
|
15 |
@doc """
|
16 |
Create transcription record and begin transcribing
|
lib/medical_transcription/transcriptions/transcription.ex
CHANGED
@@ -11,7 +11,9 @@ defmodule MedicalTranscription.Transcriptions.Transcription do
|
|
11 |
schema "transcriptions" do
|
12 |
field :filename, :string
|
13 |
field :recording_length_in_seconds, :integer
|
14 |
-
|
|
|
|
|
15 |
|
16 |
belongs_to :user, MedicalTranscription.Accounts.User
|
17 |
|
|
|
11 |
schema "transcriptions" do
|
12 |
field :filename, :string
|
13 |
field :recording_length_in_seconds, :integer
|
14 |
+
|
15 |
+
field :status, Ecto.Enum,
|
16 |
+
values: [new: 0, waiting: 1, transcribing: 2, finished: 3, failed: 4]
|
17 |
|
18 |
belongs_to :user, MedicalTranscription.Accounts.User
|
19 |
|
lib/medical_transcription_web/components/components.ex
CHANGED
@@ -83,8 +83,18 @@ defmodule MedicalTranscriptionWeb.Components do
|
|
83 |
~H"""
|
84 |
<div class="flex justify-between">
|
85 |
<div class="flex items-center">
|
86 |
-
<img
|
87 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
|
89 |
<.record_button_in_heading status={@transcription.status} />
|
90 |
|
|
|
83 |
~H"""
|
84 |
<div class="flex justify-between">
|
85 |
<div class="flex items-center">
|
86 |
+
<img
|
87 |
+
:if={@transcription.status == :waiting}
|
88 |
+
src={~p"/images/loading.svg"}
|
89 |
+
width="36"
|
90 |
+
class="mr-6 animate-spin"
|
91 |
+
/>
|
92 |
+
<img
|
93 |
+
:if={@transcription.status == :finished}
|
94 |
+
src={~p"/images/checkmark.svg"}
|
95 |
+
width="46"
|
96 |
+
class="mr-[17px]"
|
97 |
+
/>
|
98 |
|
99 |
<.record_button_in_heading status={@transcription.status} />
|
100 |
|
lib/medical_transcription_web/components/sidebar_component.ex
CHANGED
@@ -30,7 +30,11 @@ defmodule MedicalTranscriptionWeb.Components.SidebarComponent do
|
|
30 |
</.link>
|
31 |
<p class="text-xs leading-normal tracking-[0.2em] font-semibold uppercase">Today</p>
|
32 |
<div class="flex flex-col gap-4">
|
33 |
-
<.link
|
|
|
|
|
|
|
|
|
34 |
<%= transcription.filename %>
|
35 |
</.link>
|
36 |
</div>
|
|
|
30 |
</.link>
|
31 |
<p class="text-xs leading-normal tracking-[0.2em] font-semibold uppercase">Today</p>
|
32 |
<div class="flex flex-col gap-4">
|
33 |
+
<.link
|
34 |
+
:for={transcription <- @transcriptions}
|
35 |
+
navigate={~p"/transcriptions/#{transcription.id}"}
|
36 |
+
class="font-semibold text-lg leading-normal"
|
37 |
+
>
|
38 |
<%= transcription.filename %>
|
39 |
</.link>
|
40 |
</div>
|
lib/medical_transcription_web/components/transcription_text_component.ex
CHANGED
@@ -42,7 +42,10 @@ defmodule MedicalTranscriptionWeb.Components.TranscriptionTextComponent do
|
|
42 |
~H"""
|
43 |
<div id={@id} class="flex gap-12 pb-10 border-b border-[#444444]/20">
|
44 |
<div class="flex-1 flex flex-col gap-4">
|
45 |
-
<p
|
|
|
|
|
|
|
46 |
<%= @start_mark %> - <%= @end_mark %>
|
47 |
</p>
|
48 |
|
|
|
42 |
~H"""
|
43 |
<div id={@id} class="flex gap-12 pb-10 border-b border-[#444444]/20">
|
44 |
<div class="flex-1 flex flex-col gap-4">
|
45 |
+
<p
|
46 |
+
:if={!is_nil(@start_mark) && !is_nil(@end_mark)}
|
47 |
+
class="px-2 text-[32px] leading-normal font-semibold"
|
48 |
+
>
|
49 |
<%= @start_mark %> - <%= @end_mark %>
|
50 |
</p>
|
51 |
|
lib/medical_transcription_web/controllers/error_html/404.html.heex
CHANGED
@@ -15,4 +15,3 @@
|
|
15 |
<h1>Not Found</h1>
|
16 |
</body>
|
17 |
</html>
|
18 |
-
|
|
|
15 |
<h1>Not Found</h1>
|
16 |
</body>
|
17 |
</html>
|
|
lib/medical_transcription_web/live/transcriptions_live/show.ex
CHANGED
@@ -12,7 +12,7 @@ defmodule MedicalTranscriptionWeb.TranscriptionsLive.Show do
|
|
12 |
def mount(params, session, socket) do
|
13 |
transcription = get_transcription(params["id"])
|
14 |
|
15 |
-
if is_nil(transcription), do: raise
|
16 |
|
17 |
if connected?(socket),
|
18 |
do: Phoenix.PubSub.subscribe(:medicode_pubsub, "transcriptions:#{transcription.id}")
|
@@ -50,10 +50,7 @@ defmodule MedicalTranscriptionWeb.TranscriptionsLive.Show do
|
|
50 |
|
51 |
<main class="flex-1 pl-16 pr-16 pt-[25px]">
|
52 |
<div class="flex flex-col h-full mx-auto max-w-5xl">
|
53 |
-
<.result_heading
|
54 |
-
transcription={@transcription}
|
55 |
-
summary_keywords={@summary_keywords}
|
56 |
-
/>
|
57 |
|
58 |
<div id="result_list" class="flex flex flex-col gap-14" phx-update="stream">
|
59 |
<.live_component
|
|
|
12 |
def mount(params, session, socket) do
|
13 |
transcription = get_transcription(params["id"])
|
14 |
|
15 |
+
if is_nil(transcription), do: raise(MedicalTranscription.Fallback)
|
16 |
|
17 |
if connected?(socket),
|
18 |
do: Phoenix.PubSub.subscribe(:medicode_pubsub, "transcriptions:#{transcription.id}")
|
|
|
50 |
|
51 |
<main class="flex-1 pl-16 pr-16 pt-[25px]">
|
52 |
<div class="flex flex-col h-full mx-auto max-w-5xl">
|
53 |
+
<.result_heading transcription={@transcription} summary_keywords={@summary_keywords} />
|
|
|
|
|
|
|
54 |
|
55 |
<div id="result_list" class="flex flex flex-col gap-14" phx-update="stream">
|
56 |
<.live_component
|
priv/repo/migrations/20240208193759_create_transcription_chunks.exs
CHANGED
@@ -7,7 +7,10 @@ defmodule MedicalTranscription.Repo.Migrations.CreateTranscriptionChunks do
|
|
7 |
add :text, :string
|
8 |
add :start_mark, :string
|
9 |
add :end_mark, :string
|
10 |
-
|
|
|
|
|
|
|
11 |
|
12 |
timestamps(type: :utc_datetime)
|
13 |
end
|
|
|
7 |
add :text, :string
|
8 |
add :start_mark, :string
|
9 |
add :end_mark, :string
|
10 |
+
|
11 |
+
add :transcription_id,
|
12 |
+
references(:transcriptions, type: :binary_id, on_delete: :delete_all),
|
13 |
+
null: false
|
14 |
|
15 |
timestamps(type: :utc_datetime)
|
16 |
end
|
test/medical_transcription_web/live/home_live_test.exs
CHANGED
@@ -58,7 +58,7 @@ defmodule MedicalTranscriptionWeb.HomeLiveTest do
|
|
58 |
|> limit(1)
|
59 |
|> Repo.one()
|
60 |
|
61 |
-
assert_redirected
|
62 |
end
|
63 |
end
|
64 |
end
|
|
|
58 |
|> limit(1)
|
59 |
|> Repo.one()
|
60 |
|
61 |
+
assert_redirected(view, ~p"/transcriptions/#{transcription.id}")
|
62 |
end
|
63 |
end
|
64 |
end
|
test/medical_transcription_web/live/transcriptions_live_show_test.exs
CHANGED
@@ -2,7 +2,12 @@ defmodule MedicalTranscriptionWeb.TranscriptionsLive.ShowTest do
|
|
2 |
use MedicalTranscriptionWeb.ConnCase, async: true
|
3 |
|
4 |
import Phoenix.LiveViewTest
|
5 |
-
|
|
|
|
|
|
|
|
|
|
|
6 |
|
7 |
setup %{conn: conn} do
|
8 |
password = valid_user_password()
|
|
|
2 |
use MedicalTranscriptionWeb.ConnCase, async: true
|
3 |
|
4 |
import Phoenix.LiveViewTest
|
5 |
+
|
6 |
+
import MedicalTranscription.{
|
7 |
+
AccountsFixtures,
|
8 |
+
TranscriptionsFixtures,
|
9 |
+
TranscriptionChunksFixtures
|
10 |
+
}
|
11 |
|
12 |
setup %{conn: conn} do
|
13 |
password = valid_user_password()
|