There should be much simpler ways to do this, but the solution starts with your data model--the tables, relationships that make up the "foundation" of your database solution.
From what you describe, you might have these tables and relationships:
Participant::_fkGroupID = Groups::__pkGroupID
Groups::__pkGroupID = ConsentForms::_fkGroupID
Consent_Forms::_fkGroupID = CompletedConsent::_fkGroupID AND
For an explanation of the notation that I am using, see the first post of: Common Forum Relationship and Field Notations Explained
_fkgParticipantID would be a number field with global storage. It will be updated via a script performed by the OnRecordLoad Trigger on the Participant layout. A portal to ConsentForms would list all the required forms for the participant's group and a field or two from CompletedConsent, such as the date the form was received can be included in that portal row. If you enable "allow creation of records via this relationship" for CompletedConsent in the above relationships, you can log completion of a particular consent form by entering/selecting the date received in this field and this action will automatically generate a related record in CompletedConsent.
No scripts are used to get you to this point, though this is just the basics to get you started.
Note that this set up assumes that each participant is a member of exactly one group. If you need to support a participant being a member of multiple groups, the data model needed becomes more sophisticated.