I've been out to the
Pattern Repository and done some Google hunting, but I'm drawing a blank. Hoping that if I describe my basic problem, someone can point me either to a specific pattern or a set of keywords to help me in my hunt. . . This post is long, because the basic problem is I'm attempting to crystallize my problem, trying to make it into something more recognizable.
We're building a system that will let researchers search and browse against a database of medical data. That data will be of varying types (dates, coded values, images, . . .), all tied together in pretty well-known way (it all belongs to some woman who went in for a doctor's visit on a particular day). So far, so good - I can group Attributes together using the Composite pattern to form more manageable UI items, etc, etc.
I guess the gut problem is this: I have a dynamic data application. The set of fields in my database will change over time (more will be added, basically, as that data is scrubbed), and I don't want to change my application every time a field is added, particularly since there's no business logic associated with the data - simply read. So there's no reason to encapsulate the given data into objects - the objects are the things that interact with the data in a generic way. So, I need a way to deal with both knowing that the attributes are there, and some set of semantics about them (essentially, the stuff I'd store in the idea of an Attribute: descriptions, that the set of values is within a certain range, etc.).
How do I tie the idea of the attribute to the data itself? I envision the data being stored in your basic relational database structure to assist in searching (1 woman has multiple visits, each with their own set of attributes), and the set of attribute data being stored somewhere else. But I haven't made the conceptual pattern leap to tie the two together. E.g., I want to retrieve the set of data from the database, and know its attribute structure, as well.
I have a sample application that I've been poking at (the open source Scarab issue tracking system) - trying to get some insight there, since it deals with a set of dynamic attributes for issues.
Not an easy post/question, but hoping it's intriguing enough to someone to post some ideas.