public interface Role extends InfrastructureRoot, Versioned
Entity
playing the Role
as
identified, defined, guaranteed, or acknowledged by the Entity
that scopes the Role
.
Discussion: An Entity
participates in an Act
as in
a particular Role
. Note that a particular entity in a particular
Role
can participate in an act in many ways. Thus, a Person in
the Role
of a practitioner can participate in a patient
encounter as a rounding physician or as an attending physician. The
Role
defines the competency of the Entity
irrespective of any Act
, as opposed to Participation, which are
limited to the scope of an Act
.
Each Role
is "played" by one Entity
, called the
"player" and is "scoped" by another Entity
, called the "scoper".
Thus the Role
of "patient" may be played by a person and scoped
by the provider organization from which the patient will receive services.
Similarly, the employer scopes an "employee" Role
.
The identifier of the Role
identifies the Entity
playing the Role
in that Role
. This identifier is
assigned by the scoping Entity
to the player. The scoping
Entity
need not have issued the identifier, but it may have
re-used an existing identifier for the Entity
to also identify
the Entity
in the Role
with the scoper.
Most attributes of Role
are attributes of the playing entity
while in the particular Role
.
Oracle: Many of the subclasses of Role
have restricted player
and scoper entities.
Validation on attributes of a Role
vary depending on whether the
Role
is "owned by" an entity or the Role
participates in an Act
. A Role
can be owned by
either its player or scoper entity. To create an owned Role
, use
the addPlayedRole or addScopedRole methods on Entity
and its
subclasses.
Owned roles' validation differs in the following ways:
Role
due to need to support non-unique Ids, as above. Role
must have at least a player or scoper
Entity
Entity
,
Act
,
Person
,
Entity.addPlayedRole(CS, CE, Entity, SET)
,
Entity.addScopedRole(CS, CE, Entity, SET)
,
ReferenceModifier
,
RoleFactory.makeReference(ReferenceModifier,
CS, CE, Entity, Entity, SET, int)
,
Entity.addPlayedRole(CS, CE, Entity, SET)
,
Entity.addScopedRole(CS, CE, Entity, SET)
,
ReferenceModifier
,
RoleFactory.makeReference(ReferenceModifier,
CS, CE, Entity, Entity, SET, int)
Modifier and Type | Method and Description |
---|---|
void |
addAddr(AD addr)
Adds an address to the set of addresses.
|
void |
addConfidentialityCode(CE confidentialityCode)
Adds a confidentiality code to the set of codes.
|
void |
addId(II id)
Adds an Id to the set of Ids.
|
void |
addName(EN name)
Adds a name to the bag of names.
|
void |
addPositionNumber(INT positionNumber)
Adds a position number to the list of position numbers.
|
void |
addTelecom(TEL telecom)
Adds a TEL datatype to the bag of TELs.
|
BAG<AD> |
getAddr()
An address for the
Entity while in the Role . |
ED |
getCertificateText()
A textual or multimedia depiction of a certificate issued by the scoping
Entity of a Role certifying that this
Role is indeed played by the player Entity . |
CS |
getClassCode()
A code specifying the major category of a
Role as defined by
HL7 vocabulary. |
CE |
getCode()
A code further specifying the kind of
Role . |
SET<CE> |
getConfidentialityCode()
A code that controls the disclosure of information about this Role with
respect to the playing Entity..
|
GTS |
getEffectiveTime()
An interval of time specifying the period during which the
Role is in effect, if such time limit is applicable and
known. |
SET<II> |
getId()
A unique identifier for the player
Entity in this
Role . |
BAG<EN> |
getName()
A non-unique textual identifier or moniker for the playing Entity
intended for use principally when playing the Role...
|
BL |
getNegationInd()
An indicator specifying that the
Role is a competency that
is specifically not attributed to the Entity playing the
Role . |
Iterator |
getParticipations()
Returns all the retrieved participations in which this
Role
is the participant. |
Iterator |
getParticipations(ParticipationFetch partFetch)
Gets participations returned based on this fetch object.
|
Entity |
getPlayerEntity()
Returns the
Entity playing the Role . |
Entity |
getPlayerEntity(EntityFetch entityFetch)
Gets player
Entity returned based on this fetch object. |
LIST<INT> |
getPositionNumber()
An integer specifying the position of the
Entity playing the
Role with respect to the Entity that scopes the
Role . |
RTO<PQ,PQ> |
getQuantity()
A ratio (numerator : denominator) specifying the relative quantities of
the
Entity playing the Role in the
Entity scoping the Role , used for roles that
represent composition relationships between the scoping and playing
entities. |
Entity |
getScoperEntity()
Returns the
Entity scoping the Role . |
Entity |
getScoperEntity(EntityFetch entityFetch)
Gets scoper
Entity returned based on this fetch object. |
CS |
getStatusCode()
A code specifying the state of this
Role as defined in the
state-transition model. |
BAG<TEL> |
getTelecom()
A telecommunication address for the
Entity while in the
Role . |
void |
setAddr(BAG<AD> addr) |
void |
setCertificateText(ED certificateText) |
void |
setConfidentialityCode(SET<CE> confidentialityCode) |
void |
setEffectiveTime(GTS effectiveTime) |
void |
setName(BAG<EN> name) |
void |
setNegationInd(BL negationInd) |
void |
setPlayerEntity(Entity entity) |
void |
setPositionNumber(LIST<INT> positionNumber) |
void |
setQuantity(RTO<PQ,PQ> quantity) |
void |
setScoperEntity(Entity entity) |
void |
setStatusCode(CS statusCode) |
void |
setTelecom(BAG<TEL> telecom) |
getControlAct, getToken, setToken
createNewVersion, getVersionNum, isCurrentVersion
SET<CE> getConfidentialityCode()
Discussion: It is important to note that the necessary confidentiality of the medical record cannot be achieved solely through confidentiality codes to mask individual record items from certain types of users. There are two important problems with per-item confidentiality: one is inference and the other is the danger of holding back information that may be critical in a certain care situation. Inference means that filtered sensitive information can still be assumed given the other information that was not filtered. The simplest form of inference is that even the existence of a test order for an HIV Western Blot test or a T4/T8 lymphocyte count is a strong indication for an existing HIV infection, even if the results are not known. Very often, diagnoses can be inferred from medication, such as Zidovudin for treatment of HIV infections. The problem of hiding individual items becomes especially difficult with current medications, since the continuing administration of the medication must be assured.
To mitigate some of the inference-risk, aggregations of data should assume the confidentiality level of the most confidential action in the aggregation.
void setConfidentialityCode(SET<CE> confidentialityCode) throws HDRRimException
HDRRimException
void addConfidentialityCode(CE confidentialityCode) throws HDRRimException
confidentialityCode
- The confidentiality code to addHDRRimException
Entity getPlayerEntity() throws HDRRimException
Entity
playing the Role
. If
multiple fetch objects were attached in the query and they had returned
multiple versions of the player Entity
, then calling this
method would throw an Exception. This would return the player
Entity
when only one version of this has been fetched
through query. If this method is called on a Role
obtained
through RoleFactory then this would return the player Entity
attached in the Factory. If the Role
is versioned through
createNewVersion call, then we will carry forward the current version
player Entity
only. So calling this method here would either
return the current version of player Entity
or null, if the
current version of player Entity
was not fetched in the
query.
For example the entity playing a patient could be a person
Entity
which has been retrieved.HDRRimException
- When multiple versions of player Entity
were fetched as part of the query.Entity getPlayerEntity(EntityFetch entityFetch) throws HDRRimException
Entity
returned based on this fetch object. If
this entityFetch object was used in the query, then this method would
return the player Entity
fetched due to this fetch object.
Otherwise it would return null.entityFetch
- EntityFetch object containing the search criteria.Entity
which has been retrieved using the
specified fetch map.HDRRimException
- under the following conditions:
Role
is not a queried object (i.e. obtained
through ActFactory or createNewVersion method).Entity getScoperEntity() throws HDRRimException
Entity
scoping the Role
. If
multiple fetch objects were attached in the query and they had returned
multiple versions of the scoper Entity
, then calling this
method would throw an Exception. This would return the scoper
Entity
when only one version of this has been fetched
through query. If this method is called on a Role
obtained
through RoleFactory then this would return the scoper Entity
attached in the Factory. If the Role
is versioned through
createNewVersion call, then we will carry forward the current version
scoper Entity
only. So calling this method here would either
return the current version of scoper Entity
or null, if the
current version of player Entity
was not fetched in the
query.
For example the entity playing a patient would typically be an organization
Entity
which has been retrieved.HDRRimException
- When multiple versions of scoper Entity
were fetched as part of the query.Entity getScoperEntity(EntityFetch entityFetch) throws HDRRimException
Entity
returned based on this fetch object. If
this entityFetch object was used in the query, then this method would
return the scoper Entity
fetched due to this fetch object.
Otherwise it would return null.entityFetch
- EntityFetch object containing the search criteriaEntity
which has been retrieved using the
specified fetch map.HDRRimException
- under the following conditions:
Role
is not a queried object (i.e. obtained
through ActFactory or createNewVersion method).CS getClassCode()
Role
as defined by
HL7 vocabulary.
Role
by the Role
factory.SET<II> getId()
Entity
in this
Role
. The II is unique across a broad class (Act, Entity,
non-owned Role) rather than across the finer grained classes of HL7.
void addId(II id) throws HDRRimException
id
- The id, must be a valid II
. The II is unique
across a broad class (Act, Entity, non-owned Role) rather than across the
finer grained classes of HL7.HDRRimException
- If this Role
is a queried object.CE getCode()
Role
.
Discussion: The Role.code
must conceptually be a proper
specialization of Role.classCode
. Role.code
does not modify Role.classCode
. Rather, each is a complete
concept or a Role
-like relationship between two entities,
but Role.code
may be more specific than
Role.classCode
.
The Role.code
may not be coded if only an un-coded name for
the type of Role
is commonly used.
Role
code is set set on the
Role
by the Role
factory.BL getNegationInd()
Role
is a competency that
is specifically not attributed to the Entity
playing the
Role
.
Examples: 1.) This person is not our employee
2.) This mouthwash does not have alcohol as an ingredient.
Constraint:
Normally all roles are considered to be affirmative. (This attribute defaults to FALSE).
void setNegationInd(BL negationInd) throws HDRRimException
HDRRimException
- If this Role
is a queried object.void setAddr(BAG<AD> addr) throws HDRRimException
HDRRimException
- If this Role
is a queried object.void addAddr(AD addr) throws HDRRimException
addr
- The address as an AD type.HDRRimException
- If this Role
is a queried object.Iterator getParticipations()
Role
is the participant. If multiple participation fetch objects were attached
in the query, then this method would return the union of all the results
that the individual fetch objects have returned. If this method is called
on a Role
obtained through RoleFactory
then
this would return null unless this has been linked to any
Act
through addParticipation
method. If this
method is called on a Role
versioned through
createNewVersion
call, then this would return all the
retrieved participations in which this Role
is the
participant.Iterator getParticipations(ParticipationFetch partFetch) throws HDRRimException
Gets participations returned based on this fetch object. If this
participationFetch
object was used in the query, then this
method would return the participations fetched due to this fetch object.
Otherwise it would return null. For example, from a particular patient,
calling this method with a criteria like participation type is SUBJ will
return an iterator to all participations, for that patient. This is the
most common way to access clinical data associated with a patient or
privileges associated with a staff member, etc.
partFetch
- fetch object containing the search criteria.roleFetch
.HDRRimException
- under the following conditions:
Role
is not a queried object (i.e. obtained
through ActFactory
or createNewVersion
method).void setTelecom(BAG<TEL> telecom) throws HDRRimException
HDRRimException
- If this Role
is a queried object.void addTelecom(TEL telecom) throws HDRRimException
telecom
- The telecom dataHDRRimException
- If this Role
is a queried object.CS getStatusCode()
Role
as defined in the
state-transition model.
void setStatusCode(CS statusCode) throws HDRRimException
HDRRimException
- If this Role
is a queried object.GTS getEffectiveTime()
Role
is in effect, if such time limit is applicable and
known.
Oracle: The balloted datatype is IVL<TS>
void setEffectiveTime(GTS effectiveTime) throws HDRRimException
HDRRimException
- If this Role
is a queried object.ED getCertificateText()
Entity
of a Role
certifying that this
Role
is indeed played by the player Entity
.
Examples: The certificate can be represented in many different ways, either inline or by reference, according to the ED data type. Typical cases are:
1.) Paper-based certificate: the ED data type may refer to some document or file that can be retrieved through an electronic interface to a hardcopy archive.
2.) Electronic certificate: this attribute can represent virtually any electronic certification scheme, such as, an electronically (including digitally) signed electronic text document.
3.) Digital certificate (public key certificate): in particular, this attribute can represent digital certificates, as an inline data block or by reference to such data. The certificate data block would be constructed in accordance to a digital certificate standard, such as X509, SPKI, PGP, etc.
The certificate subject is the Entity
that plays the
Role
. The certificate issuer is the Entity
that
scopes the Role
.
void setCertificateText(ED certificateText) throws HDRRimException
HDRRimException
- If this Role
is a queried object.RTO<PQ,PQ> getQuantity()
Entity
playing the Role
in the
Entity
scoping the Role
, used for roles that
represent composition relationships between the scoping and playing
entities.
Examples: 1.) This syrup's (scoper) ingredients include 160 mg (numerator) Acetaminophen (player) per tablespoon (denominator).
2.) This herd (scoper) consists of 500 (numerator) cattle (player).
3.) A VAX 6630 computer (scoper) has 3 (numerator) CPUs (player) as parts.
4.) This package (scoper) contains 100 (numerator) pills (player).
Discussion: In composition-relationships (example,, has-parts,
has-ingredient, has-content) the Role.quantity
attribute
specifies that a numerator amount of the target entity is comprised by a
denominator amount of the source entity of such composition-relationship.
For example, if a box (source) has-content 10 eggs (target), the
relationship quantity is 10:1; if 0.6 mL contain 75 mg of FeSO4 the
ingredient relationship quantity is 75 mg : 0.6 mL. Both numerator and
denominator must be amount quantities (extensive quantities, i.e., a
count number, mass, volume, amount of substance, amount of energy,
etc.).
void setQuantity(RTO<PQ,PQ> quantity) throws HDRRimException
HDRRimException
- If this Role
is a queried object.LIST<INT> getPositionNumber()
Entity
playing the
Role
with respect to the Entity
that scopes the
Role
.
Discussion: This attribute is primarily used with respect to containment roles. For example, some containers have discrete positions in which content may be located. Depending on the geometry of the container, the position may be referenced as a scalar ordinal number, or as a vector of ordinal numbers (coordinates). Coordinates always begin counting at 1.
Some containers may have customary ways of referring to the positions or no way at all. In the absence of any specific regulation for a specific container type, the rule of thumb is that the coordinate that is changed earlier is positioned first. For an automated blood chemistry analyzer with a square shaped tray, this means that the first coordinate is the one in which direction the tray moves at each step and the second coordinate is the one in which the tray moves only every 10 (or so) steps.
void setPositionNumber(LIST<INT> positionNumber) throws HDRRimException
HDRRimException
- If this Role
is a queried object.void addPositionNumber(INT positionNumber) throws HDRRimException
positionNumber
- The position numberHDRRimException
- If this Role
is a queried object.BAG<EN> getName()
Examples: Names used as an employee, as a licensed professional, etc.
Usage: In general, names are specified using Entity.name. Role.name is only used when the standard wishes to distinguish names that are appropriate for use when referring to the Entity in one Role as opposed to other Roles..
void setName(BAG<EN> name) throws HDRRimException
HDRRimException
void addName(EN name) throws HDRRimException
name
- The name to addHDRRimException
void setPlayerEntity(Entity entity) throws HDRRimException
HDRRimException
- If this Role
is a queried object If the
entity is a owning entity for a Rolevoid setScoperEntity(Entity entity) throws HDRRimException
HDRRimException
- If this Role
is a queried object If the
entity is a owning entity for a RoleHDR Glossary HDR Concept Lists HDR Exceptions HDR Programmer's Guide HDR Implementation Guide HDR Profile Options
Copyright © 2016, 2018, Oracle. All rights reserved