File size: 1,397 Bytes
3f219b5
5579301
 
3f219b5
5579301
 
 
 
 
eb6a388
5579301
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3f219b5
 
5579301
 
 
25ab2ef
1e8f5e5
5d7ee9c
1e8f5e5
 
5d7ee9c
 
 
1e8f5e5
 
5d7ee9c
 
25ab2ef
5579301
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
defmodule Medicode.CodeVectorsFixtures do
  @moduledoc """
  This module defines test helpers for creating %CodeVector{}
  entities via the `Medicode.Coding` context.
  """

  @doc """
  Insert code vectors from cached csv file.
  """
  def insert_code_vector_fixtures do
    code_vectors =
      "../../../code_vectors.csv"
      |> Path.expand(__DIR__)
      |> File.stream!()
      |> CSV.decode(headers: true)
      |> Enum.take(5)
      |> Enum.map(fn {:ok,
                      %{
                        "code" => code,
                        "description" => description,
                        "description_vector" => description_vector
                      }} ->
        vector =
          description_vector
          |> String.replace_prefix("[", "")
          |> String.replace_suffix("]", "")
          |> String.split(",")
          |> Enum.map(&String.to_float/1)
          |> Pgvector.new()

        %{code: code, description: description, description_vector: vector}
      end)

    Medicode.Repo.insert_all(
      Medicode.Coding.CodeVector,
      code_vectors
    )
  end

  def code_vector_fixture(attrs \\ %{}) do
    {:ok, code_vector} =
      attrs
      |> Enum.into(%{
        code: "ABC",
        description: "My vector description",
        description_vector: Enum.to_list(1..384)
      })
      |> Medicode.Coding.create_code_vector()

    code_vector
  end
end