Issues for Patient Identification Service (PIDS) RTF3 Mailing List

To comment on any of these issues, send email to pids-rtf2@omg.org. (Please include the issue number in the Subject: header, thusly: [Issue ###].) To submit a new issue, send email to issues@omg.org.

List of issues (green=resolved, yellow=pending Board vote, red=unresolved)

List options: All ; Open Issues only; or Closed Issues only

Issue 1533: PIDS opening paragraph for IdentifyPerson
Issue 1820: Implementation problems of IDL for SequentialAccess interface
Issue 1821: "Not implemented" exception
Issue 1822: Exception that indicates that server is missing is needed
Issue 1823: Additional method in ProfileAccess and IdentifyPerson needed
Issue 1824: processing for register_ids, register_new_ids, register_these_ids
Issue 1825: Exception missing
Issue 1827: HNE does not have a list of required person traits for a person addition
Issue 1828: update_and_clear_traits method of ProfileAccess interface
Issue 1830: Allow a way to determine originating domain
Issue 1831: update_and_clear_traits method issue
Issue 1832: merge_ids method
Issue 1833: load_profiles method issue
Issue 1834: get_corresponding_ids method issue
Issue 1835: Change description of ExternalIds trait
Issue 1836: Add find_or_register operation to CorrelationMgr interface
Issue 1838: Typos in PIDS document
Issue 1839: include statement in PersonldService not valid
Issue 1840: Attribute to be removed from PersonldService module
Issue 1841: Description of the InvalidId exception
Issue 2744: Extended Cleanup of Description of QoS Properties
Issue 2750:
Issue 3789: "RequiredTraits" exception issue
Issue 3859: The IDL contained in the PIDS specification is not CORBA compliant

Issue 1533: PIDS opening paragraph for IdentifyPerson (pids-rtf2)

Click here for this issue's archive.
Nature: Revision
Severity:
Summary:
Summary:  The first paragraph on identifyperson should state that it returns IDs  given selection criteria traits.

Resolution: Drop - unless further explanation can be provided.
Revised Text:
Actions taken:
June 18, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 1820: Implementation problems of IDL for SequentialAccess interface (pids-rtf2)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: In reviewing the documentation and IDL for the SequentialAccess Interface, I came to understand that there would be problems with its implementation.
 
 The problems are:
 a. Access Method
 b.  Performance
 c.  Memory Management
 

Resolution:
Revised Text:
Actions taken:
August 18, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 1821: "Not implemented" exception (pids-rtf2)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: 2. The "Not Implemented" exception is needed for the following interfaces and methods because HNE cannot support the functionality:
 
 a) IdMgr->create_temporary_ids()
 b) IdMgr->deactivate_ids()
 c) IdMgr->make_ids_permanent()
 d) IdMgr->unmerge_ids()
 
 

Resolution:
Revised Text:
Actions taken:
August 18, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 1822: Exception that indicates that server is missing is needed (pids-rtf2)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: 2. An exception that indicates that the server is unavailable is needed.  It would allow a client to inform a user of the reason that a person search cannot be completed.  It is needed for several methods.

Resolution: close issue, see above
Revised Text:
Actions taken:
August 18, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 1823: Additional method in ProfileAccess and IdentifyPerson needed (pids-rtf2)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: A method is needed in the ProfileAccess and IdentifyPerson interfaces to indicate the maximum sequence size to be returned by the server.  The method would allow clients to determine the appropriate size in advance, avoiding a server exception.

Resolution: resolved, close issue
Revised Text:
Actions taken:
August 18, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 1824: processing for register_ids, register_new_ids, register_these_ids (pids-rtf2)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: 3. The processing for the "register_ids", "register_new_ids" and "register_these_ids" is very similar.  The implementation software will have to verify that each Id is not already in the system and return an enterprise Id for each person.

Resolution: Update the spec as below.
Revised Text: In section "3.1 Basic Types" add a description for the
Actions taken:
August 18, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 1825: Exception missing (pids-rtf2)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: 3. There is no exception to indicate if a person addition or update is unsuccessful.  For example, if the IdMgr->register_new_ids method is called to add persons into HNE, there is no way to inform a client that the addition was unsuccessful.

Resolution: no action taken, closed issue
Revised Text:
Actions taken:
August 18, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 1827: HNE does not have a list of required person traits for a person addition (pids-rtf2)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: 3. HNE does not have a list of required person traits for a person addition.  It requires that a certain number of primary, secondary, and/or tertiary person traits are defined.  It tries to match the trait definitions to a "Use Case" and will not add a person unless the list of defined traits synchs up with at least one of the "Use Cases".
  
 

Resolution:
Revised Text:
Actions taken:
August 18, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 1828: update_and_clear_traits method of ProfileAccess interface (pids-rtf2)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: 3. In the "update_and_clear_traits"method of the ProfileAccess interface, the list of traits to clear and modify must be checked for invalid entries.  The UknownTraits exception allows for only one list of trait names to be returned.  This makes it impossible for the client to determine which list an invalid trait is in.
 
 

Resolution: close issue
Revised Text:
Actions taken:
August 18, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 1830: Allow a way to determine originating domain (pids-rtf2)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: 3. Methods that update person traits or merge Enterprise Ids should allow for a way to determine the originating domain.  For example, the "update_and_clear_traits" method of the ProfileAccess Interface does not have a parameter for the originating domain of the update.

Resolution: no action taken, close issue
Revised Text:
Actions taken:
August 18, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 1831: update_and_clear_traits method issue (pids-rtf2)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: 2. The "update_and_clear_traits" method of the Identity interface should include the MultipleTraits exception as the "update_and_clear_traits" method in the ProfileAccess interface does.

Resolution: no action taken, close issue
Revised Text:
Actions taken:
August 18, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 1832: merge_ids method (pids-rtf2)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: 2. The "merge_ids" method of the IdMgr interface should provide an exception that allows the server to notify the client when two valid enterprise Ids cannot be merged.

Resolution: Add new exception as described below.
Revised Text: n the PersonIdService module, after the "DuplicateProfiles"
Actions taken:
August 18, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 1833: load_profiles method issue (pids-rtf2)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: 3. The "load_profiles" method of the CorrelationMgr interface should be revised to use exceptions that are consistent with the IdMgr interface.

Resolution: Update spec as described below.
Revised Text: Add the "MultipleTraits" exception to be raised by the
Actions taken:
August 18, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 1834: get_corresponding_ids method issue (pids-rtf2)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: 3. The "get_corresponding_ids" method of the IdMgr interface is intended to return a list of a person"s Ids that are associated with a given list of domains. A person can have different Id types associated with a given domain, such as the external patient Id, internal account number, external account number and patient internal number.   How does the client software determine which Id is which?

Resolution: issue closed, no action
Revised Text:
Actions taken:
August 18, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 1835: Change description of ExternalIds trait (pids-rtf2)

Click
here for this issue's archive.
Nature: Revision
Severity:
Summary:
Summary: 1)  Change description of ExternalIds trait to read   "This read-only      trait indicates the set of other IDs a person may have. The      IDs listed may be from a different ID Domain than the ID Domain of the ID      this trait is bound to. This is more general purpose than CorrelatedIds. The      IDs listed in this trait may be set by other mechanisms than automatic      correlation.    For example, external ids are added to non-correlating domains using      the IDMgr::add_external_ids operation. Correlating PIDS should return      correlated ids. They should also return any non-correlated external ids if      they are tracking non-correlated ids. Note that the client will not be able      to tell the difference between correlated ids and non-correlated ids.    Not all PIDS implementations will support this trait and      the tracking of non-correlated ids."  In the conformance section: "Tracking non-correlated external ids - If a PIDS service tracks      non-correlated ids it must support the IdMgr::add_external_ids operation and      the PIDS/ExternalIds trait."

Resolution: resolved is 1836, close issue
Revised Text:
Actions taken:
August 18, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 1836: Add find_or_register operation to CorrelationMgr interface (pids-rtf2)

Click
here for this issue's archive.
Nature: Revision
Severity:
Summary:
Summary: 2) Change PIDS interfaces    a) Add a "find_or_register" operation to the      CorrelationMgr interface that accepts a QualifiedTaggedProfileSeq instead of      a TaggedProfileSeq like the IdMgr find_or_register operation. This would      make the requirement for the QualifiedPersonId explicit.   b) Add a new operation to the IdMgr interface called      "add_external_ids". This would allow an explicit agreement and the      part of the client and non-correlating service to track uncorrelated      identifiers. A PIDS service could return NotImplemented if it doesn"t track      external ids. A correlating PIDS service could also return NotImplemented if      it doesn" t track non-correlated ids.  I have attached the revised IDL for the IdMgr and      CorrelationMgr interfaces. We  like these changes because they make the requirement for the QualifiedPersonId  explicit as well as removing the ambiguity associated with the ExternalIds  trait.  We  appreciate all the thought that has gone into the PIDS specification and  understand that our needs might be met in a more creative way that does not  require any changes to the PIDS specification. We would appreciate any feedback  you have.

Resolution: Update spec as below.
Revised Text: Add the follwoing operation to CorrelationMgr:
Actions taken:
August 18, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 1838: Typos in PIDS document (pids-rtf2)

Click
here for this issue's archive.
Nature: Revision
Severity:
Summary:
Summary: There are a number of mostly minor typos in the final PIDS document I
 obtained from the OMG web server.
 
 I"ve annotated the corbamed/98-02-29.pdf file and placed it in
 http://www.acl.lanl.gov/~dwf/PIDS/98-02-29.pdf.  The changes are in
 notes attached to the PDF document.  
 
 The most serious are two problems with the IDL.  In the NamingAuthority
 module: #pragma prefix "omg.org " should have the space removed after
 org.  In the HL7Version2_3 module, PHONE_NUMER_HOME should be replaced by
 PHONE_NUMBER_HOME.
 
 The others are mostly spelling corrections and name changes to match the
 style guide used in the actual IDL.

Resolution: resolved
Revised Text:
Actions taken:
August 19, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 1839: include statement in PersonldService not valid (pids-rtf2)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: The PersonIdService module has an include statement that is no longer
 valid - "Notifications.idl".

Resolution: resolved, close issue
Revised Text:
Actions taken:
August 19, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 1840: Attribute to be removed from PersonldService module (pids-rtf2)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: The PersonIdService module still contains the following:
 
         readonly attribute Notification::EventComponent 
 event_component;
 
 The Notification module was removed fro the adopted spec so this
 attribute must also be removed.

Resolution: closed
Revised Text:
Actions taken:
August 19, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 1841: Description of the InvalidId exception (pids-rtf2)

Click
here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
Summary: The description of the InvalidId exception implies that PIDS servers
 that only know about a subset of the IDs in an ID Domain would throw the
 InvalidId exception when a client passes an unknown ID to a call.  Many
 of the operation calls take a sequence of IDs and the spec implies the
 exception is thrown if any one of the passed in IDs are not known.  This
 is an over burden for a client to either know ahead of time which IDs
 the server knows about or handle an exception to remove the violating
 IDs and try again.  In relation to the definition of the InvalidId
 exception:
 
 	Please remove para 1 sentence 3.
 
 	PLease replace para 2 sentence 3 with "An Unkown ID passed into a call
 only causes an exception to be raised if the operation signature only
 takes one ID."
 

Resolution: resplved
Revised Text:
Actions taken:
August 19, 1998: received issue
February 25, 1999: closed issue

Discussion:


Issue 2744: Extended Cleanup of Description of QoS Properties (pids-rtf2)

Click
here for this issue's archive.
Nature:
Severity:
Summary:
The issue author enumerates several points of confusion with 

          regard to the applicability of QoS properties to specific objects

          within a channel. The issues are as follows:



        1) Setting Priority or Timeout on a ConsumerAdmin or ProxySupplier

           is meaningless, and should be disallowed



        2) StartTimeSupport and StopTimeSupported on a ProxyConsumer or

           SupplierAdmin is meaningless, and should be disallowed



        3) OrderPolicy (like DiscardPolicy) on a ProxyConsumer or 

           SupplierAdmin is meaningless, and should be disallowed



        4) MaximumBatchSize and PacingInterval are meaningless for Any

           and Structured Event style Proxies



        The issue author goes onto suggest that Table 2-4 should add

        specific columns for each style of Proxy, so that the applicability

        of QoS properties to specific objects can be designated with finer

        granularity.

Resolution: fixed, see below
Revised Text: For 2744c, texted added to Maximum Batch Size and Pacing Interval sections of section 2.5.5. Also added footnote 2 under table 2-4. As for 2744d, this issue was actually related to other issues that asked for certain QoS properties that applied to Proxies be constrained to particular types of Proxies (i.e., that some apply only to ProxySuppliers and not ProxyConsumers, and vice versa). But, all issues of this nature failed to pass, so currently there are no properties that are specific to only ProxySuppliers or ProxyConsumers. Thus, I really don't see any value in dividing the "Proxy" or "Admin" columns into more specific columns, because the subdivided columns would have identical entries.
Actions taken:
June 16, 1999: received issue
November 16, 1999: closed issue

Discussion:
Issue 1) above overlaps with issue 2740, so will not be 

             considered here. Regarding issue 2), I personally disagree

             with this. I think it's conceivable to set a StartTime or

             StopTime on a ProxyConsumer or a ProxySupplier. When set on

             a ProxyConsumer, it informs that Proxy upon receiving an 

             event with a StartTime or StopTime in its header, it should

             honor that setting. In the case of StartTime, it should not

             queue the event for delivery to ProxySuppliers until StartTime

             has occurred. In the case of StopTime, if the time the event

             is received is later than StopTime, it should simply discard

             the event. In general, I think we should not preclude the

             setting of QoS properties on specific objects unless there is

             clearly no possible semantic that can be associated with them.

             Specific implementations are always free (and still in 

             compliance) to disallow setting of QoS properties on specific

             objects if they choose, but the spec itself should not preclude

             implementors from supporting the setting of a QoS property on 

             specific objects unless that setting very clearly could have

             no meaning. My opinion is that the author of this issue is

             overly concerned that the specification describe the exact

             behavior of their specific information, which I feel is 

             unnecessary in any case (the specification certainly does not

             describe every aspect of the behavior of our implementation!).

             Issue 3) I could go along with, as I cannot think of any

             reasonable meaning that could be associated with OrderPolicy

             on the Consumer side of the channel. I agree that OrderPolicy

             and DiscardPolicy have similar semantics here, and what's 

             already stated in the spec with respect to DiscardPolicy should

             apply to OrderPolicy too. Regarding issue 4), I agree however

             personally feel this is so obvious it doesn't need to be stated.

             Finally, regarding the basic recommendation that table 2-4

             be made more granular (to show applicability of QoS properties

             to specific styles of Proxies), I have no real opposition to 

             doing this, except that it may make it difficult to fit the

             table on the page.



VOTE: Again, I will break down this vote into the following subvotes. Note

      that I consider issue 1) to be covered by issue 2740, so we'll ignore

      that one here.



        Issue 2744c: YES means to state the MaximumBatchSize and

                     PacingInterval do not apply to anything other than

                     Sequence Proxies (and the Channel and Admins that

                     create them). NO means to do nothing.



        Issue 2744d: YES means to break Table 2-4 down into further 

                     columns that show applicability of QoS properties to

                     each specific style of Proxy. NO means to do nothing.


NOTE: 2744c and 2744d passed


Issue 2750: (pids-rtf2)

Click
here for this issue's archive.
Nature:
Severity:
Summary:

Resolution: closed
Revised Text:
Actions taken:
June 17, 1999: received issue
June 17, 1999: received issue
June 21, 1999: closed issue,

Discussion:


Issue 3789: "RequiredTraits" exception issue (pids-rtf2)

Click
here for this issue's archive.
Source: Level Seven Visualizations (Mr. Jon Farmer, jon(at)level7vis.com)
Nature: Uncategorized Issue
Severity:
Summary:
he "RequiredTraits" exception returns a sequence of traits. But
make_ids_permenant takes an ARRAY
of input ids. So this exception if thrown won't provide any usefull
information as to which id
had the problem.

Our implementation, rather than throwing the exception, just creates the ID
in a temporary state.  However, as we recently considered supporting the
exception in conjunction with a probabilistic matching algorithm, we found
the following ambiguity:

The RequiredTraits exception inlcudes a list of required traits, but the
spec doesn't clarify that this is the complete list of required traits  -
assuming that its the same set for any input profile -  so that the client
can figure out which IDs need for traits.

The problem with that semantic is as follows.  Some probabilisitc matching
algorithms can only determine the adequacy of the incoming trait set by
inspecting the VALUES of the trait types supplied.  for example, if the
incoming request tries to register two ids, one with first=John ,
Last=Smith, and the second with First=Mergetroid Last=Pepperdyne, a
probabilisitc algorithm will likely accept the second but reject the first;
YET BOTH supplied the same traits.  Hwo could the client figure out what's
missing?  How the server even figure out what's missing?  Neither can.  ONLY
THE ALGORITHM KNOWS....... AND IT ONLY KNOWS ONCE IT HAS SEEN THE INPUTS.

Therefore we need to define clearly what the exception semantics are, and in
a way that doesn't preclude the use of probabilistic matchers that cannot
assess adequacy in a "one trait list fits all" manner.

One possible solution is to have the exception return a SEQUENCE OF
offending ids - so the client can know which are offensive.  Instead of also
including for each the set of traits needed, the return structure could show
the confidence deficit for each.

Resolution: see below
Revised Text: The RequiredTraits exception will be modified to return a MultipleFailureSeq structure, which supplies the following return info for each problematic input ID: the_index identifies the entry that this structure responds to ExceptionReason Indicates the specific reason for failure of this entry. TraitNameSeq if the input failed due to lack of some required traits, then this structure names the specific traits that were missing for this entry. This solution would enable the client to efficiently submit a batch of temporary IDs to the operation, get the exception if appropriate, easily segregate the inputs and then resubmit only the "keepers". While this solution completely and robustly resolves the issue, it does require that we modify the IDL for the RequiredTraits exception. (Rejected) IDL-Saving Alternative The following narrative, if added to the spec, would render the existing IDL usable, but would still prevent the use of the operation with mutliple input IDs. In other words, the spec would remain broken, but usable. "If the server determines that the profile for any of the IDs in question is inadequate for permanent status, the it shall raise the RequiredTraits exception. Furthermore: 1. If the server defines a set of required (mandatory traits), then the exception shall return the sequence of trait names for the required traits. 2. In the case where the server either does not define a set of required traits, or does define a set of required traits but has also disqualified one or more Ids based on other rules, it shall return an empty sequence of trait names. This solution leaves the client unable to discover which of the inputs failed for what reason. For example, even if there were mutliple input IDs specified, if the exception were thrown with the return structure empty, the client would not be able to determine which ones were bad except by submitting each input in its own separate invocation of the operation. This could be prohibitively difficult, to the point where the operation is never used except with only one input entry per invocation. Disposition: Resolved Revised Text: 1. In the description of the RequiredTraits exception, insert the following text: "Note that since a "trait" includes both a trait name and trait value, the Required Traits exception denotes the fact that the operation's inputs may have been lacking not only in "which traits had values", but in the values themselves. In both cases, the RequiredTraits exception would be thrown. However, in the fomer case the reason would be "RequiredTraits" and in the latter case the reason would be "InsuffientConfidence". These specific reasons for failure are represented in the second element of the MultipleFailureSeq structure (show the table here): 2. Add InsufficientConfidence to the enum of failure reasons. And add supportive text explaining: "The specification of InsufficientConfidence as a failure reason in a make_ids_permanent operation indicates that the underlying logic has rejecting the profile's confidence by virtue of trait values."
Actions taken:
August 10, 2000: received issue
February 27, 2001: closed issue

Issue 3859: The IDL contained in the PIDS specification is not CORBA compliant (pids-rtf2)

Click
here for this issue's archive.
Nature: Revision
Severity: Minor
Summary:
The IDL contained in the PIDS specification is not CORBA compliant. 

Specifically, the declarations 

struct TaggedProfile { PersonId id; Profile profile; }; 

and 

struct TraitSelector { Trait trait; float weight; }; 

fail to comply with the rule that the semantics of OMG IDL forbids identifiers in the same scope to differ only in case. 

The PIDS IDL will compile under the OrbixWeb ORB, but it fails to compile under ORBacus unless the --case-sensitive option (which is not CORBA compliant) is used.

Resolution: see below
Revised Text: Insert the prefix "PersonIdService::" into the appropriate contexts as shown here: struct TraitSelector { PersonIdService::Trait trait; struct TraitSelector { PersonIdService::Trait trait; float weight; }; typedef sequence<TraitSelector> TraitSelectorSeq; struct Candidate { PersonId id; float confidence; PersonIdService::Profile profile; }; .. struct TaggedProfile { PersonId id; PersonIdService::Profile profile; }; typedef sequence<TaggedProfile> TaggedProfileSeq; struct QualifiedTaggedProfile { QualifiedPersonId id; PersonIdService::Profile profile; };
Actions taken:
September 15, 2000: received issue
February 27, 2001: closed issue

Discussion:
Resolution:
Prefix each of the offending types with the qualifier "PersonIdService::"
as follows:
         struct TraitSelector {
                 PersonIdService::Trait trait;