SORMAS-Foundation / SORMAS-Project

SORMAS (Surveillance, Outbreak Response Management and Analysis System) is an early warning and management system to fight the spread of infectious diseases.
https://sormas.org
GNU General Public License v3.0
293 stars 142 forks source link

Immunizations module #4081

Closed Candice-Louw closed 1 year ago

Candice-Louw commented 3 years ago

Pre-requisite for this to be released: #5986

Linked issues: I: Immunization entity #4756 [5] II: Vaccination entity #4763 [3] II: Immunization overview and forms #4764 [5] II: Immunization overview and forms (app) #5827 [5] III: Immunization list for person forms #5828 [2] III: Immunization list for cases, contacts and event participants #5905 [5] III: Vaccination lists and create/edit forms #5843 [3] III: Immunization automation #5946 [1] IV: Vaccination refactoring #5909 [5] V: Link recovery immunizations to recovered cases #5969 [2]

Follow-up issues: Make the Vaccine and VaccineManufacturer enums configurable #5830 Move information about vaccination being enabled to the diseaseconfiguation table #5831

Situation Description

An Immunization (consisting of various vaccinations) module (especially for COVID-19) is highly requested for SORMAS.

In order to produce a minimal viable product, as fast as possible, to support international audiences making use of SORMAS, resources from the RKI (SurvNet) [DE], BAG MED [CH], FHIR7, and CDC have been consulted in an attempt to provide a module that may possibly address basic user needs.

Feedback welcome.

There are numerous steps/components that make up this request:

  1. Allow vaccines to be configured in the Configurations (this will minimise data entry mistakes and speed up data capturing)
  2. Introduce the Immunizations module functionality
  3. Add Immunizations details to Case, Contact and Event Participant entities
  4. Add Immunizations details to the Person entity

Overall mockup (as on 19.01.2021)

image

Feature Description

1. Allow vaccines to be configured in the Configurations

Values: Vaccine name, vaccine type, vaccine code, producer, external ID


2. Introduce the Immunization module functionality [please see Overall mockup (as on XX.XX.2021) on the top of the page for the latest version pertaining to UI specifications]


3. Add Immunization details to Case, Contact and Event Participant entities

image

image


4. Add Immunization details to the Person entity

image

Based on development of #3560 , also include Immunizations as a list element for the Person entity (viewing all Immunizations and adding/creating new Immunizations for all diseases).


Additional Information

Data mappings (as on 19.01.2021)

Variable in UI CH (MED) BAG DE (SurvNet) RKI/BMG INT (FHIR7) Explanation/notes
Vaccination Status for this disease [added to the Case, Contact and Event Participant entities] vacc_yn, Impfung, Wurde eine COVID-19-Impfung durchgeführt?, codelistElement, 1=ja, 2=nein, 3=unbekannt 'StatusVaccination' "Jemals geimpft?": Select from Catalogue 'Status4' Status4 -1 = "-nicht ermittelbar-" 0 = "-nicht erhoben-" 10 = "Nein" 20 = "Ja" Immunization.status, code, yes no unknown. Vaccinated (1CH, 20DE), Unvaccinated (2CH, 10DE), Unknown (3CH, -1DE), Null (0DE)
Vaccine Name [added to the Vaccination Entity] vacc_name, Name des verwendeten Impfstoffs, CharacterString 'Vaccine' "Impfstoff": Select from Catalogue 'VaccineCVD' VaccineCVD  -1 = "-nicht ermittelbar-"  0 = "-nicht erhoben-"  201 = "mRNA (BioNTech / Pfizer)"  202 = "mRNA  (Moderna)"   203 = "vektorbasiert (Astra Zeneca)"  204 = "vektorbasiert (Johnson&Johnson bzw. Janssen-Cilag)"  205 = "rekombinant, adjuvantiert (Sanofi - GSK) 6. rekombinant, adjuvantiert (Novavax)" Immunization.vaccineCode Code If 'Other' is selected, show free-text field.
Vaccination Count [added to the Immunization entity] vacc_dose, Anzahl der erhaltenen Impfdosen, Integer 'VaccinationCount' "Anzahl der Impfungen": Select from Catalogue 'Number10'  -1 = "-nicht ermittelbar-" 0 = "-nicht erhoben-" 1-10 - Vaccination Count auto calculated based on the number of Vaccinations for this Immunization]
Date of first vaccination [added to the Immunization entity] vacc_dt_first, Datum der ersten COVID-19-Impfung,date(yyyy-mm-dd) - One dateTime in Immunization.date Date of first vaccination from the list of vaccinations on the Immunization list
Date of last vaccination [added to the Immunization entity] vacc_dt_last, Datum der letzen COVID-19-Impfung,date(yyyy-mm-dd) 'VaccinationDate' "Datum der letzten Impfung": Date field Date of last vaccination from the list of vaccinations on the Immunization list
marko-arn commented 3 years ago

Thanks for the lot of work.

I asked the relevant colleagues of our health departement about the vaccinations. They told me, that for us it makes only sense to fill in the vaccination if we have a contact or case. According to what we know we are only allowed to save the vaccinations of that persons, but not for all vaccinated persons if they are not a case, contact or event participant. This persons would have to proof the vaccination by the vaccination pass or similar. For that reason it would be good if there could be a check-box like

[_] Vaccination proofed / Impfung nachgewiesen

or a pull-down-menu with

Vaccination proofed / Impfung nachgewiesen Vaccination not proofed / Impfung nicht nachgewiesen Vaccination will be proofed / Impfung wird nachgewiesen/Wurde zum Nachweis der Impfung aufgefordert

This might be special for Thuringia where the vaccinations are organized by the Association of Health Insurance Doctors in behalf of the state. Other states are organizing it by themself and having maybe lists of all vaccinated persons.

Candice-Louw commented 3 years ago

@Marko-ilmkreis - thank you for the feedback! [20.01.2021] This will be refined to be incorporated into the design.

Candice-Louw commented 3 years ago

WISH | DE: Further wish from GA Fürth, Günzburg, Kelheim (Schulung and ticket system) - a map that shows in which village, district etc. there are already vaccinated cases and contacts.

Comment: this would only be possible at a later stage after the basic functionality of the module has been defined and is operational. Could also be possible through the use of https://github.com/hzi-braunschweig/SORMAS-Stats once complete.

Candice-Louw commented 3 years ago

WISH | DE: Dear Sormas team, For the case processing in Sormas we need data fields for vaccination. The following fields are required:

bernardsilenou commented 3 years ago

@Candice-Louw We already have vaccination documentation in the system for vaccine preventable diseases like measles (https://release-international.sormas.netzlink.com/sormas-ui/)

bernardsilenou commented 3 years ago

@Candice-Louw can we migrate this to a new issue? not to get confused with the main immunization ticket

Candice-Louw commented 3 years ago

@Johannes-Schmidt-GA-RT : Please feel free to add any additional comments/input/feedback.

Johannes-Schmidt-GA-RT commented 3 years ago

@Candice-Louw We don't need it in great detail. @bernardsilenou suggestion would be almost enough for us, the only thing missing is the vaccine that was vaccinated. This is all the information SurvNet needs. The Immunizations details should be shown in the Person entity.

Candice-Louw commented 3 years ago

@Johannes-Schmidt-GA-RT - great, thank you for the feedback!

Candice-Louw commented 3 years ago

@tobiasschellhorn @carolinverset @ftavin : Please feel free to add any additional comments/input/feedback.

bernardsilenou commented 3 years ago

I have added a summary for changes to be made for vaccination status here #4137. We can then maintain this ticket for immunization module.

Candice-Louw commented 3 years ago

GK 23-Jan-21 00:17:

„Comirnaty“ is the commercial name of the vaccine produced by the company BioNtec; its international nonpropriotory name (INN) is „tozinameran“

Every medical product usually has a commercial name and a INN. Different companies can produce the same INN either under a different or under the same commercial name. Also the same Product can be marketed by the same company under different commercial names in different countries. And of course one and the same company can potentially produce more than one type of vaccine against COVID, so that the only truly identifying name is the INN, which is why it was invented. Unfortunately the INN is not alway used.

So for identifying a vaccine it would be best to offer four fields À) commercial name B) INN C) Company producing it D) batch number „Chargen Nummer“

Candice-Louw commented 3 years ago

Won't be introduced for Person-only entities [Person-only entities won't be introduced in SORMAS per the Review 23.02.2021 feedback]. Replaced by https://github.com/hzi-braunschweig/SORMAS-Project/issues/4137

Candice-Louw commented 3 years ago

Reopened per discussion 02.03.2021

bernardsilenou commented 3 years ago

@MateStrysewske @Candice-Louw @JaquM @kwa20

bernardsilenou commented 3 years ago

@Candice-Louw @kwa20 just realized that having the location/ facility attached to the vaccination would make things complex. In the new issue #4756 I added the facility to the immunization. If a person is to be immunized, then there can be only one responsible jurisdiction/ facility. If a vaccine has many doses, then they must get both doses at the same facility or document one of the two as the responsible facility, hope this is fine?

kwa20 commented 3 years ago

@MateStrysewske @JaquM Here some comments and further specifications for this module. These cover multiple sub-issues.

meansOfImmunization immunizationStatus immunizationStatus3 immunizationStatus2 recoveryImmunzation

Add the following feature configurations:

Directory refinements: -Add columns for (all sortable alphabetically):

marko-arn commented 3 years ago

@kwa20 have you planned to calculate the date of recovery based on the existing data in Sormas if the person was already a case? If yes, please show then the calculated dates for #5394 (for Germany only).

MartinWahnschaffe commented 1 year ago

Closing this, since the core module is already implemented. Follow-up issues are not done yet, but are not considered part of this epic.