Created ticket: https://tickets.openmrs.org/browse/TRUNK-3290

Ben

On Fri, Apr 20, 2012 at 9:49 AM, Mark Goodrich <[email protected]> wrote:

> The issue with provider.name vs provider.person.name is that now a
> Provider’s name could be either a String or a PersonName (or really a list
> of Person Names).  This makes it harder, for example, to develop a generic
> “Provider Demographics” widget.  Now this may be moot because Demographics
> implies Person.  The UI I’m designing in the Provider Management module
> will provide the means to handle editing Provider demographics information,
> and will be designed to only work with Persons who are Providers, not any
> Providers.  I don’t think this a huge deal, but I think Mike’s point is
> that since this is one of the first uses of the new Provider object and we
> are ignoring Personless providers, we might want to reconsider if it is
> worth having them at all.****
>
> ** **
>
> Mark****
>
> ** **
>
> *From:* [email protected] [mailto:[email protected]] *On Behalf Of *Ben Wolfe
>
> *Sent:* Friday, April 20, 2012 8:16 AM
> *To:* [email protected]
> *Subject:* Re: [OPENMRS-DEV] Providers and Persons****
>
> ** **
>
> PIH has asked for birthdate to be null for patients recently:
> https://tickets.openmrs.org/browse/TRUNK-3016  Use-case: when importing
> patients from past records that have missing date.
>
>
> Mark: if the provider is linked to the person, provider.name is cleared
> and should defer to provider.person.name.  We need a simple API/pojo
> method for getting the name if it doesn't exist already.
>
> Any changes decided upon here will *not* make it into 1.9.0.  Any change
> to the underlying datamodel or API at this point *will* force us to
> re-beta the 1.9.x line.
>
> If we change our minds and make provider.person non null in 1.9.1 it is
> not the end of the world.  Creating person records for each null
> provider.person would be relatively easy using liquibase.  Mark's Provider
> dashboard would simply require that point release and would work more
> "completely".
>
> I'm on the side of requiring providers to have a person record.
> person.gender doesn't have to be nullable: We could add an "unknown" gender
> to prevent NPE backwards compatibility.  person.birthdate could be nullable
> and make it an API/UI option if it is required on the
> person/patient/provider creation screens.  (with 10000 extra rows in the
> person_name table we will need to implement the lucene searches soon
> though: https://tickets.openmrs.org/browse/TRUNK-425)
>
> Ben
>
> ****
>
> On Fri, Apr 20, 2012 at 12:13 AM, Burke Mamlin <[email protected]>
> wrote:****
>
> Actually, allowing persons to exist without names, genders, or birthdates
> will probably have broader implications on existing code (possibly
> introducing a wave of NPEs) than whether or not providers, who aren't being
> used anywhere yet, are required to be linked to a person record.****
>
> ** **
>
> Would the allowance for person records without names, genders, or
> birthdates be allowed for persons linked to patients and/or users as well?
>  We don't want patients without names, genders, or birthdates do we?  I
> could imagine (and think folks might appreciate) creating user accounts
> without requiring genders/birthdates, but I'm not thrilled about supporting
> users without names.  So, we end up with something like this (with
> provider, like user & patient, requiring a person record):****
>
>    - Person stubs (not linked to user, patient, or provider) and Patients
>    (i.e., person records linked to a  patient) still require name, gender, and
>    birthdate.****
>    - Person linked to a user or provider (but not patient) must at least
>    have a name (gender & birthdate become optional)****
>
> That would mitigate a large number of the potential NPE, meaning that only
> code assuming that all persons have known genders or birthdates be
> refactored.****
>
> ** **
>
> FWIW, I'll try to chat with Shaun tomorrow about the implications for
> de-duplication efforts.****
>
> ** **
>
> -Burke****
>
> ** **
>
> On Thu, Apr 19, 2012 at 11:00 PM, Michael Seaton <[email protected]> wrote:*
> ***
>
> Thanks Burke,
>
> Sounds like a a decent approach, I'd be interested to hear what Shaun
> thinks about the de-duplication issue.  That is also something I care a lot
> about.  I would hope API and UI-level restrictions would be able to
> mitigate this, when appropriate.
>
> Obviously there is little chance that this conversation has any impact on
> our 1.9 release.  Unfortunately, it will be harder to make a previously
> nullable column not-nullable down the road than it would to start out with
> the more restrictive option.  Of course, I could have weighed in on this 9
> months ago (or more) when it was actually being designed, but I don't think
> I would have had the same perspective then.
>
> In any event, this isn't really a deal-breaker for us, but it will have an
> impact on what providers can be managed by the module we are developing.
> I'm happy to discuss it further on a design call if my proposal has merit.
> If not, we can work with it as is.
>
> Cheers,
> Mike****
>
>
>
>
> On 04/19/2012 04:44 PM, Burke Mamlin wrote: ****
>
> Mike, ****
>
> ** **
>
> I'm just concerned about our de-duplication efforts.  If we make all
> demographics optional, then we may go take de-duplication from a difficult
> task to an impossible one.  That said, if the de-duplication effort can
> take linked objects into consideration – i.e., know that a person is linked
> to a provider – then perhaps an anonymous person record isn't so terrible…
> as long as it's linked.  In other words, perhaps the compromise here is the
> best solution: only un-linked person records require basic demographics.
>  In other words, you cannot create a nameless, genderless, ageless person
> record that stands on its own; rather, it would have to be linked to a
> patient, user, and/or provider.  Likewise, you could not unlink an person
> record lacking name+gender+age from all patient/user/provider objects
> without also voiding it.  Of course, the API would need to enforce this.**
> **
>
> ** **
>
> Maybe we can discuss with Shaun regarding side-effects on de-duplication
> efforts.****
>
> ** **
>
> BTW… I know I have a reputation as a complicator (that's why Win avoids
> me).  I'm not thrilled about it & I'd much rather be seen as a simplifier,
> but I don't believe it's always "simpler" when an easy solution now just
> ends up deferring the difficulty or shifting it to somebody else.  Usually,
> un-debated solution (even my own) are weaker than those that have been
> beaten around a few heads.  In fact, the best solutions I've seen are
> compromises.  If I'm making things complicated without good reason, please
> continue to call me on it.****
>
> ** **
>
> -Burke****
>
> On Thu, Apr 19, 2012 at 3:53 PM, Michael Seaton <[email protected]> wrote:**
> **
>
> Hi Burke,
>
> I understand your point.  But is it all or nothing with regards to
> constraints?  If we remove the data model constraints on Person here, it
> gives us the flexibility to address each use case as we see fit:
>
> * We allow Providers to be simply links to mostly-empty person records,
> with a single Person name that contains a title and a surname.
> * We allow Users to also be genderless and ageless (why should we care
> about this here either)?
> * We force Patients to have age and gender specified if entered via
> certain service methods
> * We leave the door open for Patients without gender or birthdate if
> needed (eg. if I want to import from EPI Info, and some patients are
> missing these fields)
>
> As it is now we will have a provider management module that will manage
> _some_ providers, but not all.  This isn't a deal-breaker, but it would be
> better if it weren't so.
>
> We also have API methods that we have to deal with (and haven't done so
> well as of yet) - for example, in trunk currently we have
> Provider.getName() return simply the name property of the object.  It does
> not take the underlying Person into consideration at all.  Yes, this could
> (and should) be fixed, but it's just added complexity to now have 2 places
> where names may be stored for a Provider.
>
> It just seems to me that we are over-complicating things unnecessarily,
> and I want to put out this alternative design out for consideration...
>
> Mike ****
>
>
>
>
> On 04/19/2012 03:23 PM, Burke Mamlin wrote: ****
>
> Mark, ****
>
> ** **
>
> If we have (very useful) information about all providers in the district
> and they contain title & identifiers like "Dr. Ochieng (1234-5)", are you
> saying that we should not require gender, at least estimated birthdate, and
> at least two names on Person to allow this?****
>
> ** **
>
> The key difference between a provider and a user is that a provider does
> not have to *have* anything whatsoever to do with the EMR beyond being
> references (e.g., capturing a referring provider from an external facility).
> ****
>
> ** **
>
> Defining a person without knowing their name, whether they're male vs.
> female, or whether they're two years old vs. 50 years old would make Person
> solely a linking tool – i.e., akin to auto-generating 100,000 nameless,
> genderless, ageless records in the person table and picking the next one
> when you want to link a patient to user, provider to user, etc.  This is
> directly counter to our effort to leverage Person as the one location
> within which we focus our efforts to *avoid and address* duplication
> errors.****
>
> ** **
>
> We could require that all providers are persons, but I don't believe we
> should make all hopes at identification for person optional to do it;
> rather, we'd need to come up with a solution for those folks who get the
> list of providers like "Dr. Ochieng (1234-5)" and are missing the
> demographics to generate a person.****
>
> ** **
>
> What's driving you to this conclusion?  Is there some reason that you
> can't limit yourself to providers linked to person records?  Where is the
> assumption that provider must be a person being made?****
>
> ** **
>
> -Burke****
>
> On Thu, Apr 19, 2012 at 2:46 PM, Michael Seaton <[email protected]> wrote:**
> **
>
> Hi all,
>
> I brought up an idea buried in an email during the Provider Attribute
> thread a few weeks ago, but it was lost a bit in all of the many other
> points being made, so I wanted to raise it here again explicitly.
>
> I think making the link between Provider and Person optional is a mistake.
>  Here is my reasoning:
>
> * A Provider in OpenMRS is not meant to be a subclass.  It is meant to be
> a particular role in the health care system that a Person can have.  And a
> person may have many of these.
>
> * The most similar thing we have in OpenMRS to this is User.  No users are
> allowed in OpenMRS without being associated with a Person.  User is
> probably more accurately thought of as a User Account.  Clearly a single
> Person can hold multiple User Accounts.
>
> * The only real reason I can see for making Person optional is so that we
> can avoid having to require things like "gender", "birthdate", etc. on
> Provider that have traditionally been required of Person at the database
> and API levels.  For example, if we are uploading a list of 10,000
> providers from a national registry, and all we have is a String name, and
> no gender or birthdate data.  However, I think a more valid solution to
> this problem is just to remove those data model and API restrictions, and
> to make Person not require this data.  Then, we just move those validation
> constraints onto the Patient object if we desire (though to be honest we
> don't always have this information here either, particularly if we are
> importing data from a legacy system).
>
> So, I realize we are at RC3 for 1.9 and all, but my proposal would be to:
>
> * Make Person not null on Provider
> * Make gender and birthdate nullable on Person
>
> This is particularly relevant to our team at PIH as we are currently
> building a Provider Management module on top of 1.9.  Mark has had to bake
> in the assumption that all Providers have Person records (at least those
> that can be managed with this module), because this is required for many of
> our use cases - in particular the notion that Providers are linked to their
> Patients and to other Providers via Relationships.
>
> I would be interested to hear others thoughts on this or if any of my
> assertions / assumptions are just wrong.
>
> Thanks,
> Mike
>
> _________________________________________
>
> To unsubscribe from OpenMRS Developers' mailing list, send an e-mail to
> [email protected] with "SIGNOFF openmrs-devel-l" in the  body
> (not the subject) of your e-mail.
>
> [mailto:[email protected]?body=SIGNOFF%20openmrs-devel-l]****
>
> ** **
> ------------------------------
>
> Click here to 
> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
> OpenMRS Developers' mailing list
> ****
>
> ------------------------------
>
> Click here to 
> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
> OpenMRS Developers' mailing list
> ****
>
> ** **
> ------------------------------
>
> Click here to 
> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
> OpenMRS Developers' mailing list
> ****
>
> ** **
> ------------------------------
>
> Click here to 
> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
> OpenMRS Developers' mailing list
> ****
> ------------------------------
> Click here to 
> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
> OpenMRS Developers' mailing list
>

_________________________________________

To unsubscribe from OpenMRS Developers' mailing list, send an e-mail to 
[email protected] with "SIGNOFF openmrs-devel-l" in the  body (not 
the subject) of your e-mail.

[mailto:[email protected]?body=SIGNOFF%20openmrs-devel-l]

Reply via email to