Packages

Elixir client for Medplum's FHIR API with resource and workflow helpers.

Current section

Files

Jump to
medplum_elixir lib medplum workflows care_coordination.ex
Raw

lib/medplum/workflows/care_coordination.ex

defmodule Medplum.Workflows.CareCoordination do
@moduledoc """
Care coordination and family workflow helpers.
"""
alias Medplum.Client
alias Medplum.Resources.CareTeam
alias Medplum.Resources.ClinicalImpression
alias Medplum.Resources.RelatedPerson
@spec care_teams_for_subject(Client.t(), String.t(), map()) :: Medplum.result()
def care_teams_for_subject(%Client{} = client, subject, params \\ %{}) do
CareTeam.search_by_subject(client, subject, params)
end
@spec active_care_teams_for_subject(Client.t(), String.t(), map()) :: Medplum.result()
def active_care_teams_for_subject(%Client{} = client, subject, params \\ %{}) do
params = Map.merge(params, %{"status" => "active"})
CareTeam.search_by_subject(client, subject, params)
end
@spec care_teams_for_participant(Client.t(), String.t(), map()) :: Medplum.result()
def care_teams_for_participant(%Client{} = client, participant, params \\ %{}) do
CareTeam.search_by_participant(client, participant, params)
end
@spec family_for_patient(Client.t(), String.t(), map()) :: Medplum.result()
def family_for_patient(%Client{} = client, patient, params \\ %{}) do
RelatedPerson.search_by_patient(client, patient, params)
end
@spec active_family_for_patient(Client.t(), String.t(), map()) :: Medplum.result()
def active_family_for_patient(%Client{} = client, patient, params \\ %{}) do
params = Map.merge(params, %{"active" => "true"})
RelatedPerson.search_by_patient(client, patient, params)
end
@spec clinical_impressions_for_patient(Client.t(), String.t(), map()) :: Medplum.result()
def clinical_impressions_for_patient(%Client{} = client, patient, params \\ %{}) do
ClinicalImpression.search_by_patient(client, patient, params)
end
@spec clinical_impressions_for_encounter(Client.t(), String.t(), map()) :: Medplum.result()
def clinical_impressions_for_encounter(%Client{} = client, encounter, params \\ %{}) do
ClinicalImpression.search_by_encounter(client, encounter, params)
end
@spec create_care_team(Client.t(), map()) :: Medplum.result()
def create_care_team(%Client{} = client, attrs) do
CareTeam.create(client, attrs)
end
@spec add_related_person(Client.t(), map()) :: Medplum.result()
def add_related_person(%Client{} = client, attrs) do
RelatedPerson.create(client, attrs)
end
end