I hope you won't mind if I piggy-back off of this discussion to try to understand the problem conceptually. I don't know if I'm not understanding the question, or if my understanding of OMOP is flawed.
As I understand it, the issue is that: @idontknow stores medical history by referencing ICD codes. And according to the definition of the Observation table, medical history should go into observation.
The OBSERVATION table captures clinical facts about a Person obtained in the context of examination, questioning or a procedure. Any data that cannot be represented by any other domains, such as social and lifestyle facts, medical history, family history, etc. are recorded here.
Since this history is recorded as ICD codes and these codes are not present in the Observation vocabulary as standard concepts, they don't know what standard concepts to store.
However, these ICD codes are represented in the Condition_occurrence vocabulary. The definition of which is this:
Conditions are records of a Person suggesting the presence of a disease or medical condition stated as a diagnosis, a sign or a symptom, which is either observed by a Provider or reported by the patient. Conditions are recorded in different sources and levels of standardization, for example:
Medical claims data include diagnoses coded in ICD-9-CM that are submitted as part of a reimbursement claim for health services and EHRs may capture Person Conditions in the form of diagnosis codes or symptoms.
According to my current (and admittedly imperfect) understanding of OMOP, it seems to me that these records should be stored in the Conditions table and not the Observation table. Because they have a diagnosis code associated with them and it is reported by the patient, and are stored in the EHR, they seem to be conditions, not observations even though they represent history.
In addition, the definition of Observation says that it is for data that cannot be stored in other tables, and since this medical history can be stored in another table (Condition_occurrence) it should be stored there.
Am I misunderstanding something fundamental here?