|
defmodule MedicodeWeb.TranscriptionReportsController do |
|
use MedicodeWeb, :controller |
|
|
|
alias Medicode.Transcriptions |
|
|
|
def show(conn, _params) do |
|
transcription = Transcriptions.get_transcription!(conn.params["id"]) |
|
text = Transcriptions.get_text_from_transcription(transcription) |
|
finalized_codes = Transcriptions.list_transcription_finalized_codes(transcription.id) |
|
|
|
conn = |
|
conn |
|
|> assign(:transcription, transcription) |
|
|> assign(:text, text) |
|
|> assign(:finalized_code_vectors, finalized_codes) |
|
|
|
{:ok, pdf} = to_pdf(conn.assigns) |
|
|
|
send_download( |
|
conn, |
|
{:binary, Base.decode64!(pdf)}, |
|
content_type: "application/pdf", |
|
filename: "transcription_report.pdf" |
|
) |
|
end |
|
|
|
defp to_pdf(assigns) do |
|
[ |
|
content: content(assigns), |
|
size: :a4 |
|
] |
|
|> ChromicPDF.Template.source_and_options() |
|
|> ChromicPDF.print_to_pdf() |
|
end |
|
|
|
defp content(assigns) do |
|
Phoenix.HTML.Safe.to_iodata( |
|
MedicodeWeb.Components.TranscriptionReportComponent.render(assigns) |
|
) |
|
end |
|
end |
|
|