GithubHelp home page GithubHelp logo

impfen / apps-inoeg Goto Github PK

View Code? Open in Web Editor NEW
0.0 6.0 5.0 6.22 MB

Kiebitz Web Applications (for users, providers and mediators). Still a work-in-progress, use with care!

Home Page: https://kiebitz.eu/

License: GNU Affero General Public License v3.0

TypeScript 26.74% CSS 9.75% JavaScript 5.34% Shell 0.07% Dockerfile 0.91% HTML 0.88% Svelte 56.30%

apps-inoeg's Introduction

apps-inoeg

Web Applications (for users, providers and mediators). Still a work-in-progress, use with care!

Translations

We translate using weblate.org. English and German are completed for now, but of course further input is always welcome.

Translation status

apps-inoeg's People

Contributors

andreasdotorg avatar benbender avatar bkastl avatar comradekingu avatar fschoenfeldt avatar johannwagner avatar mad-nuts avatar sand2dorn avatar thzx avatar topialla avatar weblate avatar xenein avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

apps-inoeg's Issues

Refactor UI/UX of user app

To optimize the UI/UX of the user app we should probably think about improving the signup/login and appointment booking flow, especially since the process has changed with the last version of the software.

Backend für viele Termine

User Stories:

  • impfen/e2e#13
  • impfen/e2e#14
  • impfen/e2e#15

Hintergrund:

Es sollen viele Termine gleichzeitig angelegt werden können.

Was heißt viele Termine?

Beispiel aus Frankfurt:
Montag bis Freitag 7 bis 21 Uhr im Impfzentrum
alle 3 Minuten je 5 Slots Biontech oder Moderna

(1200 Termine pro Tag)

Montag bis Freitag 9 bis 15 Uhr in der Hauptwache
alle 10 Minuten je 1 Slot Moderna
(60 Termine pro Tag)

Wenn ich aber für das Impfzentrum einen zweiten Impfstoff brauche, lege ich im Zweifel eine zweite Reihe Termine an, Beispiel Impfzentrum:
Montag bis Freitag 7 bis 21 Uhr im Impfzentrum
alle 3 Minuten je 5 Slots Biontech
alle 3 Minuten je 1 Slot Moderna

Impfselektor: Mehrfachauswahloption

Aktuell gibt es im Impfselektor nur ja oder nein Auswahlfelder.

Zukünftig braucht es Auswahlfelder mit mehreren Optionen, z.b:

Alter:

  • unter 5

  • 5 bis 11

  • 12 bis 18

  • 18 bis 29

  • 30+

  • Auswahlfeld mit mehreren Optionen anlegen

Adjust questionnaire

Mit Mehrfachauswahl

verfügbar, muss der Fragebogen zu beginn überarbeitet werden.

z.B.

  • Schwangerschaft muss von "unter 30 Jahre?" getrennt werden

Provider-Onboarding

User Stories:

  • impfen/e2e#12
  • impfen/e2e#11
  • impfen/e2e#10
  • impfen/e2e#9
  • impfen/e2e#8

Adjust Provider Onboarding

The elements should be setup like this. At least to me they seem more understandable this way.

As far as the strings already exist they have been adjusted in weblate.

For now I would work with the actual Numbers as this visualises a bit, that one needs 2 pieces of information from 2 steps of doing thigns

image

Kalenderanzeige inkonsistent

Allgemein:

Das Kalenderverhalten ist inkonsistent

Firefox

Beschreibung

Wenn ich den Tag für die Impfung auswählen möchte wird in FF 96.0.3 der Kalender mit angezeigt.

Problem 1 FF

  • Dort habe ich kein Kalendericon neben der Uhrzeit, wie es in Chrome erscheint, s.u.

image

Chrome

Problem 1 in Chrome

  • Wenn ich das gleiche wie oben in Chrome 97.0.4692.99 mache kann ich nur Tag und Monat anklicken (das Jahr nicht)

image

Problem 2 in Chrome

  • Der Kalender wird in Chrome nur angezeigt, wenn ich auf das Kalendersymbol klicke (das in FF nicht angezeigt wird).

Mehrfachbuchungen

User Story:

  • Als fünfköpfige Familie mit Kindern in unterschiedlichen Altersstufen kann ich Termine für meine ganze Familie buchen
  • Als Impfstelle möchte ich keine massenhaften Leerbuchungen bekommen

Definition of Done:

  • Es ist möglich, bis zu sieben Termine zu buchen
  • Es gibt Hinweise, wie viele Termine gebucht werden können und wie eine Mehrfachbuchung funktioniert.
  • Es gibt Eindämmungsmaßnahmen gegen massenhafte Leerbuchungen.

Neuer Buchungsweg

User Stories:

  • impfen/e2e#22
  • impfen/e2e#21
  • impfen/e2e#20

Hintergrund:

Aktuell ist der Buchungsweg noch auf dem Prototypen basierend.
In Frankfurt gibt es es einen anderen Buchungsweg, der mit einem bereits definierten Ort arbeitet.
Zur Unterscheidung der geeigneten Impfstellen ist die Abfrage von Parametern notwendig.

Add translation infrastructure

  • Setup poeditor and connect to repo
  • find out how outputs etc can work, poe seems to create one file per translation
  • check if weblate works differently

[Meta] User-Flows und Status

Blocked by #50

Mediator

  • Login mit MediatorKeyPair
    • IntegrationTest
  • Bestätigung Provider
    • IntegrationTest
  • ...

Provider

  • Anmeldung
    • IntegrationTest
  • Login mit MediatorKeyPair + Secret
    • IntegrationTest
  • Update eigene Daten
    • IntegrationTest
  • Einzeltermin einstellen
    • IntegrationTest
  • Terminserie einstellen
    • IntegrationTest
  • ...

User

  • Terminbuchung
    • IntegrationTest
  • ...

Specify browser-support

At the moment, we are "stating" (via package.json's "browserslist") that we are supporting browserslist defaults. These are, at the time of writing:

and_chr 96
and_ff 94
and_qq 10.4
and_uc 12.12
android 96
baidu 7.12
chrome 96
chrome 95
chrome 94
chrome 93
chrome 92
edge 96
edge 95
edge 94
firefox 94
firefox 93
firefox 92
firefox 91
firefox 78
ie 11
ios_saf 15
ios_saf 14.5-14.8
ios_saf 14.0-14.4
ios_saf 12.2-12.5
kaios 2.5
op_mini all
op_mob 64
opera 81
opera 80
opera 79
safari 15.1
safari 15
safari 14.1
safari 13.1
samsung 15.0
samsung 14.0

To ease our lives and minimize package-size in frontend, I would suggest to drop at least:
safari 13.1, ie 11, op_mini all, op_mob 64, ios_saf 12.2-12.5, firefox 78, kaios 2.5, samsung 14.0, and_qq 10.4, and_uc 12.12, baidu 7.12

Most of them wont be (completely) supported anyways so dropping them would simply reflect reality.

Impfhinweise (Basis)

User Story:

  • Als Impfstelle möchte ich generelle Informationen zu meinen Impfkriterien und Auflagen an die Impflinge kommunizieren.
  • Als Impfling möchte ich vor dem Besuch einer Impfstelle wissen, ob ich dort eine für mich passende Impfung bekommen kann.

Details:

Alle Impfstellen impfen meistens nach den geltenden Impfempfehlungen der STIKO, es gibt aber immer wieder lokale Abweichungen.
Impflinge möchten oftmals von den STIKO-Empfehlungen abweichende Impfungen erhalten, z.B. für Altersgruppen für die noch keine Empfehlung für die Impfung erhalten haben oder früher eine Boosterimpfung erhalten.

Mögliche Arten von Hinweisen:

  • Wir boostern erst nach 6 Monaten
  • Wir impfen aktuelle nur Personen über 12 Jahren

Definition of Done:

  • Als Impfstelle kann ich Impfhinweise hinterlegen
  • Als Impfling sehe ich vor der Buchung einer Impfstelle entsprechende Hinweise

Optional:

  • Impfhinweise sind bereits in einer Datenstruktur vorbereitet, die später ein Matching ermöglicht

Simpleres Dev-Setup

  • One-command docker-compose-setup mit kompletter Infrastruktur zum entwickeln
  • Persistentes redis-volume
  • #47
  • #48

Als Administration einer Impfstelle möchte ich Parameter, die Impfinteressierten angezeigt werden einstellen können

Bestimmte Parameter, wie Beobachtungszeit {followuptime_min} und die Zeit die seit einer Impfung vergangen sein muss, damit eine Auffrischungsimpfung wahrgenommen werden kann {XMonthSinceLast} soll einstellbar sein.

  • XMonthSinceLast auf Kreis oder Landesebene
  • followuptime_min je Impfstelle

Zu beachten ist, dass z.B. auf dem Startbildschirm ebenso die Zeit, die vergangen sein muss, bis erneut geimpft werden darf, angegeben wird. Dies kann also nicht von Impfstelle zu impfstelle verschieden eingegeben werden. Die Nachbeobachtungszeit wird hingegen erst nach der Buchung angezeigt, diese kann also individuell pro Impfstelle konfiguriert werden.

Android: date choice modal too smart

  1. Android Chromium browsers
  2. Go to https://demo.impfterm.in/finder/appointment/
  3. Get to choice of appointments
  4. Click date choice (day, month, year)

The date choice modal seems to include limits of available dates. Okay, but that means switching months changes the day and vice versa
Screenshot_20220207-110001_Chrome Beta

Examples:

  • I can see January / April on the date-choice wheel, switching month to them yields the first / last available day (in Feb / March)
  • 13 Feb, switching to March yields 9 March

Expected behavior: allow entry of any date, get feedback later

Design Refresh (Basis)

User Story:

  • Als Impfling möchte ich eine ansprechende und verständliche Benutzeroberfläche nutzen.

Definition of Done:

  • Benutzeroberfläche sieht nicht grob kaputt aus
  • Branding der Plattform wird berücksichtigt (#40)

Als Mitglied der PBV möchte ich mich auf der Plattform registrieren um Termine anzubieten

Quellen:


Wie logge ich mich korrekt ins Impfportal ein?

Mit Ihrer Registrierungsbestätigung, die Sie per Mail erhalten haben, wurde Ihnen per SMS Ihr Zugangspasswort mitgeteilt. Bitte beachten Sie, dass Ihr Anmeldename im PVS-Impfportal immer exakt die von Ihnen bei der Registrierung angegebene E-Mail-Adresse ist (achten Sie dabei auf Groß- und Kleinschreibung).

Aus Sicherheitsgründen werden Sie im Anmeldeprozess jeweils nach einer M-Tan gefragt, die Sie automatisch per separater E-Mail erhalten. Bitte achten Sie darauf, dass diese E-Mail nicht im Spam- bzw. Junk-Ordner Ihres E-Mail-Postfaches liegt. Auch weisen wir darauf hin, dass eine M-Tan nach max. 5 Minuten ihre Gültigkeit verliert.

Sollten Sie aufgrund einer mehrfach falschen Eingabe des Passworts o. ä. einmal vom System gesperrt werden, senden Sie bitte eine kurze Mail an [email protected]. Nach Überprüfung werden Sie wieder freigeschaltet. In diesem Falle melden Sie die erfolgten Impfungen im Portal bitte nach.


Als Mediator möchte ich die FAQ für meinen Bereich ändern und Bearbeiten

Ich möchte Fragen hinzufügen, Fragen ausblenden, Fragen einblenden, die Antworten mit Links versehen, Text fett oder kursiv (evtl farblich) markieren können, damit ich schnell auf Änderungen reagieren kann.

Vorschlag: es gibt bestimmt eine standardmäßige Implementierung eines wysiwyg-editors à la wikipedia?

In FF wird mit x im Kalender das Datum auf undefined gesetzt. Das muss abgefangen werden

Problem FF (96.0.3)

Wenn ich den Tag für die Impfung auswählen möchte wird in FF 96.0.3 der Kalender mit angezeigt.

  • Dort habe ich kein Kalendericon neben der Uhrzeit, wie es in Chrome erscheint, s.u.

image

  • Wenn ich auf das kleine X neben dem Datum klicke bekomme ich einen Fehler:

image

Konsolenoutput:

BackgroundUpdate: maybeScheduleBackgroundUpdateTask: exiting after uncaught exception in maybeScheduleBackgroundUpdateTask!

Exception { name: "NS_ERROR_FAILURE", message: "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE)  
[nsIWinTaskSchedulerService.registerTask]", result: 2147500037, filename: "resource://gre/modules/TaskSchedulerWinImpl.jsm",   
lineNumber: 51, columnNumber: 0, data: null, stack: "registerTask@resource://gre/modules  
/TaskSchedulerWinImpl.jsm:51:16\nregisterTask@resource://gre/modules/TaskScheduler.jsm:136:18  
\n_registerBackgroundUpdateTask@resource://gre/modules/BackgroundUpdate.jsm:289:38\n", location:   
XPCWrappedNative_NoHelper }

BackgroundUpdate.jsm:519
TopSitesFeed: Failed to fetch data from Contile server: NetworkError when attempting to fetch resource. TopSitesFeed.jsm:207
Content Security Policy: Ignoring "'unsafe-inline'" within script-src or style-src: nonce-source or hash-source specified 5
Content Security Policy: Ignoring "'unsafe-inline'" within script-src or style-src: nonce-source or hash-source specified 2
The Web Console logging API (console.log, console.info, console.warn, console.error) has been disabled by a script on this page.

Auf der Termin-Auswahlseite sollen Termininteressierten Hinweise angezeigt werden

Akzeptanzkriterien

  • Es wird immer angezeigt (auch wenn Termine Verfügbar sind!):

Aus den gemachten Angaben über die zu Impfende Person ergibt sich gemäß aktueller Empfehlungen eine Impfung mit XX& oder XX . Dies wird bei den Terminvorschlägen berücksichtigt.
XX ist die Liste der aktuell möglichen Impfstoffe, verketten mit , | oder.

Falls aktuell keine Termine verfügbar sind wird zusätzlich je case angezeigt *Quasi eine Stringverknüpfung:

  • case: keine spezifische Impfstelle ausgewählt und kein spezifisches Datum:

Innerhalb von 7 Tagen nach dem aktuell ausgewählten Datum steht momentan leider kein Termin mit empfohlenen Impfstoffen zur Verfügung. Bitte versuchen Sie es später erneut, oder ändern Sie das Datum.

  • case: Eine spezifische Impfstelle gewählt und kein spezifisches Datum (Also Datum quasi == Now):

In der aktuell ausgewählten Impfstelle steht innerhalb von 7 Tagen nach dem aktuell ausgewähltem Datum momentan leider kein Termin mit empfohlenen Impfstoffen zur Verfügung. Bitte versuchen Sie es später erneut. Sie können auch die [Impfstellenauswahl ändern](link zurückgehen zur anpassung) oder ein anderes Datum wählen.

  • case: Eine spezifische Impfstelle gewählt und ein Datum>Now-30 minuten² ausgewählt
    ² falls Uhr auf Endgerät ungenau eingestellt? (don't over do it, vielleicht auch egal)

Innerhalb von 7 Tagen nach dem aktuell ausgewählten Datum steht momentan in der ausgewählten Impfstelle leider kein Termin mit empfohlenen Impfstoffen zur Verfügung. Bitte versuchen Sie es später erneut. Sie können auch ein anderes Datum wählen, oder die [Impfstellenauswahl ändern](link zurückgehen zur anpassung).

Termine ansehen / bearbeiten

User Stories:

  • impfen/e2e#18
  • impfen/e2e#19
  • impfen/e2e#16

Bad Actor Stories:

  • impfen/e2e#17

Background:

Gebuchte Termine sollen durch Impflinge bearbeitet (abgesagt) bzw. deren Aktualität geprüft werden können.

Barrierefreiheit

User Story:

  • Als blinder Impfling kann ich die Buchung mit einem Screenreader durchführen.
  • Als Impfling mit einem Rollstuhl finde ich eine geeignete Impfstelle.
  • Als motorisch eingeschränkter Impfling kann ich die Impfung nur mit der Tastatur durchführen.
  • Als Impfling mit Rot-Grün-Sehschwäche kann ich eine Buchung durchführen.
  • Als Impfling mit einem einfachen Verständnisniveau kann ich eine Buchung durchführen.

Definition of Done:

  • Die Anwendung kann mit Screenreadern genutzt werden.
  • Die Anwendung ist tastaturkompatibel.
  • Die Anwendung achtet auch ausreichende Farbkontraste.
  • Die Anwendung bietet Möglichkeiten für barrierefreie Impforte.
  • Die Anwendung ist verständlich beschrieben.

Benachrichtigung bei Absage

User Story:

  • Als Impfling möchte ich schnell informiert werden, wenn die Impfstelle einen Termin absagt.
  • Als Impfstelle möchte ich einfach alle Impflinge benachrichtigen, wenn ich einen Termin nicht halten kann.

Caveats:

Aktuell haben wir von Seiten des Datenschutz' nur eine problemlose Freigabe für eine Variante ohne E-Mail. Erhebung von E-Mail oder anderen Kommunikationsverbindungen bedarf einer Klärung mit dem Datenschutz.

Definiton of Done:

  • Als Impfstelle kann ich schon gebuchte Termine absagen und Impflinge informieren
  • Abhängigkeiten und Impfserien (#42) werden beim Absagen berücksichtigt
  • Als Impfling bekomme ich eine direkte Nachricht, wenn mein Termin abgesagt wurde
  • Der Rückkanal ist mit dem Datenschutz geklärt.

Provider MVP

Minimalanforderungen Provider

  • #67
  • #66
  • Erstellung von Tagen kann anfangs komplex sein

Add integrity tag (?)

Currently the JS bundle is loaded without an integrity tag. Since it is distributed together with the HTML files this is not a large issue, still it would be nice to provide integrity tags for the app.

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.