While writing data validation rules in the 'editChecks' section of the workflow, these three form the check's basic skeleton.
More information on Data Validation over here.
A common thought: Multiple records, forms, and rules can be included in "records", "forms" and "rules". So, won't it be more comfortable for the user to write a block including all the three records, all the forms on which edit checks are to be performed, and define all the rules one below the other?
It will be easier to write, but a very inefficient code. The reason is, checks are performed as per the 'when' part of the 'rules'. This identifies the situations when the edit check needs to be applied.
If there are three edit checks involving 'cpr' and 'visit' and one edit check involving 'cpr' and 'specimen', including all of them together would be a more straightforward but highly inefficient option. The dependencies on specimens will be checked too every time only the 'cpr' and 'visit' records are accessed.
So, it will be appropriate to include the 3 'cpr' and 'visit' checks together and 'cpr', 'specimen' check in a different records-forms-rules block.
This works like the Highest Common Factor rule of mathematics!
Identify the rules that have checks applied to the records that match.
Group the standard checks under one records-forms-rules block. If there are no matches, add a separate records-forms-rules block.
This will ensure an efficient check of dependencies and only for the respective records involved in the check.