Unfortunately, I experienced the same confusion. Even after reading the documentation, I still didn't understand exactly what it meant. For instance for gender_source_concept_id: "A foreign key to the gender concept that refers to the code used in the source." This may seem clear to you, but not to me.
Eventually, I decided it means the following:
IF your source system stores gender data according to some OMOP
recognized vocabulary, gender_source_concept_id should hold the
concept_id for that value.
1a. IF vocabulary is a standard concept, the gender_source_concept_id and the gender_concept_id will be the same.
1b. IF vocabulary is NOT a standard concept, but one which maps to a standard concept, then the gender_source_concept_id and gender_concept_id will be different. The standard concept_id will go into gender_concept_id, and the non-standard concept_id go into the gender_source_concept_id
BUT IF #1 is false, then there is no gender_source_concept_id. Therefore, you should put 0 (zero) in it.
For example, the Standard OMOP concepts for gender are:
male = code:M concept_id:8507
female = code: F concept_id: 8532.
1a. If my source system actually stores these code values (M and F) to represent male and female, then 8507 or 8532 will go in both the gender_source_concept_id and gender_concept_id.
2.If my source system stores some other codes (say, 1 and 2) to represent male and female, then gender_concept_id would have either 8507 or 8532, but gender_source_concept_id would have a value of 0 (zero).
The case of 1b, is hypothetical here, because there are no non-standard gender vocabularies in OMOP.
Christian, is this essentially correct? Or am I misunderstanding?