Giter VIP home page Giter VIP logo

hygeia's Introduction

Hygeia

.github/workflows/branch_main.yml Coverage Status License Last Updated

Development

To start your Phoenix server:

  • Install wkhtmltopdf
  • Install poppler-utils (brew install poppler, apt-get install poppler-utils, apk add poppler-utils)
  • Install Elixir / Node / Erlang using asdf as specified in .tool-versions
  • Start Database
$ docker volume create postgres
$ docker run \
    --restart always \
    --name postgres \
    -v postgres:/var/lib/postgresql/data \
    -p 5432:5432 \
    -d \
    -e POSTGRES_PASSWORD="" \
    -e POSTGRES_USER="root" \
    -e POSTGRES_HOST_AUTH_METHOD="trust" \
    postgres:latest
  • Install dependencies with mix deps.get
  • Create Local .env file
  • Load Local .env file
  • Create and migrate your database with mix ecto.setup
  • Install Node.js dependencies with npm install inside the assets directory
  • Start Phoenix endpoint with mix phx.server

Now you can visit localhost:4000 from your browser.

Translation

Extract all translation strings to create *.pot-files:

mix gettext.extract

Then merge those into the localized *.po-files:

mix gettext.merge priv/gettext

You can now edit the translations using Poedit or similar software.

Environment Variables

See .env.example

Talks

COVID-19 contact tracing on the BEAM - Jonatan Männchen; Jeremy "Jay" Zahner | Code BEAM V Europe

hygeia's People

Contributors

atoncetti avatar dependabot[bot] avatar github-actions[bot] avatar janmrnak avatar jeremyzahner avatar lzurbriggen avatar maennchen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

hygeia's Issues

Optimierung Suchfunktion Organisationen

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
Möglich wäre, dass man in der Suche einen Filter einfügt, in dem man nach den Arten (Schule, Organisation usw. filtern kann.) So kann vermieden werden dass Organisationen aus Versehen doppelt angelegt werden.

  • Add Filter for Type to organisation chooser (this will not affect the organisation list on url /organisations)

Describe alternatives you've considered
Es wäre auch möglich den "Typ" der Organisation in den Suchindex aufzunehmen sodass man danach suchen kann.

Additional context
Mit der Umsetzung dieses Features sollten einige Dubletten vermieden werden können

References

E-Mail/SMS Text Bestätigungen: auf Verifizierung verweisen

Is your feature request related to a problem? Please describe.
Es bestehen viele Rückfragen da die Personen verwirrt sind wenn sie den Link öffnen und den Namen eingeben müssen.

Describe the solution you'd like
Der Text in dem wir den Link zu den Bestätigungen schicken könnte optimiert werden. Hier sollte auch auf die Verifizierung verwiesen werden. Z.B.: "Um Ihre Bestätigung zu erhalten öffnen Sie bitte folgenden Link und verifizieren sich dort mit Ihrem Vor- und Nachnamen"

Describe alternatives you've considered
Keine die nicht die Sicherheit der Verifizierung untergraben würden.

Additional context
None

References

RuntimeError: invalid value for property "resource". Expected a :map, got: nil.

Sentry Issue: BACKEND-14R

RuntimeError: invalid value for property "resource". Expected a :map, got: nil.

Original expression: {{ @body.case.person }}

  File "lib/hygeia_web/live/notification/case_assignee.sface", line 1, in anonymous fn/3 in HygeiaWeb.Notification.CaseAssignee.render/1
  File "lib/phoenix_live_view/diff.ex", line 342, in Phoenix.LiveView.Diff.traverse/6
  File "lib/phoenix_live_view/diff.ex", line 430, in anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/6
  File "lib/enum.ex", line 2193, in Enum."-reduce/3-lists^foldl/2-0-"/3
  File "lib/phoenix_live_view/diff.ex", line 342, in Phoenix.LiveView.Diff.traverse/6
...
(1 additional frame(s) were not displayed)

(RuntimeError invalid value for property "resource". Expected a :map, got: nil.

Original expression: {{ @body.case.person }}
)

Validate Case Status

Is your feature request related to a problem? Please describe.

  • A case may be closed even if it has ongoing hospitalizations or incomplete quarantine / isolation data
  • This leads to invalid statistics

Describe the solution you'd like

  • Do not allow to set status to done if there's incomplete information about quarantine / isolation
  • Force status hospitalization if there are ongoing hospitalizations
  • Move old cases back to respective states so that the information can be cleaned up

Describe alternatives you've considered

None

Additional context

None

References

  • forecast-sg#2363

Optimierung: Ausserkantonale Duplikate

Zusammenfassung

nach dem Klicken auf das Duplikat-Männli wird das Auswahl-Fenster nicht dargestellt bei ausserkantonalen Dublikaten und der Tracer kann nicht speichern, da er nicht die Berechtigung hat ausserkantonale Fälle zu sehen.
Hier bräuchte es eine Lösung.
Da ausserkantonale Fälle nicht von uns bearbeitet (getraced) werden, ist es evtl. auch nicht relevant sie als Dublikat anzuzeigen?
Könnte man die aus dem Dublettencheck raus lassen?
Oder gibt es sonst eine andere Lösung?


Schritt für Schritt zum Problem

  1. Eingabe eines Möglicher Index
  2. Dupplikat-Männli erscheint
  3. Klick auf Duplikat-Männli erzeugt ein Wartezeichen
  4. Danach kommt nichts mehr
  5. Man kann die KP nicht speichern

https://trello.com/c/cywmMmQ5/732-optimierung-ausserkantonale-dublikate


https://app.forecast.it/project/P-205/scoping/T2379

Set Tracer / Supervisor of Possible Index same as Index

Is your feature request related to a problem? Please describe.

  • Possible Index Cases are assigned to case management and not the tracer of the index case

Describe the solution you'd like

  • Add default_tracer_uuid & default_supervisor_uuid to URL params when linking from index case

Describe alternatives you've considered

  • Setting current user id (makes less sense)

Additional context

None

References

  • forecast-sg#2371

ArgumentError: expected `:after` cursor to match `:cursor_fields`

Sentry Issue: BACKEND-78

ArgumentError: expected `:after` cursor to match `:cursor_fields`
  File "lib/paginator/config.ex", line 55, in Paginator.Config.validate!/1
  File "lib/paginator.ex", line 177, in Paginator.paginate/4
  File "lib/hygeia_web/live/case_live/index.ex", line 182, in HygeiaWeb.CaseLive.Index.list_cases/1
  File "lib/hygeia_web/live/case_live/index.ex", line 99, in HygeiaWeb.CaseLive.Index."handle_params (overridable 1)"/3
  File "lib/phoenix_live_view/utils.ex", line 379, in anonymous fn/4 in Phoenix.LiveView.Utils.call_handle_params!/4
...
(3 additional frame(s) were not displayed)

(ArgumentError expected `:after` cursor to match `:cursor_fields`)

Verifizierung in Bestätigungen: Initialen angeben

Is your feature request related to a problem? Please describe.
Bei Familien mit mehreren Kindern wird z.B. bei allen Kindern die E-Mailadresse der Mutter angegeben. So ist völlig unklar wo sie welchen Namen eingeben muss um die Quarantänebestätigungen zu erhalten.

Describe the solution you'd like
Bei der Verifizierung sollte ein Hinweis darauf gegeben werden für wen die Bestätigung ist. Z.B. könnten die Initialen angegeben sein. Entweder direkt oder nach dem ersten Fehlversuch.

Describe alternatives you've considered
Keine die die Sicherheit nicht untergraben würden.

Additional context
None

References

Radio Button Contrast needs to be adjusted

Describe the bug

The active radio button does not have enough contrast.

To Reproduce

Steps to reproduce the behavior:

  1. Go to Case Detail Page
  2. Look at any radio button (both show & edit views)

Expected behavior

More contrast

Screenshots

contrast

Desktop (please complete the following information):

Any browser

Smartphone (please complete the following information):

Any browser

Additional context

Bootstrap Colors need to be refined.

References

  • Follow up from gitlab#193

Anpassung der Zeitzone

Zusammenfassung / Idee

Für Protokolleinträge bzw. den Änderungsverlauf sollte die Zeitanzeige angepasst werden auf CET/MEZ.
(Anzeige wenn man mit der Maus über den Eintrag fährt)
Evtl. wäre auch sinnvoll, dass beim Datum statt "gestern", "vor einer Woche" etc. das konkrete Datum und die Zeit steht.


Was verändert sich für die Tracer wenn umgesetzt

Man kann effektiv nachsehen wann eine Änderung vorgenommen worden ist


UndefinedFunctionError: function nil.first_name/0 is undefined

Sentry Issue: BACKEND-143

UndefinedFunctionError: function nil.first_name/0 is undefined
  ?, in nil.first_name/0
  File "lib/hygeia_web/live/notification/case_assignee.sface", line 11, in anonymous fn/2 in HygeiaWeb.Notification.CaseAssignee.render/1
  File "lib/phoenix_live_view/diff.ex", line 342, in Phoenix.LiveView.Diff.traverse/6
  File "lib/phoenix_live_view/diff.ex", line 430, in anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/6
  File "lib/enum.ex", line 2193, in Enum."-reduce/3-lists^foldl/2-0-"/3
...
(3 additional frame(s) were not displayed)

(UndefinedFunctionError function nil.first_name/0 is undefined)

TODO

  • Replace custom delete in CaseContext.delete_[case|person] with a Postgres Cascade Delete

References

Export Mandanten: Kanton der Indexperson angeben

Is your feature request related to a problem? Please describe.
Im Moment ist es anderen Kantonen beim Erhalt eines Exports (gemäss MED) nicht möglich den Fall einem Ursprungs-Kanton zuzuweisen. Vor allem wenn in einem Export KPs von mehreren Mandanten vorhanden sind ist das ein Problem.

Describe the solution you'd like
In der Exportliste der Mandanten sollte der Kanton der Indexperson angegeben sein.
Die anderen Kantone können in ihrem System den Anstecker der KP mit dem richtigen Kanton zuordnen (AI, AA, SG)

Describe alternatives you've considered
Manuelles hinzufügen des Index-Kantons nach dem Export

Additional context
Add any other context or screenshots about the feature request here.

References

404 on Case Hospital Organisation Delete

If an organisation linked in hospitalizations is deleted, the case detail page will show a 404.

Quickly Fix the 404 and implement a more permanent solution to the problem in #44

TODO

  • Make sure pages renders even with the missing id

Do not show Cases in Create Index Merge when not authorized

Sentry Issue: BACKEND-14G

MatchError: no match of right hand side value: false
  File "lib/hygeia_web/live/case_live/person_create_table.sface", line 265, in anonymous fn/5 in HygeiaWeb.CaseLive.PersonCreateTable.render/1
  File "lib/enum.ex", line 2193, in Enum."-reduce/3-lists^foldl/2-0-"/3
  File "lib/hygeia_web/live/case_live/person_create_table.sface", line 262, in anonymous fn/6 in HygeiaWeb.CaseLive.PersonCreateTable.render/1
  File "lib/phoenix_live_view/diff.ex", line 356, in Phoenix.LiveView.Diff.traverse/6
  File "lib/phoenix_live_view/diff.ex", line 430, in anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/6
...
(3 additional frame(s) were not displayed)

(MatchError no match of right hand side value: false)

https://app.forecast.it/project/P-205/scoping/T2379

Validate Date in Statistics

Sentry Issue: BACKEND-144

ArgumentError: cannot parse "20202-12-17" as date, reason: :invalid_format
  File "lib/calendar/date.ex", line 320, in Date.from_iso8601!/2
  File "lib/hygeia_web/live/statistics_live/timeline.ex", line 55, in HygeiaWeb.StatisticsLive.Timeline."handle_params (overridable 1)"/3
  File "lib/phoenix_live_view/utils.ex", line 379, in anonymous fn/4 in Phoenix.LiveView.Utils.call_handle_params!/4
  File "/__w/hygeia/hygeia/deps/telemetry/src/telemetry.erl", line 262, in :telemetry.span/3
  File "lib/phoenix_live_view/channel.ex", line 654, in Phoenix.LiveView.Channel.sync_handle_params_with_live_redirect/5
...
(3 additional frame(s) were not displayed)

(ArgumentError cannot parse "20202-12-17" as date, reason: :invalid_format)

https://app.forecast.it/project/P-205/scoping/T2433

Quarantänebestätigung für ausserkantonale KPs

Describe the bug
Für ausserkantonale KPs wird eine Quarantänebestätigung aus dem Kanton Appenzell Innerrhoden generiert. Das sollte behoben werden, so dass für die ausserkantonalen Fälle gar keine Bestätigung generiert wird.

To Reproduce

  1. KP in "Neuer möglicher Indexfall" erfasst
  2. Mandant auf ausserkantonal z.B. Kanton Zürich
  3. KP speichern
  4. KP-Fall aufrufen
  5. Aktionen -> Quarantänebestätigung
  6. Es wird eine Quarantänebestätigung aus dem Kanton Appenzell Innerrhoden ausgestellt.

Expected behavior
Für ausserkantonale KPs sollte keine Quarantäne verordnet werden.

Screenshots
None

Additional context
Das Problem ist bei einem Tracer aufgetaucht. Ich habe es im Testsystem reproduzieren können mit KPs aus zwei Kantonen.

References

Es werden alle 15 Min E-Mails versandt

Describe the bug
Es werden Mail alle 15 Min an folgende Adressen versandt:
(bibentibus-poteris-42)
(leonum-iconum-62)

To Reproduce
Meldung von Natalie Ruckert:
Die beiden Personen wohnen im gleichen Haushalt und haben sich über die Flut der Mails beschwert.

Expected behavior
Im Hygeia findet man Status: Vorübergehender Fehler

Screenshots

Desktop (please complete the following information):
Nicht bekannt auf Seite der IP und KP

Smartphone (please complete the following information):

Additional context
Interesseant ist möglicherweise, dass sie vom selben Tracer getraced wurden.

References
Bug aufgenommen im Trello

Dublettencheck zuklappen

Is your feature request related to a problem? Please describe.
Basisdaten: Bei gewissen Personen/Organisationen nimmt der Dublettencheck sehr viel Platz ein. Es wäre gewünscht dass man die Meldung mit den Dubletten zuklappen zu kann.

Describe the solution you'd like
Ein Zuklappen der angezeigten Dubletten sollte möglich sein.

Describe alternatives you've considered
Keine

Additional context
Es bleibt mehr Raum für relevante Informationen wenn der Dublettencheck bereits gemacht wurde

References

Open Source Hygeia

forecast-sg#2262

TODO before making repo public

  • Add License Files #4
  • Setup CI / CD #1
  • Connect private Deployment CI #6

TODO after making repo public

  • Change CI to use coveralls.github instead of coveralls.details
  • Setup Coveralls Account

TODO anytime

  • Add Docker Push Mirrors quay.io & Docker Hub
  • Add CONTRIBUTING guide (mentioning CLA)

Empty Tenant SMTP Settings

Sentry Report

Sentry Issue: BACKEND-147

ArgumentError: argument error
  Module "erlang", in :erlang.iolist_to_binary/1
  File "/__w/hygeia/hygeia/deps/gen_smtp/src/smtp_util.erl", line 145, in :smtp_util.combine_rfc822_addresses/1
  File "lib/hygeia/communication_context/email.ex", line 165, in Hygeia.CommunicationContext.Email.generate_message/2
  File "lib/hygeia/communication_context/email.ex", line 98, in Hygeia.CommunicationContext.Email.changeset/2
  File "lib/hygeia/communication_context.ex", line 98, in Hygeia.CommunicationContext.create_email/2
...
(3 additional frame(s) were not displayed)

(ArgumentError argument error)

Problem

  • The Tenants SMTP Settings were all empty, but not nil. Make sure nil is persisted to the DB when no settings are present.

References

Übertragungen Weitergegeben: IP erfassen

Vorgehen

  1. Übertragungen, Weitergegeben -> Neuer möglicher Indexfall
  2. Es wird eine Person aufgenommen die bereits Index ist (laufende Phase)
  3. Dublettencheck: Indexfall wird bei der Person ausgewählt
  4. Bei der Person wird zusätzlich zu der IP Phase eine KP Phase erstellt
  5. Die Indexphase wird beendet
  6. Der Tracer wird zurückgesetzt auf die Person, die die Übertragung erstellt hat

Describe alternatives you've considered
Theoretisch ist es nicht nötig dass hier eine Kontaktphase erstellt wird. Wenn die Person (wie es eigentlich korrekt wäre) über "neue Übertragung" erfasst wird, passiert das nicht. Wünschenswert wäre dass einfach der Index verknüpft wird. Ohne dass Anpassungen in dem Fall passieren.

References
https://trello.com/c/PUs3TNL2/828-%C3%BCbertragungen-weitergegeben-ip-erfassen

Activity Mapping Improvement

Is your feature request related to a problem? Please describe.

Currently, the activity mapping information for the BAG MED export is used the wrong way.

Describe the solution you'd like

  • Add new case status canceled
  • Set activity_mapping_yn
    • nil for first_contact
    • false for canceled
    • true for everything else
  • Remove Activity Mapping boolean from transmission
  • Migrate Activity Mapping Field to Comment Field that is always visible (no condition)

Describe alternatives you've considered

  • None

*Additional context

  • Metadata_MED_16122020

References

Case Phase sorting

Is your feature request related to a problem? Please describe.

The phases are sorted by creation date. This is not how they should be sorted logically.

Describe the solution you'd like

One of the options below:

  • Manual Sort
  • Sort by Type
  • Sort by date (quarantine / isolation)

Describe alternatives you've considered

None

Additional context

None

References

Self-Service: Übernahme von Tracer und TL

Zusammenfassung / Idee

Bei der Bestätigung von Einsendungen aus dem Self-Service (neue mögliche Indexfälle) sollte der TL und Tracer von der Indexperson übernommen werden.


Was verändert sich für die Tracer wenn umgesetzt

TL und Tracer müssen nicht extra angepasst werden


Vorteile wenn umgesetzt

Fehlervermeidung, Fälle verschwinden nicht aus Versehen


https://trello.com/c/CbFteMO3/781-self-service-%C3%BCbernahme-von-tracer-und-tl

https://app.forecast.it/project/P-205/scoping/T2554

Duplicate RecordView ID

Sentry Issue: BACKEND-14C

RuntimeError: found duplicate ID "case_select_value_recordview_f0c34ab4-3839-466a-927d-c87a4afae535" for component HygeiaWeb.RecordView when rendering template
  File "lib/phoenix_live_view/diff.ex", line 509, in anonymous fn/5 in Phoenix.LiveView.Diff.render_pending_components/6
  File "lib/enum.ex", line 2193, in Enum."-reduce/3-lists^foldl/2-0-"/3
  File "maps.erl", line 233, in :maps.fold_1/3
  File "lib/phoenix_live_view/diff.ex", line 502, in Phoenix.LiveView.Diff.render_pending_components/6
  File "lib/phoenix_live_view/diff.ex", line 212, in Phoenix.LiveView.Diff.write_component/5
...
(3 additional frame(s) were not displayed)

(RuntimeError found duplicate ID "case_select_value_recordview_f0c34ab4-3839-466a-927d-c87a4afae535" for component HygeiaWeb.RecordView when rendering template)

RuntimeError: found duplicate ID "case_value_recordview_33b6f689-9559-4a4d-b92c-c4f56cc88df0" for component Hyg...

Sentry Issue: BACKEND-4F

RuntimeError: found duplicate ID "case_value_recordview_33b6f689-9559-4a4d-b92c-c4f56cc88df0" for component HygeiaWeb.RecordView when rendering template
  File "lib/phoenix_live_view/diff.ex", line 509, in anonymous fn/5 in Phoenix.LiveView.Diff.render_pending_components/6
  File "lib/enum.ex", line 2193, in Enum."-reduce/3-lists^foldl/2-0-"/3
  File "maps.erl", line 233, in :maps.fold_1/3
  File "lib/phoenix_live_view/diff.ex", line 502, in Phoenix.LiveView.Diff.render_pending_components/6
  File "lib/phoenix_live_view/diff.ex", line 132, in Phoenix.LiveView.Diff.render/3
...
(3 additional frame(s) were not displayed)

(RuntimeError found duplicate ID "case_value_recordview_33b6f689-9559-4a4d-b92c-c4f56cc88df0" for component HygeiaWeb.RecordView when rendering template)

Case Phase Validation Error

Sentry Issue: BACKEND-14E

CaseClauseError: no case clause matching: #Ecto.Changeset<action: :update, changes: %{end_reason: :other}, errors: [other_end_reason: {"can't be blank", [validation: :required]}], data: #Hygeia.CaseContext.Case.Phase.PossibleIndex<>, valid?: false>
  File "lib/hygeia/case_context/case.ex", line 188, in anonymous fn/1 in Hygeia.CaseContext.Case.validate_phase_type_unique/1
  File "lib/enum.ex", line 3746, in Enum.uniq_list/3
  File "lib/hygeia/case_context/case.ex", line 187, in anonymous fn/2 in Hygeia.CaseContext.Case.validate_phase_type_unique/1
  File "lib/ecto/changeset.ex", line 1691, in Ecto.Changeset.validate_change/3
  File "lib/hygeia_web/live/case_live/base_data.ex", line 129, in HygeiaWeb.CaseLive.BaseData.handle_event/3
...
(3 additional frame(s) were not displayed)

(CaseClauseError no case clause matching: #Ecto.Changeset<action: :update, changes: %{end_reason: :other}, errors: [other_end_reason: {"can't be blank", [validation: :required]}], data: #Hygeia.CaseContext.Case.Phase.PossibleIndex<>, valid?: false>)

Catch Error when parsing Pagination Cursor and raise 400

Sentry Issue: BACKEND-146

ArgumentError: incorrect padding
  File "lib/base.ex", line 1107, in Base.do_decode64url/2
  File "lib/paginator/cursor.ex", line 8, in Paginator.Cursor.decode/1
  File "lib/paginator/config.ex", line 33, in Paginator.Config.new/1
  File "lib/paginator.ex", line 175, in Paginator.paginate/4
  File "lib/hygeia_web/live/affiliation_live/index.ex", line 124, in HygeiaWeb.AffiliationLive.Index.list_affiliations/1
...
(3 additional frame(s) were not displayed)

(ArgumentError incorrect padding)

https://app.forecast.it/project/P-205/scoping/T2432

Case Phase Create ends running quarantine / isolation at start date of new phase

Is your feature request related to a problem? Please describe.

  • When creating a new phase, overlapping quarantine / isolation can be created.

Describe the solution you'd like

  • Ensure that there are no overlaps
  • When creating a new phase with a quarantine / isolation, still running phases should be terminated before the new start date
  • Overlapping date ranges should raise an error when updating phase dates.

Describe alternatives you've considered

  • Only Validation: Creates a UX problem when creating a new phase since the other dates can't be edited in the create modal.

Additional context

None

References

  • Follow Up from gitlab#153
  • forecast-sg#2372

MatchError: no match of right hand side value: %Hygeia.UserContext.User{__meta__: #Ecto.Schema.Metadata<:load...

Sentry Issue: BACKEND-13M

MatchError: no match of right hand side value: %Hygeia.UserContext.User{__meta__: #Ecto.Schema.Metadata<:loaded, "users">, display_name: "Angela Crnjac", email: "[email protected]", emails: #Ecto.Association.NotLoaded<association :emails is not loaded>, grants: [], iam_sub: "82892690336834170", inserted_at: ~U[2020-11-24 16:46:40.872651Z], notifications: #Ecto.Association.NotLoaded<association :notifications is not loaded>, tenants: [], updated_at: ~U[2021-04-06 09:36:45.888193Z], uuid: "4ca48e4f-6ee5-4301-a8ca-0f798d3440fa"}
  File "lib/hygeia/communication_context.ex", line 140, in Hygeia.CommunicationContext.create_outgoing_email/3
  File "lib/ecto/multi.ex", line 646, in Ecto.Multi.apply_operation/5
  File "lib/enum.ex", line 2193, in Enum."-reduce/3-lists^foldl/2-0-"/3
  File "lib/ecto/multi.ex", line 630, in anonymous fn/5 in Ecto.Multi.apply_operations/5
  File "lib/ecto/adapters/sql.ex", line 1027, in anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4
...
(3 additional frame(s) were not displayed)

(MatchError no match of right hand side value: %Hygeia.UserContext.User{__meta__: #Ecto.Schema.Metadata<:loaded, "users">, display_name: "Angela Crnjac", email: "[email protected]", emails: #Ecto.Association.NotLoaded<association :emails is not loaded>, grants: [], iam_sub: "82892690336834170", inserted_at: ~U[2020-11-24 16:46:40.872651Z], notifications: #Ecto.Association.NotLoaded<association :notifications is not loaded>, tenants: [], updated_at: ~U[2021-04-06 09:36:45.888193Z], uuid: "4ca48e4f-6ee5-4301-a8ca-0f798d3440fa"})

TODO

  • Filter out users that no longer belong to a tenant for sending notifications

Liste Abteilungen/Klassen alphabetisch sortieren

Is your feature request related to a problem? Please describe.
Hat eine Organisation viele Abteilungen (z.B. grosse Spitäler) dann ist es mühsam die Divisionen zu finden da keine Suchfunktion besteht und die Sortierung nicht vorhanden ist.

Describe the solution you'd like
Die Liste der Abteilungen/Klassen sollte alphabetisch sortiert sein.

Describe alternatives you've considered
Es wäre auch möglich das mit einer Suchfunktion zu lösen.

Additional context
Bildschirmfoto_2021-03-21_um_17 25 49

References

Info Website

Is your feature request related to a problem? Please describe.

No

Describe the solution you'd like

  • Link to product website from application
  • Remove Downloads from Application

Describe alternatives you've considered

None

Additional context

None

References

Produce Unique ID when a person has two affiliations to the same organisation

Sentry Issue: BACKEND-8P

RuntimeError: found duplicate ID "affiliation_person_recordview_9bb2b10c-4e9f-4fe3-a0d1-148d136dee26" for component HygeiaWeb.RecordView when rendering template
  File "lib/phoenix_live_view/diff.ex", line 509, in anonymous fn/5 in Phoenix.LiveView.Diff.render_pending_components/6
  File "lib/enum.ex", line 2193, in Enum."-reduce/3-lists^foldl/2-0-"/3
  File "maps.erl", line 233, in :maps.fold_1/3
  File "lib/phoenix_live_view/diff.ex", line 502, in Phoenix.LiveView.Diff.render_pending_components/6
  File "lib/phoenix_live_view/diff.ex", line 132, in Phoenix.LiveView.Diff.render/3
...
(3 additional frame(s) were not displayed)

(RuntimeError found duplicate ID "affiliation_person_recordview_9bb2b10c-4e9f-4fe3-a0d1-148d136dee26" for component HygeiaWeb.RecordView when rendering template)

https://app.forecast.it/project/P-205/scoping/T2430

Create "unfinished" case list filter

To avoid having old wrongly set up cases polluting the system, a "unfinished cases" filter should be introduced in the case list.

Criteria

  • Missing Phase End Date
  • Status Null

TODO

  • add filter

Datum im Briefkopf bei Bestätigungen

Zusammenfassung

Im Briefkopf der Bestätigungen (Quarantäne und Isolation) wird immer das aktuelle Datum gesetzt, an dem die Bestätigung herunter geladen wurde.
Das führt teilweise zu Verwirrungen, wenn der Benutzer die Bestätigung rückwirkend herunter lädt.
Aktuell hatten wir eine Nachfrage von einer Person, die die Isolation im Januar beendet hatte und am 06.05. die Bestätigung herunter geladen hat.


Idee

Könnte man das Datum immer auf das Datum setzen, an dem zuletzt Änderungen in den Daten gab? So wäre sichergestellt, dass bei z.B. einer Verlängerung der Quarantäne das Datum aktualisiert werden würde.


Vorteile wenn umgesetzt

Keine Verwirrung bei den Daten in den Bestätigungen.


https://trello.com/c/hJ4TLAPe/800-datum-im-briefkopf-bei-best%C3%A4tigungen

Fehler: Auswahl Tracer bei Kanton AI

Zusammenfassung

  1. Einige Tracer können bei Kanton AI nicht ausgewählt werden
  2. Bei Import AI auf Tracer "Rebecca B." erscheint der Fall nach dem Speichern bei "Falladministration"

Schritt für Schritt zum Problem

  1. Rebecca importiert in Hygeia eine Liste auf ihren Namen als Tracer, Mandant: AI
  2. Fälle erscheinen in "Falladministration" als Tracer
  3. Fall ausgewählt, Bearbeiten: Tracer kann nicht auf folgende Personen geändert werden: Rebecca B., Natalie R. (Lena R. hat mir Rebeacca auch gemeldet, aber das konnte ich nicht reproduzieren)

Zusätzliche Anmerkungen

Ich habe das auf dem Testsystem mit der angehängten Liste reproduzieren können. Die Fälle sind noch in "Falladministration". Bei AR und SG ist laut Rebecca das Problem noch nicht aufgetreten.


Test_AI.xlsx

trello#733

Email Create Error

Sentry Issue: BACKEND-14F

UndefinedFunctionError: function HygeiaWeb.RecordView.handle_event/3 is undefined or private
  Module "Elixir.HygeiaWeb.RecordView", in HygeiaWeb.RecordView.handle_event/3
  File "lib/phoenix_live_view/channel.ex", line 526, in anonymous fn/4 in Phoenix.LiveView.Channel.inner_component_handle_event/4
  File "/__w/hygeia/hygeia/deps/telemetry/src/telemetry.erl", line 272, in :telemetry.span/3
  File "lib/phoenix_live_view/diff.ex", line 194, in Phoenix.LiveView.Diff.write_component/5
  File "lib/phoenix_live_view/channel.ex", line 463, in Phoenix.LiveView.Channel.component_handle_event/6
...
(3 additional frame(s) were not displayed)

(UndefinedFunctionError function HygeiaWeb.RecordView.handle_event/3 is undefined or private)

Benachrichtigung: Einsendung von KPs

Is your feature request related to a problem? Please describe.
Wenn im Tracing auf Einsendungen gewartet wird muss oft manuell geprüft werden ob Neue eingetroffen sind.

Describe the solution you'd like
Benachrichtigungsfunktion erweitern: Wenn bei die Indexperson neue Kontaktpersonen eingesendet hat (Self-Service)
Tracer*innen werden automatisch benachrichtigt und müssen nicht immer wieder in den Einsendungen nachsehen.

Describe alternatives you've considered
Keine, ausser der manuellen Prüfung

Additional context
Dieses Feature kann massiv Arbeitszeit/Aufmerksamkeit einsparen

References

Isolationsverordnung: Start Testdatum

Zusammenfassung / Idee

Bei asymptomatischen IPs:
Die 10 Tage Isolation werden ab Tag des Testdatums berechnet.
Im Moment wird für die Isolationsbestätigung ("Start" Isolation) das Datum des Laborberichts genommen. Dies sollte auf das Testdatum geändert werden.


Was verändert sich für die Tracer wenn umgesetzt

Daten in Isolationsbestätigung werden korrekt aus Hygeia übernommen


Zusätzliche Anmerkungen

Hier im Test:
https://staging.covid19-tracing.ch/cases/d77f0501-2244-4200-ac22-f90b830d9a6f


https://trello.com/c/xbBYrV1A/740-isolationsverordnung-start-testdatum

Prevent PDF Confirmation for Phases with missing dates

Sentry Issue: BACKEND-14T

ArgumentError: Invalid date. Date is a map that contains at least :year, :month, :day and :calendar. Found: nil
  File "lib/cldr/date.ex", line 199, in Cldr.Date.to_string!/3
  File "erl_eval.erl", line 680, in :erl_eval.do_apply/6
  File "erl_eval.erl", line 273, in :erl_eval.expr/5
  File "erl_eval.erl", line 449, in :erl_eval.expr/5
  File "src/elixir.erl", line 280, in :elixir.recur_eval/3
...
(3 additional frame(s) were not displayed)

(ArgumentError Invalid date. Date is a map that contains at least :year, :month, :day and :calendar. Found: nil)

https://app.forecast.it/project/P-205/scoping/T2431

Info-Button Gründe für Test

Is your feature request related to a problem? Please describe.
Die Gründe für den Test sind nicht immer eindeutig verständlich.

Describe the solution you'd like
"Gründe für Test" sollen einen Info-Botton bekommen. Im Anhang die Informationen, die dort angegeben werden sollen.

Describe alternatives you've considered
None

Additional context
Die Qualität der Daten wird gesteigert durch eine Erklärung inline.

References

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.