diff --git a/README.md b/README.md index ea66612182acade1a1582c8d9a59959d509f6ef5..891020f8e61db4ef9af068c58aed6e158f06227a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# MedicalTranscription +# Medicode ## Getting started @@ -28,7 +28,7 @@ The app is configured to deploy to Fly.io via a `fly.toml` file. To deploy, run To build the code vectors for the ICD-9 codelist for the deployed environment: 1. Connect to the server with `fly ssh console`. -2. Run `/app/bin/medical_transcription eval MedicalTranscription.Release.precompute_code_vectors`. This will prepare the vectors in the database if they are not present. +2. Run `/app/bin/medical_transcription eval Medicode.Release.precompute_code_vectors`. This will prepare the vectors in the database if they are not present. ### Livebook diff --git a/config/config.exs b/config/config.exs index 654fc5f9cf3de1778de00f959397b4022c3e17cc..b39b87f64890a3ed95f34af8005bdda876b1e901 100644 --- a/config/config.exs +++ b/config/config.exs @@ -7,25 +7,25 @@ # General application configuration import Config -config :medical_transcription, MedicalTranscription.Repo, - types: MedicalTranscription.PostgrexTypes +config :medicode, Medicode.Repo, + types: Medicode.PostgrexTypes -config :medical_transcription, - ecto_repos: [MedicalTranscription.Repo], +config :medicode, + ecto_repos: [Medicode.Repo], generators: [timestamp_type: :utc_datetime] # Configures the endpoint -config :medical_transcription, MedicalTranscriptionWeb.Endpoint, +config :medicode, MedicodeWeb.Endpoint, url: [host: "localhost"], adapter: Phoenix.Endpoint.Cowboy2Adapter, render_errors: [ - formats: [html: MedicalTranscriptionWeb.ErrorHTML, json: MedicalTranscriptionWeb.ErrorJSON], + formats: [html: MedicodeWeb.ErrorHTML, json: MedicodeWeb.ErrorJSON], layout: false ], pubsub_server: :medicode_pubsub, live_view: [signing_salt: "wVVDe1It"] -config :medical_transcription, :generators, +config :medicode, :generators, binary_id: true, sample_binary_id: "11111111-1111-1111-1111-111111111111" @@ -36,7 +36,7 @@ config :medical_transcription, :generators, # # For production it's recommended to configure a different adapter # at the `config/runtime.exs`. -config :medical_transcription, MedicalTranscription.Mailer, adapter: Swoosh.Adapters.Local +config :medicode, Medicode.Mailer, adapter: Swoosh.Adapters.Local # Configure esbuild (the version is required) config :esbuild, diff --git a/config/dev.exs b/config/dev.exs index 5fc5e2c72b536c1b31b97b642986538663304301..d9e31552283f3fd4a7da9bf38432ecba555f9c05 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -1,7 +1,7 @@ import Config # Configure your database -config :medical_transcription, MedicalTranscription.Repo, +config :medicode, Medicode.Repo, hostname: "localhost", database: "medical_transcription_dev", stacktrace: true, @@ -14,7 +14,7 @@ config :medical_transcription, MedicalTranscription.Repo, # The watchers configuration can be used to run external # watchers to your application. For example, we can use it # to bundle .js and .css sources. -config :medical_transcription, MedicalTranscriptionWeb.Endpoint, +config :medicode, MedicodeWeb.Endpoint, # Binding to loopback ipv4 address prevents access from other machines. # Change to `ip: {0, 0, 0, 0}` to allow access from other machines. http: [ip: {127, 0, 0, 1}, port: 4000], @@ -52,7 +52,7 @@ config :medical_transcription, MedicalTranscriptionWeb.Endpoint, # different ports. # Watch static and templates for browser reloading. -config :medical_transcription, MedicalTranscriptionWeb.Endpoint, +config :medicode, MedicodeWeb.Endpoint, live_reload: [ patterns: [ ~r"priv/static/.*(js|css|png|jpeg|jpg|gif|svg)$", @@ -63,7 +63,7 @@ config :medical_transcription, MedicalTranscriptionWeb.Endpoint, ] # Enable dev routes for dashboard, mailbox, and Phoenix storybook -config :medical_transcription, dev_routes: true +config :medicode, dev_routes: true # Do not include metadata nor timestamps in development logs config :logger, :console, format: "[$level] $message\n", truncate: :infinity diff --git a/config/prod.exs b/config/prod.exs index d7ed1cc1c84991b88ebf961461500ebc53d339ad..4cf4e3b65e022223e3efe7e286142a643d65304e 100644 --- a/config/prod.exs +++ b/config/prod.exs @@ -5,11 +5,11 @@ import Config # manifest is generated by the `mix assets.deploy` task, # which you should run after static files are built and # before starting your production server. -config :medical_transcription, MedicalTranscriptionWeb.Endpoint, +config :medicode, MedicodeWeb.Endpoint, cache_static_manifest: "priv/static/cache_manifest.json" # Configures Swoosh API Client -config :swoosh, api_client: Swoosh.ApiClient.Finch, finch_name: MedicalTranscription.Finch +config :swoosh, api_client: Swoosh.ApiClient.Finch, finch_name: Medicode.Finch # Disable Swoosh Local Memory Storage config :swoosh, local: false diff --git a/config/runtime.exs b/config/runtime.exs index beb6279b9ad1e118630adf6b9e5455a5cf0c368c..268e0fb98b198d9ff80f450e19112103501754c8 100644 --- a/config/runtime.exs +++ b/config/runtime.exs @@ -17,7 +17,7 @@ import Config # Alternatively, you can use `mix phx.gen.release` to generate a `bin/server` # script that automatically sets the env var above. if System.get_env("PHX_SERVER") do - config :medical_transcription, MedicalTranscriptionWeb.Endpoint, server: true + config :medicode, MedicodeWeb.Endpoint, server: true end if config_env() == :prod do @@ -31,7 +31,7 @@ if config_env() == :prod do # maybe_ipv6 = if System.get_env("ECTO_IPV6") in ~w(true 1), do: [:inet6], else: [] # Previously, this has `socket_options: maybe_ipv6`, but removing that appeared to help connect to the DB. - config :medical_transcription, MedicalTranscription.Repo, + config :medicode, Medicode.Repo, ssl: true, url: database_url, pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10"), @@ -60,9 +60,9 @@ if config_env() == :prod do host = System.get_env("PHX_HOST") || "example.com" port = String.to_integer(System.get_env("PORT") || "4000") - config :medical_transcription, :dns_cluster_query, System.get_env("DNS_CLUSTER_QUERY") + config :medicode, :dns_cluster_query, System.get_env("DNS_CLUSTER_QUERY") - config :medical_transcription, MedicalTranscriptionWeb.Endpoint, + config :medicode, MedicodeWeb.Endpoint, url: [host: host, port: 443, scheme: "https"], http: [ # Enable IPv6 and bind on all interfaces. @@ -79,7 +79,7 @@ if config_env() == :prod do # To get SSL working, you will need to add the `https` key # to your endpoint configuration: # - # config :medical_transcription, MedicalTranscriptionWeb.Endpoint, + # config :medicode, MedicodeWeb.Endpoint, # https: [ # ..., # port: 443, @@ -101,7 +101,7 @@ if config_env() == :prod do # We also recommend setting `force_ssl` in your endpoint, ensuring # no data is ever sent via http, always redirecting to https: # - # config :medical_transcription, MedicalTranscriptionWeb.Endpoint, + # config :medicode, MedicodeWeb.Endpoint, # force_ssl: [hsts: true] # # Check `Plug.SSL` for all available options in `force_ssl`. @@ -112,7 +112,7 @@ if config_env() == :prod do # Also, you may need to configure the Swoosh API client of your choice if you # are not using SMTP. Here is an example of the configuration: # - # config :medical_transcription, MedicalTranscription.Mailer, + # config :medicode, Medicode.Mailer, # adapter: Swoosh.Adapters.Mailgun, # api_key: System.get_env("MAILGUN_API_KEY"), # domain: System.get_env("MAILGUN_DOMAIN") diff --git a/config/test.exs b/config/test.exs index 176603d2f094da23b528a638e36a6b2bad4b85e0..3fff113f5da13d94059e473fdf8dcb9dd17f492e 100644 --- a/config/test.exs +++ b/config/test.exs @@ -9,12 +9,12 @@ config :argon2_elixir, t_cost: 1, m_cost: 8 # to provide built-in test partitioning in CI environment. # Run `mix help test` for more information. if System.get_env("DATABASE_URL") do - config :medical_transcription, MedicalTranscription.Repo, + config :medicode, Medicode.Repo, url: System.get_env("DATABASE_URL"), pool: Ecto.Adapters.SQL.Sandbox, pool_size: 10 else - config :medical_transcription, MedicalTranscription.Repo, + config :medicode, Medicode.Repo, hostname: "localhost", database: "medical_transcription_test#{System.get_env("MIX_TEST_PARTITION")}", pool: Ecto.Adapters.SQL.Sandbox, @@ -23,13 +23,13 @@ end # We don't run a server during test. If one is required, # you can enable the server option below. -config :medical_transcription, MedicalTranscriptionWeb.Endpoint, +config :medicode, MedicodeWeb.Endpoint, http: [ip: {127, 0, 0, 1}, port: 4002], secret_key_base: "s9xRSMfdt6SYbFLJij5dkfi2Nsg7T+CqLJBss2yRy7nlVbZXr1Nd9AsR44meYkBa", server: false # In test we don't send emails. -config :medical_transcription, MedicalTranscription.Mailer, adapter: Swoosh.Adapters.Test +config :medicode, Medicode.Mailer, adapter: Swoosh.Adapters.Test # Disable swoosh api client as it is only required for production adapters. config :swoosh, :api_client, false diff --git a/lib/medical_transcription.ex b/lib/medical_transcription.ex index 4989ee93e5643bcd232a64d1b2c6b4349c58b6ed..2af0d7f610ee77d03639e2362f89ffd897665b62 100644 --- a/lib/medical_transcription.ex +++ b/lib/medical_transcription.ex @@ -1,6 +1,6 @@ -defmodule MedicalTranscription do +defmodule Medicode do @moduledoc """ - MedicalTranscription keeps the contexts that define your domain + Medicode keeps the contexts that define your domain and business logic. Contexts are also responsible for managing your data, regardless diff --git a/lib/medical_transcription/accounts.ex b/lib/medical_transcription/accounts.ex index def57cbaadf84ac44ed5a4d86444ab6ec2e8eb62..1b0f910486df41a7ed4f5d49c0805c7a473874ad 100644 --- a/lib/medical_transcription/accounts.ex +++ b/lib/medical_transcription/accounts.ex @@ -1,12 +1,12 @@ -defmodule MedicalTranscription.Accounts do +defmodule Medicode.Accounts do @moduledoc """ The Accounts context. """ import Ecto.Query, warn: false - alias MedicalTranscription.Accounts.{User, UserNotifier, UserToken} - alias MedicalTranscription.Repo + alias Medicode.Accounts.{User, UserNotifier, UserToken} + alias Medicode.Repo ## Database getters diff --git a/lib/medical_transcription/accounts/user.ex b/lib/medical_transcription/accounts/user.ex index 7237f33549d42ece962d5a8d8e7d85a5e3dd8981..32dd4279beeb6c85a549baa23a11863ae74cf170 100644 --- a/lib/medical_transcription/accounts/user.ex +++ b/lib/medical_transcription/accounts/user.ex @@ -1,4 +1,4 @@ -defmodule MedicalTranscription.Accounts.User do +defmodule Medicode.Accounts.User do @moduledoc """ User schema """ @@ -16,8 +16,8 @@ defmodule MedicalTranscription.Accounts.User do field :hashed_password, :string, redact: true field :confirmed_at, :naive_datetime - has_many :transcriptions, MedicalTranscription.Transcriptions.Transcription - has_many :code_feedbacks, MedicalTranscription.Feedback.CodeFeedback + has_many :transcriptions, Medicode.Transcriptions.Transcription + has_many :code_feedbacks, Medicode.Feedback.CodeFeedback timestamps(type: :utc_datetime) end @@ -89,7 +89,7 @@ defmodule MedicalTranscription.Accounts.User do defp maybe_validate_unique_email(changeset, opts) do if Keyword.get(opts, :validate_email, true) do changeset - |> unsafe_validate_unique(:email, MedicalTranscription.Repo) + |> unsafe_validate_unique(:email, Medicode.Repo) |> unique_constraint(:email) else changeset @@ -145,7 +145,7 @@ defmodule MedicalTranscription.Accounts.User do `Argon2.no_user_verify/0` to avoid timing attacks. """ def valid_password?( - %MedicalTranscription.Accounts.User{hashed_password: hashed_password}, + %Medicode.Accounts.User{hashed_password: hashed_password}, password ) when is_binary(hashed_password) and byte_size(password) > 0 do diff --git a/lib/medical_transcription/accounts/user_notifier.ex b/lib/medical_transcription/accounts/user_notifier.ex index ebaadc446837982e67b38ef212cc0202021f238b..4baa30e59f9507e72767873b8fd66b3fbd672e78 100644 --- a/lib/medical_transcription/accounts/user_notifier.ex +++ b/lib/medical_transcription/accounts/user_notifier.ex @@ -1,18 +1,18 @@ -defmodule MedicalTranscription.Accounts.UserNotifier do +defmodule Medicode.Accounts.UserNotifier do @moduledoc """ Email notifications for user management """ import Swoosh.Email - alias MedicalTranscription.Mailer + alias Medicode.Mailer # Delivers the email using the application mailer. defp deliver(recipient, subject, body) do email = new() |> to(recipient) - |> from({"MedicalTranscription", "contact@example.com"}) + |> from({"Medicode", "contact@example.com"}) |> subject(subject) |> text_body(body) diff --git a/lib/medical_transcription/accounts/user_token.ex b/lib/medical_transcription/accounts/user_token.ex index b8acd8b5444795b7cce6f82ba647387751e16010..8f5aab8840cbf05715db1a5ca041bd689fb45582 100644 --- a/lib/medical_transcription/accounts/user_token.ex +++ b/lib/medical_transcription/accounts/user_token.ex @@ -1,11 +1,11 @@ -defmodule MedicalTranscription.Accounts.UserToken do +defmodule Medicode.Accounts.UserToken do @moduledoc """ Token schema """ use Ecto.Schema import Ecto.Query - alias MedicalTranscription.Accounts.UserToken + alias Medicode.Accounts.UserToken @hash_algorithm :sha256 @rand_size 32 @@ -23,7 +23,7 @@ defmodule MedicalTranscription.Accounts.UserToken do field :token, :binary field :context, :string field :sent_to, :string - belongs_to :user, MedicalTranscription.Accounts.User + belongs_to :user, Medicode.Accounts.User timestamps(updated_at: false) end diff --git a/lib/medical_transcription/application.ex b/lib/medical_transcription/application.ex index 96bac3d19ad4c86df7e27978f4d4bd16a82078bd..efb7774e14f71ef4af2288fe4a1569930fa3328c 100644 --- a/lib/medical_transcription/application.ex +++ b/lib/medical_transcription/application.ex @@ -1,4 +1,4 @@ -defmodule MedicalTranscription.Application do +defmodule Medicode.Application do # See https://hexdocs.pm/elixir/Application.html # for more information on OTP Applications @moduledoc false @@ -11,34 +11,34 @@ defmodule MedicalTranscription.Application do @impl true def start(_type, _args) do children = [ - MedicalTranscriptionWeb.Telemetry, - MedicalTranscription.Repo, + MedicodeWeb.Telemetry, + Medicode.Repo, {DNSCluster, - query: Application.get_env(:medical_transcription, :dns_cluster_query) || :ignore}, + query: Application.get_env(:medicode, :dns_cluster_query) || :ignore}, {Phoenix.PubSub, name: :medicode_pubsub}, # Start the Finch HTTP client for sending emails - {Finch, name: MedicalTranscription.Finch}, + {Finch, name: Medicode.Finch}, transcription_spec(), token_classification_spec(), text_embedding_spec(), {Registry, keys: :unique, name: :transcription_registry}, { - MedicalTranscription.TranscriptionSupervisor, + Medicode.TranscriptionSupervisor, strategy: :one_for_one, max_restarts: 1 }, { - MedicalTranscription.ClassificationSupervisor, + Medicode.ClassificationSupervisor, strategy: :one_for_one, max_restarts: 1 }, - # Start a worker by calling: MedicalTranscription.Worker.start_link(arg) - # {MedicalTranscription.Worker, arg}, + # Start a worker by calling: Medicode.Worker.start_link(arg) + # {Medicode.Worker, arg}, # Start to serve requests, typically the last entry - MedicalTranscriptionWeb.Endpoint + MedicodeWeb.Endpoint ] # See https://hexdocs.pm/elixir/Supervisor.html # for other strategies and supported options - opts = [strategy: :one_for_one, name: MedicalTranscription.Supervisor] + opts = [strategy: :one_for_one, name: Medicode.Supervisor] Supervisor.start_link(children, opts) end @@ -46,19 +46,19 @@ defmodule MedicalTranscription.Application do # whenever the application is updated. @impl true def config_change(changed, _new, removed) do - MedicalTranscriptionWeb.Endpoint.config_change(changed, removed) + MedicodeWeb.Endpoint.config_change(changed, removed) :ok end defp transcription_spec do - Transcriber.child_spec(MedicalTranscription.TranscriptionServing, @model_name) + Transcriber.child_spec(Medicode.TranscriptionServing, @model_name) end defp token_classification_spec do - KeywordFinder.token_classification_child_spec(MedicalTranscription.TokenClassificationServing) + KeywordFinder.token_classification_child_spec(Medicode.TokenClassificationServing) end defp text_embedding_spec do - Vectors.child_spec(MedicalTranscription.TextEmbeddingServing) + Vectors.child_spec(Medicode.TextEmbeddingServing) end end diff --git a/lib/medical_transcription/audio/recording_pipeline.ex b/lib/medical_transcription/audio/recording_pipeline.ex index 55363551dd01ad84e8d66c39673af2ec90aa8895..b06002da09832fda457d66f058da870825ce72c8 100644 --- a/lib/medical_transcription/audio/recording_pipeline.ex +++ b/lib/medical_transcription/audio/recording_pipeline.ex @@ -1,4 +1,4 @@ -defmodule MedicalTranscription.Audio.RecordingPipeline do +defmodule Medicode.Audio.RecordingPipeline do @moduledoc """ Creates a Membrane pipeline for streaming audio from the user's audio input, through the transcription filter, and to a destination process. @@ -32,7 +32,7 @@ defmodule MedicalTranscription.Audio.RecordingPipeline do # See https://app.asana.com/0/1206407201118057/1206451435774948/f # defp spec(destination_pid) do # child(%Membrane.PortAudio.Source{channels: 1, sample_format: :f32le, sample_rate: 16_000}) - # |> child(MedicalTranscription.Audio.TranscriptionFilter) + # |> child(Medicode.Audio.TranscriptionFilter) # |> child(%Membrane.Debug.Sink{ # handle_buffer: fn buffer -> # send(destination_pid, {:received_audio_payload, buffer.payload}) diff --git a/lib/medical_transcription/audio/transcription_filter.ex b/lib/medical_transcription/audio/transcription_filter.ex index e095be070df0d3f16c9a1498d2b0905fae2897a1..9ea0e977c8d1a8f07f1dadb400895a4eebbb5c06 100644 --- a/lib/medical_transcription/audio/transcription_filter.ex +++ b/lib/medical_transcription/audio/transcription_filter.ex @@ -1,4 +1,4 @@ -defmodule MedicalTranscription.Audio.TranscriptionFilter do +defmodule Medicode.Audio.TranscriptionFilter do @moduledoc """ A Membrane filter to transcribe audio with the Whisper model. @@ -87,7 +87,7 @@ defmodule MedicalTranscription.Audio.TranscriptionFilter do # and prepend it to the subsequent chunk. speech = if state.speech == <<>> do - MedicalTranscription.Audio.Utilities.filter_silence(data, state) + Medicode.Audio.Utilities.filter_silence(data, state) else state.speech <> data end @@ -98,7 +98,7 @@ defmodule MedicalTranscription.Audio.TranscriptionFilter do model_input = Nx.from_binary(speech, :f32) result = - Nx.Serving.batched_run(MedicalTranscription.TranscriptionServing, model_input) + Nx.Serving.batched_run(Medicode.TranscriptionServing, model_input) |> Enum.into([]) transcription = Enum.map_join(result, & &1.text) diff --git a/lib/medical_transcription/audio/utilities.ex b/lib/medical_transcription/audio/utilities.ex index 0c7560092fad020b2d52635636c88b088759872e..2de6a0f56dc0f7ff3e31e271fb5db3a97baa6b8c 100644 --- a/lib/medical_transcription/audio/utilities.ex +++ b/lib/medical_transcription/audio/utilities.ex @@ -1,4 +1,4 @@ -defmodule MedicalTranscription.Audio.Utilities do +defmodule Medicode.Audio.Utilities do @moduledoc """ Holds audio processing utility functions. """ diff --git a/lib/medical_transcription/classification_server.ex b/lib/medical_transcription/classification_server.ex index 312b17937612a88722c590ee92e4e6d34e745ff4..197ae7b7f0b99b07760561aad225f980264d1252 100644 --- a/lib/medical_transcription/classification_server.ex +++ b/lib/medical_transcription/classification_server.ex @@ -1,4 +1,4 @@ -defmodule MedicalTranscription.ClassificationServer do +defmodule Medicode.ClassificationServer do @moduledoc """ GenServer responsible for classifying transcription text """ @@ -6,9 +6,9 @@ defmodule MedicalTranscription.ClassificationServer do alias AudioTagger.KeywordFinder - alias MedicalTranscription.Coding - alias MedicalTranscription.Coding.CodeVectorMatch - alias MedicalTranscription.Transcriptions + alias Medicode.Coding + alias Medicode.Coding.CodeVectorMatch + alias Medicode.Transcriptions @registry :transcription_registry @@ -89,7 +89,7 @@ defmodule MedicalTranscription.ClassificationServer do defp find_keywords(chunk) do %{entities: entities} = - Nx.Serving.batched_run(MedicalTranscription.TokenClassificationServing, chunk.text) + Nx.Serving.batched_run(Medicode.TokenClassificationServing, chunk.text) phrases = KeywordFinder.cleanup_phrases(entities) diff --git a/lib/medical_transcription/classification_supervisor.ex b/lib/medical_transcription/classification_supervisor.ex index 03a669aef2dda84e0677ac6347523ce609128ad7..5d27d17b1d3862d22289fce2de38616824424ee8 100644 --- a/lib/medical_transcription/classification_supervisor.ex +++ b/lib/medical_transcription/classification_supervisor.ex @@ -1,4 +1,4 @@ -defmodule MedicalTranscription.ClassificationSupervisor do +defmodule Medicode.ClassificationSupervisor do # Automatically defines child_spec/1 use DynamicSupervisor @@ -14,7 +14,7 @@ defmodule MedicalTranscription.ClassificationSupervisor do def start_classification(transcription_chunk) do # Shorthand to retrieve the child specification from the `child_spec/1` method of the given module. spec = { - MedicalTranscription.ClassificationServer, + Medicode.ClassificationServer, %{chunk: transcription_chunk, name: "transcription_chunk:#{transcription_chunk.id}"} } diff --git a/lib/medical_transcription/coding.ex b/lib/medical_transcription/coding.ex index 2e081488bc111d81525339bac4b0ee3b1cf447f6..0701489a4131cf53b10bd89b0f5c604fdab75965 100644 --- a/lib/medical_transcription/coding.ex +++ b/lib/medical_transcription/coding.ex @@ -1,15 +1,15 @@ -defmodule MedicalTranscription.Coding do +defmodule Medicode.Coding do @moduledoc """ Takes a portion of text and searches for closely matching results within a list of vectors, by using AudioTagger's SemanticSearch module. """ - alias MedicalTranscription.Repo + alias Medicode.Repo import Ecto.Query import Pgvector.Ecto.Query - alias MedicalTranscription.Coding.{CodeVector, CodeVectorMatch} - alias MedicalTranscription.Transcriptions.TranscriptionChunk + alias Medicode.Coding.{CodeVector, CodeVectorMatch} + alias Medicode.Transcriptions.TranscriptionChunk def insert_vector(params) do changeset = CodeVector.changeset(%CodeVector{}, params) @@ -73,7 +73,7 @@ defmodule MedicalTranscription.Coding do search_vector_for_db = compute_vector_as_list(text) past_feedbacks = - MedicalTranscription.Feedback.find_related_feedback(search_vector_for_db, opts) + Medicode.Feedback.find_related_feedback(search_vector_for_db, opts) code_vectors = find_similar(search_vector_for_db, k) code_vectors_for_feedback = find_for_feedback(search_vector_for_db, past_feedbacks) @@ -88,7 +88,7 @@ defmodule MedicalTranscription.Coding do @doc "Creates a vector embedding for text using the text embedding serving in the application's supervision tree." def compute_vector_as_list(text) do - MedicalTranscription.TextEmbeddingServing + Medicode.TextEmbeddingServing |> Nx.Serving.batched_run(text) |> Map.get(:embedding) |> Nx.to_flat_list() diff --git a/lib/medical_transcription/coding/code_vector.ex b/lib/medical_transcription/coding/code_vector.ex index 36f010db55ae58b3df23d0f80d70173f3c81840d..5485f38734e3a16fd9fa888cdc9403a65229df64 100644 --- a/lib/medical_transcription/coding/code_vector.ex +++ b/lib/medical_transcription/coding/code_vector.ex @@ -1,4 +1,4 @@ -defmodule MedicalTranscription.Coding.CodeVector do +defmodule Medicode.Coding.CodeVector do @moduledoc """ Represents a code and its description, along with a vector embedding for its description. """ @@ -13,7 +13,7 @@ defmodule MedicalTranscription.Coding.CodeVector do field :description_vector, Pgvector.Ecto.Vector, redact: true has_many :transcription_chunk_code_vectors, - MedicalTranscription.Transcriptions.TranscriptionChunkCodeVector + Medicode.Transcriptions.TranscriptionChunkCodeVector has_many :transcription_chunks, through: [:transcription_chunk_code_vectors, :transcription_chunk] diff --git a/lib/medical_transcription/coding/code_vector_match.ex b/lib/medical_transcription/coding/code_vector_match.ex index 1b313ae8df79d2fc2fc42f64ae1749cf7bf87481..3511aacb0cbabc73a8b89c7b3da4bff0dbb4dd3e 100644 --- a/lib/medical_transcription/coding/code_vector_match.ex +++ b/lib/medical_transcription/coding/code_vector_match.ex @@ -1,4 +1,4 @@ -defmodule MedicalTranscription.Coding.CodeVectorMatch do +defmodule Medicode.Coding.CodeVectorMatch do @moduledoc """ Represents a vector match found in the database, along with its similarity score. """ diff --git a/lib/medical_transcription/coding/vector_precomputation.ex b/lib/medical_transcription/coding/vector_precomputation.ex index aac9e6cee64adb11cad214499fe2240183314b30..99a2d0e5ef8da502dcec923e4d28a672ed16711b 100644 --- a/lib/medical_transcription/coding/vector_precomputation.ex +++ b/lib/medical_transcription/coding/vector_precomputation.ex @@ -1,7 +1,7 @@ -defmodule MedicalTranscription.Coding.VectorPrecomputation do +defmodule Medicode.Coding.VectorPrecomputation do @moduledoc "Populate database with vector embeddings from downloaded ICD-9 code list" - alias MedicalTranscription.Coding + alias Medicode.Coding @doc "Downloads the ICD-9 codelist, calculates vector embeddings for each, and adds them to the database" def run do diff --git a/lib/medical_transcription/feedback.ex b/lib/medical_transcription/feedback.ex index dbfa33a4c8c6954396f1dd130be6bfb2dcdf3293..090c967fcffb5aa0ccc3d129f65732402d7cce83 100644 --- a/lib/medical_transcription/feedback.ex +++ b/lib/medical_transcription/feedback.ex @@ -1,4 +1,4 @@ -defmodule MedicalTranscription.Feedback do +defmodule Medicode.Feedback do @moduledoc """ Context for managing user feedback on transcribed text and codes. """ @@ -6,8 +6,8 @@ defmodule MedicalTranscription.Feedback do import Pgvector.Ecto.Query, only: [cosine_distance: 2] alias Ecto.Multi - alias MedicalTranscription.Feedback.CodeFeedback - alias MedicalTranscription.Repo + alias Medicode.Feedback.CodeFeedback + alias Medicode.Repo def track_response(params) do # TODO: Move this changeset into Multi and read errors from the result within the case statement diff --git a/lib/medical_transcription/feedback/code_feedback.ex b/lib/medical_transcription/feedback/code_feedback.ex index b3e358f6fa3503b9013eb8758256d8d8a86824d8..bc7929b5fe2b259c594ed450fd4f41bc0119c6c9 100644 --- a/lib/medical_transcription/feedback/code_feedback.ex +++ b/lib/medical_transcription/feedback/code_feedback.ex @@ -1,4 +1,4 @@ -defmodule MedicalTranscription.Feedback.CodeFeedback do +defmodule Medicode.Feedback.CodeFeedback do @moduledoc """ Represents a user's feedback on a given code classification. """ @@ -11,8 +11,8 @@ defmodule MedicalTranscription.Feedback.CodeFeedback do field(:text_vector, Pgvector.Ecto.Vector) field(:response, :boolean) - belongs_to(:code_vector, MedicalTranscription.Coding.CodeVector) - belongs_to(:user, MedicalTranscription.Accounts.User) + belongs_to(:code_vector, Medicode.Coding.CodeVector) + belongs_to(:user, Medicode.Accounts.User) timestamps(type: :utc_datetime) end diff --git a/lib/medical_transcription/mailer.ex b/lib/medical_transcription/mailer.ex index dd9e0e960590ebfc0483d8ff50a3d9364153bade..20927dfccf8ec4e5606f6748b329e5810ea9d98a 100644 --- a/lib/medical_transcription/mailer.ex +++ b/lib/medical_transcription/mailer.ex @@ -1,3 +1,3 @@ -defmodule MedicalTranscription.Mailer do - use Swoosh.Mailer, otp_app: :medical_transcription +defmodule Medicode.Mailer do + use Swoosh.Mailer, otp_app: :medicode end diff --git a/lib/medical_transcription/release.ex b/lib/medical_transcription/release.ex index 2f41cd63867a7c92e3021e396a03130f9cfaa3e0..079d5e133d34974a48d8ed5c9a00b0482f0e2475 100644 --- a/lib/medical_transcription/release.ex +++ b/lib/medical_transcription/release.ex @@ -1,9 +1,9 @@ -defmodule MedicalTranscription.Release do +defmodule Medicode.Release do @moduledoc """ Used for executing DB release tasks when run in production without Mix installed. """ - @app :medical_transcription + @app :medicode def migrate do load_app() @@ -20,9 +20,9 @@ defmodule MedicalTranscription.Release do def precompute_code_vectors do load_app() - Application.ensure_all_started(:medical_transcription) + Application.ensure_all_started(:medicode) - MedicalTranscription.Coding.VectorPrecomputation.run() + Medicode.Coding.VectorPrecomputation.run() end defp repos do diff --git a/lib/medical_transcription/repo.ex b/lib/medical_transcription/repo.ex index 61e05b11d4184da337a82c4eeb07102079156643..e43c6627afd81beb4fa244bb056a92fcf6509c72 100644 --- a/lib/medical_transcription/repo.ex +++ b/lib/medical_transcription/repo.ex @@ -1,6 +1,6 @@ -defmodule MedicalTranscription.Repo do +defmodule Medicode.Repo do use Ecto.Repo, - otp_app: :medical_transcription, + otp_app: :medicode, adapter: Ecto.Adapters.Postgres def collect_errors(changeset) do diff --git a/lib/medical_transcription/transcription_server.ex b/lib/medical_transcription/transcription_server.ex index 010809d48bd181bcd4b229fcba44b8cf01b153a1..e4980b5044b7b148b78942fbe80cabdeaa3db3c5 100644 --- a/lib/medical_transcription/transcription_server.ex +++ b/lib/medical_transcription/transcription_server.ex @@ -1,11 +1,11 @@ -defmodule MedicalTranscription.TranscriptionServer do +defmodule Medicode.TranscriptionServer do @moduledoc """ GenServer responsible for transcribing audio files """ use GenServer - alias MedicalTranscription.Transcriptions - alias MedicalTranscription.Transcriptions.Transcription + alias Medicode.Transcriptions + alias Medicode.Transcriptions.Transcription @registry :transcription_registry @@ -72,7 +72,7 @@ defmodule MedicalTranscription.TranscriptionServer do {:transcription_updated, chunk} ) - MedicalTranscription.ClassificationSupervisor.start_classification(chunk) + Medicode.ClassificationSupervisor.start_classification(chunk) {:noreply, state} end @@ -111,7 +111,7 @@ defmodule MedicalTranscription.TranscriptionServer do defp stream_transcription_and_search(audio_file_path) do # audio transcription + semantic search summary_text = - MedicalTranscription.TranscriptionServing + Medicode.TranscriptionServing |> Nx.Serving.batched_run({:file, audio_file_path}) |> Stream.with_index() |> Stream.map(fn {chunk, index} -> diff --git a/lib/medical_transcription/transcription_supervisor.ex b/lib/medical_transcription/transcription_supervisor.ex index 989d0139111f900bcdce47e3f36951f3f07c1ee6..7fdc306f0768aa2f47566c681a31c577fd1fdcad 100644 --- a/lib/medical_transcription/transcription_supervisor.ex +++ b/lib/medical_transcription/transcription_supervisor.ex @@ -1,4 +1,4 @@ -defmodule MedicalTranscription.TranscriptionSupervisor do +defmodule Medicode.TranscriptionSupervisor do # Automatically defines child_spec/1 use DynamicSupervisor @@ -13,7 +13,7 @@ defmodule MedicalTranscription.TranscriptionSupervisor do def start_transcription(transcription) do spec = { - MedicalTranscription.TranscriptionServer, + Medicode.TranscriptionServer, %{transcription: transcription, name: "transcription:#{transcription.id}"} } diff --git a/lib/medical_transcription/transcriptions.ex b/lib/medical_transcription/transcriptions.ex index 2a57ed0c639e0621b36e07d28e9230cbc8ddbb3a..80ecf5aae6f15cf5a4e5f84546c626fe8b50c1c3 100644 --- a/lib/medical_transcription/transcriptions.ex +++ b/lib/medical_transcription/transcriptions.ex @@ -1,4 +1,4 @@ -defmodule MedicalTranscription.Transcriptions do +defmodule Medicode.Transcriptions do @moduledoc """ The Transcriptions context. """ @@ -7,9 +7,9 @@ defmodule MedicalTranscription.Transcriptions do alias Ecto.Changeset - alias MedicalTranscription.Repo + alias Medicode.Repo - alias MedicalTranscription.Transcriptions.{ + alias Medicode.Transcriptions.{ Transcription, TranscriptionChunk, TranscriptionChunkKeyword, @@ -25,7 +25,7 @@ defmodule MedicalTranscription.Transcriptions do %Transcription{audio_file: "my-audio.mp3"} """ def transcribe_audio(transcription) do - MedicalTranscription.TranscriptionSupervisor.start_transcription(transcription) + Medicode.TranscriptionSupervisor.start_transcription(transcription) end @doc """ @@ -162,8 +162,8 @@ defmodule MedicalTranscription.Transcriptions do v.assigned_by_user_id == ^assigned_by_user_id ) - with %TranscriptionChunkCodeVector{} = chunk_vector <- MedicalTranscription.Repo.one(query), - {:ok, _struct} <- MedicalTranscription.Repo.delete(chunk_vector) do + with %TranscriptionChunkCodeVector{} = chunk_vector <- Medicode.Repo.one(query), + {:ok, _struct} <- Medicode.Repo.delete(chunk_vector) do {:ok, chunk_vector} else res -> res diff --git a/lib/medical_transcription/transcriptions/transcription.ex b/lib/medical_transcription/transcriptions/transcription.ex index 15787cc933b7b80e89779402cbb6d0c837e36809..31aab878c7806ba57fa74eef2740fe522f6499f8 100644 --- a/lib/medical_transcription/transcriptions/transcription.ex +++ b/lib/medical_transcription/transcriptions/transcription.ex @@ -1,4 +1,4 @@ -defmodule MedicalTranscription.Transcriptions.Transcription do +defmodule Medicode.Transcriptions.Transcription do @moduledoc """ Transcription schema """ @@ -15,9 +15,9 @@ defmodule MedicalTranscription.Transcriptions.Transcription do field :status, Ecto.Enum, values: [new: 0, waiting: 1, transcribing: 2, finished: 3, failed: 4] - belongs_to :user, MedicalTranscription.Accounts.User + belongs_to :user, Medicode.Accounts.User - has_many :chunks, MedicalTranscription.Transcriptions.TranscriptionChunk + has_many :chunks, Medicode.Transcriptions.TranscriptionChunk timestamps(type: :utc_datetime) end diff --git a/lib/medical_transcription/transcriptions/transcription_chunk.ex b/lib/medical_transcription/transcriptions/transcription_chunk.ex index c36780d3725a69550caec0a47df3f00dc1bff63a..1ba87c2183fdd50410a77aab05efdf017e3169d3 100644 --- a/lib/medical_transcription/transcriptions/transcription_chunk.ex +++ b/lib/medical_transcription/transcriptions/transcription_chunk.ex @@ -1,4 +1,4 @@ -defmodule MedicalTranscription.Transcriptions.TranscriptionChunk do +defmodule Medicode.Transcriptions.TranscriptionChunk do use Ecto.Schema import Ecto.Changeset @@ -9,13 +9,13 @@ defmodule MedicalTranscription.Transcriptions.TranscriptionChunk do field(:start_mark, :string) field(:end_mark, :string) - belongs_to(:transcription, MedicalTranscription.Transcriptions.Transcription) + belongs_to(:transcription, Medicode.Transcriptions.Transcription) - has_many(:keywords, MedicalTranscription.Transcriptions.TranscriptionChunkKeyword) + has_many(:keywords, Medicode.Transcriptions.TranscriptionChunkKeyword) has_many( :transcription_chunk_code_vectors, - MedicalTranscription.Transcriptions.TranscriptionChunkCodeVector + Medicode.Transcriptions.TranscriptionChunkCodeVector ) has_many(:code_vectors, @@ -23,7 +23,7 @@ defmodule MedicalTranscription.Transcriptions.TranscriptionChunk do preload_order: [desc: :cosine_similarity] ) - has_many(:code_feedbacks, MedicalTranscription.Feedback.CodeFeedback) + has_many(:code_feedbacks, Medicode.Feedback.CodeFeedback) timestamps(type: :utc_datetime) end diff --git a/lib/medical_transcription/transcriptions/transcription_chunk_code_vector.ex b/lib/medical_transcription/transcriptions/transcription_chunk_code_vector.ex index 6078423ee0b3860c72aaccf46a1d33c4c5f05be3..615978c506fa02bf8a6773476fc4e6b775934825 100644 --- a/lib/medical_transcription/transcriptions/transcription_chunk_code_vector.ex +++ b/lib/medical_transcription/transcriptions/transcription_chunk_code_vector.ex @@ -1,4 +1,4 @@ -defmodule MedicalTranscription.Transcriptions.TranscriptionChunkCodeVector do +defmodule Medicode.Transcriptions.TranscriptionChunkCodeVector do use Ecto.Schema import Ecto.Changeset @@ -8,9 +8,9 @@ defmodule MedicalTranscription.Transcriptions.TranscriptionChunkCodeVector do field :cosine_similarity, :float field :weighting, {:array, :string} - belongs_to :transcription_chunk, MedicalTranscription.Transcriptions.TranscriptionChunk - belongs_to :code_vector, MedicalTranscription.Coding.CodeVector - belongs_to :assigned_by_user, MedicalTranscription.Accounts.User + belongs_to :transcription_chunk, Medicode.Transcriptions.TranscriptionChunk + belongs_to :code_vector, Medicode.Coding.CodeVector + belongs_to :assigned_by_user, Medicode.Accounts.User timestamps(type: :utc_datetime) end diff --git a/lib/medical_transcription/transcriptions/transcription_chunk_keyword.ex b/lib/medical_transcription/transcriptions/transcription_chunk_keyword.ex index 662a09669b280e281b32112bf2735494e7372cf0..a41838e0d385ab9be8d82f659cfd766d869ec796 100644 --- a/lib/medical_transcription/transcriptions/transcription_chunk_keyword.ex +++ b/lib/medical_transcription/transcriptions/transcription_chunk_keyword.ex @@ -1,4 +1,4 @@ -defmodule MedicalTranscription.Transcriptions.TranscriptionChunkKeyword do +defmodule Medicode.Transcriptions.TranscriptionChunkKeyword do use Ecto.Schema import Ecto.Changeset @@ -8,7 +8,7 @@ defmodule MedicalTranscription.Transcriptions.TranscriptionChunkKeyword do field :keyword, :string field :score, :float - belongs_to :transcription_chunk, MedicalTranscription.Transcriptions.TranscriptionChunk + belongs_to :transcription_chunk, Medicode.Transcriptions.TranscriptionChunk timestamps(type: :utc_datetime) end diff --git a/lib/medical_transcription/utilities.ex b/lib/medical_transcription/utilities.ex index 63bcdfbfc4baabe8f576fb46bc9a2e3fdf31eec6..6c8c12d1f98aca9dc3aac79882eceba90671092f 100644 --- a/lib/medical_transcription/utilities.ex +++ b/lib/medical_transcription/utilities.ex @@ -1,4 +1,4 @@ -defmodule MedicalTranscription.Utilities do +defmodule Medicode.Utilities do @moduledoc """ Contains general utility functions that are not specific to a domain or context in the system. """ diff --git a/lib/medical_transcription_web.ex b/lib/medical_transcription_web.ex index 99ced349989226a761c0b9b4ff42f818d6438672..c5e9e9ca189719570fb00ffd77b5238d03e9d7d0 100644 --- a/lib/medical_transcription_web.ex +++ b/lib/medical_transcription_web.ex @@ -1,12 +1,12 @@ -defmodule MedicalTranscriptionWeb do +defmodule MedicodeWeb do @moduledoc """ The entrypoint for defining your web interface, such as controllers, components, channels, and so on. This can be used in your application as: - use MedicalTranscriptionWeb, :controller - use MedicalTranscriptionWeb, :html + use MedicodeWeb, :controller + use MedicodeWeb, :html The definitions below will be executed for every controller, component, etc, so keep them short and clean, focused @@ -40,10 +40,10 @@ defmodule MedicalTranscriptionWeb do quote do use Phoenix.Controller, formats: [:html, :json], - layouts: [html: MedicalTranscriptionWeb.Layouts] + layouts: [html: MedicodeWeb.Layouts] import Plug.Conn - import MedicalTranscriptionWeb.Gettext + import MedicodeWeb.Gettext unquote(verified_routes()) end @@ -52,7 +52,7 @@ defmodule MedicalTranscriptionWeb do def live_view do quote do use Phoenix.LiveView, - layout: {MedicalTranscriptionWeb.Layouts, :app} + layout: {MedicodeWeb.Layouts, :app} unquote(html_helpers()) end @@ -84,9 +84,9 @@ defmodule MedicalTranscriptionWeb do # HTML escaping functionality import Phoenix.HTML # Core UI components and translation - import MedicalTranscriptionWeb.CoreComponents - import MedicalTranscriptionWeb.Components - import MedicalTranscriptionWeb.Gettext + import MedicodeWeb.CoreComponents + import MedicodeWeb.Components + import MedicodeWeb.Gettext # Shortcut for generating JS commands alias Phoenix.LiveView.JS @@ -99,9 +99,9 @@ defmodule MedicalTranscriptionWeb do def verified_routes do quote do use Phoenix.VerifiedRoutes, - endpoint: MedicalTranscriptionWeb.Endpoint, - router: MedicalTranscriptionWeb.Router, - statics: MedicalTranscriptionWeb.static_paths() + endpoint: MedicodeWeb.Endpoint, + router: MedicodeWeb.Router, + statics: MedicodeWeb.static_paths() end end diff --git a/lib/medical_transcription_web/components/code_select.ex b/lib/medical_transcription_web/components/code_select.ex index cb2f786d481d3de9c372e497fc3f0daa90300696..ed8ed1c095d02b8648287f1bce71443c6b2fe693 100644 --- a/lib/medical_transcription_web/components/code_select.ex +++ b/lib/medical_transcription_web/components/code_select.ex @@ -1,14 +1,14 @@ -defmodule MedicalTranscriptionWeb.Components.CodeSelect do +defmodule MedicodeWeb.Components.CodeSelect do @moduledoc """ An auto-complete select field that allows users to search for codes to add by either `code` or `description`. """ - use MedicalTranscriptionWeb, :live_component + use MedicodeWeb, :live_component - import MedicalTranscriptionWeb.Components, only: [code_display: 1] + import MedicodeWeb.Components, only: [code_display: 1] - alias MedicalTranscription.Feedback - alias MedicalTranscription.Transcriptions + alias Medicode.Feedback + alias Medicode.Transcriptions @impl Phoenix.LiveComponent def mount(socket) do @@ -90,7 +90,7 @@ defmodule MedicalTranscriptionWeb.Components.CodeSelect do def handle_event("suggest-code", params, socket) do form_id = socket.assigns.form.id %{^form_id => %{"search_term" => value}} = params - suggested_codes = MedicalTranscription.Coding.search_for_code_vector(value) + suggested_codes = Medicode.Coding.search_for_code_vector(value) {:noreply, assign(socket, :codes, suggested_codes)} end @@ -101,7 +101,7 @@ defmodule MedicalTranscriptionWeb.Components.CodeSelect do def handle_event("choose-code", %{"code" => code}, socket) do selected_code = Enum.find(socket.assigns.codes, &(&1.code == code)) - text_vector = MedicalTranscription.Coding.compute_vector_as_list(socket.assigns.text) + text_vector = Medicode.Coding.compute_vector_as_list(socket.assigns.text) code_feedback = Feedback.insert_and_return(%{ @@ -118,13 +118,13 @@ defmodule MedicalTranscriptionWeb.Components.CodeSelect do cosine_similarity: 1.0 }) - send_update(MedicalTranscriptionWeb.Components.TranscriptionTextComponent, + send_update(MedicodeWeb.Components.TranscriptionTextComponent, id: "transcription-chunk-#{socket.assigns.chunk.id}", chunk: socket.assigns.chunk, chunk_id: socket.assigns.chunk.id, current_user: socket.assigns.current_user, - on_feedback: &MedicalTranscriptionWeb.TranscriptionsLive.Show.on_feedback/1, - on_remove_code: &MedicalTranscriptionWeb.TranscriptionsLive.Show.on_remove_code/1 + on_feedback: &MedicodeWeb.TranscriptionsLive.Show.on_feedback/1, + on_remove_code: &MedicodeWeb.TranscriptionsLive.Show.on_remove_code/1 ) Phoenix.PubSub.broadcast( diff --git a/lib/medical_transcription_web/components/components.ex b/lib/medical_transcription_web/components/components.ex index b9328f6939772e6ae314a16fa7f1ecc71ae93dfd..fed6af551ab07635c09360a5bd430a1486c03f46 100644 --- a/lib/medical_transcription_web/components/components.ex +++ b/lib/medical_transcription_web/components/components.ex @@ -1,14 +1,14 @@ -defmodule MedicalTranscriptionWeb.Components do +defmodule MedicodeWeb.Components do @moduledoc """ Functional UI components for the main transcription and coding view. """ use Phoenix.Component - use MedicalTranscriptionWeb, :verified_routes + use MedicodeWeb, :verified_routes - import MedicalTranscriptionWeb.CoreComponents + import MedicodeWeb.CoreComponents - alias MedicalTranscriptionWeb.Components.TranscriptionTextComponent + alias MedicodeWeb.Components.TranscriptionTextComponent attr(:audio_upload, Phoenix.LiveView.UploadConfig, required: true) @@ -70,7 +70,7 @@ defmodule MedicalTranscriptionWeb.Components do """ end - attr(:transcription, MedicalTranscription.Transcriptions.Transcription, required: true) + attr(:transcription, Medicode.Transcriptions.Transcription, required: true) attr(:summary_keywords, :list, default: []) @doc """ @@ -95,7 +95,7 @@ defmodule MedicalTranscriptionWeb.Components do <.record_button_in_heading status={@transcription.status} /> -
+
<%= @transcription.filename %>
diff --git a/lib/medical_transcription_web/components/core_components.ex b/lib/medical_transcription_web/components/core_components.ex index f151c604c979485f1ce0a275284d53fba9fa165d..3495b6259b60435e354b5a0438f4c38d80f4f210 100644 --- a/lib/medical_transcription_web/components/core_components.ex +++ b/lib/medical_transcription_web/components/core_components.ex @@ -1,4 +1,4 @@ -defmodule MedicalTranscriptionWeb.CoreComponents do +defmodule MedicodeWeb.CoreComponents do @moduledoc """ Provides core UI components. @@ -17,7 +17,7 @@ defmodule MedicalTranscriptionWeb.CoreComponents do use Phoenix.Component alias Phoenix.LiveView.JS - import MedicalTranscriptionWeb.Gettext + import MedicodeWeb.Gettext @doc """ Renders a modal. @@ -659,9 +659,9 @@ defmodule MedicalTranscriptionWeb.CoreComponents do # with our gettext backend as first argument. Translations are # available in the errors.po file (as we use the "errors" domain). if count = opts[:count] do - Gettext.dngettext(MedicalTranscriptionWeb.Gettext, "errors", msg, msg, count, opts) + Gettext.dngettext(MedicodeWeb.Gettext, "errors", msg, msg, count, opts) else - Gettext.dgettext(MedicalTranscriptionWeb.Gettext, "errors", msg, opts) + Gettext.dgettext(MedicodeWeb.Gettext, "errors", msg, opts) end end diff --git a/lib/medical_transcription_web/components/keyword_highlighter.ex b/lib/medical_transcription_web/components/keyword_highlighter.ex index fc091e2785926577a5ee6a78e17812b427e3f81c..882ea7ba65667815c6d902ac859afbc8267616b8 100644 --- a/lib/medical_transcription_web/components/keyword_highlighter.ex +++ b/lib/medical_transcription_web/components/keyword_highlighter.ex @@ -1,9 +1,9 @@ -defmodule MedicalTranscriptionWeb.Components.KeywordHighlighter do +defmodule MedicodeWeb.Components.KeywordHighlighter do @moduledoc """ Highlights keywords in transcription text by creating tags for each. """ - use MedicalTranscriptionWeb, :html + use MedicodeWeb, :html # alias Phoenix.HTML.Tag attr :text, :string, required: true diff --git a/lib/medical_transcription_web/components/layouts.ex b/lib/medical_transcription_web/components/layouts.ex index 800d6807e767a74bb383189a3187dd278ed20086..1c7bddb03206a85cd58619ce8521cb3753536130 100644 --- a/lib/medical_transcription_web/components/layouts.ex +++ b/lib/medical_transcription_web/components/layouts.ex @@ -1,5 +1,5 @@ -defmodule MedicalTranscriptionWeb.Layouts do - use MedicalTranscriptionWeb, :html +defmodule MedicodeWeb.Layouts do + use MedicodeWeb, :html embed_templates "layouts/*" end diff --git a/lib/medical_transcription_web/components/layouts/root.html.heex b/lib/medical_transcription_web/components/layouts/root.html.heex index 3eddea77cb15a313f439784558d45220a37f5c23..a271c558b80e38fbfd7eddf15048435471aaadbc 100644 --- a/lib/medical_transcription_web/components/layouts/root.html.heex +++ b/lib/medical_transcription_web/components/layouts/root.html.heex @@ -5,7 +5,7 @@ <.live_title suffix=" · Phoenix Framework"> - <%= assigns[:page_title] || "MedicalTranscription" %> + <%= assigns[:page_title] || "Medicode" %>