Packages

ISO/HL7 FHIR Application Server

Current section

Files

Jump to
hl7 lib hl7_loader.ex
Raw

lib/hl7_loader.ex

defmodule HL7.Loader do
@moduledoc false
@behaviour Xema.Loader
def testSchema(atom,id) do
case :filelib.is_file HL7.priv <> "schema/#{id}.schema.json" do
true -> atom
false -> [{atom}] # [{atom] # uncomment to see unsupported (yet) resourcees
end
end
def loadSchema(id) do
refs = :application.get_env(:hl7, "#{id}", [])
case refs do
[] -> name = HL7.priv <> "schema/#{id}.schema.json"
{_,bin} = :file.read_file name
# :io.format 'loadSchema: ~p~n', [name]
xema = Jason.decode!(bin) |> Xema.from_json_schema()
:application.set_env(:hl7, "#{id}", xema)
xema
schema -> schema end end
@spec fetch(binary) :: {:ok, map} | {:error, any}
def fetch(uri) do
base = :filename.basename(uri.path, '.schema.json')
refs = :application.get_env(:hl7, "#{base}", [])
# :io.format 'fetchSchema: ~p~n', [uri]
case refs do
[] -> xema = HL7.Loader.loadSchema("#{base}")
%{schema: mem} = xema ; {:ok, mem}
xema -> %{schema: mem} = xema ; {:ok, mem} end end
end