My two cents, an opinion on a detail issue
The disadavantage of Vaadin may be that it is server based, most of the logic runs on the server, and this makes an application less scalable and causes more network traffic. This is because data-validation is done on the server and the result send back to the client if there is a problem.
Especially on slow networks this can be a big problem. And you will be amazed how many slow networks there are on the world, not in an university, but in villages in the South of France or the North of the Netherlands, also South America, Africa, Asia, but also in parts of Kansas, Oklahoma, West Virginia, most people on the world, when they have Internet, they have it on a slow network.
When you want to make money, you will need those people as client of your products.
People have tablets, IoT-devices, they are doing a lot of their own healthcare, that is the near future coming.
Better would be better to validate data on the client and only send data to the server if it is valid. Only UID's needs to be validated on the server, because for validating UID's server-knowledge is needed. But for data-against-archetype-validation, most of the validation knowledge can run on the client, and GUI can respond instantly on errors. That is what we want, we don't want a delay of three seconds to tell us that the heart-rate figure is not realistic.
Of course, this causes some problems, but it is not impossible. For this purpose it is needed that validation-software needs to run on the client. One can think of Java-validation-software, but that causes all kind of permissions that need to be given, and it creates a dependency to the JVM version on the client. So that is also not desirable.
Clients all run Javascript, and better, the superset Typescript. So it would be good if archetypes/templates could be parsed client side. The server only would need to send the smart minimalistic form-description and the template, and wait for a valid dataset result.
The client would create a form from the description, parse the template/archetype/validate the data and only send back the result.
Think about it, there is need for an Archie-library based on Typescript. A good starting point, check here
https://github.com/antlr/antlr4/blob/master/doc/javascript-target.md
I am very interested who will take up the gauntlet
Best regards
Bert Verhees