Model om naar event sourcing, events opslaan in database
De invullingen van screensmart moeten, inclusief tussenstappen, opgeslagen worden in een database.
Het kan nuttig zijn om de data van screensmart niet op te slaan als de huidige toestand van de invulling, maar in plaats daarvan als events zodat onderzoekers kunnen zien hoe lang iemand heeft moeten nadenken over een vraag.
Voorbeelden van deze events zijn:
- behandelaar vraagt invulling aan
Event.create response_uuid: 'c8d56681-03be-495e-a78d-472c84098e75', type: 'invite_sent', data: {requester_email: 'behandelaar@accare.nl', domains: ['POS-PQ']}
- gebruiker klikt op link in mail om te beginnen
Event.create response_uuid: 'c8d56681-03be-495e-a78d-472c84098e75', type: 'response_started', data: {}
- patient geeft antwoord 2 op vraag EL03
Event.create response_uuid: 'c8d56681-03be-495e-a78d-472c84098e75', type: 'answer_set', data: {key: 'EL02', value: 2}
Als database kan Postgres JSONB gebruikt worden. TASKS:
-
AnswerSet toevoegen -
Nadat "add invitation form" gemerged is: SendInvite aanroepen uit controller -
domainId
in invitation form aanpassen naardomains
-
Uniqueness check op response_uuid in InvitationSent / SendInvitation -
Question accessors die gebruikt worden in SetAnswer verplaatsen van RPackage naar Question class -
In JS postJSON: snakecase toepassen op params -
Testen of InvitationForm nog werkt -
coverage gebruiken om niet-meer-nodige functies te vinden -
Na merge: https://www.pivotaltracker.com/story/show/116690459