HL7 Informative Document: Patient Information Quality Improvement (PIQI) Framework, Edition 1, published by HL7 Cross-Group Projects Work Group. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/piqi/ and changes regularly. See the Directory of published versions
Please refer to the appropriate PIQI Message Format Guide for specific PIQI model format implementation details.
The high-level component diagram can be found here
It is important to remember that the goal of the Patient Information Quality Improvement (PIQI) Framework is to assess the contents of a single structured data payload and provide a score based solely on the contents of that payload. Each rubric assessing a payload is designed in the context of a particular use case. This allows the following:
1) The assessment of the quality of that single payload. 2) The collection of statistics with aggregate values (Averages, Medians) and other ‘per payload’ statistics. 3) Allows payload level plausibility assessments.
Implementers of the PIQI Framework will likely aggregate scoring results for the purpose of qualitative root-cause analysis, but this specification is focused on the implementation of the framework itself. Future efforts may consider optimal patterns for analyzing data quality patterns across collections of messages.
PIQI Elements are comprised of four attribute types: Simple, Codeable Concept, Observation Value, and Ranged Value. All attributes have a cardinality of 0..1, recognizing that a Codeable Concept collection attribute may contain multiple coding values.
A Simple Attribute is a string value in the JavaScript Object Notation (JSON) attribute structure. Simple Attributes can contain any string and can be used to represent any single basic data type like text, simple numbers, structured numbers, dates, and date ranges.
Example: In this example the effectiveDateTime attribute is a Simple Attribute.
"Allergies": [
{"effectiveDate": "20230111"}
]
A Codeable Concept attribute is a structure that can be represented as a simple attribute or a coded entity. Many attributes in patient data can be represented by a coded entity or a simple code value and as such is represented by a text sub-attribute and a codings collection.
Many of the important attributes in patient information are Codeable Concepts. Codeable Concepts are attributes that can be represented by a simple text string or by one or many codings, hence the codeable concept. If the attribute does contain one or more codings, each coding is comprised of three components: a code, display, and code system identifier.
All of these Coding sub attributes should be populated in order for the concept being exchanged to be validated.
The code is needed to provide a unique stable identifier for the concept in a given code system.
The code system identifier is needed to provide context for the meaning of a code, and to confirm that the code is valid in that code system and, if necessary, determine the status of that code.
The display is needed so that a human can verify that the code provided does, in fact, semantically match the concept in the identified code system. It is also necessary if the concept provided is being mapped/normalized to a standard or local terminology.
Codeable Concept sub-attributes
| AttributeName | Type | Description |
|---|---|---|
| text | Simple Attribute | Text representation of the concept |
| codings | Codings | Collection of zero-to-many codings |
Codings exist as a substructure to the CodeableConcept type. The substructure is adopted from Fast Healthcare Interoperability Resources (FHIR) to express one or more codings associated with a given CodeableConcept.
Coding sub-attributes
| AttributeName | Type | Description |
|---|---|---|
| code | Simple Attribute | Code value for the coding |
| display | Simple Attribute | Display value for the coding |
| system | Simple Attribute | Code system identifier for the coding |
Example:
"performedTest": {
"text": "MONOCYTES:NCNC:PT:BLD:QN:AUTOMATED COUNT",
"codings": [
{
"code": "742-7",
"display": "MONOCYTES:NCNC:PT:BLD:QN:AUTOMATED COUNT",
"system": "LOINC"
}
]
}
An Observation Value attribute is a structure that can be represented as a simple attribute value or a structure observation value. Observation Value is a specialized attribute as many elements in patient information can be represented by a quantitative, text, or coding value.
Observation Value sub-attributes
| AttributeName | Type | Description |
|---|---|---|
| text | Simple Attribute | Text representation of the value |
| type | Codeable Concept | A text representation of the value type and an optional collection of zero-to-many coded concepts representing the coded value types |
| number | Simple Attribute | For numeric values |
| number2 | Simple Attribute | For second numeric value |
| codings | Codeable Concept | Collection of zero-to-many coded concepts representing the observation value if it is a codeable concept |
Example of ResultValue Text Only:
"resultValue": {
"text": "NEG",
"type": {
"text": "ST"
}
}
Example of ResultValue Coding Sub-Attribute:
"resultValue": {
"text": "Negative",
"type": {
"text": "CE",
"codings": [
{
"system": "HL7-0125",
"code": "CE",
"display": "Coded element"
}
]
},
"codings": [
{
"system": "SNOMEDCT",
"code": "260385009",
"display": "Negative"
}
]
}
Example of ResultValue Number Value Sub-Attribute:
"resultValue": {
"text": "100",
"type": {
"text": "NM",
"codings": [
{
"system": "HL7-0125",
"code": "NM",
"display": "Numeric"
}
]
},
"number": "100"
}
Example of ResultValue Numeric Range Sub-Attribute:
"resultValue": {
"text": "3.5-4.5",
"type": {
"text": "NR",
"codings": [
{
"system": "HL7-0125",
"code": "NR",
"display": "Numeric range"
}
]
},
"number": "3.5",
"number2": "4.5"
}
A Range Value attribute is a structure that can be represented as a simple attribute value or a structured range value. The Range Value is a specialized attribute as many elements in patient information can be represented by a structured range. The Range Value Attribute Type can only be used with numeric ranges and cannot be used for a date range.
Range Value sub-attributes
| AttributeName | Type | Description |
|---|---|---|
| text | Simple Attribute | Text representation of the value range |
| lowValue | Simple Attribute | Text representation of the low value |
| highValue | Simple Attribute | Text representation of the high value |
Example:
"referenceRange": {
"text": "14-88",
"lowValue": "14",
"highValue": "88"
}
The PIQI Framework depends on a patient-oriented, flat-data class collection information model. Depending on the use case, the structure of the model—including its data classes and attribute details—may vary. For example, the PIQI Clinical Data Model is designed to evaluate clinical information exchanged about a patient, so its data classes and attributes reflect common clinical data elements. In contrast, the PIQI Medical Claim Data Model includes data classes and attributes typically associated with claims information. The PIQI Framework functions consistently across different models, provided the model remains flat, includes a patient demographics element, and uses attribute types that align with the framework’s design.
The PIQI Clinical Data Model is a simplified information model based on US Core profiles and is intended to focus on data classes and attributes that are highly relevant to patient clinical data quality and to simplify the qualitative assessment process. While it could be extended to include administrative and other data relative to the patient's care process, initially the model is purposefully limited to patient demographics, social, and clinical information.
| Data Class | Cardinality to Patient Container |
|---|---|
| Allergy | Zero to Many |
| Condition | Zero to Many |
| Demographics | One |
| HealthAssessment | Zero to Many |
| Immunization | Zero to Many |
| LabResult | Zero to Many |
| MedicalDevice | Zero to Many |
| Medication | Zero to Many |
| Procedure | Zero to Many |
| VitalSign | Zero to Many |
| Allergy | ||
|---|---|---|
| AttributeName | Type | Description |
| substance | Codeable Concept | Allergen or substance that trigger an intolerance |
| category | Codeable Concept | Category of substance: medication, food, chemical, etc |
| reaction | Codeable Concept | Condition triggered by the intolerance or allergy |
| effectiveDate | Simple Attribute | Date of allergy onset or documentation. Note: this could be a date or date range |
| severity | Codeable Concept | Severity of the reaction |
| allergyStatus | Codeable Concept | Status of allergy: active, confirmed, refuted, etc |
| provenance | Simple Attribute | Source of this information |
| Condition | ||
|---|---|---|
| AttributeName | Type | Description |
| condition | Codeable Concept | Problem, Diagnosis or other medical condition |
| conditionStatus | Codeable Concept | Status of condition: active, confirmed, refuted, etc |
| conditionType | Codeable Concept | Type of condition/diagnosis: complaint, discharge, etc |
| onsetDate | Simple Attribute | Onset or effective date |
| resolutionDate | Simple Attribute | Date condition resolved |
| provenance | Simple Attribute | Source of this information |
| Demographics | ||
|---|---|---|
| AttributeName | Type | Description |
| birthDate | Simple Attribute | Patient date of birth |
| birthSex | Codeable Concept | Patient sex at birth |
| deathDate | Simple Attribute | Patient date of death |
| deceased | Codeable Concept | Is patient deceased: Yes or No or boolean |
| ethnicity | Codeable Concept | Patient ethnic group |
| genderIdentity | Codeable Concept | Patient gender identity |
| primaryLanguage | Codeable Concept | Patient primary language |
| maritalStatus | Codeable Concept | Patient marital status |
| raceCategory | Codeable Concept | Patient race category |
| provenance | Simple Attribute | Source of this information |
| HealthAssessment | ||
|---|---|---|
| Attribute Name | Type | Description |
| assessment | Codeable Concept | Specific health assessment |
| resultValue | Observation Value | Health assessment result |
| resultUnit | Codeable Concept | Health assessment result unit, if applicable |
| performedDateTime | Simple Attribute | Date and time when assessment was performed |
| provenance | Simple Attribute | Source of this information |
| Immunization | ||
|---|---|---|
| Attribute Name | Type | Description |
| immunization | Codeable Concept | Immunization or vaccine product |
| lotNumber | Simple Attribute | Lot number for immunization product |
| administrationDate | Simple Attribute | Date immunization was administered |
| expirationDate | Simple Attribute | Expiration date for immunization product |
| reaction | Codeable Concept | Patient reaction to immunization, if applicable |
| immunizationStatus | Codeable Concept | Status of immunization: completed, entered-in-error, not-done, etc |
| provenance | Simple Attribute | Source of this information |
| LabResult | ||
|---|---|---|
| Attribute Name | Type | Description |
| performedTest | Codeable Concept | Specific lab test performed |
| orderedTest | Codeable Concept | Order or panel that initiated the test being performed |
| resultValue | Observation Value | Test result value |
| resultUnit | Codeable Concept | Test result unit, if applicable |
| interpretation | Codeable Concept | Test result interpretation |
| referenceRange | Range Value | Test reference range |
| specimenType | Codeable Concept | Type of specimen used by the specific test |
| resultStatus | Codeable Concept | Status of the result: Incomplete, pending, final, etc |
| performingSite | Simple Attribute | Unique identifier for the performing site |
| performedDateTime | Simple Attribute | Date and time the test was performed |
| orderDate | Simple Attribute | Date the order was requested |
| provenance | Simple Attribute | Source of this information |
| MedicalDevice | ||
|---|---|---|
| Attribute Name | Type | Description |
| deviceType | Codeable Concept | Type of medical device |
| deviceID | Codeable Concept | Food and Drug Administration (FDA) unique device identifier |
| implantationDate | Simple Attribute | Date the device was implanted if applicable |
| deviceStatus | Codeable Concept | Status of the medical device |
| provenance | Simple Attribute | Source of this information |
| Medication | ||
|---|---|---|
| Attribute Name | Type | Description |
| medication | Codeable Concept | Medication product (drug) |
| startDate | Simple Attribute | Date the patient started the medication |
| endDate | Simple Attribute | Date the patient discontinued the medication |
| doseAmount | Simple Attribute | The dose amount expressed in strength or eaches. For a 200mg total dose delivered via 2 100mg tablets, the doseAmount is 200. |
| doseAmountUnit | Codeable Concept | The dose amount unit. For a 200mg total dose delivered via 2 100mg tablets, the doseAmountUnit is mg. |
| doseRoute | Codeable Concept | The route of administration |
| doseQuantity | Simple Attribute | The dose quantity dispensed. For a 200mg total dose delivered via 2 100mg tablets, the doseQuantity is 2. |
| doseQuantityUnit | Simple Attribute | The dose quantity units. For a 200mg total dose delivered via 2 100mg tablets, the doseQuantityUnit is {Tablet}. |
| instructions | Simple Attribute | The medication instruction text |
| adherence | Codeable Concept | The patient’s adherence to the medication |
| indication | Codeable Concept | The condition that is being treated by the medication |
| fillStatus | Codeable Concept | Fill status of the medication |
| medicationStatus | Codeable Concept | Status of medication: active, stopped, entered-in-error, etc |
| provenance | Simple Attribute | Source of this information |
| Procedure | ||
|---|---|---|
| AttributeName | Type | Description |
| procedure | Codeable Concept | The procedure that was performed on the patient |
| procedureDateTime | Simple Attribute | The date and time the procedure was performed. Note: this could be a date or date range |
| procedureReason | Codeable Concept | The condition that prompted the procedure |
| procedureStatus | Codeable Concept | Status of procedure: preparation, in-progress, completed, entered-in-error, etc |
| provenance | Simple Attribute | Source of this information |
| VitalSign | ||
|---|---|---|
| AttributeName | Type | Description |
| vitalSign | Codeable Concept | Vital sign assessment/test |
| resultValue | Observation Value | Vital sign result |
| resultUnit | Codeable Concept | Vital sign result unit, if applicable |
| interpretation | Codeable Concept | Interpretation of vital sign |
| referenceRange | Range Value | Reference range for vital sign |
| resultStatus | Codeable Concept | Vital sign result status |
| performingSite | Simple Attribute | Unique identifier for performing site |
| performedDateTime | Simple Attribute | Date and time vital sign was collected |
| provenance | Simple Attribute | Source of this information |
One of the issues with validating codeable concepts is that often different string values are used to identify the code system for a given code. For example, when sending a Logical Observation Identifiers Names and Codes (LOINC) code it is possible to see the following code system identifiers:
LOINC, LNC, LN Code System Simple string identifiers
CodeSystem Object Identifier (OID): 2.16.840.1.113883.6.1
CodeSystem Uniform Resource Locator (URL): http://loinc.org
To support code system identifier variants in PIQI there is a mechanism that allows for a code system mnemonic to be used in the configuration of an Evaluation Rubric to represent any valid code system identifier and identify the code system identifier that is required to validate that code in the implementation's terminology server.
For example, for LOINC this mechanism would establish the ‘LOINC’ mnemonic in the following manner:
| Name | Logical Observation Identifiers Names and Codes |
| Mnemonic | LOINC |
| Code System Identifiers | LOINC |
| LN | |
| LNC | |
| urn:oid:2.16.840.1.113883.6.1 | |
| 2.16.840.1.113883.6.1 | |
| http://loinc.org |
This is another example of how PIQI is designed specifically for patient information. This function will allow, for example, an Evaluation Rubric that is checking for conformance to just pass ‘LOINC’ to the SAM that validated conformity and have it pass if any of the Code System Identifier aliases are used. It also allows a validation SAM to automatically validate a concept that is received using one of the code systems aliases. If at some point in the future another valid code system identifier is defined for a given code system, it can easily be added to this mechanism and automatically reflected in all configured Evaluation Rubrics.
"**codeSystems**": [
{
"name": "Logical Observation Identifiers Names and Codes",
"mnemonic": "LOINC",
"codeSystemIdentifiers": [
"LN",
"LNC",
"urn:oid:2.16.840.1.113883.6.1",
"2.16.840.1.113883.6.1",
"http://loinc.org"
]
},
{
"name": "SNOMED CT US Edition",
"mnemonic": "SNO_INT_USEXT",
"codeSystemIdentifiers": [
"http://snomed.info/sct/731000124108",
"SNOMED",
"SCT",
"SNOMEDCT",
"urn:oid:2.16.840.1.113883.6.96",
"http://snomed.info/sct",
"2.16.840.1.113883.6.96",
"SNO"
]
},
{
"name": "ICD-10-CM",
"mnemonic": "ICD10CM",
"codeSystemIdentifiers": [
"ICD10",
"ICD10-CM",
"ICD10CM",
"2.16.840.1.113883.6.90",
"urn:oid:2.16.840.1.113883.6.90",
"http://hl7.org/fhir/sid/icd-10-cm",
"https://www.cms.gov/medicare/icd-10/2022-icd-10-cm"
]
},
{
"name": "ICD-9-CM Diagnosis",
"mnemonic": "ICD9CMD",
"codeSystemIdentifiers": [
"I9",
"ICD9",
"ICD9CM",
"ICD9-CM",
"2.16.840.1.113883.6.103",
"urn:oid:2.16.840.1.113883.6.103",
"http://hl7.org/fhir/sid/icd-9-cm",
]
}
]
When considering a PIQI information model it is worth noting that patient data in such models are organized into a hierarchical structure with four primary entity levels that can each be evaluated for quality. These entities are as follows:
Reminder: It is important to restate that PIQI is intended to assess the quality of data payloads in real time, determining their suitability for use by the intended recipient, and not intended to evaluate data within records at rest.
A standard classification taxonomy for patient information quality issues provides structure and clarity to the process of data quality management. This systematic approach allows for the identification and categorization of various types of errors or inconsistencies, which can range from minor inaccuracies to critical misinformation. By classifying these issues, healthcare data stewards can prioritize them based on their potential impact. This methodical categorization facilitates easier tracking and analysis of recurring problems, enabling healthcare organizations to implement targeted improvements. Moreover, standardized taxonomy aids communication among healthcare professionals by providing a common language for discussing quality issues. Ultimately, this leads to enhanced quality control, improved patient outcomes, and a reduction in the likelihood of medical errors, thereby fostering a safer and more reliable healthcare environment.
The PIQI Taxonomy consists of high-level categories, each containing more specific dimensions. It's essential to note that the assessment of patient information quality occurs at both the element and attribute levels, and not all dimensions apply uniformly to both.
Given that the dimensions are designed to categorize qualitative issues, they are presented from a negative perspective. Consequently, the percentages associated with these dimensions indicate the proportion of failures or issues identified within each dimension.
It is important to remember that these dimensions are available to be used by the SAMs which provide code assessments of the input to the SAM, be that an attribute, data class element, data class collection or the entire message. This means a HDQT is an abstract concept and its assignment to the SAM is based on a best-fit interpretation of the assessments intent.
The categories are as follows:
This category contains dimensions that relate to the presence of usable information.
Dimensions:
| Dimension | Definition |
|---|---|
| Missing | Pertains to Elements and specifically evaluates whether an expected element is absent. This dimension can be conceptualized as a method for assessing 'missingness' at an elemental level. For example, if a patient has Insulin on their medication list, and has a high A1C, but there is no corresponding condition indicating Diabetes, then the diabetes condition is considered missing. |
| Unpopulated | This applies to an Attribute that should be populated with something but is not. This dimension does not evaluate the validity of the Attribute, merely whether or not it has data. This dimension only applies to Attributes of Elements that are not missing. For example, an Condition onsetDate is empty or null. |
| Incomplete | This applies to Elements or complex Attributes where there is inadequate information available to fully represent the attribute or element. For example, a coded entity (attribute) that is missing its code system is incomplete. In this context, the system component of a coding is "unpopulated" and the coded entity Attribute is "incomplete." |
This category contains dimensions that relate to the innate validity of the data.
Dimensions:
| Dimension | Definition |
|---|---|
| Invalid Format | This applies to Attributes that are not properly formatted for their expected data type. It is assumed that all Attributes are presented as text strings and therefore validating the format of that string before progressing the data type assessments is necessary. Examples of format are freetext, date, time, timestamp, integer, decimal, and single alphanumeric character. The specific logic used to assess format should be included in the corresponding SAM definition. For example, an onsetDate of "March 1" may be invalid when the expected format is "2026-03-01" |
| Invalid Value | This applies to an Attribute that has a value but the value does not conform to the expectations for the attribute. Included in this dimension are logical assessments of text strings expected to conform to a specific set of values or business rules related to field values. Note that a value may be an invalid value despite the values having an appropriate format. The Invalid Member dimension would be a better choice for codes not matching expected format. This dimension is intended to reflect "field-level" errors, and not broader data quality errors involving values across multiple fields. For example, a patient's hemoglobin is reported as "12.158795354682221" which is a valid decimal format but not within logical rules of expected measurement precision. Another example is a result unit field expecting a UCUM unit but populated with a non-UCUM conformant unit. |
| Invalid Grouping | This applies to Elements or complex Attributes where the combination of Attributes is invalid. For example of this could be a situation where a lab test that is only performed on serum and paired with a urine specimen as this represents a fundamentally invalid combination |
This category contains dimensions that relate to the integrity of coded information, for example verifying that a specific code is a member of a CodeSystem or Valueset.
| Dimension | Definition |
|---|---|
| Invalid Member | This applies to coded entity complex attributes when the code provided is not a member of the CodeSystem/ValueSet provided. An example of this would be providing a code of "742-7" (a valid LOINC code) with the system of "SNOMEDCT". |
| Incompatible | This applies to coded entity complex attributes when the code system provided is not an agreed upon CodeSystem/ValueSet per the terms of the criteria. An example of this would be providing a code of "742-7" with system "LOINC" as a condition where another coding system is expected. |
| Obsolete | This applies to coded entity complex attributes when the concept provided was no longer active in the CodeSystem/ValueSet provided at the time of event described in the transaction. An example of this would be using LOINC code "2086-7" which is deprecated and replaced by "2085-9". |
This category contains dimensions that relate to whether the data makes sense based on some context.
| Dimension | Definition |
|---|---|
| Clinically Implausible | Clinically Implausible conditions are identified when an attribute or element is uncertain due to clinical considerations. An example of this would be a lab result value that is outside a reasonable range of values for a given lab test. |
| Temporally Implausible | Temporally implausible conditions are identified when an attribute or element is uncertain due to when it occurs in the context of the patient's timeline. An example of this would be a future birth date or an end time that precedes a start time. |
| Situationally Implausible | Situationally Implausible conditions are identified when an attribute or element is uncertain due other conflicting elements or attributes. An example of this would be a baby sharing the same MRN as the mother when distinct identifiers are expected. |
The PIQI Framework assesses patient data that has been put into the PIQI Data Model using an Evaluation Rubric which is a collection of Evaluations, each evaluation consisting of a patient data entity to be evaluated, a configured Simple Assessment Module (SAM) to use in that evaluation, specific parameter values to use with that SAM, and scoring implications of the evaluation result.
A PIQI SAM is a logical test that measures a specific data quality dimension for a model element or characteristic, following a defined pattern. The inputs depend on the pattern, but the output is always a simple result: pass, fail, or skip. SAMs can be grouped into hierarchical collections, allowing multiple checks to be combined in order to provide a broader picture of data quality for a given use case. A SAM that has been configured for use in an Evaluation Rubric is referred to simply as an Evaluation.
Each SAM is comprised of the following elements:
| Component | Description |
|---|---|
| SAM Name | The name of the SAM. |
| Entity Type | This is the patient entity type (entire model, data class, element, attribute) that the assessment has been designed to evaluate. |
| Assessment Logic | The actual logic that performs the evaluation against the data class, element or attribute |
| PIQI Dimension | The PIQI taxonomy dimension that most appropriately describes the SAM. |
| Required Params | The list of required parameters that must be supplied by the Evaluation Criterion to perform the assessment. |
Example: High Level
Example: Attribute is Populated
| Component | Example Value |
|---|---|
| SAM Name | Attribute is Populated |
| Entity Type | Simple Attribute |
| Assessment Logic | If (Attribute.Value==””) { SAM.Result=”FAIL”} (Pseudocode) |
| PIQI Dimension | Availability.Unpopulated [AV.UNPOP] |
| Required Params | N/A |
Example: Coded Entity is Compatible
| Component | Example Value |
|---|---|
| SAM Name | Coded Entity is Compatible |
| Entity Type | Coded Entity Attribute |
| Assessment Logic | If ((Attribute.CS.Value==CS_PARAM)&&(Attribute.CNF.INVMBR=”PASS”)) { SAM.Result=”PASS”} (Psuedocode) |
| PIQI Dimension | Conformity.Incompatible [CNF.INCMPT] |
| Required Params | CS_PARAM – Code System Required for Interoperability by Evaluation Criterion |
A SAM can have a prerequisite SAM. This is a SAM that must be run and pass prior to this SAM being run. Prerequisites can stack resulting in a series of SAMs that must be run on an entity for the assigned Evaluation SAM to be run and pass.
Prerequisite SAMs cannot have parameters that are not provided to the assigned Evaluation SAM.
One might be tempted to avoid prerequisite SAMs by encapsulating the prerequisite logic in the assigned Evaluation SAM. The reason PIQI does not do this is the information on the failure of the entity being evaluated is primary to the definition of the SAM and the SAM itself just returns a pass or fail. In the above example when the assigned assessment ‘Concept is Compatible’ is run the first prerequisite SAM, ‘Attribute is Populated’ is run on the entity. The idea that the entity fails to pass the assigned SAM is what establishes the entity's score. Recording the specific SAM that failed provides the statistics that are core to the PIQI approach. This conveys the nature of the failure, as opposed to ‘Concept is Compatible’ failing and having to return a reason for the failure. Additionally, when a pre-requisite SAM fails, that failure should be categorized against the dimension for the pre-requisite SAM, not the dimension for the assigned Evaluation SAM.
For more information on SAMs, please see Simple Assessment Modules SAMS
An Evaluation Rubric is always based on a given PIQI model and version. An Evaluation Rubric based on a given model should be compatible with any future version of the same model as PIQI models are backward compatible.
An Evaluation Rubric is the alignment of patient data entities to SAMs as a list of assessable items that contribute to provide a standard scoring rubric for that specific collection of patient data. Evaluation Rubrics can be established as a standard or custom scoring rubric.
A given Evaluation Rubric has a name, version and purpose, a PIQI model and model version along with a sequenced collection of evaluations comprised of SAMs configured and assigned to the model, data classes, elements and attributes with the necessary parameters, conditions, scoring effect, weight, and criticality.
Example: Graphical Depiction of an Evaluation Rubric for a data class
The core of an Evaluation Rubric is the sequenced collection of entity assessments. Each step has the following components:
| Component | Description |
|---|---|
| Step Sequence | Execution Sequence. |
| Data Class | The Data Class from the PIQI Model. |
| Entity | The class, element or specific attribute from the PIQI Data Model that is being assessed. |
| SAM | The Simple Assessment Module. |
| SAM Params | List of Parameters and values necessary to perform assessment. |
| Effect | The effect of assessment failure on the qualitative status of the entity being assessed (Scoring, Informational). |
| Condition | The precondition that must be met to include the assessment. |
| Weight | The weight that is applied to the weighted score value numerator and denominator. |
| Criticality | A true/false indicator as to whether the assessment is considered critical in the Evaluation Rubric. |
An assigned Evaluation SAM is typically used to score the quality of the data in a message but can also be used to collect data without impacting the quality score. The Scoring Effect is essentially a switch that tells the PIQI engine to collect statistics for a given SAM without affecting the numerator or denominator of the score for the message.
In some cases, a PIQI user may want to weigh the score in a rubric allowing some SAMs to have more impact than others. By default, the weight for any assigned Evaluation SAM is one. If a particular Evaluation Rubric does use a weighted score for one or more SAMs the PIQI engine will produce a PIQI Score and a PIQI Weighted Score for the message being assessed. Both scores will be a percentage of a numerator over a denominator with a maximum score of 100% of all possible points. This practically means that a PIQI score for a message is simply the number of scored evaluations that passed, divided by the total number of scored evaluations performed, and a PIQI Weighted Score for a message is the sum of weighted values for all scored evaluations that passed, divided by the sum of weighted value for all scored evaluations, including both those that passed and failed.
The criticality indicator on an assigned Evaluation SAM allows the user to flag that assessment as critically important to the rubric. As an alternative to a weighted score the criticality indicator provides the ability to indicate that message has critical qualitative issues that may make the data unusable without affecting the nature of the unweighted numerator/denominator percentage.
In some cases, an assigned Evaluation SAM should only be applied if another condition is true. While this may seem similar to a prerequisite SAM it affects the scoring in a very different way.
A prerequisite SAM is part of a SAM definition. If a prerequisite SAM for an assigned Evaluation SAM fails, this is considered an entity assessment failure which increments the denominator by 1 but not the numerator for that assessment. In other words, the assessment is a failure. For example, the Attr_IsPopulated simple SAM is commonly a prerequisite for downstream SAMS such Attr_IsDate.
A conditional SAM is part of an Evaluation Rubric. If a conditional SAM for an assigned Evaluation SAM fails, this means the conditions for the assigned Evaluation SAM were not met and the assigned Evaluation SAM should not be run. Therefore it is neither a pass nor a fail. Accordingly, neither the numerator nor the denominator is incremented. For example, the Observation Value _IsQualitative SAM is a conditional SAM that must pass in order for a downstream SAMs that require a qualitative result to be run.
The sequence of execution of the Evaluation Rubric Assessments controls the order of assessment within a given data class. The data class execution sequence is defined as the sequence of patient data loaded into the PIQI model. The sequence of assessment will repeat within a given data class until it has completed all the elements of that data class. Upon completion of the assessment of all the elements in a given data class, the data class assessments themselves (if defined) are executed. Upon completion of all elements and data class assessments, model scope assessments (if defined) are executed.
The objective for PIQI data quality scoring is to provide a useful score card that provides the data consumer with insight into the quality of a patient data payload based on a given Evaluation Rubric.
The most basic result returned from a PIQI scorecard evaluation would be the following:
| MessageID | The MessageID submitted with the scoring request. |
|---|---|
| DataProviderID | The DataProviderID submitted with the scoring request. |
| DataSourceID | The DataSourceID submitted with the scoring request. |
| Potential Item Score | A count of the total number of scorable items in the patient data payload and will always be greater than or equal to the Total Item Score. This is also the score denominator. |
| Total Item Score | A count of the total number of scoreable items that passed according to the Evaluation Rubric. This is also the score numerator. |
| PIQI Index | The Total Item Score is divided by the Potential Item Score. Resulting in a percentage value from 0 to 100. |
| Critical Failure Count | A count of the scorable items that were flagged as critical and did not pass. |
| Data Class Frequency | A count of the total number of elements within each data class in the patient data payload. This will only include data classes that are referenced in the Evaluation Rubric. |
| (If Weighted scores are used) | |
| Potential Weighted Item Score | A count of the total number of scorable item weights in the patient data payload. This is also the score denominator. |
| Total Weighted Item Score | A count of the total number of scoreable item weights that passed according to the Evaluation Rubric. This is also the score numerator. |
| PIQI Weighted Index | The Total Weighted Item Score is divided by the Potential Weighted Item Score. Resulting in a percentage value from 0 to 100. |
When the PIQI Framework is used in verbose scoring mode, the score information above is returned along with the original message with each element including the scoring details.
The PIQI Framework is actualized with the following components:
Structured Data Architecture Components
Structured Data Asset Components
Software Components
The PIQI Alliance serves as the community of practice to support the implementation and collaborative evolution of the PIQI Framework. The Alliance aspires to bring together stakeholders—such as healthcare organizations, vendors, and standards bodies—who share a common interest in improving patient data quality. Through encapsulated, portable, data-driven components and the ability to share knowledge and assets, the PIQI Alliance has the potential to accelerate the adoption and ongoing refinement of the framework.
The PIQI Framework starts with a simple model intended to support the assessment of core clinical patient data. The simplicity of this model allows for extension through the addition of attributes and data classes. Ideally these extensions would be adopted into the core PIQI model through a standard process.
While many of the foundational, attribute level SAMs are algorithmic, SAMs that apply to codeable concepts, elements, data classes, and model level data often require structured content in the form of value sets, tuples, and other data patterns. To share and utilize rubrics that use SAMs that depend on such structures, PIQI evaluation engines must also have access to the supporting content. For example, to utilize a rubric including a SAM configured to verify that a codeable concept is an active LOINC term, that PIQI evaluation engine must be able to reference the current LOINC release. These data packages can be openly shared or licensed in a community portal. More sophisticated algorithmic SAMs, perhaps based on generative artificial intelligence (AI), could also be hosted as RESTful services through wrapper SAM interfaces.
While the Evaluation Rubrics in PIQI are designed to be configured to support the needs of the implementer, the ability to establish sanctioned standard Evaluation Rubrics is one of the most beneficial features of the PIQI Framework. The ability to publish and share an Evaluation Rubric, along with its dependent SAMs and PIQI Model components can minimize duplication of effort and provide a powerful way to create a common basis for understanding data quality across the community.
The PIQI Alliance envisions that implementations of the PIQI Framework could be registered and certified within the community, with the goal of enabling participants to seamlessly share content—such as SAMs, Evaluation Rubrics, and PIQI Models—with other community members.
The PIQI Framework was created to assess and improve the quality of patient data from a given source. However, this raises a crucial question: How do we uniquely and unambiguously identify the source of that data?
In healthcare, we have various identifier types for institutions, facilities, and providers, but no unique identifier for the data entity responsible for generating and sharing patient data. This is analogous to an IP address in a computer network—an essential component that enables modern data-sharing networks to recognize and authenticate each participant.
This is not merely a "nice to have" feature. Establishing a unique data source identifier is critical for trust, traceability, and provenance in our national healthcare infrastructure.
While the PIQI Framework does not require a global unique data source identifier, nor does it include a methodology for assigning one, incorporating one would significantly enhance the ability to assess the quality and reliability of data exchange participants—regardless of their role or the nature of the coordinating entity.